Merge
authorasaha
Wed, 20 Apr 2011 09:31:11 -0700
changeset 9842 7471b93771b0
parent 9841 d0cf8c517f4a (current diff)
parent 9501 dbb0d972bf41 (diff)
child 9843 5b2c8e3a02f0
Merge
jdk/make/com/sun/tools/attach/Makefile
jdk/src/share/classes/java/net/NetworkInterface.java
jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c
jdk/src/windows/bin/java_md.c
jdk/src/windows/native/sun/windows/awt_TrayIcon.cpp
jdk/src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp
--- a/.hgtags	Tue Apr 19 10:26:18 2011 -0700
+++ b/.hgtags	Wed Apr 20 09:31:11 2011 -0700
@@ -110,3 +110,5 @@
 fd444c61e7ed3d92b2a730da7c737b02191b682f jdk7-b133
 def8e16dd237a47fc067d66d4c616d7baaec6001 jdk7-b134
 f75a1efb141210901aabe00a834e0fc32bb8b337 jdk7-b135
+46acf76a533954cfd594bb88fdea79938abfbe20 jdk7-b136
+d1cf7d4ee16c341f5b8c7e7f1d68a8c412b6c693 jdk7-b137
--- a/.hgtags-top-repo	Tue Apr 19 10:26:18 2011 -0700
+++ b/.hgtags-top-repo	Wed Apr 20 09:31:11 2011 -0700
@@ -110,3 +110,5 @@
 c6f380693342feadccc5fe2c5adf500e861361aa jdk7-b133
 ddc2fcb3682ffd27f44354db666128827be7e3c3 jdk7-b134
 783bd02b4ab4596059c74b10a1793d7bd2f1c157 jdk7-b135
+2fe76e73adaa5133ac559f0b3c2c0707eca04580 jdk7-b136
+7654afc6a29e43cb0a1343ce7f1287bf690d5e5f jdk7-b137
--- a/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/corba/.hgtags	Tue Apr 19 10:26:18 2011 -0700
+++ b/corba/.hgtags	Wed Apr 20 09:31:11 2011 -0700
@@ -110,3 +110,5 @@
 671fe2e623ffefb4b7c312be919fc71eb48c1df1 jdk7-b133
 918003855fa0dba5acf4bf1fe36526d2fc4c1ba8 jdk7-b134
 e0b72ae5dc5e824b342801c8d1d336a55eb54e2c jdk7-b135
+48ef0c712e7cbf272f47f9224db92a3c6a9e2612 jdk7-b136
+a66c01d8bf895261715955df0b95545c000ed6a8 jdk7-b137
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_de.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_de.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_es.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_es.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_fr.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_fr.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_it.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_it.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_ja.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_ja.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_ko.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_ko.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_pt_BR.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_pt_BR.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_sv.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_sv.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_zh_CN.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_zh_CN.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_zh_TW.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_zh_TW.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Activation.mc	Tue Apr 19 10:26:18 2011 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Activation.mc	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 ;
-; Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+; Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/IOR.mc	Tue Apr 19 10:26:18 2011 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/IOR.mc	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 ;
-; Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+; Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Interceptors.mc	Tue Apr 19 10:26:18 2011 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Interceptors.mc	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 ;
-; Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+; Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Naming.mc	Tue Apr 19 10:26:18 2011 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Naming.mc	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 ;
-; Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+; Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/OMG.mc	Tue Apr 19 10:26:18 2011 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/OMG.mc	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 ;
-; Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+; Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/ORBUtil.mc	Tue Apr 19 10:26:18 2011 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/ORBUtil.mc	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 ;
 
-; Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+; Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/POA.mc	Tue Apr 19 10:26:18 2011 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/POA.mc	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 ;
-; Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+; Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Util.mc	Tue Apr 19 10:26:18 2011 -0700
+++ b/corba/src/share/classes/com/sun/corba/se/spi/logging/data/Util.mc	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 ;
-; Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+; Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/corba/src/share/classes/com/sun/tools/corba/se/idl/idl_ja.prp	Tue Apr 19 10:26:18 2011 -0700
+++ b/corba/src/share/classes/com/sun/tools/corba/se/idl/idl_ja.prp	Wed Apr 20 09:31:11 2011 -0700
@@ -64,97 +64,97 @@
 #
 # Translator:  Start Translating
 
-Compile.parsing=%0 \u3092\u69cb\u6587\u89e3\u6790\u4e2d
-Compile.parseDone=\u5b8c\u4e86 - %0
-Compile.generating=%0 \u3092\u751f\u6210\u4e2d
-Compile.genDone=\u5b8c\u4e86   -   %0
-Deprecated.keyword=\u8b66\u544a: \u30ad\u30fc\u30ef\u30fc\u30c9 `%0' \u306f\u63a8\u5968\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-EvaluationException.1=%0 \u6f14\u7b97\u5b50\u306e\u30aa\u30da\u30e9\u30f3\u30c9 %1 \u3068 %2 \u304c\u4e00\u81f4\u3057\u3066\u3044\u307e\u305b\u3093\u3002
-EvaluationException.2=%0 \u6f14\u7b97\u5b50\u306e\u30aa\u30da\u30e9\u30f3\u30c9\u306f %1 \u3067\u306f\u306a\u304f\u6570\u5024\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-EvaluationException.or=\u30d3\u30c3\u30c8\u5358\u4f4d\u306e\u8ad6\u7406\u548c
-EvaluationException.xor=\u30d3\u30c3\u30c8\u5358\u4f4d\u306e\u6392\u4ed6\u7684\u8ad6\u7406\u548c
-EvaluationException.and=\u30d3\u30c3\u30c8\u5358\u4f4d\u306e\u8ad6\u7406\u7a4d
-EvaluationException.plus=\u52a0\u7b97
-EvaluationException.minus=\u6e1b\u7b97
-EvaluationException.left=\u5de6\u30b7\u30d5\u30c8
-EvaluationException.right=\u53f3\u30b7\u30d5\u30c8
-EvaluationException.times=\u4e57\u7b97
-EvaluationException.divide=\u9664\u7b97
-EvaluationException.mod=\u30e2\u30b8\u30e5\u30ed
-EvaluationException.pos=\u5358\u9805\u6b63\u6570
-EvaluationException.neg=\u5358\u9805\u8ca0\u6570
-EvaluationException.not=\u30d3\u30c3\u30c8\u5358\u4f4d\u306e\u5426\u5b9a
-EvaluationException.booleanNot=\u30d6\u30fc\u30eb\u306e\u5426\u5b9a
-EvaluationException.booleanAnd=\u30d6\u30fc\u30eb\u306e\u8ad6\u7406\u7a4d
-EvaluationException.booleanOr=\u30d6\u30fc\u30eb\u306e\u8ad6\u7406\u548c
-EvaluationException.equal=\u7b49\u4fa1
-EvaluationException.notEqual=\u4e0d\u7b49\u4fa1
-EvaluationException.greaterThan=\u5927\u304d\u3044
-EvaluationException.lessThan=\u5c0f\u3055\u3044
-EvaluationException.greaterEqual=\u5927\u304d\u3044\u304b\u7b49\u3057\u3044
-EvaluationException.lessEqual=\u5c0f\u3055\u3044\u304b\u7b49\u3057\u3044
-GenFileStream.1=%0 \u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093:  %1
-InvalidArgument.1=\u4e0d\u6b63\u306a\u5f15\u6570:  %0
-InvalidArgument.2=IDL \u30d5\u30a1\u30a4\u30eb\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-InvalidCharacter.1=%0 (%1 \u884c\u76ee):  \u4e0d\u6b63\u306a\u6587\u5b57:  %2 (ASCII %3).\n%4\n%5
-Migration.futureKeyword=\u8b66\u544a: \u8b58\u5225\u5b50 `%0' \u304c\u30ad\u30fc\u30ef\u30fc\u30c9\u3068\u885d\u7a81\u3057\u3066\u3044\u307e\u3059\u3002\u4eca\u5f8c\u3082\u4e92\u63db\u6027\u3092\u4fdd\u3064\u305f\u3081\u306b\u306f\u62e1\u5f35\u8b58\u5225\u5b50\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-Migration.keywordCollision=\u8b66\u544a: \u8b58\u5225\u5b50 `%0' \u304c\u30ad\u30fc\u30ef\u30fc\u30c9\u3068\u885d\u7a81\u3057\u3066\u3044\u307e\u3059\u3002\u4eca\u5f8c\u3082\u4e92\u63db\u6027\u3092\u4fdd\u3064\u305f\u3081\u306b\u306f\u62e1\u5f35\u8b58\u5225\u5b50\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-ParseException.abstractValueBox=%0 (%1 \u884c\u76ee):  \u5024\u30dc\u30c3\u30af\u30b9\u3092 abstract \u3067\u5ba3\u8a00\u3067\u304d\u307e\u305b\u3093\u3002\n%2\n%3
-ParseException.alreadyDeclared=%0 (%1 \u884c\u76ee):  %2 \u306f\u65e2\u306b\u5ba3\u8a00\u3055\u308c\u3066\u3044\u307e\u3059\u3002\n%3\n%4
-ParseException.declNotInSameFile=%0 (%1 \u884c\u76ee): %2 \u306f\u4ee5\u524d\u306b\u30d5\u30a1\u30a4\u30eb %3 \u306e\u524d\u65b9\u5ba3\u8a00\u306b\u5ba3\u8a00\u3055\u308c\u307e\u3057\u305f\u3002\n%4\n%5
-ParseException.alreadyDerived=%0 (%1 \u884c\u76ee):  %2 \u306f %3 \u306e\u89aa\u3068\u3057\u3066\u65e2\u306b\u5ba3\u8a00\u3055\u308c\u3066\u3044\u307e\u3059\u3002\n%4\n%5
-ParseException.alreadyDefaulted=%0 (%1 \u884c\u76ee):  \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5206\u5c90\u306f\u65e2\u306b\u691c\u51fa\u3055\u308c\u3066\u3044\u307e\u3059\u3002\n%2\n%3
-ParseException.alreadyRaised=%0 (%1 \u884c\u76ee):  %2 \u306f raises \u7bc0\u3067\u65e2\u306b\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\n%3\n%4
-ParseException.attributeNotType=%0 (%1 \u884c\u76ee):  %2 \u306f\u5c5e\u6027\u3067\u3059\u3002\u578b\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\n%3\n%4
-ParseException.badAbstract=%0 (%1 \u884c\u76ee): %2 \u306e\u524d\u65b9\u306e\u5ba3\u8a00\u3068\u5b9f\u969b\u306e\u5ba3\u8a00\u304c\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002\u4e00\u65b9\u306f abstract \u3067\u4ed6\u65b9\u306f\u305d\u308c\u3068\u7570\u306a\u308a\u307e\u3059\u3002\n%3\n%4
-ParseException.badCustom=%0 (%1 \u884c\u76ee):  \u524d\u65b9\u5024\u5ba3\u8a00\u3092 custom \u3067\u5ba3\u8a00\u3067\u304d\u307e\u305b\u3093\u3002\n%2\n%3
-ParseException.badRepIDAlreadyAssigned=%0 (%1 \u884c\u76ee):  \u578b %2 \u306f\u524d\u306e ID \u30d7\u30e9\u30b0\u30de\u6307\u793a\u306e\u30ea\u30dd\u30b8\u30c8\u30ea ID \u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u3066\u3044\u307e\u3059\u3002\n%3\n%4
-ParseException.badRepIDForm=%0 (%1 \u884c\u76ee): \u30ea\u30dd\u30b8\u30c8\u30ea ID '%2' \u306f '<format>:<string>' \u306e\u5f62\u5f0f\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\n%3\n%4
-ParseException.badRepIDPrefix=%0 (%1 \u884c\u76ee):  \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 %2 \u306e\u30ea\u30dd\u30b8\u30c8\u30ea ID \u306e\u63a5\u982d\u8f9e\u306f '%4' \u3067\u306a\u304f `%3' \u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\n%5\n%6
-ParseException.badState=%0 (%1 \u884c\u76ee): %2 \u3092\u72b6\u614b\u3092\u6301\u3063\u305f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u30022 \u3064\u4ee5\u4e0a\u306e\u72b6\u614b\u3092\u6301\u3063\u305f\u89aa\u304c\u3042\u308a\u307e\u3059\u3002\n%3\n%4
-ParseException.branchLabel=%0 (%1 \u884c\u76ee):  case %2 \u306f\u65e2\u306b\u5ba3\u8a00\u3055\u308c\u3066\u3044\u307e\u3059\u3002\n%3\n%4
-ParseException.branchName=%0 (%1 \u884c\u76ee):  %2 \u3068\u3044\u3046\u5206\u5c90\u306f\u65e2\u306b\u5ba3\u8a00\u3055\u308c\u3066\u3044\u307e\u3059\u3002\n%3\n%4
-ParseException.duplicateInit=%0 (%1 \u884c\u76ee):  \u521d\u671f\u5316\u5b50\u306e\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc\u304c\u524d\u306e\u521d\u671f\u5316\u5b50\u3068\u540c\u3058\u3067\u3059\u3002\n%2\n%3
-ParseException.duplicateState=%0 (%1 \u884c\u76ee):  \u30c7\u30fc\u30bf\u30e1\u30f3\u30d0 %2 \u306e\u540d\u524d\u304c\u524d\u306e\u30c7\u30fc\u30bf\u30e1\u30f3\u30d0\u3068\u540c\u3058\u3067\u3059\u3002\n%3\n%4
-ParseException.elseNoIf=%0 (%1 \u884c\u76ee):  #if \u3068\u30de\u30c3\u30c1\u30f3\u30b0\u3057\u306a\u3044 #else \u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002\n%2\n%3
-ParseException.endNoIf=%0 (%1 \u884c\u76ee):  #if \u3068\u30de\u30c3\u30c1\u30f3\u30b0\u3057\u306a\u3044 #endif \u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002\n%2\n%3
-ParseException.evaluation=%0 (%1 \u884c\u76ee):  %2\n%3\n%4
-ParseException.forwardEntry=%0 (%1 \u884c\u76ee):  %2 \u3078\u306e\u524d\u65b9\u53c2\u7167\u304c\u3042\u308a\u307e\u3057\u305f\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\n%3\n%4
-ParseException.forwardedValueBox=%0 (%1 \u884c\u76ee):  %2 \u306b\u524d\u65b9\u5ba3\u8a00\u304c\u3042\u308a\u307e\u3059\u3002\u5024\u30dc\u30c3\u30af\u30b9\u3092\u524d\u65b9\u5ba3\u8a00\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\n%3\n%4
-ParseException.forwardInheritance=%0 (%1 \u884c\u76ee):  %3 \u306e\u4e0d\u5b8c\u5168\u306a\u524d\u65b9\u5ba3\u8a00\u3092 %2 \u304c\u7d99\u627f\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\n%4\n%5
-ParseException.generic=%0 (%1 \u884c\u76ee):  %2\n%3\n%4
-ParseException.illegalArray=%0 (%1 \u884c\u76ee):  %2 \u306e\u914d\u5217\u306e\u578b\u304c\u4e0d\u6b63\u3067\u3059\u3002\n%3\n%4
-ParseException.illegalException=%0 (%1 \u884c\u76ee):  %2 \u5185\u3067\u4f8b\u5916\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\n%3\n%4
-ParseException.invalidConst1=%0 (%1 \u884c\u76ee):  \u5b9a\u6570\u5f0f\u306e\u578b\u306f %3 \u3067\u306f\u306a\u304f %2 \u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\n%4\n%5
-ParseException.invalidConst2=%0 (%1 \u884c\u76ee):  \u5b9a\u6570\u5f0f\u5185\u306e\u8b58\u5225\u5b50\u306f %2 \u3067\u306f\u306a\u304f\u5b9a\u6570\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\n%3\n%4
-ParseException.keywordCollision=%0 (%1 \u884c\u76ee):  \u8b58\u5225\u5b50 `%2' \u304c\u30ad\u30fc\u30ef\u30fc\u30c9\u3068\u885d\u7a81\u3057\u3066\u3044\u307e\u3059\u3002\u62e1\u5f35\u8b58\u5225\u5b50\u3092\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n%3\n%4
-ParseException.methodClash=%0 (%1 \u884c\u76ee):  \u30e1\u30bd\u30c3\u30c9\u540d\u304c\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 %2 \u3067\u885d\u7a81\u3057\u3066\u3044\u307e\u3059:  %3.\n%4\n%5
-ParseException.moduleNotType=%0 (%1 \u884c\u76ee):  %2 \u306f\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u3059\u3002\u578b\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\n%3\n%4
-ParseException.nestedValueBox=%0 (%1 \u884c\u76ee):  \u5024\u30dc\u30c3\u30af\u30b9\u3092\u5165\u308c\u5b50\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\n%2\n%3
-ParseException.noDefault=%0 (%1 \u884c\u76ee):  \u8d77\u3053\u308a\u3046\u308b\u5168 case \u304c\u5b8c\u5168\u306b\u30ab\u30d0\u30fc\u3055\u308c\u3066\u3044\u306a\u3044\u9650\u308a\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5206\u5c90\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\n%2\n%3
-ParseException.nonAbstractParent=%0 (%1 \u884c\u76ee):  abstract \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 %2 \u306f\u975e abstract \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 %3 \u3092\u7d99\u627f\u3067\u304d\u307e\u305b\u3093\u3002\n%4\n%5
-ParseException.nonAbstractParent2=%0 (%1 \u884c\u76ee):  abstract \u5024 %2 \u306f\u975e abstract \u5024 %3 \u3092\u7d99\u627f\u3067\u304d\u307e\u305b\u3093\u3002\n%4\n%5
-ParseException.nonAbstractParent3=%0 (%1 \u884c\u76ee):  \u5024 %2 \u306f\u6307\u5b9a\u3055\u308c\u305f\u975e abstract \u5024 %3 \u3092\u7d99\u627f\u3067\u304d\u307e\u305b\u3093\u3002\n%4\n%5
-ParseException.notANumber=%0 (%1 \u884c\u76ee):  \u6570\u5024\u304c\u4e88\u671f\u3055\u308c\u3066\u3044\u307e\u3057\u305f\u3002%2 \u306f\u4e0d\u6b63\u306a\u6570\u5024\u3067\u3059\u3002\n%3\n%4
-ParseException.nothing=%0 \u306f\u7a7a\u3067\u3059\u3002\u30b3\u30f3\u30d1\u30a4\u30eb\u5bfe\u8c61\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
-ParseException.notPosInt=%0 (%1 \u884c\u76ee):  %2 \u3067\u306f\u306a\u304f\u6b63\u306e\u6574\u6570\u5b9a\u6570\u304c\u4e88\u671f\u3055\u308c\u3066\u3044\u307e\u3057\u305f\u3002\n%3\n%4
-ParseException.oneway=%0 (%1 \u884c\u76ee):  %2 \u306f\u7247\u65b9\u5411\u306b\u5ba3\u8a00\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u7247\u65b9\u5411\u30e1\u30bd\u30c3\u30c9\u306f\u3001void \u3092\u8fd4\u3059\u3053\u3068\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u5185\u3067 1 \u3064\u3060\u3051\u3067\u3042\u308b\u3053\u3068\u3001\u4f8b\u5916\u3092\u751f\u6210\u3057\u306a\u3044\u3053\u3068\u304c\u8981\u6c42\u3055\u308c\u307e\u3059\u3002\n%3\n%4
-ParseException.operationNotType=%0 (%1 \u884c\u76ee): %2 \u306f\u6f14\u7b97\u5b50\u3067\u3059\u3002\u578b\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\n%3\n%4
-ParseException.outOfRange=%0 (%1 \u884c\u76ee):  \u5b9a\u6570\u5f0f\u306e\u5024 %2 \u306f\u578b %3 \u306e\u7bc4\u56f2\u5916\u3067\u3059\u3002\n%4\n%5
-ParseException.recursive=%0 (%1 \u884c\u76ee):  \u6b63\u5f53\u306a\u518d\u5e30\u5b9a\u7fa9\u306f\u6b21\u306e\u3082\u306e\u3060\u3051\u3067\u3059:  sequence<%2> %3.\n%4\n%5
-ParseException.selfInherit=%0 (%1 \u884c\u76ee):  %2 \u306f\u81ea\u8eab\u3092\u7d99\u627f\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\n%3\n%4
-ParseException.stringTooLong=%0 (%1 \u884c\u76ee):  "%2" \u306f %3 \u6587\u5b57\u4ee5\u4e0a\u306e\u9577\u3055\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\n%4\n%5
-ParseException.syntax1=%0 (%1 \u884c\u76ee):  `%2' \u304c\u4e88\u671f\u3055\u308c `%3' \u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002\n%4\n%5
-ParseException.syntax2=%0 (%1 \u884c\u76ee):  %2 \u306e 1 \u3064\u304c\u4e88\u671f\u3055\u308c `%3'\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002\n%4\n%5
-ParseException.unclosed=%0:  \u30b3\u30e1\u30f3\u30c8\u5185\u306b\u4e88\u60f3\u5916\u306e EOF \u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002
-ParseException.undeclaredType=%0 (%1 \u884c\u76ee):  %2 \u306f\u5ba3\u8a00\u3055\u308c\u3066\u3044\u306a\u3044\u578b\u3067\u3059\u3002\n%3\n%4
-ParseException.warning=%0 (%1 \u884c\u76ee):  %2\n%3\n%4
-ParseException.constExprType=%0 (%1 \u884c\u76ee):  \u5b9a\u6570\u5f0f\u306e\u578b\u306f %2 \u3067\u3059\u304c\u3001%3 \u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\n%4\n%5
-ParseException.wrongType=%0 (%1 \u884c\u76ee):  %2 \u306e\u578b\u306f %3 \u3067\u3059\u304c %4 \u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\n%5\n%6
-ParseException.illegalIncompleteTypeReference=%0 (%1 \u884c\u76ee): \u578b %2 \u306e\u4e0d\u5b8c\u5168\u306a\u524d\u65b9\u5ba3\u8a00\u3078\u306e\u4e0d\u6b63\u306a\u53c2\u7167\u3067\u3059\u3002\n%3\n%4
-Preprocessor.unknown=`%0'\u306f\u672a\u77e5\u306e\u30d7\u30ea\u30d7\u30ed\u30bb\u30c3\u30b5\u6307\u793a\u3067\u3059\u3002\u884c\u306f\u7121\u8996\u3055\u308c\u307e\u3059\u3002
-Preprocessor.unknownPragma=`%0'\u306f\u672a\u77e5\u306e\u30d7\u30e9\u30b0\u30de\u3067\u3059\u3002\u884c\u306f\u7121\u8996\u3055\u308c\u307e\u3059\u3002
-Preprocessor.undefinedName=%1 \u306f\u30d7\u30e9\u30b0\u30de %0 \u306e\u672a\u5b9a\u7fa9\u306e\u578b\u540d\u3067\u3059\u3002\u884c\u306f\u7121\u8996\u3055\u308c\u307e\u3059\u3002
+Compile.parsing=%0\u306E\u89E3\u6790\u4E2D
+Compile.parseDone=\u5B8C\u4E86  - %0
+Compile.generating=%0\u306E\u751F\u6210\u4E2D
+Compile.genDone=\u5B8C\u4E86   -   %0
+Deprecated.keyword=\u8B66\u544A: \u30AD\u30FC\u30EF\u30FC\u30C9`%0'\u306F\u63A8\u5968\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+EvaluationException.1=%0\u6F14\u7B97\u5B50\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u306B\u4E00\u8CAB\u6027\u304C\u3042\u308A\u307E\u305B\u3093: %1\u304A\u3088\u3073%2\u3002
+EvaluationException.2=%0\u6F14\u7B97\u5B50\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u306F\u3001%1\u3067\u306F\u306A\u304F\u6570\u5024\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+EvaluationException.or=\u30D3\u30C3\u30C8\u5358\u4F4D\u306EOR\u6F14\u7B97
+EvaluationException.xor=\u30D3\u30C3\u30C8\u5358\u4F4D\u306EXOR\u6F14\u7B97
+EvaluationException.and=\u30D3\u30C3\u30C8\u5358\u4F4D\u306EAND\u6F14\u7B97
+EvaluationException.plus=\u52A0\u7B97
+EvaluationException.minus=\u6E1B\u7B97
+EvaluationException.left=\u5DE6\u30B7\u30D5\u30C8
+EvaluationException.right=\u53F3\u30B7\u30D5\u30C8
+EvaluationException.times=\u4E57\u7B97
+EvaluationException.divide=\u9664\u7B97
+EvaluationException.mod=\u3079\u304D\u4E57
+EvaluationException.pos=\u5358\u9805\u30D7\u30E9\u30B9
+EvaluationException.neg=\u5358\u9805\u30DE\u30A4\u30CA\u30B9
+EvaluationException.not=\u30D3\u30C3\u30C8\u5358\u4F4D\u306ENOT\u6F14\u7B97
+EvaluationException.booleanNot=boolean NOT
+EvaluationException.booleanAnd=boolean AND
+EvaluationException.booleanOr=boolean OR
+EvaluationException.equal=\u6B21\u3068\u7B49\u3057\u3044
+EvaluationException.notEqual=\u6B21\u3068\u7B49\u3057\u304F\u306A\u3044
+EvaluationException.greaterThan=\u304C\u6B21\u306E\u5024\u3088\u308A\u5927\u304D\u3044
+EvaluationException.lessThan=\u304C\u6B21\u306E\u5024\u3088\u308A\u5C0F\u3055\u3044
+EvaluationException.greaterEqual=\u304C\u6B21\u306E\u5024\u4EE5\u4E0A
+EvaluationException.lessEqual=\u304C\u6B21\u306E\u5024\u4EE5\u4E0B
+GenFileStream.1=%0\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: %1
+InvalidArgument.1=\u5F15\u6570\u304C\u7121\u52B9\u3067\u3059: %0\u3002
+InvalidArgument.2=IDL\u30D5\u30A1\u30A4\u30EB\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+InvalidCharacter.1=%0 (\u884C%1): \u6587\u5B57\u304C\u7121\u52B9\u3067\u3059: %2 (ASCII %3)\u3002\n%4\n%5
+Migration.futureKeyword=\u8B66\u544A: \u8B58\u5225\u5B50`%0'\u304C\u30AD\u30FC\u30EF\u30FC\u30C9\u3068\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059\u3002\u5C06\u6765\u306E\u4E92\u63DB\u6027\u306E\u305F\u3081\u306B\u3001\u30A8\u30B9\u30B1\u30FC\u30D7\u3055\u308C\u305F\u8B58\u5225\u5B50\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+Migration.keywordCollision=\u8B66\u544A: \u8B58\u5225\u5B50`%0'\u304C\u30AD\u30FC\u30EF\u30FC\u30C9\u3068\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059\u3002\u5C06\u6765\u306E\u4E92\u63DB\u6027\u306E\u305F\u3081\u306B\u3001\u30A8\u30B9\u30B1\u30FC\u30D7\u3055\u308C\u305F\u8B58\u5225\u5B50\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+ParseException.abstractValueBox=%0 (\u884C%1): \u5024\u30DC\u30C3\u30AF\u30B9\u306Fabstract\u3068\u3057\u3066\u5BA3\u8A00\u3067\u304D\u307E\u305B\u3093\u3002\n%2\n%3
+ParseException.alreadyDeclared=%0 (\u884C%1): %2\u306F\u3059\u3067\u306B\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059\u3002\n%3\n%4
+ParseException.declNotInSameFile=%0 (\u884C%1): %2\u306F\u30D5\u30A1\u30A4\u30EB%3\u306Eforward\u5BA3\u8A00\u3067\u4EE5\u524D\u306B\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059\u3002\n%4\n%5
+ParseException.alreadyDerived=%0 (\u884C%1): %2\u306F%3\u306E\u89AA\u3068\u3057\u3066\u3059\u3067\u306B\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059\u3002\n%4\n%5
+ParseException.alreadyDefaulted=%0 (\u884C%1): \u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u5206\u5C90\u306F\u3059\u3067\u306B\u691C\u51FA\u3055\u308C\u3066\u3044\u307E\u3059\u3002\n%2\n%3
+ParseException.alreadyRaised=%0 (\u884C%1): %2\u306Fraises\u53E5\u3067\u3059\u3067\u306B\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002\n%3\n%4
+ParseException.attributeNotType=%0 (\u884C%1): %2\u306F\u5C5E\u6027\u3067\u3059\u3002\u578B\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\n%3\n%4
+ParseException.badAbstract=%0 (\u884C%1): %2\u306Eforward\u5BA3\u8A00\u3068\u5B9F\u969B\u306E\u5BA3\u8A00\u306B\u4E00\u8CAB\u6027\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u4E00\u65B9\u306Fabstract\u3067\u3059\u304C\u3001\u3082\u3046\u4E00\u65B9\u306Fabstract\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\n%3\n%4
+ParseException.badCustom=%0 (\u884C%1): forward\u5024\u5BA3\u8A00\u306Fcustom\u3068\u3057\u3066\u5BA3\u8A00\u3067\u304D\u307E\u305B\u3093\u3002\n%2\n%3
+ParseException.badRepIDAlreadyAssigned=%0 (\u884C%1): \u578B%2\u306B\u306F\u3001\u524D\u306EID\u30D7\u30E9\u30B0\u30DE\u30FB\u30C7\u30A3\u30EC\u30AF\u30C6\u30A3\u30D6\u306E\u30EA\u30DD\u30B8\u30C8\u30EAID\u304C\u3059\u3067\u306B\u5272\u308A\u5F53\u3066\u3089\u308C\u3066\u3044\u307E\u3059\u3002\n%3\n%4
+ParseException.badRepIDForm=%0 (\u884C%1): \u30EA\u30DD\u30B8\u30C8\u30EAID '%2'\u306E\u5F62\u5F0F\u306F'<format>:<string>'\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n%3\n%4
+ParseException.badRepIDPrefix=%0 (\u884C%1): \u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9%2\u306B\u306F\u3001'%4'\u3067\u306F\u306A\u304F\u30EA\u30DD\u30B8\u30C8\u30EAID\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9`%3'\u304C\u5FC5\u8981\u3067\u3059\u3002\n%5\n%6
+ParseException.badState=%0 (\u884C%1): %2\u306F\u30B9\u30C6\u30FC\u30C8\u30D5\u30EB\u30FB\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306B\u3067\u304D\u307E\u305B\u3093\u3002\u8907\u6570\u306E\u30B9\u30C6\u30FC\u30C8\u30D5\u30EB\u89AA\u304C\u3042\u308A\u307E\u3059\u3002\n%3\n%4
+ParseException.branchLabel=%0 (\u884C%1): case %2\u306F\u3059\u3067\u306B\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059\u3002\n%3\n%4
+ParseException.branchName=%0 (\u884C%1): %2\u3068\u3044\u3046\u540D\u524D\u306E\u5206\u5C90\u306F\u3059\u3067\u306B\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059\u3002\n%3\n%4
+ParseException.duplicateInit=%0 (\u884C%1): \u521D\u671F\u5316\u5B50\u306B\u306F\u524D\u306E\u521D\u671F\u5316\u5B50\u3068\u540C\u3058\u7F72\u540D\u304C\u3042\u308A\u307E\u3059\u3002\n%2\n%3
+ParseException.duplicateState=%0 (\u884C%1): \u30C7\u30FC\u30BF\u30FB\u30E1\u30F3\u30D0\u30FC%2\u306E\u540D\u524D\u304C\u524D\u306E\u30C7\u30FC\u30BF\u30FB\u30E1\u30F3\u30D0\u30FC\u3068\u540C\u3058\u3067\u3059\u3002\n%3\n%4
+ParseException.elseNoIf=%0 (\u884C%1): \u4E00\u81F4\u3059\u308B#if\u304C\u306A\u3044#else\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F\u3002\n%2\n%3
+ParseException.endNoIf=%0 (\u884C%1): \u4E00\u81F4\u3059\u308B#if\u304C\u306A\u3044#endif\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F\u3002\n%2\n%3
+ParseException.evaluation=%0 (\u884C%1): %2\n%3\n%4
+ParseException.forwardEntry=%0 (\u884C%1): %2\u3078\u306E\u524D\u65B9\u53C2\u7167\u304C\u3042\u308A\u307E\u3059\u304C\u3001\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\n%3\n%4
+ParseException.forwardedValueBox=%0 (\u884C%1): %2\u306B\u306Fforward\u5BA3\u8A00\u304C\u3042\u308A\u307E\u3059\u3002\u5024\u30DC\u30C3\u30AF\u30B9\u306Fforward\u3068\u3057\u3066\u5BA3\u8A00\u3067\u304D\u307E\u305B\u3093\u3002\n%3\n%4
+ParseException.forwardInheritance=%0 (\u884C%1): %3\u306E\u4E0D\u5B8C\u5168\u306Aforward\u5BA3\u8A00\u304B\u3089\u306E%2\u306E\u7D99\u627F\u306F\u7121\u52B9\u3067\u3059\u3002\n%4\n%5
+ParseException.generic=%0 (\u884C%1): %2\n%3\n%4
+ParseException.illegalArray=%0 (\u884C%1): \u914D\u5217\u306F%2\u306E\u6B63\u3057\u3044\u578B\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\n%3\n%4
+ParseException.illegalException=%0 (\u884C%1): \u4F8B\u5916\u3092%2s\u5185\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\n%3\n%4
+ParseException.invalidConst1=%0 (\u884C%1): \u5B9A\u6570\u5F0F\u306F%3\u578B\u3067\u306F\u306A\u304F%2\u578B\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n%4\n%5
+ParseException.invalidConst2=%0 (\u884C%1): \u5B9A\u6570\u5F0F\u306E\u8B58\u5225\u5B50\u306F\u3001%2\u3067\u306F\u306A\u304F\u5B9A\u6570\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n%3\n%4
+ParseException.keywordCollision=%0 (\u884C%1): \u8B58\u5225\u5B50`%2'\u304C\u30AD\u30FC\u30EF\u30FC\u30C9\u3068\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059\u3002\u5FC5\u8981\u306A\u5834\u5408\u306F\u30A8\u30B9\u30B1\u30FC\u30D7\u3055\u308C\u305F\u8B58\u5225\u5B50\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n%3\n%4
+ParseException.methodClash=%0 (\u884C%1): \u30E1\u30BD\u30C3\u30C9\u540D\u304C\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9%2\u3067\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059: %3\u3002\n%4\n%5
+ParseException.moduleNotType=%0 (\u884C%1): %2\u306F\u30E2\u30B8\u30E5\u30FC\u30EB\u3067\u3059\u3002\u578B\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\n%3\n%4
+ParseException.nestedValueBox=%0 (\u884C%1): \u5024\u30DC\u30C3\u30AF\u30B9\u306F\u30CD\u30B9\u30C8\u3067\u304D\u307E\u305B\u3093\u3002\n%2\n%3
+ParseException.noDefault=%0 (\u884C%1): \u8003\u3048\u3089\u308C\u308B\u3059\u3079\u3066\u306Ecase\u304C\u5B8C\u5168\u306B\u9069\u7528\u3055\u308C\u308B\u5834\u5408\u3001\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u5206\u5C90\u306F\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093\u3002\n%2\n%3
+ParseException.nonAbstractParent=%0 (\u884C%1): abstract\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9%2\u306F\u975Eabstract\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9%3\u304B\u3089\u7D99\u627F\u3067\u304D\u307E\u305B\u3093\u3002\n%4\n%5
+ParseException.nonAbstractParent2=%0 (\u884C%1): abstract\u5024%2\u306F\u975Eabstract\u5024%3\u304B\u3089\u7D99\u627F\u3067\u304D\u307E\u305B\u3093\u3002\n%4\n%5
+ParseException.nonAbstractParent3=%0 (\u884C%1): \u5024%2\u306F\u6307\u5B9A\u3069\u304A\u308A\u306B\u975Eabstract\u5024%3\u304B\u3089\u7D99\u627F\u3067\u304D\u307E\u305B\u3093\u3002\n%4\n%5
+ParseException.notANumber=%0 (\u884C%1): \u6570\u5024\u304C\u5FC5\u8981\u3067\u3059\u3002%2\u306F\u6709\u52B9\u306A\u6570\u5024\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\n%3\n%4
+ParseException.nothing=%0\u306F\u7A7A\u3067\u3059\u3002\u30B3\u30F3\u30D1\u30A4\u30EB\u3059\u308B\u3082\u306E\u304C\u3042\u308A\u307E\u305B\u3093\u3002
+ParseException.notPosInt=%0 (\u884C%1): %2\u3067\u306F\u306A\u304F\u6B63\u306E\u6574\u6570\u306E\u5B9A\u6570\u304C\u5FC5\u8981\u3067\u3059\u3002\n%3\n%4
+ParseException.oneway=%0 (\u884C%1): %2\u306Foneway\u306B\u306A\u308B\u3088\u3046\u306B\u5BA3\u8A00\u3055\u308C\u307E\u3059\u3002oneway\u30E1\u30BD\u30C3\u30C9\u306F\u3001void\u3092\u8FD4\u3057\u3001\u30D1\u30E9\u30E1\u30FC\u30BF\u5185\u3067\u306E\u307F\u4F7F\u7528\u3057\u3001\u4F8B\u5916\u3092\u767A\u751F\u3057\u306A\u3044\u3088\u3046\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n%3\n%4
+ParseException.operationNotType=%0 (\u884C%1): %2\u306F\u64CD\u4F5C\u3067\u3059\u3002\u578B\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\n%3\n%4
+ParseException.outOfRange=%0 (\u884C%1): \u5B9A\u6570\u5F0F\u306E\u5024%2\u304C\u578B%3\u306E\u7BC4\u56F2\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002\n%4\n%5
+ParseException.recursive=%0 (\u884C%1): \u552F\u4E00\u306E\u6B63\u3057\u3044\u518D\u5E30\u7684\u5B9A\u7FA9\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059: \u30B7\u30FC\u30B1\u30F3\u30B9<%2> %3\u3002\n%4\n%5
+ParseException.selfInherit=%0 (\u884C%1): %2\u3092\u305D\u308C\u81EA\u4F53\u304B\u3089\u7D99\u627F\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\n%3\n%4
+ParseException.stringTooLong=%0 (\u884C%1): "%2"\u306F%3\u6587\u5B57\u4EE5\u5185\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n%4\n%5
+ParseException.syntax1=%0 (\u884C%1): `%2'\u304C\u5FC5\u8981\u3067\u3059\u304C\u3001`%3'\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F\u3002\n%4\n%5
+ParseException.syntax2=%0 (\u884C%1): %2\u306E1\u3064\u304C\u5FC5\u8981\u3067\u3059\u304C\u3001`%3'\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F\u3002\n%4\n%5
+ParseException.unclosed=%0: \u30B3\u30E1\u30F3\u30C8\u3067\u4E88\u671F\u3057\u306A\u3044EOF\u3092\u691C\u51FA\u3057\u307E\u3057\u305F\u3002
+ParseException.undeclaredType=%0 (\u884C%1): %2\u306F\u5BA3\u8A00\u3055\u308C\u3066\u3044\u306A\u3044\u578B\u3067\u3059\u3002\n%3\n%4
+ParseException.warning=%0 (\u884C%1): %2\n%3\n%4
+ParseException.constExprType=%0 (\u884C%1): \u5B9A\u6570\u5F0F\u306E\u578B\u306F%2\u3067\u3059\u304C\u3001%3\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n%4\n%5
+ParseException.wrongType=%0 (\u884C%1): %2\u306E\u578B\u306F%3\u3067\u3059\u304C\u3001%4\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n%5\n%6
+ParseException.illegalIncompleteTypeReference=%0 (\u884C%1): %2\u578B\u306E\u4E0D\u5B8C\u5168\u306Aforward\u5BA3\u8A00\u3078\u306E\u7121\u52B9\u306A\u53C2\u7167\u3067\u3059\u3002\n%3\n%4
+Preprocessor.unknown=\u4E0D\u660E\u306A\u30D7\u30EA\u30D7\u30ED\u30BB\u30C3\u30B5\u30FB\u30C7\u30A3\u30EC\u30AF\u30C6\u30A3\u30D6`%0'\u3067\u3059\u3002\u884C\u306F\u7121\u8996\u3055\u308C\u307E\u3057\u305F\u3002
+Preprocessor.unknownPragma=\u4E0D\u660E\u306A\u30D7\u30E9\u30B0\u30DE`%0'\u3067\u3059\u3002\u884C\u306F\u7121\u8996\u3055\u308C\u307E\u3057\u305F\u3002
+Preprocessor.undefinedName=\u30D7\u30E9\u30B0\u30DE%0\u306E\u578B\u540D\u304C\u672A\u5B9A\u7FA9\u3067\u3059: %1\u3002\u884C\u306F\u7121\u8996\u3055\u308C\u307E\u3057\u305F\u3002
 Token.boolLit=<boolean literal>
 Token.charLit=<character literal>
 Token.intLit=<integer literal>
@@ -164,32 +164,14 @@
 Token.identifier=<identifier>
 Token.endOfFile=EOF
 Token.unknown=?
-Util.cantCreatePkg=\u30d1\u30c3\u30b1\u30fc\u30b8 %0 \u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002
-Version.product=IDL Parser Framework, \u30d0\u30fc\u30b8\u30e7\u30f3 "%0"
-Version.number=3.0
-default=\u30a8\u30e9\u30fc!  \u5b58\u5728\u3057\u306a\u3044\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u8981\u6c42\u3055\u308c\u307e\u3057\u305f\u3002\u30e1\u30c3\u30bb\u30fc\u30b8\u30d5\u30a1\u30a4\u30eb\u306b\u30ad\u30fc\u304c\u3042\u308a\u307e\u305b\u3093: %0.
+Util.cantCreatePkg=\u30D1\u30C3\u30B1\u30FC\u30B8%0\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002
+Version.product=IDL\u30D1\u30FC\u30B5\u30FC\u30FB\u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF\u3001\u30D0\u30FC\u30B8\u30E7\u30F3"%0"
+Version.number=3.2
+default=\u30A8\u30E9\u30FC\u3002\u5B58\u5728\u3057\u306A\u3044\u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u30EA\u30AF\u30A8\u30B9\u30C8\u3055\u308C\u307E\u3057\u305F\u3002\u30E1\u30C3\u30BB\u30FC\u30B8\u30FB\u30D5\u30A1\u30A4\u30EB\u306B\u30AD\u30FC\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093: %0\u3002
 
 # Translator: In the list of options below, do not translate:
 #             -i, -d, -keep, -emitAll, -noWarn, -v, -verbose, -version, #define
 #             Do not translate the string "java com.sun.tools.corba.se.idl.Compile"
 
-usage=\u30b3\u30f3\u30d1\u30a4\u30e9\u306e\u4f7f\u3044\u65b9:\n\
-\ java com.sun.tools.corba.se.idl.Compile [options] <idl file>\n\
-<idl file> \u306f IDL \u5b9a\u7fa9\u304c\u683c\u7d0d\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u306e\u540d\u524d\u3067\u3059\u3002\n\
-[options] \u306f\u4ee5\u4e0b\u306b\u793a\u3059\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u7d44\u307f\u5408\u308f\u305b\u3067\u3059\u3002\n\
-\u3053\u308c\u3089\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u7701\u7565\u53ef\u80fd\u3067\u3001\u4efb\u610f\u306e\u9806\u5e8f\u3067\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\n\
-\u305f\u3060\u3057 <idl file> \u306f\u5fc5\u9808\u3067\u3001\u6700\u5f8c\u306b\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\n\
-\ \n\
-\u30aa\u30d7\u30b7\u30e7\u30f3:\n\
-  -d <symbol>               IDL \u30d5\u30a1\u30a4\u30eb\u5185\u306e\u6b21\u306e\u884c\u3068\u7b49\u4fa1:\n\
-\                          #define <symbol>\n\
-  -emitAll                  #included \u30d5\u30a1\u30a4\u30eb\u5185\u306e\u3082\u306e\u3092\u542b\u3080\u5168\u578b\u3092\n\
-\                     \u751f\u6210\u3059\u308b\n\
-  -i <include path>         \u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u73fe\u5728\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067\u30a4\u30f3\u30af\u30eb\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22\n\
-\                          \u3059\u308b\u3002\u305d\u308c\u4ee5\u5916\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u3053\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u8ffd\u52a0\u3059\u308b\n\
-  -keep                     \u751f\u6210\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u304c\u3059\u3067\u306b\u5b58\u5728\u3059\u308b\u5834\u5408\u3001\u65e2\u5b58\u306e\u30d5\u30a1\u30a4\u30eb\u3092\n\
-\                          \u4e0a\u66f8\u304d\u3057\u306a\u3044\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u4e0a\u66f8\u304d\u3059\u308b\n\
-  -noWarn                   \u8b66\u544a\u3092\u751f\u6210\u3057\u306a\u3044\n\
-  -v, -verbose              \u8a73\u7d30\u30e2\u30fc\u30c9\n\
-  -version             \u30d0\u30fc\u30b8\u30e7\u30f3\u756a\u53f7\u3092\u8868\u793a\u3059\u308b\n
+usage=\u30B3\u30F3\u30D1\u30A4\u30E9\u306E\u4F7F\u7528\u65B9\u6CD5:\n\ java com.sun.tools.corba.se.idl.Compile [options] <idl file>\n<idl file>\u306FIDL\u5B9A\u7FA9\u3092\u542B\u3080\u30D5\u30A1\u30A4\u30EB\u306E\u540D\u524D\u3067\u3001\n[options]\u306F\u6B21\u306B\u30EA\u30B9\u30C8\u3059\u308B\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u7D44\u5408\u305B\u3067\u3059\u3002\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\n\u7701\u7565\u53EF\u80FD\u3067\u3001\u4EFB\u610F\u306E\u9806\u5E8F\u3067\u8868\u793A\u3055\u308C\u307E\u3059\u3002<idl file>\u306F\u5FC5\u9808\u3067\u3001\n\u6700\u5F8C\u306B\u8868\u793A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n\ \n\u30AA\u30D7\u30B7\u30E7\u30F3:\n-d <symbol>          IDL\u30D5\u30A1\u30A4\u30EB\u306E\u6B21\u306E\u884C\u3068\n\                     \u540C\u3058\u3067\u3059:  #define <symbol>\n-emitAll             #included\u30D5\u30A1\u30A4\u30EB\u3067\u898B\u3064\u304B\u3063\u305F\u30BF\u30A4\u30D7\u3092\u542B\u3080\u3001\u3059\u3079\u3066\u306E\u30BF\u30A4\u30D7\u3092\n\                     \u767A\u884C\u3057\u307E\u3059\u3002\n-i <include path>    \u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u306F\u3001\u73FE\u5728\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30A4\u30F3\u30AF\u30EB\u30FC\u30C9\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u304C\n\                     \u30B9\u30AD\u30E3\u30F3\u3055\u308C\u307E\u3059\u3002\u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u5225\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u8FFD\u52A0\u3057\u307E\u3059\u3002\n-keep                \u751F\u6210\u3055\u308C\u308B\u30D5\u30A1\u30A4\u30EB\u304C\u3059\u3067\u306B\u5B58\u5728\u3059\u308B\u5834\u5408\u306F\u3001\u4E0A\u66F8\u304D\n\                     \u3057\u307E\u305B\u3093\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u306F\u4E0A\u66F8\u304D\u3055\u308C\u307E\u3059\u3002\n-noWarn              \u8B66\u544A\u3092\u51FA\u3055\u306A\u3044\u3088\u3046\u306B\u3057\u307E\u3059\u3002\n-v, -verbose         \u8A73\u7D30\u30E2\u30FC\u30C9\u3002\n-version             \u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n
 
--- a/corba/src/share/classes/com/sun/tools/corba/se/idl/idl_zh_CN.prp	Tue Apr 19 10:26:18 2011 -0700
+++ b/corba/src/share/classes/com/sun/tools/corba/se/idl/idl_zh_CN.prp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2009, Oracle and/or its affiliates. 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
@@ -64,132 +64,114 @@
 #
 # Translator:  Start Translating
 
-Compile.parsing=\u6b63\u5728\u89e3\u6790 %0
-Compile.parseDone=\u5b8c\u6210--%0
-Compile.generating=\u6b63\u5728\u751f\u6210 %0
-Compile.genDone=\u5b8c\u6210--%0
-Deprecated.keyword=\u8b66\u544a\uff1a\u5173\u952e\u5b57 `%0' \u5df2\u8fc7\u65f6\u3002
-EvaluationException.1=%0 \u8fd0\u7b97\u7b26\u7684\u64cd\u4f5c\u6570\u4e0d\u4e00\u81f4\uff1a%1 \u548c %2\u3002
-EvaluationException.2=%0 \u8fd0\u7b97\u7b26\u7684\u64cd\u4f5c\u6570\u5fc5\u987b\u4e3a\u6570\u5b57\uff0c\u800c\u975e %1\u3002
-EvaluationException.or=\u6309\u4f4d or
-EvaluationException.xor=\u6309\u4f4d xor
-EvaluationException.and=\u6309\u4f4d and
-EvaluationException.plus=\u52a0
-EvaluationException.minus=\u51cf
-EvaluationException.left=\u5411\u5de6\u79fb\u4f4d
-EvaluationException.right=\u5411\u53f3\u79fb\u4f4d
-EvaluationException.times=\u4e58
-EvaluationException.divide=\u9664
-EvaluationException.mod=\u5efa\u6a21
-EvaluationException.pos=\u4e00\u5143\u6b63\u6570
-EvaluationException.neg=\u4e00\u5143\u8d1f\u6570
-EvaluationException.not=\u6309\u4f4d not
-EvaluationException.booleanNot=\u5e03\u5c14\u503c not
-EvaluationException.booleanAnd=\u5e03\u5c14\u503c and
-EvaluationException.booleanOr=\u5e03\u5c14\u503c or
-EvaluationException.equal=\u7b49\u4e8e
-EvaluationException.notEqual=\u4e0d\u7b49\u4e8e
-EvaluationException.greaterThan=\u5927\u4e8e
-EvaluationException.lessThan=\u5c0f\u4e8e
-EvaluationException.greaterEqual=\u5927\u4e8e\u6216\u7b49\u4e8e
-EvaluationException.lessEqual=\u5c0f\u4e8e\u6216\u7b49\u4e8e
-GenFileStream.1=\u65e0\u6cd5\u751f\u6210 {0}\uff1a%1
-InvalidArgument.1=\u53c2\u6570\u65e0\u6548\uff1a%0\u3002
-InvalidArgument.2=\u672a\u6307\u5b9a\u4efb\u4f55 IDL \u6587\u4ef6\u3002
-InvalidCharacter.1=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u5b57\u7b26\u65e0\u6548\uff1a%2 (ASCII %3)\u3002\n%4\n%5
-Migration.futureKeyword=\u8b66\u544a\uff1a\u6807\u8bc6\u7b26 `%0' \u4e0e\u5173\u952e\u5b57\u51b2\u7a81\uff0c\u8bf7\u4f7f\u7528\u6362\u7801\u7684\u6807\u8bc6\u7b26\u786e\u4fdd\u4ee5\u540e\u7684\u517c\u5bb9\u6027\u3002
-Migration.keywordCollision=\u8b66\u544a\uff1a\u6807\u8bc6\u7b26 `%0' \u4e0e\u5173\u952e\u5b57\u51b2\u7a81\uff0c\u8bf7\u4f7f\u7528\u6362\u7801\u7684\u6807\u8bc6\u7b26\u786e\u4fdd\u4ee5\u540e\u7684\u517c\u5bb9\u6027\u3002
-ParseException.abstractValueBox=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u65e0\u6cd5\u5c06\u503c\u6846\u58f0\u660e\u4e3a\u62bd\u8c61\u3002\n%2\n%3
-ParseException.alreadyDeclared=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u5df2\u58f0\u660e %2\u3002\n%3\n%4
-ParseException.declNotInSameFile=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u4ee5\u524d\u5df2\u5728\u6587\u4ef6 %3 \u7684\u5411\u524d\u58f0\u660e\u4e2d\u58f0\u660e\u4e86 %2\u3002\n%4\n%5
-ParseException.alreadyDerived=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u5df2\u5c06 %2 \u58f0\u660e\u4e3a %3 \u7684\u7236\u9879\u3002\n%4\n%5
-ParseException.alreadyDefaulted=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u9047\u5230\u9ed8\u8ba4\u5206\u652f\u3002\n%2\n%3
-ParseException.alreadyRaised=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u5df2\u5728 raises \u5b50\u53e5\u4e2d\u6307\u5b9a\u4e86 %2\u3002\n%3\n%4
-ParseException.attributeNotType=%0\uff08\u7b2c %1 \u884c\uff09\uff1a%2 \u4e3a\u5c5e\u6027\u3002\u4e0d\u80fd\u5c06\u5176\u7528\u4f5c\u7c7b\u578b\u3002\n%3\n%4
-ParseException.badAbstract=%0\uff08\u7b2c %1 \u884c\uff09\uff1a%2 \u7684\u5411\u524d\u548c\u5b9e\u9645\u58f0\u660e\u4e0d\u4e00\u81f4\u3002\u5176\u4e2d\u4e00\u4e2a\u662f\u62bd\u8c61\u58f0\u660e\uff0c\u800c\u53e6\u4e00\u4e2a\u5374\u4e0d\u662f\u3002\n%3\n%4
-ParseException.badCustom=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u65e0\u6cd5\u81ea\u5b9a\u4e49\u58f0\u660e\u5411\u524d\u503c\u58f0\u660e\u3002\n%2\n%3
-ParseException.badRepIDAlreadyAssigned=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u5728\u4ee5\u524d\u7684 ID pragma \u6307\u4ee4\u4e2d\u5df2\u5411\u7c7b\u578b %2 \u6307\u5b9a\u4e86\u7cfb\u7edf\u4fe1\u606f\u5e93 ID\u3002\n%3\n%4
-ParseException.badRepIDForm=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u7cfb\u7edf\u4fe1\u606f\u5e93 ID '%2' \u7684\u683c\u5f0f\u5e94\u4e3a '<\u683c\u5f0f>:<\u5b57\u7b26\u4e32>'\u3002\n%3\n%4
-ParseException.badRepIDPrefix=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u63a5\u53e3 %2 \u7684\u7cfb\u7edf\u4fe1\u606f\u5e93 ID \u524d\u7f00\u5e94\u4e3a `%3' \u800c\u975e '%4'\u3002\n%5\n%6
-ParseException.badState=%0\uff08\u7b2c %1 \u884c\uff09\uff1a%2 \u4e0d\u80fd\u4e3a\u6709\u72b6\u6001\u63a5\u53e3\uff1b\u5b83\u5177\u6709\u591a\u4e2a\u6709\u72b6\u6001\u7236\u63a5\u53e3\u3002\n%3\n%4
-ParseException.branchLabel=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u5df2\u58f0\u660e\u6761\u4ef6 %2\u3002\n%3\n%4
-ParseException.branchName=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u5df2\u58f0\u660e\u540d\u4e3a %2 \u7684\u5206\u652f\u3002\n%3\n%4
-ParseException.duplicateInit=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u521d\u59cb\u5316\u7a0b\u5e8f\u4e0e\u4ee5\u524d\u7684\u521d\u59cb\u5316\u7a0b\u5e8f\u5177\u6709\u76f8\u540c\u7684\u7b7e\u540d\u3002\n%2\n%3
-ParseException.duplicateState=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u6570\u636e\u6210\u5458 %2 \u4e0e\u4ee5\u524d\u7684\u6570\u636e\u6210\u5458\u5177\u6709\u76f8\u540c\u7684\u540d\u79f0\u3002\n%3\n%4
-ParseException.elseNoIf=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u9047\u5230\u7684 #else \u6ca1\u6709\u5339\u914d\u7684 #if\u3002\n%2\n%3
-ParseException.endNoIf=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u9047\u5230\u7684 #endif \u6ca1\u6709\u5339\u914d\u7684 #if\u3002\n%2\n%3
-ParseException.evaluation=%0\uff08\u7b2c %1 \u884c\uff09\uff1a  %2\n%3\n%4
-ParseException.forwardEntry=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u5b58\u5728\u5bf9 %2 \u7684\u5411\u524d\u5f15\u7528\uff0c\u4f46\u5c1a\u672a\u8fdb\u884c\u5b9a\u4e49\u3002\n%3\n%4
-ParseException.forwardedValueBox=%0\uff08\u7b2c %1 \u884c\uff09\uff1a%2 \u5177\u6709\u5411\u524d\u58f0\u660e\u3002\u65e0\u6cd5\u5411\u524d\u58f0\u660e\u503c\u6846\u3002\n%3\n%4
-ParseException.forwardInheritance=%0\uff08\u7b2c %1 \u884c\uff09\uff1a%2 \u4ece %3 \u7684\u4e0d\u5b8c\u6574\u7684\u5411\u524d\u58f0\u660e\u8fdb\u884c\u7ee7\u627f\u662f\u975e\u6cd5\u7684\u3002\n%4\n%5
-ParseException.generic=%0\uff08\u7b2c %1 \u884c\uff09\uff1a  %2\n%3\n%4
-ParseException.illegalArray=%0\uff08\u7b2c %1 \u884c\uff09\uff1a%2 \u4e2d\u7684\u6570\u7ec4\u7684\u7c7b\u578b\u4e0d\u5408\u6cd5\u3002\n%3\n%4
-ParseException.illegalException=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u5f02\u5e38\u4e0d\u80fd\u663e\u793a\u5728 %2 \u4e2d\u3002\n%3\n%4
-ParseException.invalidConst1=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u5e38\u91cf\u8868\u8fbe\u5f0f\u7684\u7c7b\u578b\u5fc5\u987b\u4e3a %2\uff0c\u800c\u4e0d\u80fd\u4e3a %3\u3002\n%4\n%5
-ParseException.invalidConst2=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u5e38\u91cf\u8868\u8fbe\u5f0f\u4e2d\u7684\u6807\u8bc6\u7b26\u5fc5\u987b\u4e3a\u5e38\u91cf\uff0c\u800c\u4e0d\u80fd\u4e3a %2\u3002\n%3\n%4
-ParseException.keywordCollision=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u6807\u8bc6\u7b26 `%2' \u4e0e\u5173\u952e\u5b57\u51b2\u7a81\uff1b\u5982\u679c\u9700\u8981\uff0c\u8bf7\u4f7f\u7528\u6362\u7801\u7684\u6807\u8bc6\u7b26\u3002\n%3\n%4
-ParseException.methodClash=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u63a5\u53e3 %2 \u4e2d\u7684\u65b9\u6cd5\u540d\u51b2\u7a81\uff1a%3\u3002\n%4\n%5
-ParseException.moduleNotType=%0\uff08\u7b2c %1 \u884c\uff09\uff1a%2 \u4e3a\u6a21\u5757\u3002\u4e0d\u80fd\u5c06\u5176\u7528\u4f5c\u7c7b\u578b\u3002\n%3\n%4
-ParseException.nestedValueBox=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u503c\u6846\u4e0d\u80fd\u5d4c\u5957\u3002\n%2\n%3
-ParseException.noDefault=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u6ee1\u8db3\u6240\u6709\u53ef\u80fd\u60c5\u51b5\u65f6\uff0c\u4e0d\u5141\u8bb8\u4f7f\u7528\u9ed8\u8ba4\u5206\u652f\u3002\n%2\n%3
-ParseException.nonAbstractParent=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u62bd\u8c61\u63a5\u53e3 %2 \u4e0d\u80fd\u4ece\u975e\u62bd\u8c61\u63a5\u53e3 %3 \u8fdb\u884c\u7ee7\u627f\u3002\n%4\n%5
-ParseException.nonAbstractParent2=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u62bd\u8c61\u503c %2 \u4e0d\u80fd\u4ece\u975e\u62bd\u8c61\u503c %3 \u8fdb\u884c\u7ee7\u627f\u3002\n%4\n%5
-ParseException.nonAbstractParent3=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u503c %2 \u65e0\u6cd5\u6309\u6307\u5b9a\u7684\u90a3\u6837\u4ece\u975e\u62bd\u8c61\u503c %3 \u8fdb\u884c\u7ee7\u627f\u3002\n%4\n%5
-ParseException.notANumber=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u9700\u8981\u6570\u5b57\u3002%2 \u4e0d\u662f\u6709\u6548\u6570\u5b57\u3002\n%3\n%4
-ParseException.nothing=%0 \u4e3a\u7a7a\u3002\u65e0\u7f16\u8bd1\u5185\u5bb9\u3002
-ParseException.notPosInt=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u9700\u8981\u6b63\u6574\u6570\u5e38\u91cf\uff0c\u800c\u4e0d\u662f %2\u3002\n%3\n%4
-ParseException.oneway=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u5c06 %2 \u58f0\u660e\u4e3a oneway\u3002Oneway \u65b9\u6cd5\u5fc5\u987b\uff1a\u8fd4\u56de void\uff1b\u4ec5\u5728\u53c2\u6570\u4e2d\u624d\u6709\uff1b\u4e0d\u4f1a\u51fa\u73b0\u4efb\u4f55\u5f02\u5e38\u3002\n%3\n%4
-ParseException.operationNotType=%0\uff08\u7b2c %1 \u884c\uff09\uff1a%2 \u4e3a\u64cd\u4f5c\u3002\u4e0d\u80fd\u5c06\u5176\u7528\u4f5c\u7c7b\u578b\u3002\n%3\n%4
-ParseException.outOfRange=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u5e38\u91cf\u8868\u8fbe\u5f0f\u7684\u503c %2 \u8d85\u51fa\u4e86\u7c7b\u578b %3 \u7684\u8303\u56f4\u3002\n%4\n%5
-ParseException.recursive=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u552f\u4e00\u7684\u5408\u6cd5\u9012\u5f52\u5b9a\u4e49\u4e3a\uff1asequence<%2> %3\u3002\n%4\n%5
-ParseException.selfInherit=%0\uff08\u7b2c %1 \u884c\uff09\uff1a%2 \u4e0d\u80fd\u4ece\u5176\u672c\u8eab\u8fdb\u884c\u7ee7\u627f\u3002\n%3\n%4
-ParseException.stringTooLong=%0\uff08\u7b2c %1 \u884c\uff09\uff1a"%2" \u7684\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc7 %3 \u4e2a\u5b57\u7b26\u3002\n%4\n%5
-ParseException.syntax1=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u9700\u8981 `%2'\uff0c\u800c\u9047\u5230 `%3'\u3002\n%4\n%5
-ParseException.syntax2=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u9700\u8981\u5176\u4e2d\u4e00\u4e2a `%2'\uff0c\u800c\u9047\u5230 `%3'\u3002\n%4\n%5
-ParseException.unclosed=%0\uff1a\u5728\u6ce8\u91ca\u4e2d\u9047\u5230\u610f\u5916\u7684\u6587\u4ef6\u7ed3\u5c3e\u3002
-ParseException.undeclaredType=%0\uff08\u7b2c %1 \u884c\uff09\uff1a%2 \u662f\u672a\u58f0\u660e\u7684\u7c7b\u578b\u3002\n%3\n%4
-ParseException.warning=%0\uff08\u7b2c %1 \u884c\uff09\uff1a  %2\n%3\n%4
-ParseException.constExprType=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u5e38\u91cf\u8868\u8fbe\u5f0f\u7684\u7c7b\u578b\u4e3a %2\uff0c\u4f46\u662f\u5b83\u5e94\u8be5\u4e3a %3\u3002\n%4\n%5
-ParseException.wrongType=%0\uff08\u7b2c %1 \u884c\uff09\uff1a%2 \u7684\u7c7b\u578b\u4e3a %3\uff0c\u4f46\u662f\u5b83\u5e94\u8be5\u4e3a %4\u3002\n%5\n%6
-ParseException.illegalIncompleteTypeReference=%0\uff08\u7b2c %1 \u884c\uff09\uff1a\u5bf9\u7c7b\u578b %2 \u7684\u4e0d\u5b8c\u6574\u5411\u524d\u58f0\u660e\u7684\u5f15\u7528\u975e\u6cd5\u3002\n%3\n%4
-Preprocessor.unknown=\u672a\u77e5\u9884\u5904\u7406\u7a0b\u5e8f\u6307\u4ee4 `%0'\u3002\u5ffd\u7565\u884c\u3002
-Preprocessor.unknownPragma=\u672a\u77e5 pragma `%0'\u3002\u5ffd\u7565\u884c\u3002
-Preprocessor.undefinedName=pragma %0 \u7684\u672a\u5b9a\u4e49\u7c7b\u578b\u540d\uff1a%1\u3002  \u5ffd\u7565\u884c\u3002
-Token.boolLit=<\u5e03\u5c14\u503c\u5b57\u9762\u503c>
-Token.charLit=<\u5b57\u7b26\u5b57\u9762\u503c>
-Token.intLit=<\u6574\u578b\u5b57\u9762\u503c>
-Token.floatLit=<\u6d6e\u70b9\u5b57\u9762\u503c>
-Token.stringLit=<\u5b57\u7b26\u4e32\u5b57\u9762\u503c>
-Token.literal=<\u5b57\u9762\u503c>
-Token.identifier=<\u6807\u8bc6\u7b26>
+Compile.parsing=\u6B63\u5728\u5BF9 %0 \u8FDB\u884C\u8BED\u6CD5\u5206\u6790
+Compile.parseDone=\u5B8C\u6210  - %0
+Compile.generating=\u6B63\u5728\u751F\u6210 %0
+Compile.genDone=\u5B8C\u6210   -   %0
+Deprecated.keyword=\u8B66\u544A: \u5173\u952E\u5B57 `%0' \u5DF2\u8FC7\u65F6\u3002
+EvaluationException.1=%0 \u8FD0\u7B97\u7B26\u7684\u64CD\u4F5C\u6570\u4E0D\u4E00\u81F4: %1 \u548C %2\u3002
+EvaluationException.2=%0 \u8FD0\u7B97\u7B26\u7684\u64CD\u4F5C\u6570\u5FC5\u987B\u662F\u6570\u5B57, \u800C\u4E0D\u662F %1\u3002
+EvaluationException.or=\u6309\u4F4D\u6216
+EvaluationException.xor=\u6309\u4F4D\u5F02\u6216
+EvaluationException.and=\u6309\u4F4D\u4E0E
+EvaluationException.plus=\u6DFB\u52A0
+EvaluationException.minus=\u51CF\u6CD5
+EvaluationException.left=\u5411\u5DE6\u79FB\u4F4D
+EvaluationException.right=\u5411\u53F3\u79FB\u4F4D
+EvaluationException.times=\u4E58\u6CD5
+EvaluationException.divide=\u9664\u6CD5
+EvaluationException.mod=\u53D6\u6A21
+EvaluationException.pos=\u4E00\u5143\u6B63\u6570
+EvaluationException.neg=\u4E00\u5143\u8D1F\u6570
+EvaluationException.not=\u6309\u4F4D\u975E
+EvaluationException.booleanNot=\u5E03\u5C14\u975E
+EvaluationException.booleanAnd=\u5E03\u5C14\u4E0E
+EvaluationException.booleanOr=\u5E03\u5C14\u6216
+EvaluationException.equal=\u7B49\u4E8E
+EvaluationException.notEqual=\u4E0D\u7B49\u4E8E
+EvaluationException.greaterThan=\u5927\u4E8E
+EvaluationException.lessThan=\u5C0F\u4E8E
+EvaluationException.greaterEqual=\u5927\u4E8E\u7B49\u4E8E
+EvaluationException.lessEqual=\u5C0F\u4E8E\u7B49\u4E8E
+GenFileStream.1=\u65E0\u6CD5\u751F\u6210%0:  %1
+InvalidArgument.1=\u53C2\u6570\u65E0\u6548:  %0\u3002
+InvalidArgument.2=\u672A\u6307\u5B9A IDL \u6587\u4EF6\u3002
+InvalidCharacter.1=%0 (\u884C %1):  \u5B57\u7B26\u65E0\u6548:  %2 (ASCII %3)\u3002\n%4\n%5
+Migration.futureKeyword=\u8B66\u544A: \u6807\u8BC6\u7B26 `%0' \u4E0E\u5173\u952E\u5B57\u51B2\u7A81; \u8BF7\u4F7F\u7528\u8F6C\u4E49\u6807\u8BC6\u7B26\u4EE5\u786E\u4FDD\u5C06\u6765\u517C\u5BB9\u3002
+Migration.keywordCollision=\u8B66\u544A: \u6807\u8BC6\u7B26 `%0' \u4E0E\u5173\u952E\u5B57\u51B2\u7A81; \u8BF7\u4F7F\u7528\u8F6C\u4E49\u6807\u8BC6\u7B26\u4EE5\u786E\u4FDD\u5C06\u6765\u517C\u5BB9\u3002
+ParseException.abstractValueBox=%0 (\u884C %1):  \u4E0D\u80FD\u5C06\u503C\u6846\u58F0\u660E\u4E3A\u62BD\u8C61\u3002\n%2\n%3
+ParseException.alreadyDeclared=%0 (\u884C %1):  %2\u5DF2\u58F0\u660E\u3002\n%3\n%4
+ParseException.declNotInSameFile=%0 (\u884C %1): %2\u4EE5\u524D\u66FE\u5728\u6587\u4EF6%3\u7684\u524D\u5411\u58F0\u660E\u4E2D\u58F0\u660E\u3002\n%4\n%5
+ParseException.alreadyDerived=%0 (\u884C %1):  %2\u5DF2\u58F0\u660E\u4E3A%3\u7684\u7236\u7EA7\u3002\n%4\n%5
+ParseException.alreadyDefaulted=%0 (\u884C %1):  \u5DF2\u9047\u5230\u9ED8\u8BA4\u5206\u652F\u3002\n%2\n%3
+ParseException.alreadyRaised=%0 (\u884C %1):  %2\u5DF2\u5728 raise \u5B50\u53E5\u4E2D\u6307\u5B9A\u3002\n%3\n%4
+ParseException.attributeNotType=%0 (\u884C %1):  %2 \u662F\u5C5E\u6027\u3002\u4E0D\u80FD\u5C06\u5176\u7528\u4F5C\u7C7B\u578B\u3002\n%3\n%4
+ParseException.badAbstract=%0 (\u884C %1): %2\u7684\u524D\u5411\u58F0\u660E\u548C\u5B9E\u9645\u58F0\u660E\u4E0D\u4E00\u81F4\u3002\u4E00\u4E2A\u662F\u62BD\u8C61\u7684, \u800C\u53E6\u4E00\u4E2A\u4E0D\u662F\u62BD\u8C61\u7684\u3002\n%3\n%4
+ParseException.badCustom=%0 (\u884C %1):  \u65E0\u6CD5\u5C06\u524D\u5411\u503C\u58F0\u660E\u58F0\u660E\u4E3A\u5B9A\u5236\u3002\n%2\n%3
+ParseException.badRepIDAlreadyAssigned=%0 (\u884C %1):  \u5DF2\u5728\u4E0A\u4E00\u4E2A ID \u7F16\u8BD1\u6307\u793A\u6307\u4EE4\u4E2D\u4E3A\u7C7B\u578B%2\u5206\u914D\u4E86\u8D44\u6599\u6863\u6848\u5E93 ID\u3002\n%3\n%4
+ParseException.badRepIDForm=%0 (\u884C %1): \u8D44\u6599\u6863\u6848\u5E93 ID '%2' \u7684\u683C\u5F0F\u5E94\u4E3A '<format>:<string>'\u3002\n%3\n%4
+ParseException.badRepIDPrefix=%0 (\u884C %1):  \u63A5\u53E3 %2 \u7684\u8D44\u6599\u6863\u6848\u5E93 ID \u524D\u7F00\u5E94\u4E3A `%3', \u800C\u975E '%4'\u3002\n%5\n%6
+ParseException.badState=%0 (\u884C %1): %2 \u4E0D\u80FD\u662F\u6709\u72B6\u6001\u63A5\u53E3; \u5B83\u5305\u542B\u591A\u4E2A\u6709\u72B6\u6001\u7236\u7EA7\u3002\n%3\n%4
+ParseException.branchLabel=%0 (\u884C %1):  case %2\u5DF2\u58F0\u660E\u3002\n%3\n%4
+ParseException.branchName=%0 (\u884C %1):  \u540D\u4E3A%2\u7684\u5206\u652F\u5DF2\u58F0\u660E\u3002\n%3\n%4
+ParseException.duplicateInit=%0 (\u884C %1):  \u67D0\u4E2A\u521D\u59CB\u5316\u7A0B\u5E8F\u4E0E\u4E0A\u4E00\u4E2A\u521D\u59CB\u5316\u7A0B\u5E8F\u5177\u6709\u76F8\u540C\u7684\u7B7E\u540D\u3002\n%2\n%3
+ParseException.duplicateState=%0 (\u884C %1):  \u6570\u636E\u6210\u5458 %2 \u4E0E\u4E0A\u4E00\u4E2A\u6570\u636E\u6210\u5458\u5177\u6709\u76F8\u540C\u7684\u540D\u79F0\u3002\n%3\n%4
+ParseException.elseNoIf=%0 (\u884C %1):  \u9047\u5230\u4E86 #else, \u4F46\u6CA1\u6709\u5339\u914D\u7684 #if\u3002\n%2\n%3
+ParseException.endNoIf=%0 (\u884C %1):  \u9047\u5230\u4E86 #endif, \u4F46\u6CA1\u6709\u5339\u914D\u7684 #if\u3002\n%2\n%3
+ParseException.evaluation=%0 (\u884C %1):  %2\n%3\n%4
+ParseException.forwardEntry=%0 (\u884C %1):  \u5B58\u5728\u9488\u5BF9%2\u7684\u524D\u5411\u5F15\u7528, \u4F46\u5B83\u5C1A\u672A\u5B9A\u4E49\u3002\n%3\n%4
+ParseException.forwardedValueBox=%0 (\u884C %1):  %2 \u5177\u6709\u524D\u5411\u58F0\u660E\u3002\u4E0D\u80FD\u5BF9\u503C\u6846\u8FDB\u884C\u524D\u5411\u58F0\u660E\u3002\n%3\n%4
+ParseException.forwardInheritance=%0 (\u884C %1):  \u5BF9\u4E8E%2, \u4ECE%3\u7684\u4E0D\u5B8C\u6574\u524D\u5411\u58F0\u660E\u8FDB\u884C\u7EE7\u627F\u662F\u975E\u6CD5\u7684\u3002\n%4\n%5
+ParseException.generic=%0 (\u884C %1):  %2\n%3\n%4
+ParseException.illegalArray=%0 (\u884C %1):  %2\u4E2D\u67D0\u4E2A\u6570\u7EC4\u7684\u7C7B\u578B\u975E\u6CD5\u3002\n%3\n%4
+ParseException.illegalException=%0 (\u884C %1):  %2s \u4E2D\u4E0D\u80FD\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF\u3002\n%3\n%4
+ParseException.invalidConst1=%0 (\u884C %1):  \u5E38\u91CF\u8868\u8FBE\u5F0F\u7684\u7C7B\u578B\u5FC5\u987B\u662F%2, \u800C\u4E0D\u80FD\u662F%3\u3002\n%4\n%5
+ParseException.invalidConst2=%0 (\u884C %1):  \u5E38\u91CF\u8868\u8FBE\u5F0F\u4E2D\u7684\u6807\u8BC6\u7B26\u5FC5\u987B\u662F\u5E38\u91CF, \u800C\u4E0D\u80FD\u662F%2\u3002\n%3\n%4
+ParseException.keywordCollision=%0 (\u884C %1):  \u6807\u8BC6\u7B26 `%2' \u4E0E\u5173\u952E\u5B57\u51B2\u7A81; \u5982\u6709\u5FC5\u8981, \u8BF7\u4F7F\u7528\u8F6C\u4E49\u6807\u8BC6\u7B26\u3002\n%3\n%4
+ParseException.methodClash=%0 (\u884C %1):  \u63A5\u53E3 %2 \u4E2D\u7684\u65B9\u6CD5\u540D\u51B2\u7A81:  %3\u3002\n%4\n%5
+ParseException.moduleNotType=%0 (\u884C %1):  %2 \u662F\u6A21\u5757\u3002\u4E0D\u80FD\u5C06\u5176\u7528\u4F5C\u7C7B\u578B\u3002\n%3\n%4
+ParseException.nestedValueBox=%0 (\u884C %1):  \u503C\u6846\u4E0D\u80FD\u5D4C\u5957\u3002\n%2\n%3
+ParseException.noDefault=%0 (\u884C %1):  \u5F53\u5B8C\u5168\u6D89\u53CA\u6240\u6709\u53EF\u80FD\u7684 case \u65F6, \u4E0D\u5141\u8BB8\u4F7F\u7528\u9ED8\u8BA4\u5206\u652F\u3002\n%2\n%3
+ParseException.nonAbstractParent=%0 (\u884C %1):  \u62BD\u8C61\u63A5\u53E3 %2 \u4E0D\u80FD\u4ECE\u975E\u62BD\u8C61\u63A5\u53E3 %3 \u7EE7\u627F\u3002\n%4\n%5
+ParseException.nonAbstractParent2=%0 (\u884C %1):  \u62BD\u8C61\u503C %2 \u4E0D\u80FD\u4ECE\u975E\u62BD\u8C61\u503C %3 \u7EE7\u627F\u3002\n%4\n%5
+ParseException.nonAbstractParent3=%0 (\u884C %1):  \u503C %2 \u4E0D\u80FD\u6839\u636E\u6307\u5B9A\u4ECE\u975E\u62BD\u8C61\u503C %3 \u7EE7\u627F\u3002\n%4\n%5
+ParseException.notANumber=%0 (\u884C %1):  \u5E94\u4E3A\u6570\u5B57\u3002%2\u4E0D\u662F\u6709\u6548\u7684\u6570\u5B57\u3002\n%3\n%4
+ParseException.nothing=%0\u4E3A\u7A7A\u3002\u6CA1\u6709\u8981\u7F16\u8BD1\u7684\u5BF9\u8C61\u3002
+ParseException.notPosInt=%0 (\u884C %1):  \u5E94\u4E3A\u6B63\u6574\u6570\u5E38\u91CF, \u800C\u975E%2\u3002\n%3\n%4
+ParseException.oneway=%0 (\u884C %1):  %2\u5DF2\u58F0\u660E\u4E3A\u5355\u5411\u3002\u5355\u5411\u65B9\u6CD5\u5FC5\u987B: \u8FD4\u56DE\u7A7A\u503C; \u53EA\u6709 in \u53C2\u6570; \u4E0D\u5F15\u53D1\u5F02\u5E38\u9519\u8BEF\u3002\n%3\n%4
+ParseException.operationNotType=%0 (\u884C %1): %2\u662F\u8FD0\u7B97\u3002\u4E0D\u80FD\u5C06\u5176\u7528\u4F5C\u7C7B\u578B\u3002\n%3\n%4
+ParseException.outOfRange=%0 (\u884C %1):  \u5E38\u91CF\u8868\u8FBE\u5F0F %2 \u7684\u503C\u8D85\u51FA\u4E86\u7C7B\u578B%3\u7684\u8303\u56F4\u3002\n%4\n%5
+ParseException.recursive=%0 (\u884C %1):  \u552F\u4E00\u7684\u5408\u6CD5\u9012\u5F52\u5B9A\u4E49\u662F:  sequence<%2> %3\u3002\n%4\n%5
+ParseException.selfInherit=%0 (\u884C %1):  %2 \u4E0D\u80FD\u4ECE\u81EA\u8EAB\u7EE7\u627F\u3002\n%3\n%4
+ParseException.stringTooLong=%0 (\u884C %1):  "%2" \u7684\u957F\u5EA6\u4E0D\u80FD\u8D85\u8FC7 %3 \u4E2A\u5B57\u7B26\u3002\n%4\n%5
+ParseException.syntax1=%0 (\u884C %1):  \u5E94\u4E3A `%2'; \u4F46\u9047\u5230 `%3'\u3002\n%4\n%5
+ParseException.syntax2=%0 (\u884C %1):  \u5E94\u4E3A %2 \u4E4B\u4E00; \u4F46\u9047\u5230 `%3'\u3002\n%4\n%5
+ParseException.unclosed=%0:  \u5728\u6CE8\u91CA\u4E2D\u9047\u5230\u610F\u5916\u7684\u6587\u4EF6\u7ED3\u5C3E\u3002
+ParseException.undeclaredType=%0 (\u884C %1):  %2 \u662F\u672A\u58F0\u660E\u7684\u7C7B\u578B\u3002\n%3\n%4
+ParseException.warning=%0 (\u884C %1):  %2\n%3\n%4
+ParseException.constExprType=%0 (\u884C %1):  \u5E38\u91CF\u8868\u8FBE\u5F0F\u7684\u7C7B\u578B\u4E3A %2, \u4F46\u5E94\u4E3A %3\u3002\n%4\n%5
+ParseException.wrongType=%0 (\u884C %1):  %2\u7684\u7C7B\u578B\u4E3A%3, \u4F46\u5E94\u4E3A%4\u3002\n%5\n%6
+ParseException.illegalIncompleteTypeReference=%0 (\u884C %1): \u5BF9\u7C7B\u578B%2\u7684\u4E0D\u5B8C\u6574\u524D\u5411\u58F0\u660E\u7684\u5F15\u7528\u975E\u6CD5\u3002\n%3\n%4
+Preprocessor.unknown=\u672A\u77E5\u7684\u9884\u5904\u7406\u7A0B\u5E8F\u6307\u4EE4 `%0'\u3002\u5DF2\u5FFD\u7565\u884C\u3002
+Preprocessor.unknownPragma=\u672A\u77E5\u7684\u7F16\u8BD1\u6307\u793A\u6307\u4EE4 `%0'\u3002\u5DF2\u5FFD\u7565\u884C\u3002
+Preprocessor.undefinedName=\u7F16\u8BD1\u6307\u793A %0 \u7684\u672A\u5B9A\u4E49\u7C7B\u578B\u540D:  %1\u3002\u5DF2\u5FFD\u7565\u884C\u3002
+Token.boolLit=<\u5E03\u5C14\u6587\u5B57>
+Token.charLit=<\u5B57\u7B26\u6587\u5B57>
+Token.intLit=<\u6574\u578B\u6587\u5B57>
+Token.floatLit=<\u6D6E\u70B9\u6587\u5B57>
+Token.stringLit=<\u5B57\u7B26\u4E32\u6587\u5B57>
+Token.literal=<\u6587\u5B57>
+Token.identifier=<\u6807\u8BC6\u7B26>
 Token.endOfFile=EOF
 Token.unknown=?
-Util.cantCreatePkg=\u65e0\u6cd5\u521b\u5efa\u8f6f\u4ef6\u5305 %0\u3002
-Version.product=IDL Parser Framework\uff0c\u7248\u672c "%0"
+Util.cantCreatePkg=\u65E0\u6CD5\u521B\u5EFA\u7A0B\u5E8F\u5305%0\u3002
+Version.product=IDL \u8BED\u6CD5\u5206\u6790\u5668\u6846\u67B6, \u7248\u672C "%0"
 Version.number=3.2
-default=\u9519\u8bef\uff01\u8bf7\u6c42\u7684\u6d88\u606f\u4e0d\u5b58\u5728\u3002\u6d88\u606f\u6587\u4ef6\u4e0d\u5305\u542b\u5bc6\u94a5\uff1a%0\u3002
+default=\u9519\u8BEF! \u8BF7\u6C42\u4E86\u4E0D\u5B58\u5728\u7684\u6D88\u606F\u3002\u6D88\u606F\u6587\u4EF6\u672A\u5305\u542B\u5173\u952E\u5B57: %0\u3002
 
 # Translator: In the list of options below, do not translate:
 #             -i, -d, -keep, -emitAll, -noWarn, -v, -verbose, -version, #define
 #             Do not translate the string "java com.sun.tools.corba.se.idl.Compile"
 
-usage=\u7f16\u8bd1\u5668\u7528\u6cd5\uff1a\n\
-\ java com.sun.tools.corba.se.idl.Compile [\u9009\u9879] <idl \u6587\u4ef6>\n\
-\u5176\u4e2d\uff0c<idl \u6587\u4ef6> \u662f\u5305\u542b IDL \u5b9a\u4e49\u7684\u6587\u4ef6\u7684\u540d\u79f0\uff0c\u800c\n\
-[\u9009\u9879] \u662f\u4ee5\u4e0b\u6240\u5217\u9009\u9879\u7684\u4efb\u4e00\u7ec4\u5408\u3002\u8fd9\u4e9b\u9009\u9879\n\
-\u662f\u53ef\u9009\u7684\u5e76\u4e14\u53ef\u4ee5\u4ee5\u4efb\u610f\u987a\u5e8f\u663e\u793a\uff1b<idl \u6587\u4ef6> \u662f\u5fc5\u987b\u7684\u5e76\u4e14\n\
-\u5fc5\u987b\u663e\u793a\u5728\u6700\u540e\u3002\n\
-\ \n\
-\u9009\u9879\uff1a\n\
--d <\u7b26\u53f7>            \u7b49\u4ef7\u4e8e IDL \u6587\u4ef6\u4e2d\u7684\u4ee5\u4e0b\u884c\uff1a\n\
-\                       #define <\u7b26\u53f7>\n\
--emitAll                  \u53d1\u51fa\u6240\u6709\u7c7b\u578b\uff0c\u5305\u62ec\u5728  #included\n\
-\                     \u6587\u4ef6\u4e2d\u627e\u5230\u7684\u90a3\u4e9b\u7c7b\u578b\u3002\n\
--i <\u5305\u62ec\u8def\u5f84>        \u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u641c\u7d22\u5f53\u524d\u76ee\u5f55\u4ee5\u83b7\u5f97\u5176\u6240\u5305\u542b\u7684\u6587\u4ef6\u3002\n\
-\                     \u6b64\u9009\u9879\u5c06\u6dfb\u52a0\u5176\u4ed6\u76ee\u5f55\u3002\n\
--keep                \u5982\u679c\u8981\u751f\u6210\u7684\u6587\u4ef6\u5df2\u5b58\u5728\uff0c\u5219\u4e0d\n\
-\                     \u8986\u76d6\u5b83\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u4f1a\u8986\u76d6\u8be5\u6587\u4ef6\u3002\n\
--noWarn              \u6291\u5236\u8b66\u544a\u3002\n\
--v, -verbose         \u8be6\u7ec6\u6a21\u5f0f\u3002\n\
--version             \u663e\u793a\u7248\u672c\u53f7\u3002\n
+usage=\u7F16\u8BD1\u5668\u7528\u6CD5:\n\ java com.sun.tools.corba.se.idl.Compile [\u9009\u9879] <idl \u6587\u4EF6>\n\u5176\u4E2D, <idl \u6587\u4EF6> \u662F\u5305\u542B IDL \u5B9A\u4E49\u7684\u6587\u4EF6\u7684\u540D\u79F0, \u800C\n[\u9009\u9879] \u662F\u4E0B\u5217\u9009\u9879\u7684\u4EFB\u610F\u7EC4\u5408\u3002\u8FD9\u4E9B\u9009\u9879\n\u662F\u53EF\u9009\u7684, \u5E76\u4E14\u663E\u793A\u987A\u5E8F\u5E76\u4E0D\u56FA\u5B9A; <idl \u6587\u4EF6> \u662F\u5FC5\u9700\u7684\n\u5E76\u4E14\u5FC5\u987B\u663E\u793A\u5728\u6700\u540E\u3002\n\ \n\u9009\u9879:\n-d <\u7B26\u53F7>          \u8FD9\u7B49\u540C\u4E8E IDL \u6587\u4EF6\u4E2D\u7684\n\                     \u4E0B\u9762\u4E00\u884C:  #define <\u7B26\u53F7>\n-emitAll             \u53D1\u51FA\u6240\u6709\u7C7B\u578B, \u5305\u62EC\u5728 #included\n\                     \u6587\u4EF6\u4E2D\u627E\u5230\u7684\u7C7B\u578B\u3002\n-i <\u5305\u542B\u8DEF\u5F84>    \u9ED8\u8BA4\u60C5\u51B5\u4E0B, \u5C06\u5728\u5F53\u524D\u76EE\u5F55\u4E2D\u626B\u63CF\n\                     \u5305\u542B\u7684\u6587\u4EF6\u3002\u6B64\u9009\u9879\u5C06\u6DFB\u52A0\u53E6\u4E00\u4E2A\u76EE\u5F55\u3002\n-keep                \u5982\u679C\u8981\u751F\u6210\u7684\u6587\u4EF6\u5DF2\u5B58\u5728, \u8BF7\u4E0D\u8981\n\                     \u8986\u76D6\u5B83\u3002\u9ED8\u8BA4\u60C5\u51B5\u4E0B\u4F1A\u8986\u76D6\u5B83\u3002\n-noWarn              \u9690\u85CF\u8B66\u544A\u3002\n-v, -verbose         \u8BE6\u7EC6\u6A21\u5F0F\u3002\n-version             \u663E\u793A\u7248\u672C\u53F7\u3002\n
 
--- a/corba/src/share/classes/com/sun/tools/corba/se/idl/toJavaPortable/toJavaPortable_ja.prp	Tue Apr 19 10:26:18 2011 -0700
+++ b/corba/src/share/classes/com/sun/tools/corba/se/idl/toJavaPortable/toJavaPortable_ja.prp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2009, Oracle and/or its affiliates. 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,61 +51,18 @@
 #
 # Translator:  Start Translating
 #
-toJavaProlog1=%0 \u3067\u751f\u6210
-toJavaProlog2=\u751f\u6210\u5143: %0
-PreEmit.indeterminateTypeInfo=%0 \u306e\u578b\u60c5\u5831\u3092\u5224\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002
-InterfaceGen.noImpl=%0 \u306e\u30ed\u30fc\u30ab\u30eb\u5b9f\u88c5\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
-Version.product=IDL-to-Java \u30b3\u30f3\u30d1\u30a4\u30e9 (\u30dd\u30fc\u30bf\u30d6\u30eb), \u30d0\u30fc\u30b8\u30e7\u30f3 "%0"
-Version.number=3.1
-NameModifier.TooManyPercent=\u30d1\u30bf\u30fc\u30f3\u306b\u30011 \u3064\u4ee5\u4e0a\u306e % \u6587\u5b57\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059
-NameModifier.NoPercent=\u30d1\u30bf\u30fc\u30f3\u306b % \u6587\u5b57\u304c 1 \u3064\u3082\u542b\u307e\u308c\u3066\u3044\u307e\u305b\u3093
-NameModifier.InvalidChar=\u30d1\u30bf\u30fc\u30f3\u306b\u7121\u52b9\u306a\u6587\u5b57 %0 \u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059
+toJavaProlog1=%0\u306B\u3088\u3063\u3066\u751F\u6210\u3055\u308C\u307E\u3057\u305F
+toJavaProlog2=%0\u304B\u3089
+PreEmit.indeterminateTypeInfo=%0\u306E\u30BF\u30A4\u30D7\u60C5\u5831\u3092\u5224\u65AD\u3067\u304D\u307E\u305B\u3093\u3002
+InterfaceGen.noImpl=%0\u306E\u30ED\u30FC\u30AB\u30EB\u5B9F\u88C5\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
+Version.product=IDL-to-Java\u30B3\u30F3\u30D1\u30A4\u30E9(\u30DD\u30FC\u30BF\u30D6\u30EB)\u3001\u30D0\u30FC\u30B8\u30E7\u30F3"%0"
+Version.number=3.2
+NameModifier.TooManyPercent=\u30D1\u30BF\u30FC\u30F3\u306B\u8907\u6570\u306E\u30D1\u30FC\u30BB\u30F3\u30C8\u6587\u5B57\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059
+NameModifier.NoPercent=\u30D1\u30BF\u30FC\u30F3\u306B\u30D1\u30FC\u30BB\u30F3\u30C8\u6587\u5B57\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093
+NameModifier.InvalidChar=\u30D1\u30BF\u30FC\u30F3\u306B\u7121\u52B9\u306A\u6587\u5B57%0\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059
 #
 # Translator: In the list of options below, do not translate:
 #             -d, -emitAll, -f, -i, -keep, -m, -sep, -pkgPrefix, -td, -v, -verbose, -version, -implbase
 #             Do not translate the string "java com.sun.tools.corba.se.idl.toJavaPortable.Compile"
 #
-usage=\u30b3\u30f3\u30d1\u30a4\u30e9\u306e\u4f7f\u3044\u65b9:\n\
-\n\
-\    java com.sun.tools.corba.se.idl.toJavaPortable.Compile [options] <idl file>\n\
-\n\
-<idl file> \u306f IDL \u5b9a\u7fa9\u304c\u683c\u7d0d\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u306e\u540d\u524d\u3067\u3059\u3002\n\
-[options] \u306f\u4ee5\u4e0b\u306b\u793a\u3059\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u7d44\u307f\u5408\u308f\u305b\u3067\u3059\u3002\n\
-\u3053\u308c\u3089\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u7701\u7565\u53ef\u80fd\u3067\u3001\u4efb\u610f\u306e\u9806\u5e8f\u3067\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\n\
-\u305f\u3060\u3057 <idl file> \u306f\u5fc5\u9808\u3067\u3001\u6700\u5f8c\u306b\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\n\
-\ \n\
-\u30aa\u30d7\u30b7\u30e7\u30f3:\n\
-  -d <symbol>               IDL \u30d5\u30a1\u30a4\u30eb\u5185\u306e\u6b21\u306e\u884c\u3068\u7b49\u4fa1:\n\
-\                          #define <symbol>\n\
-  -emitAll                  #included \u30d5\u30a1\u30a4\u30eb\u5185\u306e\u3082\u306e\u3092\u542b\u3080\u5168\u578b\u3092\u751f\u6210\u3059\u308b\u3002\n\
-  -f<side>                  \u751f\u6210\u3059\u308b\u30d3\u30eb\u30c9\u3092\u5b9a\u7fa9\u3059\u308b\u3002<side> \u306b\u306f\u3001client\u3001server\u3001\n\
-\                          all\u3001serverTIE\u3001allTIE \u306e\u3046\u3061\u306e 1 \u3064\u3092\u6307\u5b9a\u3059\u308b\u3002serverTIE \u3068\n\
-\                          allTIE \u3067\u306f\u59d4\u8b72\u30e2\u30c7\u30eb\u30b9\u30b1\u30eb\u30c8\u30f3\u304c\u751f\u6210\u3055\u308c\u308b\u3002\u3053\u306e\u30d5\u30e9\u30b0\u3092\n\
-\                          \u6307\u5b9a\u3057\u306a\u3044\u5834\u5408\u3001-fclient \u304c\u6307\u5b9a\u3055\u308c\u305f\u3082\u306e\u3068\u3057\u3066\u52d5\u4f5c\u3059\u308b\u3002\n\
-  -i <include path>         \u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u73fe\u5728\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067\u30a4\u30f3\u30af\u30eb\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22\n\
-\                          \u3059\u308b\u3002\u305d\u308c\u4ee5\u5916\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u3053\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u8ffd\u52a0\u3059\u308b\n\
-  -keep                     \u751f\u6210\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u304c\u3059\u3067\u306b\u5b58\u5728\u3059\u308b\u5834\u5408\u3001\u65e2\u5b58\u306e\u30d5\u30a1\u30a4\u30eb\u3092\n\
-\                          \u4e0a\u66f8\u304d\u3057\u306a\u3044\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u4e0a\u66f8\u304d\u3059\u308b\n\
-  -noWarn                   \u8b66\u544a\u3092\u751f\u6210\u3057\u306a\u3044\n\
-  -oldImplBase              \u65e7 JDK (1.4 \u4ee5\u524d) \u306e ORB \u3068\u4e92\u63db\u6027\u306e\u3042\u308b\u30b9\u30b1\u30eb\u30c8\u30f3\u3092\u751f\u6210\u3059\u308b\n\
-  -pkgPrefix <t> <prefix>   \u30d5\u30a1\u30a4\u30eb\u30b9\u30b3\u30fc\u30d7\u3067\u578b\u540d\u307e\u305f\u306f\u30e2\u30b8\u30e5\u30fc\u30eb\u540d <t> \u304c\u691c\u51fa\u3055\u308c\u305f\n\
-\                          \u5834\u5408\u3001<t> \u306b\u5bfe\u3057\u3066\u751f\u6210\u3059\u308b\u5168\u30d5\u30a1\u30a4\u30eb\u306e Java \u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u306e\n\
-\                          \u5148\u982d\u306b <prefix> \u3092\u8ffd\u52a0\u3059\u308b\n\
-  -pkgTranslate <t> <pkg>   \u578b\u307e\u305f\u306f\u30e2\u30b8\u30e5\u30fc\u30eb\u540d <t> \u3092\u691c\u51fa\u3059\u308b\u3068\u3001\u751f\u6210\u3057\u305f java\n\
-\                          \u30d1\u30c3\u30b1\u30fc\u30b8\u5185\u306e <pkg> \u306b\u7f6e\u304d\u63db\u3048\u3089\u308c\u308b\u3002pkgPrefix \u304c\u6700\u521d\u306b\n\
-\                          \u5909\u66f4\u3055\u308c\u308b\u3053\u3068\u306b\u6ce8\u610f\u3059\u308b\u3053\u3068\u3002<t> \u306f\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u3068\u6b63\u78ba\u306b\n\
-\                          \u4e00\u81f4\u3057\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002\u307e\u305f\u3001<t> \u306f\u3001org\u3001org.omg\u3001\u307e\u305f\u306f\n\
-\                          org.omg \u306e\u30b5\u30d6\u30d1\u30c3\u30b1\u30fc\u30b8\u3067\u3042\u3063\u3066\u306f\u306a\u3089\u306a\u3044\u3002\n\
-  -skeletonName <xxx%yyy>   \u30d1\u30bf\u30fc\u30f3\u306b\u5f93\u3063\u3066\u30b9\u30b1\u30eb\u30c8\u30f3\u306b\u540d\u524d\u3092\u4ed8\u3051\u308b\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306f\n\
-\                          \u4ee5\u4e0b\u306e\u901a\u308a:\n\
-\                          POA \u57fa\u5e95\u30af\u30e9\u30b9 (-fserver \u307e\u305f\u306f -fall) \u306b\u306f %POA\u3001\n\
-\                          oldImplBase \u57fa\u5e95\u30af\u30e9\u30b9 (-oldImplBase \u304a\u3088\u3073 (-fserver \n\
-\                          \u307e\u305f\u306f -fall)) \u306b\u306f _%Impl\u3002\n\
-  -td <dir>                 \u51fa\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3068\u3057\u3066\u73fe\u5728\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u4ee3\u308f\u308a\u306b <dir> \u3092\n\
-\                          \u4f7f\u7528\u3059\u308b\n\
-  -tieName <xxx%yyy>        \u30d1\u30bf\u30fc\u30f3\u306b\u5f93\u3063\u3066 Tie \u306b\u540d\u524d\u3092\u4ed8\u3051\u308b\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306f\u4ee5\u4e0b\u306e\u901a\u308a:\n\
-\                          POA Tie (-fserverTie \u307e\u305f\u306f -fallTie) \u306b\u306f %POATie\u3001\n\
-\                          oldImplBase Tie (-oldImplBase \u304a\u3088\u3073 (-fserverTie \u307e\u305f\u306f\n\
-\                          -fallTie)) \u306b\u306f _%Tie\u3002\n\
-  -v, -verbose              \u8a73\u7d30\u30e2\u30fc\u30c9\n\
-  -version                  \u30d0\u30fc\u30b8\u30e7\u30f3\u756a\u53f7\u3092\u8868\u793a\u3057\u3066\u7d42\u4e86\u3059\u308b\n
+usage=\u30B3\u30F3\u30D1\u30A4\u30E9\u306E\u4F7F\u7528\u65B9\u6CD5:\n\n\    java com.sun.tools.corba.se.idl.toJavaPortable.Compile [options] <idl file>\n\n<idl file>\u306FIDL\u5B9A\u7FA9\u3092\u542B\u3080\u30D5\u30A1\u30A4\u30EB\u306E\u540D\u524D\u3067\u3001\n[options]\u306F\u6B21\u306B\u30EA\u30B9\u30C8\u3059\u308B\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u7D44\u5408\u305B\u3067\u3059\u3002\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\n\u7701\u7565\u53EF\u80FD\u3067\u3001\u4EFB\u610F\u306E\u9806\u5E8F\u3067\u8868\u793A\u3055\u308C\u307E\u3059\u3002<idl file>\u306F\u5FC5\u9808\u3067\u3001\n\u6700\u5F8C\u306B\u8868\u793A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n\ \n\u30AA\u30D7\u30B7\u30E7\u30F3:\n-d <symbol>               IDL\u30D5\u30A1\u30A4\u30EB\u306E\u6B21\u306E\u884C\u3068\n\                          \u540C\u3058\u3067\u3059:  #define <symbol>\n-emitAll                  #included\u30D5\u30A1\u30A4\u30EB\u3067\u898B\u3064\u304B\u3063\u305F\u30BF\u30A4\u30D7\u3092\u542B\u3080\u3001\u3059\u3079\u3066\u306E\u30BF\u30A4\u30D7\u3092\u767A\u884C\u3057\u307E\u3059\u3002\n-f<side>                  \u767A\u884C\u3059\u308B\u30D0\u30A4\u30F3\u30C7\u30A3\u30F3\u30B0\u3092\u5B9A\u7FA9\u3057\u307E\u3059\u3002<side>\u306Fclient\u3001\n\                          server\u3001all\u3001serverTIE\u3001allTIE\u306E\u3044\u305A\u308C\u304B\u3067\u3059\u3002serverTIE\u3068allTIE\u306F\n\                          \u59D4\u4EFB\u30E2\u30C7\u30EB\u30FB\u30B9\u30B1\u30EB\u30C8\u30F3\u3092\u767A\u884C\u3057\u307E\u3059\u3002\u3053\u306E\u30D5\u30E9\u30B0\u3092\n\                          \u4F7F\u7528\u3057\u306A\u3044\u5834\u5408\u306F\u3001-fclient\u3068\u307F\u306A\u3055\u308C\u307E\u3059\u3002\n-i <include path>         \u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u306F\u3001\u73FE\u5728\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30A4\u30F3\u30AF\u30EB\u30FC\u30C9\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u304C\n\                          \u30B9\u30AD\u30E3\u30F3\u3055\u308C\u307E\u3059\u3002\u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u5225\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u8FFD\u52A0\u3057\u307E\u3059\u3002\n-keep                     \u751F\u6210\u3055\u308C\u308B\u30D5\u30A1\u30A4\u30EB\u304C\u3059\u3067\u306B\u5B58\u5728\u3059\u308B\u5834\u5408\u306F\u3001\u4E0A\u66F8\u304D\n\                          \u3057\u307E\u305B\u3093\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u306F\u4E0A\u66F8\u304D\u3055\u308C\u307E\u3059\u3002\n-noWarn                   \u8B66\u544A\u3092\u51FA\u3055\u306A\u3044\u3088\u3046\u306B\u3057\u307E\u3059\u3002\n-oldImplBase              \u53E4\u3044(1.4\u4EE5\u524D) JDK ORB\u3068\u4E92\u63DB\u6027\u306E\u3042\u308B\u30B9\u30B1\u30EB\u30C8\u30F3\u3092\u751F\u6210\u3057\u307E\u3059\u3002\n-pkgPrefix <t> <prefix>   \u30D5\u30A1\u30A4\u30EB\u30FB\u30B9\u30B3\u30FC\u30D7\u3067\u30BF\u30A4\u30D7\u307E\u305F\u306F\u30E2\u30B8\u30E5\u30FC\u30EB\u540D<t>\u304C\u691C\u51FA\u3055\u308C\u305F\u5834\u5408\u3001\n\                          <t>\u306B\u5BFE\u3057\u3066\u751F\u6210\u3055\u308C\u305F\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB\u306EJava\u30D1\u30C3\u30B1\u30FC\u30B8\u540D\u3092\n\                          <prefix>\u3067\u59CB\u3081\u307E\u3059\u3002\n-pkgTranslate <t> <pkg>   \u30BF\u30A4\u30D7\u307E\u305F\u306F\u30E2\u30B8\u30E5\u30FC\u30EB\u540D<t>\u304C\u691C\u51FA\u3055\u308C\u305F\u5834\u5408\u3001\n\                          \u751F\u6210\u3055\u308C\u305FJava\u30D1\u30C3\u30B1\u30FC\u30B8\u5185\u3067<pkg>\u306B\u7F6E\u63DB\u3055\u308C\u307E\u3059\u3002pkgPrefix\u306E\n\                          \u5909\u66F4\u304C\u5148\u306B\u884C\u308F\u308C\u308B\u3053\u3068\u306B\u6CE8\u610F\u3057\u3066\u304F\u3060\u3055\u3044\u3002<t>\u306F\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\n\                          \u6B63\u5F0F\u540D\u3068\u5B8C\u5168\u306B\u4E00\u81F4\u3057\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u307E\u305F\u3001<t>\u3092\n\                          org\u3001org.omg\u307E\u305F\u306Forg.omg\u306E\u30B5\u30D6\u30D1\u30C3\u30B1\u30FC\u30B8\u306B\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002\n-skeletonName <xxx%yyy>   \u30D1\u30BF\u30FC\u30F3\u306B\u5F93\u3063\u3066\u30B9\u30B1\u30EB\u30C8\u30F3\u306B\u540D\u524D\u3092\u4ED8\u3051\u307E\u3059\u3002\n\                          \u30C7\u30D5\u30A9\u30EB\u30C8\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:\n\                          POA\u30D9\u30FC\u30B9\u30FB\u30AF\u30E9\u30B9\u306E\u5834\u5408\u306F%POA (-fserver\u307E\u305F\u306F-fall) \n\                          oldImplBase\u30D9\u30FC\u30B9\u30FB\u30AF\u30E9\u30B9\u306E\u5834\u5408\u306F_%ImplBase\n\                          (-oldImplBase\u304A\u3088\u3073(-fserver\u307E\u305F\u306F-fall))\u3002\n-td <dir>                 \u51FA\u529B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u306F\u3001\u73FE\u5728\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u304B\u308F\u308A\u306B<dir>\u3092\n\                          \u4F7F\u7528\u3057\u307E\u3059\u3002\n-tieName <xxx%yyy>        \u30D1\u30BF\u30FC\u30F3\u306B\u5F93\u3063\u3066tie\u306B\u540D\u524D\u3092\u4ED8\u3051\u307E\u3059\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:\n\                          POA tie\u306E\u5834\u5408\u306F%POATie (-fserverTie\u307E\u305F\u306F-fallTie) \n\                          oldImplBase tie\u306E\u5834\u5408\u306F%_Tie\n\                          (-oldImplBase\u304A\u3088\u3073(-fserverTie\u307E\u305F\u306F-fallTie))\u3002\n-v, -verbose              \u8A73\u7D30\u30E2\u30FC\u30C9\u3002\n-version                  \u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3092\u8868\u793A\u3057\u3066\u7D42\u4E86\u3057\u307E\u3059\u3002\n
--- a/corba/src/share/classes/com/sun/tools/corba/se/idl/toJavaPortable/toJavaPortable_zh_CN.prp	Tue Apr 19 10:26:18 2011 -0700
+++ b/corba/src/share/classes/com/sun/tools/corba/se/idl/toJavaPortable/toJavaPortable_zh_CN.prp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2009, Oracle and/or its affiliates. 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,61 +51,18 @@
 #
 # Translator:  Start Translating
 #
-toJavaProlog1=\u7531 %0 \u751f\u6210
-toJavaProlog2=\u6765\u81ea %0
-PreEmit.indeterminateTypeInfo=\u65e0\u6cd5\u786e\u5b9a %0 \u7684\u7c7b\u578b\u4fe1\u606f\u3002
-InterfaceGen.noImpl=\u672a\u627e\u5230 %0 \u7684\u672c\u5730\u5b9e\u73b0\u3002
-Version.product=IDL-to-Java \u7f16\u8bd1\u5668\uff08\u53ef\u79fb\u690d\uff09\uff0c\u7248\u672c "%0"
+toJavaProlog1=\u7531%0\u751F\u6210
+toJavaProlog2=\u4ECE%0
+PreEmit.indeterminateTypeInfo=\u65E0\u6CD5\u786E\u5B9A%0\u7684\u7C7B\u578B\u4FE1\u606F\u3002
+InterfaceGen.noImpl=\u627E\u4E0D\u5230%0\u7684\u672C\u5730\u5B9E\u73B0\u3002
+Version.product=IDL-to-Java \u7F16\u8BD1\u5668 (\u53EF\u79FB\u690D), \u7248\u672C "%0"
 Version.number=3.2
-NameModifier.TooManyPercent=\u6a21\u5f0f\u5305\u542b\u591a\u4e2a\u767e\u5206\u6bd4\u5b57\u7b26
-NameModifier.NoPercent=\u6a21\u5f0f\u4e0d\u5305\u542b\u4efb\u4f55\u767e\u5206\u6bd4\u5b57\u7b26
-NameModifier.InvalidChar=\u6a21\u5f0f\u5305\u542b\u65e0\u6548\u5b57\u7b26 %0
+NameModifier.TooManyPercent=\u6A21\u5F0F\u4E2D\u5305\u542B\u591A\u4E2A\u767E\u5206\u6BD4\u5B57\u7B26
+NameModifier.NoPercent=\u6A21\u5F0F\u4E2D\u4E0D\u5305\u542B\u767E\u5206\u6BD4\u5B57\u7B26
+NameModifier.InvalidChar=\u6A21\u5F0F\u4E2D\u5305\u542B\u65E0\u6548\u5B57\u7B26 %0
 #
 # Translator: In the list of options below, do not translate:
 #             -d, -emitAll, -f, -i, -keep, -m, -sep, -pkgPrefix, -td, -v, -verbose, -version, -implbase
 #             Do not translate the string "java com.sun.tools.corba.se.idl.toJavaPortable.Compile"
 #
-usage=\u7f16\u8bd1\u5668\u7528\u6cd5\uff1a\n\
-\n\
-\    java com.sun.tools.corba.se.idl.toJavaPortable.Compile [\u9009\u9879] <idl \u6587\u4ef6>\n\
-\n\
-\u5176\u4e2d\uff0c<idl \u6587\u4ef6> \u662f\u5305\u542b IDL \u5b9a\u4e49\u7684\u6587\u4ef6\u7684\u540d\u79f0\uff0c\u800c\n\
-[\u9009\u9879] \u662f\u4ee5\u4e0b\u6240\u5217\u9009\u9879\u7684\u4efb\u4e00\u7ec4\u5408\u3002\u8fd9\u4e9b\u9009\u9879\u662f\u53ef\u9009\u7684\n\
-\u5e76\u4e14\u53ef\u4ee5\u4ee5\u4efb\u610f\u987a\u5e8f\u663e\u793a\uff1b<idl \u6587\u4ef6> \u662f\u5fc5\u987b\u7684\u5e76\u4e14\n\
-\u5fc5\u987b\u663e\u793a\u5728\u6700\u540e\u3002\n\
-\ \n\
-\u9009\u9879\uff1a\n\
--d <\u7b26\u53f7>                 \u7b49\u4ef7\u4e8e IDL \u6587\u4ef6\u4e2d\u7684\u4ee5\u4e0b\u884c\uff1a\n\
-\                            #define <\u7b26\u53f7>\n\
--emitAll                  \u53d1\u51fa\u6240\u6709\u7c7b\u578b\uff0c\u5305\u62ec\u5728 #included \u6587\u4ef6\u4e2d\u627e\u5230\u7684\u90a3\u4e9b\u7c7b\u578b\u3002\n\
--f<\u7aef>                    \u5b9a\u4e49\u8981\u53d1\u51fa\u7684\u7ed1\u5b9a\u3002  <\u7aef> \u662f client\u3001\n\
-\                          server\u3001all\u3001serverTIE \u548c allTIE \u4e2d\u4e4b\u4e00\u3002  serverTIE \u548c allTIE\n\
-\                          \u5c06\u5bfc\u81f4\u53d1\u51fa\u59d4\u6258\u6a21\u578b\u6846\u67b6\u3002\u5982\u679c\u672a\u4f7f\u7528\u6b64\n\
-\                          \u6807\u5fd7\uff0c\u5219\u5047\u8bbe\u4e3a -fclient\u3002\n\
--i <\u5305\u62ec\u8def\u5f84>             \u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u641c\u7d22\u5f53\u524d\u76ee\u5f55\u4ee5\u83b7\u5f97\u5176\u6240\u5305\u542b\u7684\u6587\u4ef6\u3002\n\
-\                          \u6b64\u9009\u9879\u5c06\u6dfb\u52a0\u5176\u4ed6\u76ee\u5f55\u3002\n\
--keep                     \u5982\u679c\u8981\u751f\u6210\u7684\u6587\u4ef6\u5df2\u5b58\u5728\uff0c\u5219\u4e0d\n\
-\                          \u8986\u76d6\u5b83\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u4f1a\u8986\u76d6\u8be5\u6587\u4ef6\u3002\n\
--noWarn                   \u6291\u5236\u8b66\u544a\u3002\n\
--oldImplBase              \u751f\u6210\u4e0e\u65e7\uff081.4 \u7248\u4e4b\u524d\uff09JDK ORB \u517c\u5bb9\u7684\u6846\u67b6\u3002\n\
--pkgPrefix <t> <\u524d\u7f00>     \u5728\u6587\u4ef6\u8303\u56f4\u5185\u9047\u5230\u7c7b\u578b\u6216\u6a21\u5757\u540d\u79f0 <t> \u65f6\uff0c\n\
-\                          \u5c06\u4e3a\u9488\u5bf9 <t> \u6240\u751f\u6210\u7684\u6240\u6709\u6587\u4ef6\u7684 Java \u8f6f\u4ef6\u5305\u540d\u79f0\n\
-\                          \u9644\u52a0 <\u524d\u7f00>\u3002\n\
--pkgTranslate <t> <pkg>   \u5728\u9047\u5230\u7c7b\u578b\u6216\u6a21\u5757\u540d\u79f0 <t> \u65f6\uff0c\n\
-\                          \u5219\u5728\u751f\u6210\u7684 java \u8f6f\u4ef6\u5305\u4e2d\u4ee5 <pkg> \u5c06\u5176\u66ff\u6362\u3002\u8bf7\u6ce8\u610f\uff0c\n\
-\                          \u9996\u5148\u8fdb\u884c pkgPrefix \u66f4\u6539\u3002  <t> \u5fc5\u987b\u4e0e\u5b8c\u6574\u7684\n\
-\                          \u7684\u8f6f\u4ef6\u5305\u540d\u79f0\u5b8c\u5168\u4e00\u81f4\u3002\u53e6\u5916\uff0c<t> \u4e0d\u80fd\u4e3a\n\
-\                          org\u3001org.omg \u6216 org.omg \u7684\u4efb\u4f55\u5b50\u5305\u3002\n\
--skeletonName <xxx%yyy>   \u6839\u636e\u6a21\u5f0f\u547d\u540d\u6846\u67b6\u3002\n\
-\                          \u9ed8\u8ba4\u503c\u4e3a\uff1a\n\
-\                          \u9002\u7528\u4e8e POA \u57fa\u7c7b\uff08-fserver \u6216 -fall\uff09\u7684 %POA\n\
-\                          \u9002\u7528\u4e8e oldImplBase \u57fa\u7c7b\n\
-\                          \uff08-oldImplBase \u548c [-fserver \u6216 -fall]\uff09\u7684 \uff05ImplBase\u3002\n\
--td <\u76ee\u5f55>                \u5c06 <\u76ee\u5f55> \u800c\u975e\n\
-\                          \u5f53\u524d\u76ee\u5f55\u7528\u4f5c\u8f93\u51fa\u76ee\u5f55\u3002\n\
--tieName <xxx%yyy>        \u6839\u636e\u6a21\u5f0f\u547d\u540d tie\u3002\u9ed8\u8ba4\u503c\u4e3a\uff1a\n\
-\                          \u9002\u7528\u4e8e POA tie\uff08-fserverTie \u6216 -fallTie\uff09\u7684 %POATie\n\
-\                          \u9002\u7528\u4e8e oldImplBase tie\n\
-\                          \uff08-oldImplBase \u548c [-fserverTie \u6216 -fallTie]\uff09\u7684 \uff05_Tie\u3002\n\
--v, -verbose              \u8be6\u7ec6\u6a21\u5f0f\u3002\n\
--version                  \u663e\u793a\u7248\u672c\u53f7\u5e76\u9000\u51fa\u3002\n
+usage=\u7F16\u8BD1\u5668\u7528\u6CD5:\n\n\    java com.sun.tools.corba.se.idl.toJavaPortable.Compile [\u9009\u9879] <idl \u6587\u4EF6>\n\n\u5176\u4E2D, <idl \u6587\u4EF6> \u662F\u5305\u542B IDL \u5B9A\u4E49\u7684\u6587\u4EF6\u7684\u540D\u79F0, \u800C\n[\u9009\u9879] \u662F\u4E0B\u5217\u9009\u9879\u7684\u4EFB\u610F\u7EC4\u5408\u3002\u9009\u9879\n\u662F\u53EF\u9009\u7684, \u5E76\u4E14\u663E\u793A\u987A\u5E8F\u5E76\u4E0D\u56FA\u5B9A; <idl \u6587\u4EF6> \u662F\u5FC5\u9700\u7684,\n\u5E76\u4E14\u5FC5\u987B\u663E\u793A\u5728\u6700\u540E\u3002\n\ \n\u9009\u9879:\n-d <\u7B26\u53F7>               \u8FD9\u7B49\u540C\u4E8E IDL \u6587\u4EF6\u4E2D\u7684\n\                          \u4E0B\u9762\u4E00\u884C:  #define <\u7B26\u53F7>\n-emitAll                  \u53D1\u51FA\u6240\u6709\u7C7B\u578B, \u5305\u62EC\u5728 #included \u6587\u4EF6\u4E2D\u627E\u5230\u7684\u7C7B\u578B\u3002\n-f<side>                  \u5B9A\u4E49\u8981\u53D1\u51FA\u54EA\u4E9B\u7ED1\u5B9A\u3002<side> \u662F client,\n\                          server, all, serverTIE, allTIE \u4E4B\u4E00\u3002serverTIE \u548C allTIE\n\                          \u5BFC\u81F4\u53D1\u51FA\u59D4\u6D3E\u6A21\u578B\u9AA8\u67B6\u3002\u5982\u679C\u672A\u4F7F\u7528\n\                          \u6B64\u6807\u8BB0, \u5C06\u5047\u5B9A\u4E3A -fclient\u3002\n-i <\u5305\u542B\u8DEF\u5F84>         \u9ED8\u8BA4\u60C5\u51B5\u4E0B, \u5C06\u5728\u5F53\u524D\u76EE\u5F55\u4E2D\u626B\u63CF\n\                          \u5305\u542B\u7684\u6587\u4EF6\u3002\u6B64\u9009\u9879\u5C06\u6DFB\u52A0\u53E6\u4E00\u4E2A\u76EE\u5F55\u3002\n-keep                     \u5982\u679C\u8981\u751F\u6210\u7684\u6587\u4EF6\u5DF2\u5B58\u5728, \u8BF7\u4E0D\u8981\n\                          \u8986\u76D6\u5B83\u3002\u9ED8\u8BA4\u60C5\u51B5\u4E0B\u4F1A\u8986\u76D6\u5B83\u3002\n-noWarn                   \u9690\u85CF\u8B66\u544A\u3002\n-oldImplBase              \u751F\u6210\u4E0E\u65E7\u7248 (1.4 \u7248\u4E4B\u524D) JDK ORB \u517C\u5BB9\u7684\u9AA8\u67B6\u3002\n-pkgPrefix <t> <\u524D\u7F00>   \u5F53\u5728\u6587\u4EF6\u8303\u56F4\u5185\u9047\u5230\u7C7B\u578B\u6216\u6A21\u5757\u540D <t> \u65F6,\n\                          \u5728\u4E3A <t> \u751F\u6210\u7684\u6240\u6709\u6587\u4EF6\u7684 Java \u7A0B\u5E8F\u5305\u540D\u524D\n\                          \u6DFB\u52A0 <\u524D\u7F00>\u3002\n-pkgTranslate <t> <pkg>   \u5F53\u9047\u5230\u7C7B\u578B\u6216\u6A21\u5757\u540D <t> \u65F6, \u5728\n\                          \u751F\u6210\u7684 Java \u7A0B\u5E8F\u5305\u4E2D\u5C06\u5176\u66FF\u6362\u4E3A <pkg>\u3002\u8BF7\u6CE8\u610F, \n\                          \u5C06\u9996\u5148\u8FDB\u884C pkgPrefix \u66F4\u6539\u3002<t> \u5FC5\u987B\u4E0E\n\                          \u5B8C\u6574\u7A0B\u5E8F\u5305\u540D\u5B8C\u5168\u5339\u914D\u3002\u53E6\u5916, <t> \u4E0D\u80FD\u4E3A\n\                          org, org.omg \u6216 org.omg \u7684\u4EFB\u4F55\u5B50\u7A0B\u5E8F\u5305\u3002\n-skeletonName <xxx%yyy>   \u6839\u636E\u6A21\u5F0F\u547D\u540D\u9AA8\u67B6\u3002\n\                          \u9ED8\u8BA4\u503C\u4E3A:\n\                          %POA \u8868\u793A POA \u57FA\u7C7B (-fserver \u6216 -fall) \n\                          _%ImplBase \u8868\u793A oldImplBase \u57FA\u7C7B\n\                          (-oldImplBase \u548C (-fserver \u6216 -fall))\u3002\n-td <dir>                 \u4F7F\u7528 <dir> \u8868\u793A\u8F93\u51FA\u76EE\u5F55\u4EE5\u4EE3\u66FF\n\                          \u5F53\u524D\u76EE\u5F55\u3002\n-tieName <xxx%yyy>        \u6839\u636E\u6A21\u5F0F\u547D\u540D tie\u3002\u9ED8\u8BA4\u503C\u4E3A:\n\                          %POATie \u8868\u793A POA tie (-fserverTie \u6216 -fallTie) \n\                          %_Tie \u8868\u793A oldImplBase tie\n\                          (-oldImplBase \u548C (-fserverTie \u6216 -fallTie))\u3002\n-v, -verbose              \u8BE6\u7EC6\u6A21\u5F0F\u3002\n-version                  \u663E\u793A\u7248\u672C\u53F7\u5E76\u9000\u51FA\u3002\n
--- a/hotspot/.hgtags	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/.hgtags	Wed Apr 20 09:31:11 2011 -0700
@@ -158,3 +158,7 @@
 3c76374706ea8a77e15aec8310e831e5734f8775 hs21-b04
 b898f0fc3cedc972d884d31a751afd75969531cf jdk7-b135
 b898f0fc3cedc972d884d31a751afd75969531cf hs21-b05
+bd586e392d93b7ed7a1636dcc8da2b6a4203a102 jdk7-b136
+bd586e392d93b7ed7a1636dcc8da2b6a4203a102 hs21-b06
+2dbcb4a4d8dace5fe78ceb563b134f1fb296cd8f jdk7-b137
+2dbcb4a4d8dace5fe78ceb563b134f1fb296cd8f hs21-b07
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/CommandProcessor.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/CommandProcessor.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotTypeDataBase.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotTypeDataBase.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeLoadConstant.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeLoadConstant.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeWithKlass.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeWithKlass.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ClassObjectReferenceImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ClassObjectReferenceImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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,7 +27,7 @@
 import com.sun.jdi.*;
 import sun.jvm.hotspot.oops.Instance;
 import sun.jvm.hotspot.oops.Klass;
-import sun.jvm.hotspot.oops.OopUtilities;
+import sun.jvm.hotspot.oops.java_lang_Class;
 
 public class ClassObjectReferenceImpl extends ObjectReferenceImpl
                                       implements ClassObjectReference {
@@ -39,7 +39,7 @@
 
     public ReferenceType reflectedType() {
         if (reflectedType == null) {
-            Klass k = OopUtilities.classOopToKlass(ref());
+            Klass k = java_lang_Class.asKlass(ref());
             reflectedType = vm.referenceType(k);
         }
         return reflectedType;
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/DictionaryEntry.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/DictionaryEntry.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/LoaderConstraintEntry.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/LoaderConstraintEntry.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/PlaceholderEntry.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/PlaceholderEntry.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/StringTable.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/StringTable.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/SymbolTable.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/SymbolTable.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/GenerateOopMap.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/GenerateOopMap.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Instance.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Instance.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
@@ -64,7 +64,7 @@
 
   public void iterateFields(OopVisitor visitor, boolean doVMFields) {
     super.iterateFields(visitor, doVMFields);
-    ((InstanceKlass) getKlass()).iterateNonStaticFields(visitor);
+    ((InstanceKlass) getKlass()).iterateNonStaticFields(visitor, this);
   }
 
   public void printValueOn(PrintStream tty) {
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java	Wed Apr 20 09:31:11 2011 -0700
@@ -241,6 +241,10 @@
   // Byteside of the header
   private static long headerSize;
 
+  public long getObjectSize(Oop object) {
+    return getSizeHelper() * VM.getVM().getAddressSize();
+  }
+
   public static long getHeaderSize() { return headerSize; }
 
   // Accessors for declared fields
@@ -459,7 +463,22 @@
       visitor.doCInt(vtableLen, true);
       visitor.doCInt(itableLen, true);
     }
+  }
 
+  /*
+   *  Visit the static fields of this InstanceKlass with the obj of
+   *  the visitor set to the oop holding the fields, which is
+   *  currently the java mirror.
+   */
+  public void iterateStaticFields(OopVisitor visitor) {
+    visitor.setObj(getJavaMirror());
+    visitor.prologue();
+    iterateStaticFieldsInternal(visitor);
+    visitor.epilogue();
+
+  }
+
+  void iterateStaticFieldsInternal(OopVisitor visitor) {
     TypeArray fields = getFields();
     int length = (int) fields.getLength();
     for (int index = 0; index < length; index += NEXT_OFFSET) {
@@ -477,9 +496,9 @@
     return getSuper();
   }
 
-  public void iterateNonStaticFields(OopVisitor visitor) {
+  public void iterateNonStaticFields(OopVisitor visitor, Oop obj) {
     if (getSuper() != null) {
-      ((InstanceKlass) getSuper()).iterateNonStaticFields(visitor);
+      ((InstanceKlass) getSuper()).iterateNonStaticFields(visitor, obj);
     }
     TypeArray fields = getFields();
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceMirrorKlass.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+package sun.jvm.hotspot.oops;
+
+import java.io.*;
+import java.util.*;
+import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.memory.*;
+import sun.jvm.hotspot.runtime.*;
+import sun.jvm.hotspot.types.*;
+import sun.jvm.hotspot.utilities.*;
+
+// An InstanceKlass is the VM level representation of a Java class.
+
+public class InstanceMirrorKlass extends InstanceKlass {
+  static {
+    VM.registerVMInitializedObserver(new Observer() {
+        public void update(Observable o, Object data) {
+          initialize(VM.getVM().getTypeDataBase());
+        }
+      });
+  }
+
+  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
+    // Just make sure it's there for now
+    Type type = db.lookupType("instanceMirrorKlass");
+  }
+
+  InstanceMirrorKlass(OopHandle handle, ObjectHeap heap) {
+    super(handle, heap);
+  }
+
+  public long getObjectSize(Oop o) {
+    return java_lang_Class.getOopSize(o) * VM.getVM().getAddressSize();
+  }
+
+  public void iterateNonStaticFields(OopVisitor visitor, Oop obj) {
+    super.iterateNonStaticFields(visitor, obj);
+    // Fetch the real klass from the mirror object
+    Klass klass = java_lang_Class.asKlass(obj);
+    if (klass instanceof InstanceKlass) {
+      ((InstanceKlass)klass).iterateStaticFields(visitor);
+    }
+  }
+}
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Klass.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Klass.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Method.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Method.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
@@ -362,7 +362,16 @@
         if (klass.equals(compiledICHolderKlassHandle))  return new CompiledICHolder(handle, this);
         if (klass.equals(methodDataKlassHandle))        return new MethodData(handle, this);
       }
-      if (klass.equals(instanceKlassKlassHandle))       return new InstanceKlass(handle, this);
+      if (klass.equals(instanceKlassKlassHandle)) {
+          InstanceKlass ik = new InstanceKlass(handle, this);
+          if (ik.getName().asString().equals("java/lang/Class")) {
+              // We would normally do this using the vtable style
+              // lookup but since it's not used for these currently
+              // it's simpler to just check for the name.
+              return new InstanceMirrorKlass(handle, this);
+          }
+          return ik;
+      }
       if (klass.equals(objArrayKlassKlassHandle))       return new ObjArrayKlass(handle, this);
       if (klass.equals(typeArrayKlassKlassHandle))      return new TypeArrayKlass(handle, this);
 
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Oop.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Oop.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
@@ -103,12 +103,8 @@
   // Returns the byte size of this object
   public long getObjectSize() {
     Klass k = getKlass();
-    if (k instanceof InstanceKlass) {
-        return ((InstanceKlass)k).getSizeHelper()
-            * VM.getVM().getAddressSize();
-    }
-    // If it is not an instance, this method should be replaced.
-    return getHeaderSize();
+    // All other types should be overriding getObjectSize directly
+    return ((InstanceKlass)k).getObjectSize(this);
   }
 
   // Type test operations
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/OopUtilities.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/OopUtilities.java	Wed Apr 20 09:31:11 2011 -0700
@@ -74,9 +74,6 @@
     private static int THREAD_STATUS_TERMINATED;
   */
 
-  // java.lang.Class fields
-  private static OopField hcKlassField;
-
   // java.util.concurrent.locks.AbstractOwnableSynchronizer fields
   private static OopField absOwnSyncOwnerThreadField;
 
@@ -268,27 +265,6 @@
     return null;
   }
 
-  // initialize fields for java.lang.Class
-  private static void initClassFields() {
-    if (hcKlassField == null) {
-       // hc_klass is a HotSpot magic field and hence we can't
-       // find it from InstanceKlass for java.lang.Class.
-       TypeDataBase db = VM.getVM().getTypeDataBase();
-       int hcKlassOffset = (int) db.lookupType("java_lang_Class").getCIntegerField("klass_offset").getValue();
-       if (VM.getVM().isCompressedOopsEnabled()) {
-         hcKlassField = new NarrowOopField(new NamedFieldIdentifier("hc_klass"), hcKlassOffset, true);
-       } else {
-         hcKlassField = new OopField(new NamedFieldIdentifier("hc_klass"), hcKlassOffset, true);
-       }
-    }
-  }
-
-  /** get klassOop field at offset hc_klass_offset from a java.lang.Class object */
-  public static Klass classOopToKlass(Oop aClass) {
-    initClassFields();
-    return (Klass) hcKlassField.getValue(aClass);
-  }
-
   // initialize fields for j.u.c.l AbstractOwnableSynchornizer class
   private static void initAbsOwnSyncFields() {
     if (absOwnSyncOwnerThreadField == null) {
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Symbol.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Symbol.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/java_lang_Class.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+package sun.jvm.hotspot.oops;
+
+import java.util.*;
+
+import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.memory.*;
+import sun.jvm.hotspot.runtime.*;
+import sun.jvm.hotspot.types.Type;
+import sun.jvm.hotspot.types.TypeDataBase;
+import sun.jvm.hotspot.utilities.*;
+import sun.jvm.hotspot.jdi.JVMTIThreadState;
+
+/** A utility class encapsulating useful oop operations */
+
+// initialize fields for java.lang.Class
+public class java_lang_Class {
+
+  // java.lang.Class fields
+  static OopField klassField;
+  static IntField oopSizeField;
+
+  static {
+    VM.registerVMInitializedObserver(new Observer() {
+        public void update(Observable o, Object data) {
+          initialize(VM.getVM().getTypeDataBase());
+        }
+      });
+  }
+
+  private static synchronized void initialize(TypeDataBase db) {
+    // klass and oop_size are HotSpot magic fields and hence we can't
+    // find them from InstanceKlass for java.lang.Class.
+    Type jlc = db.lookupType("java_lang_Class");
+    int klassOffset = (int) jlc.getCIntegerField("klass_offset").getValue();
+    if (VM.getVM().isCompressedOopsEnabled()) {
+      klassField = new NarrowOopField(new NamedFieldIdentifier("klass"), klassOffset, true);
+    } else {
+      klassField = new OopField(new NamedFieldIdentifier("klass"), klassOffset, true);
+    }
+    int oopSizeOffset = (int) jlc.getCIntegerField("oop_size_offset").getValue();
+    oopSizeField = new IntField(new NamedFieldIdentifier("oop_size"), oopSizeOffset, true);
+  }
+
+  /** get klassOop field at offset hc_klass_offset from a java.lang.Class object */
+  public static Klass asKlass(Oop aClass) {
+    return (Klass) java_lang_Class.klassField.getValue(aClass);
+  }
+
+  /** get oop_size field at offset oop_size_offset from a java.lang.Class object */
+  public static long getOopSize(Oop aClass) {
+    return java_lang_Class.oopSizeField.getValue(aClass);
+  }
+}
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/VM.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/VM.java	Wed Apr 20 09:31:11 2011 -0700
@@ -839,20 +839,18 @@
   }
 
   private void readSystemProperties() {
-     final InstanceKlass systemKls = getSystemDictionary().getSystemKlass();
-     systemKls.iterate(new DefaultOopVisitor() {
-                               ObjectReader objReader = new ObjectReader();
-                               public void doOop(sun.jvm.hotspot.oops.OopField field, boolean isVMField) {
-                                  if (field.getID().getName().equals("props")) {
-                                     try {
-                                        sysProps = (Properties) objReader.readObject(field.getValue(systemKls.getJavaMirror()));
-                                     } catch (Exception e) {
-                                        if (Assert.ASSERTS_ENABLED) {
-                                           e.printStackTrace();
-                                        }
-                                     }
-                                  }
-                               }
-                        }, false);
+    final InstanceKlass systemKls = getSystemDictionary().getSystemKlass();
+    systemKls.iterateStaticFields(new DefaultOopVisitor() {
+        ObjectReader objReader = new ObjectReader();
+        public void doOop(sun.jvm.hotspot.oops.OopField field, boolean isVMField) {
+          if (field.getID().getName().equals("props")) {
+            try {
+              sysProps = (Properties) objReader.readObject(field.getValue(getObj()));
+            } catch (Exception e) {
+              e.printStackTrace();
+            }
+          }
+        }
+      });
   }
 }
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/FinalizerInfo.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/FinalizerInfo.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
@@ -64,16 +64,16 @@
          */
         InstanceKlass ik =
             SystemDictionaryHelper.findInstanceKlass("java.lang.ref.Finalizer");
-        final OopField queueField[] = new OopField[1];
-        ik.iterateFields(new DefaultOopVisitor() {
+        final Oop[] queueref = new Oop[1];
+        ik.iterateStaticFields(new DefaultOopVisitor() {
             public void doOop(OopField field, boolean isVMField) {
-                String name = field.getID().getName();
-                if (name.equals("queue")) {
-                    queueField[0] = field;
-                }
+              String name = field.getID().getName();
+              if (name.equals("queue")) {
+                queueref[0] = field.getValue(getObj());
+              }
             }
-        }, false);
-        Oop queue = queueField[0].getValue(ik);
+          });
+        Oop queue = queueref[0];
 
         InstanceKlass k = (InstanceKlass) queue.getKlass();
 
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassWriter.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassWriter.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/Field.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/Field.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/classbrowser/HTMLGenerator.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/classbrowser/HTMLGenerator.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/Hashtable.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/Hashtable.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HashtableEntry.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HashtableEntry.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapGXLWriter.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapGXLWriter.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
@@ -164,7 +164,7 @@
 
     protected void writeClass(Instance instance) throws IOException  {
         writeObjectHeader(instance);
-        Klass reflectedType = OopUtilities.classOopToKlass(instance);
+        Klass reflectedType = java_lang_Class.asKlass(instance);
         boolean isInstanceKlass = (reflectedType instanceof InstanceKlass);
         // reflectedType is null for primitive types (int.class etc).
         if (reflectedType != null) {
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java	Wed Apr 20 09:31:11 2011 -0700
@@ -455,7 +455,7 @@
     }
 
     protected void writeClass(Instance instance) throws IOException {
-        Klass reflectedKlass = OopUtilities.classOopToKlass(instance);
+        Klass reflectedKlass = java_lang_Class.asKlass(instance);
         // dump instance record only for primitive type Class objects.
         // all other Class objects are covered by writeClassDumpRecords.
         if (reflectedKlass == null) {
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/ReversePtrsAnalysis.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/ReversePtrsAnalysis.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
@@ -117,10 +117,10 @@
         public boolean doObj(Oop obj) {
           if (obj instanceof InstanceKlass) {
             final InstanceKlass ik = (InstanceKlass) obj;
-            ik.iterateFields(
+            ik.iterateStaticFields(
                new DefaultOopVisitor() {
                    public void doOop(OopField field, boolean isVMField) {
-                     Oop next = field.getValue(ik);
+                     Oop next = field.getValue(getObj());
                      LivenessPathElement lp = new LivenessPathElement(null,
                              new NamedFieldIdentifier("Static field \"" +
                                                 field.getID().getName() +
@@ -142,8 +142,7 @@
                        System.err.println();
                      }
                    }
-                 },
-               false);
+                 });
           }
                   return false;
         }
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaFactoryImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaFactoryImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
@@ -158,7 +158,7 @@
       } else if (className.equals(javaLangThread())) {
          res = new JSJavaThread(instance, this);
       } else if (className.equals(javaLangClass())) {
-         Klass reflectedType = OopUtilities.classOopToKlass(instance);
+         Klass reflectedType = java_lang_Class.asKlass(instance);
          if (reflectedType != null) {
              JSJavaKlass jk = newJSJavaKlass(reflectedType);
              // we don't support mirrors of VM internal Klasses
--- a/hotspot/make/hotspot_version	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/make/hotspot_version	Wed Apr 20 09:31:11 2011 -0700
@@ -35,7 +35,7 @@
 
 HS_MAJOR_VER=21
 HS_MINOR_VER=0
-HS_BUILD_NUMBER=06
+HS_BUILD_NUMBER=08
 
 JDK_MAJOR_VER=1
 JDK_MINOR_VER=7
--- a/hotspot/make/linux/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/make/linux/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/make/linux/makefiles/adlc.make	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/make/linux/makefiles/adlc.make	Wed Apr 20 09:31:11 2011 -0700
@@ -102,7 +102,7 @@
 
 $(EXEC) : $(OBJECTS)
 	@echo Making adlc
-	$(QUIETLY) $(LINK_NOPROF.CC) -o $(EXEC) $(OBJECTS)
+	$(QUIETLY) $(HOST.LINK_NOPROF.CC) -o $(EXEC) $(OBJECTS)
 
 # Random dependencies:
 $(OBJECTS): opcodes.hpp classes.hpp adlc.hpp adlcVMDeps.hpp adlparse.hpp archDesc.hpp arena.hpp dict2.hpp filebuff.hpp forms.hpp formsopt.hpp formssel.hpp
@@ -204,14 +204,14 @@
 $(OUTDIR)/%.o: %.cpp
 	@echo Compiling $<
 	$(QUIETLY) $(REMOVE_TARGET)
-	$(QUIETLY) $(COMPILE.CC) -o $@ $< $(COMPILE_DONE)
+	$(QUIETLY) $(HOST.COMPILE.CC) -o $@ $< $(COMPILE_DONE)
 
 # Some object files are given a prefix, to disambiguate
 # them from objects of the same name built for the VM.
 $(OUTDIR)/adlc-%.o: %.cpp
 	@echo Compiling $<
 	$(QUIETLY) $(REMOVE_TARGET)
-	$(QUIETLY) $(COMPILE.CC) -o $@ $< $(COMPILE_DONE)
+	$(QUIETLY) $(HOST.COMPILE.CC) -o $@ $< $(COMPILE_DONE)
 
 # #########################################################################
 
--- a/hotspot/make/linux/makefiles/arm.make	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/make/linux/makefiles/arm.make	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
 # ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 #
 
--- a/hotspot/make/linux/makefiles/gcc.make	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/make/linux/makefiles/gcc.make	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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,13 @@
 ifdef CROSS_COMPILE_ARCH
 CPP = $(ALT_COMPILER_PATH)/g++
 CC  = $(ALT_COMPILER_PATH)/gcc
+HOSTCPP = g++
+HOSTCC  = gcc
 else
 CPP = g++
 CC  = gcc
+HOSTCPP = $(CPP)
+HOSTCC  = $(CC)
 endif
 
 AS  = $(CC) -c
--- a/hotspot/make/linux/makefiles/mapfile-vers-debug	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/make/linux/makefiles/mapfile-vers-debug	Wed Apr 20 09:31:11 2011 -0700
@@ -3,7 +3,7 @@
 #
 
 #
-# Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/make/linux/makefiles/mapfile-vers-product	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/make/linux/makefiles/mapfile-vers-product	Wed Apr 20 09:31:11 2011 -0700
@@ -3,7 +3,7 @@
 #
 
 #
-# Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/make/linux/makefiles/ppc.make	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/make/linux/makefiles/ppc.make	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
 # ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 #
 
--- a/hotspot/make/linux/makefiles/rules.make	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/make/linux/makefiles/rules.make	Wed Apr 20 09:31:11 2011 -0700
@@ -55,6 +55,14 @@
 LINK_LIB.CC     = $(CCC) $(LFLAGS) $(SHARED_FLAG)
 PREPROCESS.CC   = $(CC_COMPILE) -E
 
+# cross compiling the jvm with c2 requires host compilers to build
+# adlc tool
+
+HOST.CC_COMPILE      = $(HOSTCPP) $(CPPFLAGS) $(CFLAGS)
+HOST.COMPILE.CC      = $(HOST.CC_COMPILE) -c
+HOST.LINK_NOPROF.CC  = $(HOSTCPP) $(LFLAGS) $(AOUT_FLAGS)
+
+
 # Effect of REMOVE_TARGET is to delete out-of-date files during "gnumake -k".
 REMOVE_TARGET   = rm -f $@
 
--- a/hotspot/make/linux/makefiles/sparcWorks.make	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/make/linux/makefiles/sparcWorks.make	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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 @@
 CC  = cc
 AS  = $(CC) -c
 
+HOSTCPP = $(CPP)
+HOSTCC  = $(CC)
+
 ARCHFLAG = $(ARCHFLAG/$(BUILDARCH))
 ARCHFLAG/i486    = -m32
 ARCHFLAG/amd64   = -m64
--- a/hotspot/make/linux/makefiles/top.make	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/make/linux/makefiles/top.make	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/make/linux/makefiles/vm.make	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/make/linux/makefiles/vm.make	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/make/solaris/makefiles/adlc.make	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/make/solaris/makefiles/adlc.make	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/make/solaris/makefiles/buildtree.make	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/make/solaris/makefiles/buildtree.make	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/make/solaris/makefiles/rules.make	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/make/solaris/makefiles/rules.make	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/make/solaris/makefiles/top.make	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/make/solaris/makefiles/top.make	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/make/solaris/makefiles/vm.make	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/make/solaris/makefiles/vm.make	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/make/windows/create.bat	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/make/windows/create.bat	Wed Apr 20 09:31:11 2011 -0700
@@ -93,16 +93,15 @@
 echo Will generate VC9 {Visual Studio 2008}
 ) else (
 if "%MSC_VER%" == "1600" (
-echo Detected Visual Studio 2010, but
-echo will generate VC9 {Visual Studio 2008}
-echo Use conversion wizard in VS 2010.
+echo Will generate VC10 {Visual Studio 2010}
+set ProjectFile=%HotSpotBuildSpace%\jvm.vcxproj
 ) else (
 echo Will generate VC7 project {Visual Studio 2003 .NET}
 )
 )
 )
 )
-echo                            %ProjectFile%
+echo %ProjectFile%
 echo **************************************************************
 
 REM Test all variables to see whether the directories they
--- a/hotspot/make/windows/create_obj_files.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/make/windows/create_obj_files.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/make/windows/makefiles/launcher.make	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/make/windows/makefiles/launcher.make	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/make/windows/makefiles/projectcreator.make	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/make/windows/makefiles/projectcreator.make	Wed Apr 20 09:31:11 2011 -0700
@@ -27,10 +27,6 @@
 # This is used externally by both batch and IDE builds, so can't
 # reference any of the HOTSPOTWORKSPACE, HOTSPOTBUILDSPACE,
 # HOTSPOTRELEASEBINDEST, or HOTSPOTDEBUGBINDEST environment variables.
-#
-# NOTE: unfortunately the ProjectCreatorSources list must be kept
-# synchronized between this and the Solaris version
-# (make/solaris/makefiles/projectcreator.make).
 
 ProjectCreatorSources=\
         $(WorkSpace)\src\share\tools\ProjectCreator\DirectoryTree.java \
@@ -42,6 +38,7 @@
         $(WorkSpace)\src\share\tools\ProjectCreator\WinGammaPlatformVC7.java \
         $(WorkSpace)\src\share\tools\ProjectCreator\WinGammaPlatformVC8.java \
         $(WorkSpace)\src\share\tools\ProjectCreator\WinGammaPlatformVC9.java \
+        $(WorkSpace)\src\share\tools\ProjectCreator\WinGammaPlatformVC10.java \
         $(WorkSpace)\src\share\tools\ProjectCreator\Util.java \
         $(WorkSpace)\src\share\tools\ProjectCreator\BuildConfig.java \
         $(WorkSpace)\src\share\tools\ProjectCreator\ArgsParser.java
--- a/hotspot/make/windows/makefiles/rules.make	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/make/windows/makefiles/rules.make	Wed Apr 20 09:31:11 2011 -0700
@@ -65,8 +65,8 @@
 
 !elseif "$(MSC_VER)" == "1600"
 
-# for compatibility - we don't yet have a ProjectCreator for VC10
-VcVersion=VC9
+VcVersion=VC10
+ProjectFile=jvm.vcxproj
 
 !else
 
--- a/hotspot/make/windows/makefiles/vm.make	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/make/windows/makefiles/vm.make	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/cpu/sparc/vm/cppInterpreter_sparc.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/sparc/vm/cppInterpreter_sparc.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1188,8 +1188,8 @@
   __ st_ptr(O2, XXX_STATE(_stack));                // PREPUSH
 
   __ lduh(max_stack, O3);                      // Full size expression stack
-  guarantee(!EnableMethodHandles, "no support yet for java.lang.invoke.MethodHandle"); //6815692
-  //6815692//if (EnableMethodHandles)
+  guarantee(!EnableInvokeDynamic, "no support yet for java.lang.invoke.MethodHandle"); //6815692
+  //6815692//if (EnableInvokeDynamic)
   //6815692//  __ inc(O3, methodOopDesc::extra_stack_entries());
   __ sll(O3, LogBytesPerWord, O3);
   __ sub(O2, O3, O3);
--- a/hotspot/src/cpu/sparc/vm/dump_sparc.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/sparc/vm/dump_sparc.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -743,12 +743,12 @@
   if (index_size == sizeof(u2)) {
     get_2_byte_integer_at_bcp(bcp_offset, cache, tmp, Unsigned);
   } else if (index_size == sizeof(u4)) {
-    assert(EnableInvokeDynamic, "giant index used only for EnableInvokeDynamic");
+    assert(EnableInvokeDynamic, "giant index used only for JSR 292");
     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
   } else if (index_size == sizeof(u1)) {
-    assert(EnableMethodHandles, "tiny index used only for EnableMethodHandles");
+    assert(EnableInvokeDynamic, "tiny index used only for JSR 292");
     ldub(Lbcp, bcp_offset, tmp);
   } else {
     ShouldNotReachHere();
--- a/hotspot/src/cpu/sparc/vm/interpreter_sparc.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/sparc/vm/interpreter_sparc.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -262,7 +262,7 @@
 // Method handle invoker
 // Dispatch a method of the form java.lang.invoke.MethodHandles::invoke(...)
 address InterpreterGenerator::generate_method_handle_entry(void) {
-  if (!EnableMethodHandles) {
+  if (!EnableInvokeDynamic) {
     return generate_abstract_entry();
   }
 
--- a/hotspot/src/cpu/sparc/vm/jni_sparc.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/sparc/vm/jni_sparc.h	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/cpu/sparc/vm/nativeInst_sparc.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/sparc/vm/nativeInst_sparc.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/cpu/sparc/vm/nativeInst_sparc.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/sparc/vm/nativeInst_sparc.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/cpu/sparc/vm/relocInfo_sparc.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/sparc/vm/relocInfo_sparc.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
@@ -1769,6 +1769,7 @@
 // returns.
 nmethod *SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
                                                 methodHandle method,
+                                                int compile_id,
                                                 int total_in_args,
                                                 int comp_args_on_stack, // in VMRegStackSlots
                                                 BasicType *in_sig_bt,
@@ -2462,6 +2463,7 @@
   __ flush();
 
   nmethod *nm = nmethod::new_native_nmethod(method,
+                                            compile_id,
                                             masm->code(),
                                             vep_offset,
                                             frame_complete,
--- a/hotspot/src/cpu/sparc/vm/sparc.ad	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/sparc/vm/sparc.ad	Wed Apr 20 09:31:11 2011 -0700
@@ -1843,6 +1843,10 @@
 // registers?  True for Intel but false for most RISCs
 const bool Matcher::clone_shift_expressions = false;
 
+// Do we need to mask the count passed to shift instructions or does
+// the cpu only look at the lower 5/6 bits anyway?
+const bool Matcher::need_masked_shift_count = false;
+
 bool Matcher::narrow_oop_use_complex_address() {
   NOT_LP64(ShouldNotCallThis());
   assert(UseCompressedOops, "only for compressed oops code");
--- a/hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -334,8 +334,8 @@
 void TemplateTable::fast_aldc(bool wide) {
   transition(vtos, atos);
 
-  if (!EnableMethodHandles) {
-    // We should not encounter this bytecode if !EnableMethodHandles.
+  if (!EnableInvokeDynamic) {
+    // We should not encounter this bytecode if !EnableInvokeDynamic.
     // The verifier will stop it.  However, if we get past the verifier,
     // this will stop the thread in a reasonable way, without crashing the JVM.
     __ call_VM(noreg, CAST_FROM_FN_PTR(address,
--- a/hotspot/src/cpu/x86/vm/assembler_x86.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/assembler_x86.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -3510,7 +3510,6 @@
   // anywhere in the codeCache then we are always reachable.
   // This would have to change if we ever save/restore shared code
   // to be more pessimistic.
-
   disp = (int64_t)adr._target - ((int64_t)CodeCache::low_bound() + sizeof(int));
   if (!is_simm32(disp)) return false;
   disp = (int64_t)adr._target - ((int64_t)CodeCache::high_bound() + sizeof(int));
@@ -3534,6 +3533,14 @@
   return is_simm32(disp);
 }
 
+// Check if the polling page is not reachable from the code cache using rip-relative
+// addressing.
+bool Assembler::is_polling_page_far() {
+  intptr_t addr = (intptr_t)os::get_polling_page();
+  return !is_simm32(addr - (intptr_t)CodeCache::low_bound()) ||
+         !is_simm32(addr - (intptr_t)CodeCache::high_bound());
+}
+
 void Assembler::emit_data64(jlong data,
                             relocInfo::relocType rtype,
                             int format) {
@@ -6886,6 +6893,11 @@
   }
 }
 
+void MacroAssembler::testl(Register dst, AddressLiteral src) {
+  assert(reachable(src), "Address should be reachable");
+  testl(dst, as_Address(src));
+}
+
 //////////////////////////////////////////////////////////////////////////////////
 #ifndef SERIALGC
 
@@ -7121,17 +7133,6 @@
   LP64_ONLY(subq(dst, src)) NOT_LP64(subl(dst, src));
 }
 
-void MacroAssembler::test32(Register src1, AddressLiteral src2) {
-  // src2 must be rval
-
-  if (reachable(src2)) {
-    testl(src1, as_Address(src2));
-  } else {
-    lea(rscratch1, src2);
-    testl(src1, Address(rscratch1, 0));
-  }
-}
-
 // C++ bool manipulation
 void MacroAssembler::testbool(Register dst) {
   if(sizeof(bool) == 1)
@@ -7768,6 +7769,28 @@
   }
 }
 
+void MacroAssembler::cmov32(Condition cc, Register dst, Address src) {
+  if (VM_Version::supports_cmov()) {
+    cmovl(cc, dst, src);
+  } else {
+    Label L;
+    jccb(negate_condition(cc), L);
+    movl(dst, src);
+    bind(L);
+  }
+}
+
+void MacroAssembler::cmov32(Condition cc, Register dst, Register src) {
+  if (VM_Version::supports_cmov()) {
+    cmovl(cc, dst, src);
+  } else {
+    Label L;
+    jccb(negate_condition(cc), L);
+    movl(dst, src);
+    bind(L);
+  }
+}
+
 void MacroAssembler::verify_oop(Register reg, const char* s) {
   if (!VerifyOops) return;
 
@@ -9018,14 +9041,7 @@
   movl(result, cnt1);
   subl(cnt1, cnt2);
   push(cnt1);
-  if (VM_Version::supports_cmov()) {
-    cmovl(Assembler::lessEqual, cnt2, result);
-  } else {
-    Label GT_LABEL;
-    jccb(Assembler::greater, GT_LABEL);
-    movl(cnt2, result);
-    bind(GT_LABEL);
-  }
+  cmov32(Assembler::lessEqual, cnt2, result);
 
   // Is the minimum length zero?
   testl(cnt2, cnt2);
--- a/hotspot/src/cpu/x86/vm/assembler_x86.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/assembler_x86.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -580,7 +580,6 @@
   void emit_data64(jlong data, relocInfo::relocType rtype, int format = 0);
   void emit_data64(jlong data, RelocationHolder const& rspec, int format = 0);
 
-
   bool reachable(AddressLiteral adr) NOT_LP64({ return true;});
 
   // These are all easily abused and hence protected
@@ -683,6 +682,8 @@
  static bool is_simm32(int32_t x) { return true; }
 #endif // _LP64
 
+  static bool is_polling_page_far() NOT_LP64({ return false;});
+
   // Generic instructions
   // Does 32bit or 64bit as needed for the platform. In some sense these
   // belong in macro assembler but there is no need for both varieties to exist
@@ -2094,7 +2095,10 @@
 
   void leal32(Register dst, Address src) { leal(dst, src); }
 
-  void test32(Register src1, AddressLiteral src2);
+  // Import other testl() methods from the parent class or else
+  // they will be hidden by the following overriding declaration.
+  using Assembler::testl;
+  void testl(Register dst, AddressLiteral src);
 
   void orptr(Register dst, Address src) { LP64_ONLY(orq(dst, src)) NOT_LP64(orl(dst, src)); }
   void orptr(Register dst, Register src) { LP64_ONLY(orq(dst, src)) NOT_LP64(orl(dst, src)); }
@@ -2240,10 +2244,13 @@
 
   // Data
 
-  void cmov(Condition cc, Register dst, Register src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmovl(cc, dst, src)); }
-
-  void cmovptr(Condition cc, Register dst, Address src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmovl(cc, dst, src)); }
-  void cmovptr(Condition cc, Register dst, Register src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmovl(cc, dst, src)); }
+  void cmov32( Condition cc, Register dst, Address  src);
+  void cmov32( Condition cc, Register dst, Register src);
+
+  void cmov(   Condition cc, Register dst, Register src) { cmovptr(cc, dst, src); }
+
+  void cmovptr(Condition cc, Register dst, Address  src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmov32(cc, dst, src)); }
+  void cmovptr(Condition cc, Register dst, Register src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmov32(cc, dst, src)); }
 
   void movoop(Register dst, jobject obj);
   void movoop(Address dst, jobject obj);
--- a/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -23,6 +23,7 @@
  */
 
 #include "precompiled.hpp"
+#include "asm/assembler.hpp"
 #include "c1/c1_Compilation.hpp"
 #include "c1/c1_LIRAssembler.hpp"
 #include "c1/c1_MacroAssembler.hpp"
@@ -569,24 +570,13 @@
   __ lea          (rdi, Address(rdi, rcx, Address::times_2, arrayOopDesc::base_offset_in_bytes(T_CHAR)));
 
   // compute minimum length (in rax) and difference of lengths (on top of stack)
-  if (VM_Version::supports_cmov()) {
-    __ movl     (rbx, Address(rbx, java_lang_String::count_offset_in_bytes()));
-    __ movl     (rax, Address(rax, java_lang_String::count_offset_in_bytes()));
-    __ mov      (rcx, rbx);
-    __ subptr   (rbx, rax); // subtract lengths
-    __ push     (rbx);      // result
-    __ cmov     (Assembler::lessEqual, rax, rcx);
-  } else {
-    Label L;
-    __ movl     (rbx, Address(rbx, java_lang_String::count_offset_in_bytes()));
-    __ movl     (rcx, Address(rax, java_lang_String::count_offset_in_bytes()));
-    __ mov      (rax, rbx);
-    __ subptr   (rbx, rcx);
-    __ push     (rbx);
-    __ jcc      (Assembler::lessEqual, L);
-    __ mov      (rax, rcx);
-    __ bind (L);
-  }
+  __ movl  (rbx, Address(rbx, java_lang_String::count_offset_in_bytes()));
+  __ movl  (rax, Address(rax, java_lang_String::count_offset_in_bytes()));
+  __ mov   (rcx, rbx);
+  __ subptr(rbx, rax); // subtract lengths
+  __ push  (rbx);      // result
+  __ cmov  (Assembler::lessEqual, rax, rcx);
+
   // is minimum length 0?
   Label noLoop, haveResult;
   __ testptr (rax, rax);
@@ -648,12 +638,13 @@
   AddressLiteral polling_page(os::get_polling_page() + (SafepointPollOffset % os::vm_page_size()),
                               relocInfo::poll_return_type);
 
-  // NOTE: the requires that the polling page be reachable else the reloc
-  // goes to the movq that loads the address and not the faulting instruction
-  // which breaks the signal handler code
-
-  __ test32(rax, polling_page);
-
+  if (Assembler::is_polling_page_far()) {
+    __ lea(rscratch1, polling_page);
+    __ relocate(relocInfo::poll_return_type);
+    __ testl(rax, Address(rscratch1, 0));
+  } else {
+    __ testl(rax, polling_page);
+  }
   __ ret(0);
 }
 
@@ -661,20 +652,17 @@
 int LIR_Assembler::safepoint_poll(LIR_Opr tmp, CodeEmitInfo* info) {
   AddressLiteral polling_page(os::get_polling_page() + (SafepointPollOffset % os::vm_page_size()),
                               relocInfo::poll_type);
-
-  if (info != NULL) {
+  guarantee(info != NULL, "Shouldn't be NULL");
+  int offset = __ offset();
+  if (Assembler::is_polling_page_far()) {
+    __ lea(rscratch1, polling_page);
+    offset = __ offset();
     add_debug_info_for_branch(info);
+    __ testl(rax, Address(rscratch1, 0));
   } else {
-    ShouldNotReachHere();
+    add_debug_info_for_branch(info);
+    __ testl(rax, polling_page);
   }
-
-  int offset = __ offset();
-
-  // NOTE: the requires that the polling page be reachable else the reloc
-  // goes to the movq that loads the address and not the faulting instruction
-  // which breaks the signal handler code
-
-  __ test32(rax, polling_page);
   return offset;
 }
 
--- a/hotspot/src/cpu/x86/vm/c1_Runtime1_x86.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/c1_Runtime1_x86.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -23,6 +23,7 @@
  */
 
 #include "precompiled.hpp"
+#include "asm/assembler.hpp"
 #include "c1/c1_Defs.hpp"
 #include "c1/c1_MacroAssembler.hpp"
 #include "c1/c1_Runtime1.hpp"
--- a/hotspot/src/cpu/x86/vm/frame_x86.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/frame_x86.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -125,7 +125,7 @@
     // Entry frames
 #ifdef AMD64
 #ifdef _WIN64
-    entry_frame_after_call_words                     =  8,
+    entry_frame_after_call_words                     =  28,
     entry_frame_call_wrapper_offset                  =  2,
 
     arg_reg_save_area_bytes                          = 32, // Register argument save area
--- a/hotspot/src/cpu/x86/vm/interp_masm_x86_32.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/interp_masm_x86_32.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -215,7 +215,7 @@
   if (index_size == sizeof(u2)) {
     load_unsigned_short(reg, Address(rsi, bcp_offset));
   } else if (index_size == sizeof(u4)) {
-    assert(EnableInvokeDynamic, "giant index used only for EnableInvokeDynamic");
+    assert(EnableInvokeDynamic, "giant index used only for JSR 292");
     movl(reg, Address(rsi, bcp_offset));
     // Check if the secondary index definition is still ~x, otherwise
     // we have to change the following assembler code to calculate the
@@ -223,7 +223,7 @@
     assert(constantPoolCacheOopDesc::decode_secondary_index(~123) == 123, "else change next line");
     notl(reg);  // convert to plain index
   } else if (index_size == sizeof(u1)) {
-    assert(EnableMethodHandles, "tiny index used only for EnableMethodHandles");
+    assert(EnableInvokeDynamic, "tiny index used only for JSR 292");
     load_unsigned_byte(reg, Address(rsi, bcp_offset));
   } else {
     ShouldNotReachHere();
--- a/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -213,7 +213,7 @@
   if (index_size == sizeof(u2)) {
     load_unsigned_short(index, Address(r13, bcp_offset));
   } else if (index_size == sizeof(u4)) {
-    assert(EnableInvokeDynamic, "giant index used only for EnableInvokeDynamic");
+    assert(EnableInvokeDynamic, "giant index used only for JSR 292");
     movl(index, Address(r13, bcp_offset));
     // Check if the secondary index definition is still ~x, otherwise
     // we have to change the following assembler code to calculate the
@@ -221,7 +221,7 @@
     assert(constantPoolCacheOopDesc::decode_secondary_index(~123) == 123, "else change next line");
     notl(index);  // convert to plain index
   } else if (index_size == sizeof(u1)) {
-    assert(EnableMethodHandles, "tiny index used only for EnableMethodHandles");
+    assert(EnableInvokeDynamic, "tiny index used only for JSR 292");
     load_unsigned_byte(index, Address(r13, bcp_offset));
   } else {
     ShouldNotReachHere();
--- a/hotspot/src/cpu/x86/vm/interpreter_x86_32.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/interpreter_x86_32.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -233,7 +233,7 @@
 // Method handle invoker
 // Dispatch a method of the form java.lang.invoke.MethodHandles::invoke(...)
 address InterpreterGenerator::generate_method_handle_entry(void) {
-  if (!EnableMethodHandles) {
+  if (!EnableInvokeDynamic) {
     return generate_abstract_entry();
   }
 
--- a/hotspot/src/cpu/x86/vm/interpreter_x86_64.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/interpreter_x86_64.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -320,7 +320,7 @@
 // Method handle invoker
 // Dispatch a method of the form java.lang.invoke.MethodHandles::invoke(...)
 address InterpreterGenerator::generate_method_handle_entry(void) {
-  if (!EnableMethodHandles) {
+  if (!EnableInvokeDynamic) {
     return generate_abstract_entry();
   }
 
--- a/hotspot/src/cpu/x86/vm/jni_x86.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/jni_x86.h	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/cpu/x86/vm/nativeInst_x86.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/nativeInst_x86.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -519,7 +519,11 @@
 class NativeTstRegMem: public NativeInstruction {
  public:
   enum Intel_specific_constants {
-    instruction_code_memXregl   = 0x85
+    instruction_rex_prefix_mask = 0xF0,
+    instruction_rex_prefix      = Assembler::REX,
+    instruction_code_memXregl   = 0x85,
+    modrm_mask                  = 0x38, // select reg from the ModRM byte
+    modrm_reg                   = 0x00  // rax
   };
 };
 
@@ -533,12 +537,25 @@
                                                           (ubyte_at(0) & 0xF0) == 0x70;  /* short jump */ }
 inline bool NativeInstruction::is_safepoint_poll() {
 #ifdef AMD64
-  if ( ubyte_at(0) == NativeTstRegMem::instruction_code_memXregl &&
-       ubyte_at(1) == 0x05 ) { // 00 rax 101
-     address fault = addr_at(6) + int_at(2);
-     return os::is_poll_address(fault);
+  if (Assembler::is_polling_page_far()) {
+    // two cases, depending on the choice of the base register in the address.
+    if (((ubyte_at(0) & NativeTstRegMem::instruction_rex_prefix_mask) == NativeTstRegMem::instruction_rex_prefix &&
+         ubyte_at(1) == NativeTstRegMem::instruction_code_memXregl &&
+         (ubyte_at(2) & NativeTstRegMem::modrm_mask) == NativeTstRegMem::modrm_reg) ||
+        ubyte_at(0) == NativeTstRegMem::instruction_code_memXregl &&
+        (ubyte_at(1) & NativeTstRegMem::modrm_mask) == NativeTstRegMem::modrm_reg) {
+      return true;
+    } else {
+      return false;
+    }
   } else {
-    return false;
+    if (ubyte_at(0) == NativeTstRegMem::instruction_code_memXregl &&
+        ubyte_at(1) == 0x05) { // 00 rax 101
+      address fault = addr_at(6) + int_at(2);
+      return os::is_poll_address(fault);
+    } else {
+      return false;
+    }
   }
 #else
   return ( ubyte_at(0) == NativeMovRegMem::instruction_code_mem2reg ||
--- a/hotspot/src/cpu/x86/vm/relocInfo_x86.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/relocInfo_x86.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
@@ -198,41 +198,44 @@
 
 void poll_Relocation::fix_relocation_after_move(const CodeBuffer* src, CodeBuffer* dest) {
 #ifdef _LP64
-  typedef Assembler::WhichOperand WhichOperand;
-  WhichOperand which = (WhichOperand) format();
-  // This format is imm but it is really disp32
-  which = Assembler::disp32_operand;
-  address orig_addr = old_addr_for(addr(), src, dest);
-  NativeInstruction* oni = nativeInstruction_at(orig_addr);
-  int32_t* orig_disp = (int32_t*) Assembler::locate_operand(orig_addr, which);
-  // This poll_addr is incorrect by the size of the instruction it is irrelevant
-  intptr_t poll_addr = (intptr_t)oni + *orig_disp;
+  if (!Assembler::is_polling_page_far()) {
+    typedef Assembler::WhichOperand WhichOperand;
+    WhichOperand which = (WhichOperand) format();
+    // This format is imm but it is really disp32
+    which = Assembler::disp32_operand;
+    address orig_addr = old_addr_for(addr(), src, dest);
+    NativeInstruction* oni = nativeInstruction_at(orig_addr);
+    int32_t* orig_disp = (int32_t*) Assembler::locate_operand(orig_addr, which);
+    // This poll_addr is incorrect by the size of the instruction it is irrelevant
+    intptr_t poll_addr = (intptr_t)oni + *orig_disp;
 
-  NativeInstruction* ni = nativeInstruction_at(addr());
-  intptr_t new_disp = poll_addr - (intptr_t) ni;
+    NativeInstruction* ni = nativeInstruction_at(addr());
+    intptr_t new_disp = poll_addr - (intptr_t) ni;
 
-  int32_t* disp = (int32_t*) Assembler::locate_operand(addr(), which);
-  * disp = (int32_t)new_disp;
-
+    int32_t* disp = (int32_t*) Assembler::locate_operand(addr(), which);
+    * disp = (int32_t)new_disp;
+  }
 #endif // _LP64
 }
 
 void poll_return_Relocation::fix_relocation_after_move(const CodeBuffer* src, CodeBuffer* dest) {
 #ifdef _LP64
-  typedef Assembler::WhichOperand WhichOperand;
-  WhichOperand which = (WhichOperand) format();
-  // This format is imm but it is really disp32
-  which = Assembler::disp32_operand;
-  address orig_addr = old_addr_for(addr(), src, dest);
-  NativeInstruction* oni = nativeInstruction_at(orig_addr);
-  int32_t* orig_disp = (int32_t*) Assembler::locate_operand(orig_addr, which);
-  // This poll_addr is incorrect by the size of the instruction it is irrelevant
-  intptr_t poll_addr = (intptr_t)oni + *orig_disp;
+  if (!Assembler::is_polling_page_far()) {
+    typedef Assembler::WhichOperand WhichOperand;
+    WhichOperand which = (WhichOperand) format();
+    // This format is imm but it is really disp32
+    which = Assembler::disp32_operand;
+    address orig_addr = old_addr_for(addr(), src, dest);
+    NativeInstruction* oni = nativeInstruction_at(orig_addr);
+    int32_t* orig_disp = (int32_t*) Assembler::locate_operand(orig_addr, which);
+    // This poll_addr is incorrect by the size of the instruction it is irrelevant
+    intptr_t poll_addr = (intptr_t)oni + *orig_disp;
 
-  NativeInstruction* ni = nativeInstruction_at(addr());
-  intptr_t new_disp = poll_addr - (intptr_t) ni;
+    NativeInstruction* ni = nativeInstruction_at(addr());
+    intptr_t new_disp = poll_addr - (intptr_t) ni;
 
-  int32_t* disp = (int32_t*) Assembler::locate_operand(addr(), which);
-  * disp = (int32_t)new_disp;
+    int32_t* disp = (int32_t*) Assembler::locate_operand(addr(), which);
+    * disp = (int32_t)new_disp;
+  }
 #endif // _LP64
 }
--- a/hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1111,6 +1111,7 @@
 // returns.
 nmethod *SharedRuntime::generate_native_wrapper(MacroAssembler *masm,
                                                 methodHandle method,
+                                                int compile_id,
                                                 int total_in_args,
                                                 int comp_args_on_stack,
                                                 BasicType *in_sig_bt,
@@ -1854,6 +1855,7 @@
   __ flush();
 
   nmethod *nm = nmethod::new_native_nmethod(method,
+                                            compile_id,
                                             masm->code(),
                                             vep_offset,
                                             frame_complete,
--- a/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1174,6 +1174,7 @@
 // returns.
 nmethod *SharedRuntime::generate_native_wrapper(MacroAssembler *masm,
                                                 methodHandle method,
+                                                int compile_id,
                                                 int total_in_args,
                                                 int comp_args_on_stack,
                                                 BasicType *in_sig_bt,
@@ -1881,6 +1882,7 @@
   __ flush();
 
   nmethod *nm = nmethod::new_native_nmethod(method,
+                                            compile_id,
                                             masm->code(),
                                             vep_offset,
                                             frame_complete,
--- a/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -144,8 +144,11 @@
   //     [ return_from_Java     ] <--- rsp
   //     [ argument word n      ]
   //      ...
-  //  -8 [ argument word 1      ]
-  //  -7 [ saved r15            ] <--- rsp_after_call
+  // -28 [ argument word 1      ]
+  // -27 [ saved xmm15          ] <--- rsp_after_call
+  //     [ saved xmm7-xmm14     ]
+  //  -9 [ saved xmm6           ] (each xmm register takes 2 slots)
+  //  -7 [ saved r15            ]
   //  -6 [ saved r14            ]
   //  -5 [ saved r13            ]
   //  -4 [ saved r12            ]
@@ -169,8 +172,11 @@
   // Call stub stack layout word offsets from rbp
   enum call_stub_layout {
 #ifdef _WIN64
-    rsp_after_call_off = -7,
-    r15_off            = rsp_after_call_off,
+    xmm_save_first     = 6,  // save from xmm6
+    xmm_save_last      = 15, // to xmm15
+    xmm_save_base      = -9,
+    rsp_after_call_off = xmm_save_base - 2 * (xmm_save_last - xmm_save_first), // -27
+    r15_off            = -7,
     r14_off            = -6,
     r13_off            = -5,
     r12_off            = -4,
@@ -208,6 +214,13 @@
 #endif
   };
 
+#ifdef _WIN64
+  Address xmm_save(int reg) {
+    assert(reg >= xmm_save_first && reg <= xmm_save_last, "XMM register number out of range");
+    return Address(rbp, (xmm_save_base - (reg - xmm_save_first) * 2) * wordSize);
+  }
+#endif
+
   address generate_call_stub(address& return_address) {
     assert((int)frame::entry_frame_after_call_words == -(int)rsp_after_call_off + 1 &&
            (int)frame::entry_frame_call_wrapper_offset == (int)call_wrapper_off,
@@ -256,8 +269,11 @@
     __ movptr(r13_save, r13);
     __ movptr(r14_save, r14);
     __ movptr(r15_save, r15);
-
 #ifdef _WIN64
+    for (int i = 6; i <= 15; i++) {
+      __ movdqu(xmm_save(i), as_XMMRegister(i));
+    }
+
     const Address rdi_save(rbp, rdi_off * wordSize);
     const Address rsi_save(rbp, rsi_off * wordSize);
 
@@ -360,6 +376,11 @@
 #endif
 
     // restore regs belonging to calling function
+#ifdef _WIN64
+    for (int i = 15; i >= 6; i--) {
+      __ movdqu(as_XMMRegister(i), xmm_save(i));
+    }
+#endif
     __ movptr(r15, r15_save);
     __ movptr(r14, r14_save);
     __ movptr(r13, r13_save);
@@ -2428,8 +2449,8 @@
   //
   address generate_generic_copy(const char *name,
                                 address byte_copy_entry, address short_copy_entry,
-                                address int_copy_entry, address long_copy_entry,
-                                address oop_copy_entry, address checkcast_copy_entry) {
+                                address int_copy_entry, address oop_copy_entry,
+                                address long_copy_entry, address checkcast_copy_entry) {
 
     Label L_failed, L_failed_0, L_objArray;
     Label L_copy_bytes, L_copy_shorts, L_copy_ints, L_copy_longs;
--- a/hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1527,7 +1527,7 @@
 
   if (interpreter_frame != NULL) {
 #ifdef ASSERT
-    if (!EnableMethodHandles)
+    if (!EnableInvokeDynamic)
       // @@@ FIXME: Should we correct interpreter_frame_sender_sp in the calling sequences?
       // Probably, since deoptimization doesn't work yet.
       assert(caller->unextended_sp() == interpreter_frame->interpreter_frame_sender_sp(), "Frame not properly walkable");
--- a/hotspot/src/cpu/x86/vm/templateInterpreter_x86_64.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/templateInterpreter_x86_64.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1541,7 +1541,7 @@
          tempcount* Interpreter::stackElementWords + popframe_extra_args;
   if (interpreter_frame != NULL) {
 #ifdef ASSERT
-    if (!EnableMethodHandles)
+    if (!EnableInvokeDynamic)
       // @@@ FIXME: Should we correct interpreter_frame_sender_sp in the calling sequences?
       // Probably, since deoptimization doesn't work yet.
       assert(caller->unextended_sp() == interpreter_frame->interpreter_frame_sender_sp(), "Frame not properly walkable");
--- a/hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -23,6 +23,7 @@
  */
 
 #include "precompiled.hpp"
+#include "asm/assembler.hpp"
 #include "interpreter/interpreter.hpp"
 #include "interpreter/interpreterRuntime.hpp"
 #include "interpreter/templateTable.hpp"
@@ -391,8 +392,8 @@
 void TemplateTable::fast_aldc(bool wide) {
   transition(vtos, atos);
 
-  if (!EnableMethodHandles) {
-    // We should not encounter this bytecode if !EnableMethodHandles.
+  if (!EnableInvokeDynamic) {
+    // We should not encounter this bytecode if !EnableInvokeDynamic.
     // The verifier will stop it.  However, if we get past the verifier,
     // this will stop the thread in a reasonable way, without crashing the JVM.
     __ call_VM(noreg, CAST_FROM_FN_PTR(address,
@@ -1939,18 +1940,10 @@
     __ movl(temp, Address(array, h, Address::times_8, 0*wordSize));
     __ bswapl(temp);
     __ cmpl(key, temp);
-    if (VM_Version::supports_cmov()) {
-      __ cmovl(Assembler::less        , j, h);   // j = h if (key <  array[h].fast_match())
-      __ cmovl(Assembler::greaterEqual, i, h);   // i = h if (key >= array[h].fast_match())
-    } else {
-      Label set_i, end_of_if;
-      __ jccb(Assembler::greaterEqual, set_i);     // {
-      __ mov(j, h);                                //   j = h;
-      __ jmp(end_of_if);                           // }
-      __ bind(set_i);                              // else {
-      __ mov(i, h);                                //   i = h;
-      __ bind(end_of_if);                          // }
-    }
+    // j = h if (key <  array[h].fast_match())
+    __ cmov32(Assembler::less        , j, h);
+    // i = h if (key >= array[h].fast_match())
+    __ cmov32(Assembler::greaterEqual, i, h);
     // while (i+1 < j)
     __ bind(entry);
     __ leal(h, Address(i, 1));                   // i+1
@@ -3478,22 +3471,14 @@
 
   // find a free slot in the monitor block (result in rdx)
   { Label entry, loop, exit;
-    __ movptr(rcx, monitor_block_top);            // points to current entry, starting with top-most entry
-    __ lea(rbx, monitor_block_bot);               // points to word before bottom of monitor block
+    __ movptr(rcx, monitor_block_top);           // points to current entry, starting with top-most entry
+
+    __ lea(rbx, monitor_block_bot);              // points to word before bottom of monitor block
     __ jmpb(entry);
 
     __ bind(loop);
     __ cmpptr(Address(rcx, BasicObjectLock::obj_offset_in_bytes()), (int32_t)NULL_WORD);  // check if current entry is used
-
-// TODO - need new func here - kbt
-    if (VM_Version::supports_cmov()) {
-      __ cmov(Assembler::equal, rdx, rcx);       // if not used then remember entry in rdx
-    } else {
-      Label L;
-      __ jccb(Assembler::notEqual, L);
-      __ mov(rdx, rcx);                          // if not used then remember entry in rdx
-      __ bind(L);
-    }
+    __ cmovptr(Assembler::equal, rdx, rcx);      // if not used then remember entry in rdx
     __ cmpptr(rax, Address(rcx, BasicObjectLock::obj_offset_in_bytes()));   // check if current entry is for same object
     __ jccb(Assembler::equal, exit);             // if same object then stop searching
     __ addptr(rcx, entry_size);                  // otherwise advance to next entry
--- a/hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -405,8 +405,8 @@
 void TemplateTable::fast_aldc(bool wide) {
   transition(vtos, atos);
 
-  if (!EnableMethodHandles) {
-    // We should not encounter this bytecode if !EnableMethodHandles.
+  if (!EnableInvokeDynamic) {
+    // We should not encounter this bytecode if !EnableInvokeDynamic.
     // The verifier will stop it.  However, if we get past the verifier,
     // this will stop the thread in a reasonable way, without crashing the JVM.
     __ call_VM(noreg, CAST_FROM_FN_PTR(address,
--- a/hotspot/src/cpu/x86/vm/vm_version_x86.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/vm_version_x86.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates.  All Rights Reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates.  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
@@ -429,6 +429,11 @@
         UseXmmI2D = false;
       }
     }
+    if( FLAG_IS_DEFAULT(UseSSE42Intrinsics) ) {
+      if( supports_sse4_2() && UseSSE >= 4 ) {
+        UseSSE42Intrinsics = true;
+      }
+    }
 
     // Use count leading zeros count instruction if available.
     if (supports_lzcnt()) {
--- a/hotspot/src/cpu/x86/vm/x86_32.ad	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/x86_32.ad	Wed Apr 20 09:31:11 2011 -0700
@@ -1393,6 +1393,10 @@
 // registers?  True for Intel but false for most RISCs
 const bool Matcher::clone_shift_expressions = true;
 
+// Do we need to mask the count passed to shift instructions or does
+// the cpu only look at the lower 5/6 bits anyway?
+const bool Matcher::need_masked_shift_count = false;
+
 bool Matcher::narrow_oop_use_complex_address() {
   ShouldNotCallThis();
   return true;
--- a/hotspot/src/cpu/x86/vm/x86_64.ad	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/x86_64.ad	Wed Apr 20 09:31:11 2011 -0700
@@ -574,12 +574,11 @@
 // In os_cpu .ad file
 // int MachCallRuntimeNode::ret_addr_offset()
 
-// Indicate if the safepoint node needs the polling page as an input.
-// Since amd64 does not have absolute addressing but RIP-relative
-// addressing and the polling page is within 2G, it doesn't.
+// Indicate if the safepoint node needs the polling page as an input,
+// it does if the polling page is more than disp32 away.
 bool SafePointNode::needs_polling_address_input()
 {
-  return false;
+  return Assembler::is_polling_page_far();
 }
 
 //
@@ -992,15 +991,21 @@
   framesize -= 2*wordSize;
 
   if (framesize) {
-    st->print_cr("addq\trsp, %d\t# Destroy frame", framesize);
+    st->print_cr("addq    rsp, %d\t# Destroy frame", framesize);
     st->print("\t");
   }
 
-  st->print_cr("popq\trbp");
+  st->print_cr("popq   rbp");
   if (do_polling() && C->is_method_compilation()) {
-    st->print_cr("\ttestl\trax, [rip + #offset_to_poll_page]\t"
-                  "# Safepoint: poll for GC");
     st->print("\t");
+    if (Assembler::is_polling_page_far()) {
+      st->print_cr("movq   rscratch1, #polling_page_address\n\t"
+                   "testl  rax, [rscratch1]\t"
+                   "# Safepoint: poll for GC");
+    } else {
+      st->print_cr("testl  rax, [rip + #offset_to_poll_page]\t"
+                   "# Safepoint: poll for GC");
+    }
   }
 }
 #endif
@@ -1033,45 +1038,22 @@
   emit_opcode(cbuf, 0x58 | RBP_enc);
 
   if (do_polling() && C->is_method_compilation()) {
-    // testl %rax, off(%rip) // Opcode + ModRM + Disp32 == 6 bytes
-    // XXX reg_mem doesn't support RIP-relative addressing yet
-    cbuf.set_insts_mark();
-    cbuf.relocate(cbuf.insts_mark(), relocInfo::poll_return_type, 0); // XXX
-    emit_opcode(cbuf, 0x85); // testl
-    emit_rm(cbuf, 0x0, RAX_enc, 0x5); // 00 rax 101 == 0x5
-    // cbuf.insts_mark() is beginning of instruction
-    emit_d32_reloc(cbuf, os::get_polling_page());
-//                    relocInfo::poll_return_type,
+    MacroAssembler _masm(&cbuf);
+    AddressLiteral polling_page(os::get_polling_page(), relocInfo::poll_return_type);
+    if (Assembler::is_polling_page_far()) {
+      __ lea(rscratch1, polling_page);
+      __ relocate(relocInfo::poll_return_type);
+      __ testl(rax, Address(rscratch1, 0));
+    } else {
+      __ testl(rax, polling_page);
+    }
   }
 }
 
 uint MachEpilogNode::size(PhaseRegAlloc* ra_) const
 {
-  Compile* C = ra_->C;
-  int framesize = C->frame_slots() << LogBytesPerInt;
-  assert((framesize & (StackAlignmentInBytes-1)) == 0, "frame size not aligned");
-  // Remove word for return adr already pushed
-  // and RBP
-  framesize -= 2*wordSize;
-
-  uint size = 0;
-
-  if (do_polling() && C->is_method_compilation()) {
-    size += 6;
-  }
-
-  // count popq rbp
-  size++;
-
-  if (framesize) {
-    if (framesize < 0x80) {
-      size += 4;
-    } else if (framesize) {
-      size += 7;
-    }
-  }
-
-  return size;
+  return MachNode::size(ra_); // too many variables; just compute it
+                              // the hard way
 }
 
 int MachEpilogNode::reloc() const
@@ -2000,6 +1982,10 @@
 // into registers?  True for Intel but false for most RISCs
 const bool Matcher::clone_shift_expressions = true;
 
+// Do we need to mask the count passed to shift instructions or does
+// the cpu only look at the lower 5/6 bits anyway?
+const bool Matcher::need_masked_shift_count = false;
+
 bool Matcher::narrow_oop_use_complex_address() {
   assert(UseCompressedOops, "only for compressed oops code");
   return (LogMinObjAlignmentInBytes <= 3);
@@ -3406,8 +3392,8 @@
     }
     if (EmitSync & 1) {
         // Without cast to int32_t a movptr will destroy r10 which is typically obj
-        masm.movptr (Address(boxReg, 0), (int32_t)intptr_t(markOopDesc::unused_mark())) ; 
-        masm.cmpptr(rsp, (int32_t)NULL_WORD) ; 
+        masm.movptr (Address(boxReg, 0), (int32_t)intptr_t(markOopDesc::unused_mark())) ;
+        masm.cmpptr(rsp, (int32_t)NULL_WORD) ;
     } else
     if (EmitSync & 2) {
         Label DONE_LABEL;
@@ -3435,10 +3421,10 @@
     } else {
         Label DONE_LABEL, IsInflated, Egress;
 
-        masm.movptr(tmpReg, Address(objReg, 0)) ; 
+        masm.movptr(tmpReg, Address(objReg, 0)) ;
         masm.testl (tmpReg, 0x02) ;         // inflated vs stack-locked|neutral|biased
-        masm.jcc   (Assembler::notZero, IsInflated) ; 
-         
+        masm.jcc   (Assembler::notZero, IsInflated) ;
+
         // it's stack-locked, biased or neutral
         // TODO: optimize markword triage order to reduce the number of
         // conditional branches in the most common cases.
@@ -3452,9 +3438,9 @@
         }
 
         // was q will it destroy high?
-        masm.orl   (tmpReg, 1) ; 
-        masm.movptr(Address(boxReg, 0), tmpReg) ;  
-        if (os::is_MP()) { masm.lock(); } 
+        masm.orl   (tmpReg, 1) ;
+        masm.movptr(Address(boxReg, 0), tmpReg) ;
+        if (os::is_MP()) { masm.lock(); }
         masm.cmpxchgptr(boxReg, Address(objReg, 0)); // Updates tmpReg
         if (_counters != NULL) {
            masm.cond_inc32(Assembler::equal,
@@ -3481,16 +3467,16 @@
         // fetched _owner.  If the CAS is successful we may
         // avoid an RTO->RTS upgrade on the $line.
         // Without cast to int32_t a movptr will destroy r10 which is typically obj
-        masm.movptr(Address(boxReg, 0), (int32_t)intptr_t(markOopDesc::unused_mark())) ; 
-
-        masm.mov    (boxReg, tmpReg) ; 
-        masm.movptr (tmpReg, Address(tmpReg, ObjectMonitor::owner_offset_in_bytes()-2)) ; 
-        masm.testptr(tmpReg, tmpReg) ;   
-        masm.jcc    (Assembler::notZero, DONE_LABEL) ; 
+        masm.movptr(Address(boxReg, 0), (int32_t)intptr_t(markOopDesc::unused_mark())) ;
+
+        masm.mov    (boxReg, tmpReg) ;
+        masm.movptr (tmpReg, Address(tmpReg, ObjectMonitor::owner_offset_in_bytes()-2)) ;
+        masm.testptr(tmpReg, tmpReg) ;
+        masm.jcc    (Assembler::notZero, DONE_LABEL) ;
 
         // It's inflated and appears unlocked
-        if (os::is_MP()) { masm.lock(); } 
-        masm.cmpxchgptr(r15_thread, Address(boxReg, ObjectMonitor::owner_offset_in_bytes()-2)) ; 
+        if (os::is_MP()) { masm.lock(); }
+        masm.cmpxchgptr(r15_thread, Address(boxReg, ObjectMonitor::owner_offset_in_bytes()-2)) ;
         // Intentional fall-through into DONE_LABEL ...
 
         masm.bind  (DONE_LABEL) ;
@@ -3509,8 +3495,8 @@
     Register tmpReg = as_Register($tmp$$reg);
     MacroAssembler masm(&cbuf);
 
-    if (EmitSync & 4) { 
-       masm.cmpptr(rsp, 0) ; 
+    if (EmitSync & 4) {
+       masm.cmpptr(rsp, 0) ;
     } else
     if (EmitSync & 8) {
        Label DONE_LABEL;
@@ -3537,25 +3523,25 @@
        if (UseBiasedLocking && !UseOptoBiasInlining) {
          masm.biased_locking_exit(objReg, tmpReg, DONE_LABEL);
        }
-        
-       masm.movptr(tmpReg, Address(objReg, 0)) ; 
-       masm.cmpptr(Address(boxReg, 0), (int32_t)NULL_WORD) ; 
-       masm.jcc   (Assembler::zero, DONE_LABEL) ; 
-       masm.testl (tmpReg, 0x02) ; 
-       masm.jcc   (Assembler::zero, Stacked) ; 
-        
+
+       masm.movptr(tmpReg, Address(objReg, 0)) ;
+       masm.cmpptr(Address(boxReg, 0), (int32_t)NULL_WORD) ;
+       masm.jcc   (Assembler::zero, DONE_LABEL) ;
+       masm.testl (tmpReg, 0x02) ;
+       masm.jcc   (Assembler::zero, Stacked) ;
+
        // It's inflated
-       masm.movptr(boxReg, Address (tmpReg, ObjectMonitor::owner_offset_in_bytes()-2)) ; 
-       masm.xorptr(boxReg, r15_thread) ; 
-       masm.orptr (boxReg, Address (tmpReg, ObjectMonitor::recursions_offset_in_bytes()-2)) ; 
-       masm.jcc   (Assembler::notZero, DONE_LABEL) ; 
-       masm.movptr(boxReg, Address (tmpReg, ObjectMonitor::cxq_offset_in_bytes()-2)) ; 
-       masm.orptr (boxReg, Address (tmpReg, ObjectMonitor::EntryList_offset_in_bytes()-2)) ; 
-       masm.jcc   (Assembler::notZero, CheckSucc) ; 
-       masm.movptr(Address (tmpReg, ObjectMonitor::owner_offset_in_bytes()-2), (int32_t)NULL_WORD) ; 
-       masm.jmp   (DONE_LABEL) ; 
-        
-       if ((EmitSync & 65536) == 0) { 
+       masm.movptr(boxReg, Address (tmpReg, ObjectMonitor::owner_offset_in_bytes()-2)) ;
+       masm.xorptr(boxReg, r15_thread) ;
+       masm.orptr (boxReg, Address (tmpReg, ObjectMonitor::recursions_offset_in_bytes()-2)) ;
+       masm.jcc   (Assembler::notZero, DONE_LABEL) ;
+       masm.movptr(boxReg, Address (tmpReg, ObjectMonitor::cxq_offset_in_bytes()-2)) ;
+       masm.orptr (boxReg, Address (tmpReg, ObjectMonitor::EntryList_offset_in_bytes()-2)) ;
+       masm.jcc   (Assembler::notZero, CheckSucc) ;
+       masm.movptr(Address (tmpReg, ObjectMonitor::owner_offset_in_bytes()-2), (int32_t)NULL_WORD) ;
+       masm.jmp   (DONE_LABEL) ;
+
+       if ((EmitSync & 65536) == 0) {
          Label LSuccess, LGoSlowPath ;
          masm.bind  (CheckSucc) ;
          masm.cmpptr(Address (tmpReg, ObjectMonitor::succ_offset_in_bytes()-2), (int32_t)NULL_WORD) ;
@@ -3587,9 +3573,9 @@
          masm.jmp   (DONE_LABEL) ;
        }
 
-       masm.bind  (Stacked) ; 
+       masm.bind  (Stacked) ;
        masm.movptr(tmpReg, Address (boxReg, 0)) ;      // re-fetch
-       if (os::is_MP()) { masm.lock(); } 
+       if (os::is_MP()) { masm.lock(); }
        masm.cmpxchgptr(tmpReg, Address(objReg, 0)); // Uses RAX which is box
 
        if (EmitSync & 65536) {
@@ -3910,22 +3896,6 @@
 
     // done:
   %}
-
-  // Safepoint Poll.  This polls the safepoint page, and causes an
-  // exception if it is not readable. Unfortunately, it kills
-  // RFLAGS in the process.
-  enc_class enc_safepoint_poll
-  %{
-    // testl %rax, off(%rip) // Opcode + ModRM + Disp32 == 6 bytes
-    // XXX reg_mem doesn't support RIP-relative addressing yet
-    cbuf.set_insts_mark();
-    cbuf.relocate(cbuf.insts_mark(), relocInfo::poll_type, 0); // XXX
-    emit_opcode(cbuf, 0x85); // testl
-    emit_rm(cbuf, 0x0, RAX_enc, 0x5); // 00 rax 101 == 0x5
-    // cbuf.insts_mark() is beginning of instruction
-    emit_d32_reloc(cbuf, os::get_polling_page());
-//                    relocInfo::poll_type,
-  %}
 %}
 
 
@@ -4229,6 +4199,15 @@
   interface(CONST_INTER);
 %}
 
+operand immP_poll() %{
+  predicate(n->get_ptr() != 0 && n->get_ptr() == (intptr_t)os::get_polling_page());
+  match(ConP);
+
+  // formats are generated automatically for constants and base registers
+  format %{ %}
+  interface(CONST_INTER);
+%}
+
 // Pointer Immediate
 operand immN() %{
   match(ConN);
@@ -4836,7 +4815,7 @@
 %}
 
 // Double register operands
-operand regD() 
+operand regD()
 %{
   constraint(ALLOC_IN_RC(double_reg));
   match(RegD);
@@ -6564,6 +6543,16 @@
   ins_pipe(ialu_reg);
 %}
 
+instruct loadConP_poll(rRegP dst, immP_poll src) %{
+  match(Set dst src);
+  format %{ "movq    $dst, $src\t!ptr" %}
+  ins_encode %{
+    AddressLiteral polling_page(os::get_polling_page(), relocInfo::poll_type);
+    __ lea($dst$$Register, polling_page);
+  %}
+  ins_pipe(ialu_reg_fat);
+%}
+
 instruct loadConP31(rRegP dst, immP31 src, rFlagsReg cr)
 %{
   match(Set dst src);
@@ -7237,11 +7226,11 @@
 instruct bytes_reverse_unsigned_short(rRegI dst) %{
   match(Set dst (ReverseBytesUS dst));
 
-  format %{ "bswapl  $dst\n\t" 
+  format %{ "bswapl  $dst\n\t"
             "shrl    $dst,16\n\t" %}
   ins_encode %{
     __ bswapl($dst$$Register);
-    __ shrl($dst$$Register, 16); 
+    __ shrl($dst$$Register, 16);
   %}
   ins_pipe( ialu_reg );
 %}
@@ -7249,11 +7238,11 @@
 instruct bytes_reverse_short(rRegI dst) %{
   match(Set dst (ReverseBytesS dst));
 
-  format %{ "bswapl  $dst\n\t" 
+  format %{ "bswapl  $dst\n\t"
             "sar     $dst,16\n\t" %}
   ins_encode %{
     __ bswapl($dst$$Register);
-    __ sarl($dst$$Register, 16); 
+    __ sarl($dst$$Register, 16);
   %}
   ins_pipe( ialu_reg );
 %}
@@ -7476,7 +7465,7 @@
   effect(KILL cr);
   ins_cost(400);
 
-  format %{ 
+  format %{
     $$template
     if (os::is_MP()) {
       $$emit$$"lock addl [rsp + #0], 0\t! membar_volatile"
@@ -8287,7 +8276,7 @@
                            rFlagsReg cr)
 %{
   match(Set cr (StorePConditional heap_top_ptr (Binary oldval newval)));
- 
+
   format %{ "cmpxchgq $heap_top_ptr, $newval\t# (ptr) "
             "If rax == $heap_top_ptr then store $newval into $heap_top_ptr" %}
   opcode(0x0F, 0xB1);
@@ -9850,9 +9839,9 @@
 
 // Xor Register with Immediate -1
 instruct xorI_rReg_im1(rRegI dst, immI_M1 imm) %{
-  match(Set dst (XorI dst imm));  
-
-  format %{ "not    $dst" %}  
+  match(Set dst (XorI dst imm));
+
+  format %{ "not    $dst" %}
   ins_encode %{
      __ notl($dst$$Register);
   %}
@@ -10093,9 +10082,9 @@
 
 // Xor Register with Immediate -1
 instruct xorL_rReg_im1(rRegL dst, immL_M1 imm) %{
-  match(Set dst (XorL dst imm));  
-
-  format %{ "notq   $dst" %}  
+  match(Set dst (XorL dst imm));
+
+  format %{ "notq   $dst" %}
   ins_encode %{
      __ notq($dst$$Register);
   %}
@@ -12469,14 +12458,33 @@
 // Safepoint Instructions
 instruct safePoint_poll(rFlagsReg cr)
 %{
+  predicate(!Assembler::is_polling_page_far());
   match(SafePoint);
   effect(KILL cr);
 
-  format %{ "testl   rax, [rip + #offset_to_poll_page]\t"
+  format %{ "testl  rax, [rip + #offset_to_poll_page]\t"
             "# Safepoint: poll for GC" %}
-  size(6); // Opcode + ModRM + Disp32 == 6 bytes
   ins_cost(125);
-  ins_encode(enc_safepoint_poll);
+  ins_encode %{
+    AddressLiteral addr(os::get_polling_page(), relocInfo::poll_type);
+    __ testl(rax, addr);
+  %}
+  ins_pipe(ialu_reg_mem);
+%}
+
+instruct safePoint_poll_far(rFlagsReg cr, rRegP poll)
+%{
+  predicate(Assembler::is_polling_page_far());
+  match(SafePoint poll);
+  effect(KILL cr, USE poll);
+
+  format %{ "testl  rax, [$poll]\t"
+            "# Safepoint: poll for GC" %}
+  ins_cost(125);
+  ins_encode %{
+    __ relocate(relocInfo::poll_type);
+    __ testl(rax, Address($poll$$Register, 0));
+  %}
   ins_pipe(ialu_reg_mem);
 %}
 
--- a/hotspot/src/cpu/zero/vm/jni_zero.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/cpu/zero/vm/jni_zero.h	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
--- a/hotspot/src/os/linux/vm/jvm_linux.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/os/linux/vm/jvm_linux.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/os/linux/vm/osThread_linux.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/os/linux/vm/osThread_linux.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/os/linux/vm/os_linux.inline.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/os/linux/vm/os_linux.inline.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/os/linux/vm/thread_linux.inline.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/os/linux/vm/thread_linux.inline.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/os/solaris/dtrace/generateJvmOffsets.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/os/solaris/dtrace/generateJvmOffsets.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/os/solaris/dtrace/jhelper.d	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/os/solaris/dtrace/jhelper.d	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/os/solaris/dtrace/libjvm_db.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/os/solaris/dtrace/libjvm_db.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/os/solaris/vm/dtraceJSDT_solaris.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/os/solaris/vm/dtraceJSDT_solaris.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
--- a/hotspot/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/tools/ProjectCreator/Util.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/tools/ProjectCreator/Util.java	Wed Apr 20 09:31:11 2011 -0700
@@ -47,18 +47,6 @@
         return sb.toString();
     }
 
-    static String join(String padder, String v[]) {
-        StringBuffer sb = new StringBuffer();
-
-        for (int i=0; i<v.length; i++) {
-            sb.append(v[i]);
-            if (i < (v.length  - 1)) sb.append(padder);
-        }
-
-        return sb.toString();
-    }
-
-
 
     static String prefixed_join(String padder, Vector v, boolean quoted) {
         StringBuffer sb = new StringBuffer();
--- a/hotspot/src/share/tools/ProjectCreator/WinGammaPlatform.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/tools/ProjectCreator/WinGammaPlatform.java	Wed Apr 20 09:31:11 2011 -0700
@@ -587,7 +587,6 @@
         Vector allConfigs = new Vector();
 
         allConfigs.add(new C1DebugConfig());
-
         allConfigs.add(new C1FastDebugConfig());
         allConfigs.add(new C1ProductConfig());
 
@@ -655,6 +654,10 @@
         boolean isHeader() {
             return attr.shortName.endsWith(".h") || attr.shortName.endsWith(".hpp");
         }
+
+        boolean isCpp() {
+            return attr.shortName.endsWith(".cpp");
+        }
     }
 
 
@@ -708,7 +711,7 @@
     PrintWriter printWriter;
 
     public void writeProjectFile(String projectFileName, String projectName,
-                                 Vector allConfigs) throws IOException {
+                                 Vector<BuildConfig> allConfigs) throws IOException {
         throw new RuntimeException("use compiler version specific version");
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/share/tools/ProjectCreator/WinGammaPlatformVC10.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,545 @@
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.UnsupportedEncodingException;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.TreeSet;
+import java.util.UUID;
+import java.util.Vector;
+
+public class WinGammaPlatformVC10 extends WinGammaPlatformVC7 {
+
+    @Override
+    protected String getProjectExt() {
+        return ".vcxproj";
+    }
+
+    @Override
+    public void writeProjectFile(String projectFileName, String projectName,
+            Vector<BuildConfig> allConfigs) throws IOException {
+        System.out.println();
+        System.out.print("    Writing .vcxproj file: " + projectFileName);
+
+        String projDir = Util.normalize(new File(projectFileName).getParent());
+
+        printWriter = new PrintWriter(projectFileName, "UTF-8");
+        printWriter.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
+        startTag("Project",
+                "DefaultTargets", "Build",
+                "ToolsVersion", "4.0",
+                "xmlns", "http://schemas.microsoft.com/developer/msbuild/2003");
+        startTag("ItemGroup",
+                "Label", "ProjectConfigurations");
+        for (BuildConfig cfg : allConfigs) {
+            startTag("ProjectConfiguration",
+                    "Include", cfg.get("Name"));
+            tagData("Configuration", cfg.get("Id"));
+            tagData("Platform", cfg.get("PlatformName"));
+            endTag("ProjectConfiguration");
+        }
+        endTag("ItemGroup");
+
+        startTag("PropertyGroup", "Label", "Globals");
+        tagData("ProjectGuid", "{8822CB5C-1C41-41C2-8493-9F6E1994338B}");
+        tag("SccProjectName");
+        tag("SccLocalPath");
+        endTag("PropertyGroup");
+
+        tag("Import", "Project", "$(VCTargetsPath)\\Microsoft.Cpp.Default.props");
+
+        for (BuildConfig cfg : allConfigs) {
+            startTag(cfg, "PropertyGroup", "Label", "Configuration");
+            tagData("ConfigurationType", "DynamicLibrary");
+            tagData("UseOfMfc", "false");
+            endTag("PropertyGroup");
+        }
+
+        tag("Import", "Project", "$(VCTargetsPath)\\Microsoft.Cpp.props");
+        startTag("ImportGroup", "Label", "ExtensionSettings");
+        endTag("ImportGroup");
+        for (BuildConfig cfg : allConfigs) {
+            startTag(cfg, "ImportGroup", "Label", "PropertySheets");
+            tag("Import",
+                    "Project", "$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props",
+                    "Condition", "exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')",
+                    "Label", "LocalAppDataPlatform");
+            endTag("ImportGroup");
+        }
+
+        tag("PropertyGroup", "Label", "UserMacros");
+
+        startTag("PropertyGroup");
+        tagData("_ProjectFileVersion", "10.0.30319.1");
+        for (BuildConfig cfg : allConfigs) {
+            tagData(cfg, "OutDir", cfg.get("OutputDir") + Util.sep);
+            tagData(cfg, "IntDir", cfg.get("OutputDir") + Util.sep);
+            tagData(cfg, "LinkIncremental", "false");
+        }
+        for (BuildConfig cfg : allConfigs) {
+            tagData(cfg, "CodeAnalysisRuleSet", "AllRules.ruleset");
+            tag(cfg, "CodeAnalysisRules");
+            tag(cfg, "CodeAnalysisRuleAssemblies");
+        }
+        endTag("PropertyGroup");
+
+        for (BuildConfig cfg : allConfigs) {
+            startTag(cfg, "ItemDefinitionGroup");
+            startTag("ClCompile");
+            tagV(cfg.getV("CompilerFlags"));
+            endTag("ClCompile");
+
+            startTag("Link");
+            tagV(cfg.getV("LinkerFlags"));
+            endTag("Link");
+
+            startTag("PostBuildEvent");
+            tagData("Message", BuildConfig.getFieldString(null, "PostbuildDescription"));
+            tagData("Command", cfg.expandFormat(BuildConfig.getFieldString(null, "PostbuildCommand").replace("\t", "\r\n")));
+            endTag("PostBuildEvent");
+
+            startTag("PreLinkEvent");
+            tagData("Message", BuildConfig.getFieldString(null, "PrelinkDescription"));
+            tagData("Command", cfg.expandFormat(BuildConfig.getFieldString(null, "PrelinkCommand").replace("\t", "\r\n")));
+            endTag("PreLinkEvent");
+
+            endTag("ItemDefinitionGroup");
+        }
+
+        writeFiles(allConfigs, projDir);
+
+        tag("Import", "Project", "$(VCTargetsPath)\\Microsoft.Cpp.targets");
+        startTag("ImportGroup", "Label", "ExtensionTargets");
+        endTag("ImportGroup");
+
+        endTag("Project");
+        printWriter.close();
+        System.out.println("    Done.");
+
+        writeFilterFile(projectFileName, projectName, allConfigs, projDir);
+        writeUserFile(projectFileName, allConfigs);
+    }
+
+
+    private void writeUserFile(String projectFileName, Vector<BuildConfig> allConfigs) throws FileNotFoundException, UnsupportedEncodingException {
+        String userFileName = projectFileName + ".user";
+        if (new File(userFileName).exists()) {
+            return;
+        }
+        System.out.print("    Writing .vcxproj.user file: " + userFileName);
+        printWriter = new PrintWriter(userFileName, "UTF-8");
+
+        printWriter.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
+        startTag("Project",
+                "ToolsVersion", "4.0",
+                "xmlns", "http://schemas.microsoft.com/developer/msbuild/2003");
+
+        for (BuildConfig cfg : allConfigs) {
+            startTag(cfg, "PropertyGroup");
+            tagData("LocalDebuggerCommand", "$(TargetDir)/hotspot.exe");
+            endTag("PropertyGroup");
+        }
+
+        endTag("Project");
+        printWriter.close();
+        System.out.println("    Done.");
+    }
+
+    private void writeFilterFile(String projectFileName, String projectName,
+            Vector<BuildConfig> allConfigs, String base) throws FileNotFoundException, UnsupportedEncodingException {
+        String filterFileName = projectFileName + ".filters";
+        System.out.print("    Writing .vcxproj.filters file: " + filterFileName);
+        printWriter = new PrintWriter(filterFileName, "UTF-8");
+
+        printWriter.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
+        startTag("Project",
+                "ToolsVersion", "4.0",
+                "xmlns", "http://schemas.microsoft.com/developer/msbuild/2003");
+
+        Hashtable<String, FileAttribute> allFiles = computeAttributedFiles(allConfigs);
+        TreeSet<FileInfo> sortedFiles = sortFiles(allFiles);
+        Vector<NameFilter> filters = makeFilters(sortedFiles);
+
+        // first all filters
+        startTag("ItemGroup");
+        for (NameFilter filter : filters) {
+            doWriteFilter(filter, "");
+        }
+        startTag("Filter", "Include", "Resource Files");
+        UUID uuid = UUID.randomUUID();
+        tagData("UniqueIdentifier", "{" + uuid.toString() + "}");
+        tagData("Extensions", "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe");
+        endTag("Filter");
+        endTag("ItemGroup");
+
+        // then all cpp files
+        startTag("ItemGroup");
+        for (NameFilter filter : filters) {
+            doWriteFiles(sortedFiles, filter, "", "ClCompile", new Evaluator() {
+                public boolean pick(FileInfo fi) {
+                    return fi.isCpp();
+                }
+            }, base);
+        }
+        endTag("ItemGroup");
+
+        // then all header files
+        startTag("ItemGroup");
+        for (NameFilter filter : filters) {
+            doWriteFiles(sortedFiles, filter, "", "ClInclude", new Evaluator() {
+                public boolean pick(FileInfo fi) {
+                    return fi.isHeader();
+                }
+            }, base);
+        }
+        endTag("ItemGroup");
+
+        // then all other files
+        startTag("ItemGroup");
+        for (NameFilter filter : filters) {
+            doWriteFiles(sortedFiles, filter, "", "None", new Evaluator() {
+                public boolean pick(FileInfo fi) {
+                    return true;
+                }
+            }, base);
+        }
+        endTag("ItemGroup");
+
+        endTag("Project");
+        printWriter.close();
+        System.out.println("    Done.");
+    }
+
+
+    private void doWriteFilter(NameFilter filter, String start) {
+        startTag("Filter", "Include", start + filter.fname);
+        UUID uuid = UUID.randomUUID();
+        tagData("UniqueIdentifier", "{" + uuid.toString() + "}");
+        endTag("Filter");
+        if (filter instanceof ContainerFilter) {
+            Iterator i = ((ContainerFilter)filter).babies();
+            while (i.hasNext()) {
+                doWriteFilter((NameFilter)i.next(), start + filter.fname + "\\");
+            }
+        }
+    }
+
+    interface Evaluator {
+        boolean pick(FileInfo fi);
+    }
+
+    private void doWriteFiles(TreeSet<FileInfo> allFiles, NameFilter filter, String start, String tool, Evaluator eval, String base) {
+        if (filter instanceof ContainerFilter) {
+            Iterator i = ((ContainerFilter)filter).babies();
+            while (i.hasNext()) {
+                doWriteFiles(allFiles, (NameFilter)i.next(), start + filter.fname + "\\", tool, eval, base);
+            }
+        }
+        else {
+            Iterator i = allFiles.iterator();
+            while (i.hasNext()) {
+                FileInfo fi = (FileInfo)i.next();
+
+                if (!filter.match(fi)) {
+                    continue;
+                }
+                if (eval.pick(fi)) {
+                    startTag(tool, "Include", rel(fi.full, base));
+                    tagData("Filter", start + filter.fname);
+                    endTag(tool);
+
+                    // we not gonna look at this file anymore (sic!)
+                    i.remove();
+                }
+            }
+        }
+    }
+
+
+    void writeFiles(Vector<BuildConfig> allConfigs, String projDir) {
+        Hashtable<String, FileAttribute> allFiles = computeAttributedFiles(allConfigs);
+        TreeSet<FileInfo> sortedFiles = sortFiles(allFiles);
+
+        // first cpp-files
+        startTag("ItemGroup");
+        for (FileInfo fi : sortedFiles) {
+            if (!fi.isCpp()) {
+                continue;
+            }
+            writeFile("ClCompile", allConfigs, fi, projDir);
+        }
+        endTag("ItemGroup");
+
+        // then header-files
+        startTag("ItemGroup");
+        for (FileInfo fi : sortedFiles) {
+            if (!fi.isHeader()) {
+                continue;
+            }
+            writeFile("ClInclude", allConfigs, fi, projDir);
+        }
+        endTag("ItemGroup");
+
+        // then others
+        startTag("ItemGroup");
+        for (FileInfo fi : sortedFiles) {
+            if (fi.isHeader() || fi.isCpp()) {
+                continue;
+            }
+            writeFile("None", allConfigs, fi, projDir);
+        }
+        endTag("ItemGroup");
+    }
+
+    /**
+     * Make "path" into a relative path using "base" as the base.
+     *
+     * path and base are assumed to be normalized with / as the file separator.
+     * returned path uses "\\" as file separator
+     */
+    private String rel(String path, String base)
+    {
+        if(!base.endsWith("/")) {
+                base += "/";
+        }
+        String[] pathTok = path.split("/");
+        String[] baseTok = base.split("/");
+        int pi = 0;
+        int bi = 0;
+        StringBuilder newPath = new StringBuilder();
+
+        // first step past all path components that are the same
+        while (pi < pathTok.length &&
+                bi < baseTok.length &&
+                pathTok[pi].equals(baseTok[bi])) {
+            pi++;
+            bi++;
+        }
+
+        // for each path component left in base, add "../"
+        while (bi < baseTok.length) {
+            bi++;
+                newPath.append("..\\");
+        }
+
+        // now add everything left in path
+        while (pi < pathTok.length) {
+                newPath.append(pathTok[pi]);
+                pi++;
+            if (pi != pathTok.length) {
+                newPath.append("\\");
+            }
+        }
+        return newPath.toString();
+    }
+
+    private void writeFile(String tool, Vector<BuildConfig> allConfigs, FileInfo fi, String base) {
+        if (fi.attr.configs == null && fi.attr.pchRoot == false && fi.attr.noPch == false) {
+            tag(tool, "Include", rel(fi.full, base));
+        }
+        else {
+            startTag(tool, "Include", rel(fi.full, base));
+            for (BuildConfig cfg : allConfigs) {
+                if (fi.attr.configs != null && !fi.attr.configs.contains(cfg.get("Name"))) {
+                    tagData(cfg, "ExcludedFromBuild", "true");
+                }
+                if (fi.attr.pchRoot) {
+                        tagData(cfg, "PrecompiledHeader", "Create");
+                }
+                if (fi.attr.noPch) {
+                        startTag(cfg, "PrecompiledHeader");
+                        endTag("PrecompiledHeader");
+                }
+            }
+            endTag(tool);
+        }
+    }
+
+    String buildCond(BuildConfig cfg) {
+        return "'$(Configuration)|$(Platform)'=='"+cfg.get("Name")+"'";
+    }
+
+
+    void tagV(Vector<String> v) {
+        Iterator<String> i = v.iterator();
+        while(i.hasNext()) {
+            String name = i.next();
+            String data = i.next();
+            tagData(name, data);
+        }
+    }
+
+    void tagData(BuildConfig cfg, String name, String data) {
+        tagData(name, data, "Condition", buildCond(cfg));
+    }
+
+    void tag(BuildConfig cfg, String name, String... attrs) {
+        String[] ss = new String[attrs.length + 2];
+        ss[0] = "Condition";
+        ss[1] = buildCond(cfg);
+        System.arraycopy(attrs, 0, ss, 2, attrs.length);
+
+        tag(name, ss);
+    }
+
+    void startTag(BuildConfig cfg, String name, String... attrs) {
+        String[] ss = new String[attrs.length + 2];
+        ss[0] = "Condition";
+        ss[1] = buildCond(cfg);
+        System.arraycopy(attrs, 0, ss, 2, attrs.length);
+
+        startTag(name, ss);
+    }
+}
+
+class CompilerInterfaceVC10 extends CompilerInterface {
+
+    @Override
+    Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir) {
+        Vector rv = new Vector();
+
+        addAttr(rv, "AdditionalIncludeDirectories", Util.join(";", includes));
+        addAttr(rv, "PreprocessorDefinitions",
+                Util.join(";", defines).replace("\\\"", "\""));
+        addAttr(rv, "PrecompiledHeaderFile", "precompiled.hpp");
+        addAttr(rv, "PrecompiledHeaderOutputFile", outDir+Util.sep+"vm.pch");
+        addAttr(rv, "AssemblerListingLocation", outDir);
+        addAttr(rv, "ObjectFileName", outDir+Util.sep);
+        addAttr(rv, "ProgramDataBaseFileName", outDir+Util.sep+"jvm.pdb");
+        // Set /nologo option
+        addAttr(rv, "SuppressStartupBanner", "true");
+        // Surpass the default /Tc or /Tp.
+        addAttr(rv, "CompileAs", "Default");
+        // Set /W3 option.
+        addAttr(rv, "WarningLevel", "Level3");
+        // Set /WX option,
+        addAttr(rv, "TreatWarningAsError", "true");
+        // Set /GS option
+        addAttr(rv, "BufferSecurityCheck", "false");
+        // Set /Zi option.
+        addAttr(rv, "DebugInformationFormat", "ProgramDatabase");
+        // Set /Yu option.
+        addAttr(rv, "PrecompiledHeader", "Use");
+        // Set /EHsc- option
+        addAttr(rv, "ExceptionHandling", "");
+
+        addAttr(rv, "MultiProcessorCompilation", "true");
+
+        return rv;
+    }
+
+    @Override
+    Vector getDebugCompilerFlags(String opt) {
+        Vector rv = new Vector();
+
+        // Set /On option
+        addAttr(rv, "Optimization", opt);
+        // Set /FR option.
+        addAttr(rv, "BrowseInformation", "true");
+        addAttr(rv, "BrowseInformationFile", "$(IntDir)");
+        // Set /MD option.
+        addAttr(rv, "RuntimeLibrary", "MultiThreadedDLL");
+        // Set /Oy- option
+        addAttr(rv, "OmitFramePointers", "false");
+
+        return rv;
+    }
+
+    @Override
+    Vector getProductCompilerFlags() {
+        Vector rv = new Vector();
+
+        // Set /O2 option.
+        addAttr(rv, "Optimization", "MaxSpeed");
+        // Set /Oy- option
+        addAttr(rv, "OmitFramePointers", "false");
+        // Set /Ob option.  1 is expandOnlyInline
+        addAttr(rv, "InlineFunctionExpansion", "OnlyExplicitInline");
+        // Set /GF option.
+        addAttr(rv, "StringPooling", "true");
+        // Set /MD option. 2 is rtMultiThreadedDLL
+        addAttr(rv, "RuntimeLibrary", "MultiThreadedDLL");
+        // Set /Gy option
+        addAttr(rv, "FunctionLevelLinking", "true");
+
+        return rv;
+    }
+
+    @Override
+    Vector getBaseLinkerFlags(String outDir, String outDll, String platformName) {
+        Vector rv = new Vector();
+
+        addAttr(rv, "AdditionalOptions",
+                "/export:JNI_GetDefaultJavaVMInitArgs " +
+                "/export:JNI_CreateJavaVM " +
+                "/export:JVM_FindClassFromBootLoader "+
+                "/export:JNI_GetCreatedJavaVMs "+
+                "/export:jio_snprintf /export:jio_printf "+
+                "/export:jio_fprintf /export:jio_vfprintf "+
+                "/export:jio_vsnprintf "+
+                "/export:JVM_GetVersionInfo "+
+                "/export:JVM_GetThreadStateNames "+
+                "/export:JVM_GetThreadStateValues "+
+                "/export:JVM_InitAgentProperties");
+        addAttr(rv, "AdditionalDependencies", "kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;Wsock32.lib;winmm.lib");
+        addAttr(rv, "OutputFile", outDll);
+        addAttr(rv, "SuppressStartupBanner", "true");
+        addAttr(rv, "ModuleDefinitionFile", outDir+Util.sep+"vm.def");
+        addAttr(rv, "ProgramDatabaseFile", outDir+Util.sep+"jvm.pdb");
+        addAttr(rv, "SubSystem", "Windows");
+        addAttr(rv, "BaseAddress", "0x8000000");
+        addAttr(rv, "ImportLibrary", outDir+Util.sep+"jvm.lib");
+
+        if(platformName.equals("Win32")) {
+            addAttr(rv, "TargetMachine", "MachineX86");
+        } else {
+            addAttr(rv, "TargetMachine", "MachineX64");
+        }
+
+        return rv;
+    }
+
+    @Override
+    Vector getDebugLinkerFlags() {
+        Vector rv = new Vector();
+
+        // /DEBUG option
+        addAttr(rv, "GenerateDebugInformation", "true");
+
+        return rv;
+    }
+
+    @Override
+    Vector getProductLinkerFlags() {
+        Vector rv = new Vector();
+
+        // Set /OPT:REF option.
+        addAttr(rv, "OptimizeReferences", "true");
+        // Set /OPT:ICF option.
+        addAttr(rv, "EnableCOMDATFolding", "true");
+
+        return rv;
+    }
+
+    @Override
+    void getAdditionalNonKernelLinkerFlags(Vector rv) {
+        extAttr(rv, "AdditionalOptions", " /export:AsyncGetCallTrace");
+    }
+
+    @Override
+    String getOptFlag() {
+        return "MaxSpeed";
+    }
+
+    @Override
+    String getNoOptFlag() {
+        return "Disabled";
+    }
+
+    @Override
+    String makeCfgName(String flavourBuild, String platform) {
+        return  flavourBuild + "|" + platform;
+    }
+
+}
--- a/hotspot/src/share/tools/ProjectCreator/WinGammaPlatformVC7.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/tools/ProjectCreator/WinGammaPlatformVC7.java	Wed Apr 20 09:31:11 2011 -0700
@@ -35,7 +35,7 @@
     String projectVersion() {return "7.10";};
 
     public void writeProjectFile(String projectFileName, String projectName,
-                                 Vector allConfigs) throws IOException {
+                                 Vector<BuildConfig> allConfigs) throws IOException {
         System.out.println();
         System.out.println("    Writing .vcproj file: "+projectFileName);
         // If we got this far without an error, we're safe to actually
@@ -54,11 +54,11 @@
                 "SccLocalPath", ""
             }
             );
-        startTag("Platforms", null);
+        startTag("Platforms");
         tag("Platform", new String[] {"Name", (String) BuildConfig.getField(null, "PlatformName")});
         endTag("Platforms");
 
-        startTag("Configurations", null);
+        startTag("Configurations");
 
         for (Iterator i = allConfigs.iterator(); i.hasNext(); ) {
             writeConfiguration((BuildConfig)i.next());
@@ -66,11 +66,11 @@
 
         endTag("Configurations");
 
-        tag("References", null);
+        tag("References");
 
         writeFiles(allConfigs);
 
-        tag("Globals", null);
+        tag("Globals");
 
         endTag("VisualStudioProject");
         printWriter.close();
@@ -190,28 +190,6 @@
         }
     }
 
-    class TypeFilter extends NameFilter {
-        String[] exts;
-
-        TypeFilter(String fname, String[] exts) {
-            this.fname = fname;
-            this.exts = exts;
-        }
-
-        boolean match(FileInfo fi) {
-            for (int i=0; i<exts.length; i++) {
-                if (fi.full.endsWith(exts[i])) {
-                    return true;
-                }
-            }
-            return false;
-        }
-
-        String  filterString() {
-            return Util.join(";", exts);
-        }
-    }
-
     class TerminatorFilter extends NameFilter {
         TerminatorFilter(String fname) {
             this.fname = fname;
@@ -299,8 +277,8 @@
     //   - container filter just provides a container to group together real filters
     //   - real filter can select elements from the set according to some rule, put it into XML
     //     and remove from the list
-    Vector makeFilters(TreeSet<FileInfo> files) {
-        Vector rv = new Vector();
+    Vector<NameFilter> makeFilters(TreeSet<FileInfo> files) {
+        Vector<NameFilter> rv = new Vector<NameFilter>();
         String sbase = Util.normalize(BuildConfig.getFieldString(null, "SourceBase")+"/src/");
 
         String currentDir = "";
@@ -370,13 +348,12 @@
         rv.add(new SpecificNameFilter("Precompiled Header", new String[] {"precompiled.hpp"}));
 
         // this one is to catch files not caught by other filters
-        //rv.add(new TypeFilter("Header Files", new String[] {"h", "hpp", "hxx", "hm", "inl", "fi", "fd"}));
         rv.add(new TerminatorFilter("Source Files"));
 
         return rv;
     }
 
-    void writeFiles(Vector allConfigs) {
+    void writeFiles(Vector<BuildConfig> allConfigs) {
 
         Hashtable allFiles = computeAttributedFiles(allConfigs);
 
@@ -387,7 +364,7 @@
 
         TreeSet sortedFiles = sortFiles(allFiles);
 
-        startTag("Files", null);
+        startTag("Files");
 
         for (Iterator i = makeFilters(sortedFiles).iterator(); i.hasNext(); ) {
             doWriteFiles(sortedFiles, allConfigNames, (NameFilter)i.next());
@@ -556,34 +533,39 @@
     int indent;
 
     private void startTagPrim(String name,
+            String[] attrs,
+            boolean close) {
+        startTagPrim(name, attrs, close, true);
+    }
+
+    private void startTagPrim(String name,
                               String[] attrs,
-                              boolean close) {
+                              boolean close,
+                              boolean newline) {
         doIndent();
         printWriter.print("<"+name);
         indent++;
 
-        if (attrs != null) {
-            printWriter.println();
+        if (attrs != null && attrs.length > 0) {
             for (int i=0; i<attrs.length; i+=2) {
-                doIndent();
                 printWriter.print(" " + attrs[i]+"=\""+attrs[i+1]+"\"");
                 if (i < attrs.length - 2) {
-                    printWriter.println();
                 }
             }
         }
 
         if (close) {
             indent--;
-            //doIndent();
-            printWriter.println("/>");
+            printWriter.print(" />");
         } else {
-            //doIndent();
-            printWriter.println(">");
+                printWriter.print(">");
+        }
+        if(newline) {
+                printWriter.println();
         }
     }
 
-    void startTag(String name, String[] attrs) {
+    void startTag(String name, String... attrs) {
         startTagPrim(name, attrs, false);
     }
 
@@ -601,11 +583,25 @@
         printWriter.println("</"+name+">");
     }
 
-    void tag(String name, String[] attrs) {
+    void tag(String name, String... attrs) {
         startTagPrim(name, attrs, true);
     }
 
-     void tagV(String name, Vector attrs) {
+    void tagData(String name, String data) {
+        doIndent();
+        printWriter.print("<"+name+">");
+        printWriter.print(data);
+        printWriter.println("</"+name+">");
+    }
+
+    void tagData(String name, String data, String... attrs) {
+        startTagPrim(name, attrs, false, false);
+        printWriter.print(data);
+        printWriter.println("</"+name+">");
+        indent--;
+    }
+
+    void tagV(String name, Vector attrs) {
          String s[] = new String [attrs.size()];
          for (int i=0; i<attrs.size(); i++) {
              s[i] = (String)attrs.elementAt(i);
@@ -616,7 +612,7 @@
 
     void doIndent() {
         for (int i=0; i<indent; i++) {
-            printWriter.print("    ");
+            printWriter.print("  ");
         }
     }
 
--- a/hotspot/src/share/tools/hsdis/hsdis-demo.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/tools/hsdis/hsdis-demo.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/tools/hsdis/hsdis.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/tools/hsdis/hsdis.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/adlc/main.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/adlc/main.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -240,6 +240,11 @@
   AD.addInclude(AD._CPP_file, "nativeInst_sparc.hpp");
   AD.addInclude(AD._CPP_file, "vmreg_sparc.inline.hpp");
 #endif
+#ifdef TARGET_ARCH_arm
+  AD.addInclude(AD._CPP_file, "assembler_arm.inline.hpp");
+  AD.addInclude(AD._CPP_file, "nativeInst_arm.hpp");
+  AD.addInclude(AD._CPP_file, "vmreg_arm.inline.hpp");
+#endif
   AD.addInclude(AD._HPP_file, "memory/allocation.hpp");
   AD.addInclude(AD._HPP_file, "opto/machnode.hpp");
   AD.addInclude(AD._HPP_file, "opto/node.hpp");
--- a/hotspot/src/share/vm/adlc/output_c.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/adlc/output_c.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/asm/assembler.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/asm/assembler.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/asm/assembler.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/asm/assembler.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/asm/codeBuffer.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/asm/codeBuffer.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/c1/c1_Compilation.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/c1/c1_Compilation.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/c1/c1_Defs.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/c1/c1_Defs.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/c1/c1_FpuStackSim.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/c1/c1_FpuStackSim.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/c1/c1_FrameMap.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/c1/c1_FrameMap.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/c1/c1_FrameMap.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/c1/c1_FrameMap.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -30,6 +30,7 @@
 #include "c1/c1_InstructionPrinter.hpp"
 #include "ci/ciField.hpp"
 #include "ci/ciKlass.hpp"
+#include "compiler/compileBroker.hpp"
 #include "interpreter/bytecode.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "utilities/bitMap.inline.hpp"
@@ -3775,24 +3776,7 @@
 
 #ifndef PRODUCT
 void GraphBuilder::print_inline_result(ciMethod* callee, bool res) {
-  const char sync_char      = callee->is_synchronized()        ? 's' : ' ';
-  const char exception_char = callee->has_exception_handlers() ? '!' : ' ';
-  const char monitors_char  = callee->has_monitor_bytecodes()  ? 'm' : ' ';
-  tty->print("     %c%c%c ", sync_char, exception_char, monitors_char);
-  for (int i = 0; i < scope()->level(); i++) tty->print("  ");
-  if (res) {
-    tty->print("  ");
-  } else {
-    tty->print("- ");
-  }
-  tty->print("@ %d  ", bci());
-  callee->print_short_name();
-  tty->print(" (%d bytes)", callee->code_size());
-  if (_inline_bailout_msg) {
-    tty->print("  %s", _inline_bailout_msg);
-  }
-  tty->cr();
-
+  CompileTask::print_inlining(callee, scope()->level(), bci(), _inline_bailout_msg);
   if (res && CIPrintMethodCodes) {
     callee->print_codes();
   }
--- a/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/c1/c1_LIRAssembler.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/c1/c1_LIRAssembler.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/c1/c1_LinearScan.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/c1/c1_LinearScan.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/c1/c1_LinearScan.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/c1/c1_LinearScan.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/c1/c1_MacroAssembler.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/c1/c1_MacroAssembler.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/c1/c1_globals.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/c1/c1_globals.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/ci/ciClassList.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/ci/ciClassList.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/ci/ciEnv.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/ci/ciEnv.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/ci/ciEnv.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/ci/ciEnv.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/ci/ciKlass.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/ci/ciKlass.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/ci/ciObjArrayKlass.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/ci/ciObjArrayKlass.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/ci/ciObject.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/ci/ciObject.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/ci/ciObjectFactory.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/ci/ciObjectFactory.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/ci/ciSignature.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/ci/ciSignature.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/ci/ciSignature.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/ci/ciSignature.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/ci/ciSymbol.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/ci/ciSymbol.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/ci/ciSymbol.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/ci/ciSymbol.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/ci/ciTypeFlow.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/ci/ciTypeFlow.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1871,7 +1871,8 @@
 // ------------------------------------------------------------------
 // ciTypeFlow::Block::print_on
 void ciTypeFlow::Block::print_on(outputStream* st) const {
-  if ((Verbose || WizardMode)) {
+  if ((Verbose || WizardMode) && (limit() >= 0)) {
+    // Don't print 'dummy' blocks (i.e. blocks with limit() '-1')
     outer()->method()->print_codes_on(start(), limit(), st);
   }
   st->print_cr("  ====================================================  ");
--- a/hotspot/src/share/vm/ci/compilerInterface.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/ci/compilerInterface.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/classfile/classFileError.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/classFileError.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/classfile/classFileParser.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/classFileParser.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -152,7 +152,7 @@
             "Class file version does not support constant tag %u in class file %s",
             tag, CHECK);
         }
-        if (!EnableMethodHandles) {
+        if (!EnableInvokeDynamic) {
           classfile_parse_error(
             "This JVM does not support constant tag %u in class file %s",
             tag, CHECK);
@@ -260,7 +260,7 @@
             verify_legal_utf8((unsigned char*)utf8_buffer, utf8_length, CHECK);
           }
 
-          if (AnonymousClasses && has_cp_patch_at(index)) {
+          if (EnableInvokeDynamic && has_cp_patch_at(index)) {
             Handle patch = clear_cp_patch_at(index);
             guarantee_property(java_lang_String::is_instance(patch()),
                                "Illegal utf8 patch at %d in class file %s",
@@ -443,7 +443,7 @@
           int ref_index = cp->method_handle_index_at(index);
           check_property(
             valid_cp_range(ref_index, length) &&
-                EnableMethodHandles,
+                EnableInvokeDynamic,
               "Invalid constant pool index %u in class file %s",
               ref_index, CHECK_(nullHandle));
           constantTag tag = cp->tag_at(ref_index);
@@ -487,7 +487,7 @@
           check_property(
             valid_cp_range(ref_index, length) &&
                 cp->tag_at(ref_index).is_utf8() &&
-                EnableMethodHandles,
+                EnableInvokeDynamic,
               "Invalid constant pool index %u in class file %s",
               ref_index, CHECK_(nullHandle));
         }
@@ -522,7 +522,7 @@
 
   if (_cp_patches != NULL) {
     // need to treat this_class specially...
-    assert(AnonymousClasses, "");
+    assert(EnableInvokeDynamic, "");
     int this_class_index;
     {
       cfs->guarantee_more(8, CHECK_(nullHandle));  // flags, this_class, super_class, infs_len
@@ -677,7 +677,7 @@
 
 
 void ClassFileParser::patch_constant_pool(constantPoolHandle cp, int index, Handle patch, TRAPS) {
-  assert(AnonymousClasses, "");
+  assert(EnableInvokeDynamic, "");
   BasicType patch_type = T_VOID;
   switch (cp->tag_at(index).value()) {
 
@@ -2103,7 +2103,7 @@
     _has_vanilla_constructor = true;
   }
 
-  if (EnableMethodHandles && (m->is_method_handle_invoke() ||
+  if (EnableInvokeDynamic && (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);
@@ -2771,7 +2771,7 @@
   // This is not particularly nice, but since there is no way to express
   // a native wordSize field in Java, we must do it at this level.
 
-  if (!EnableMethodHandles)  return;
+  if (!EnableInvokeDynamic)  return;
 
   int word_sig_index = 0;
   const int cp_size = cp->length();
@@ -3191,15 +3191,15 @@
     next_nonstatic_field_offset = first_nonstatic_field_offset;
 
     // adjust the vmentry field declaration in java.lang.invoke.MethodHandle
-    if (EnableMethodHandles && class_name == vmSymbols::java_lang_invoke_MethodHandle() && class_loader.is_null()) {
+    if (EnableInvokeDynamic && class_name == vmSymbols::java_lang_invoke_MethodHandle() && class_loader.is_null()) {
       java_lang_invoke_MethodHandle_fix_pre(cp, fields, &fac, CHECK_(nullHandle));
     }
     if (AllowTransitionalJSR292 &&
-        EnableMethodHandles && class_name == vmSymbols::java_dyn_MethodHandle() && class_loader.is_null()) {
+        EnableInvokeDynamic && class_name == vmSymbols::java_dyn_MethodHandle() && class_loader.is_null()) {
       java_lang_invoke_MethodHandle_fix_pre(cp, fields, &fac, CHECK_(nullHandle));
     }
     if (AllowTransitionalJSR292 &&
-        EnableMethodHandles && class_name == vmSymbols::sun_dyn_MethodHandleImpl() && class_loader.is_null()) {
+        EnableInvokeDynamic && class_name == vmSymbols::sun_dyn_MethodHandleImpl() && class_loader.is_null()) {
       // allow vmentry field in MethodHandleImpl also
       java_lang_invoke_MethodHandle_fix_pre(cp, fields, &fac, CHECK_(nullHandle));
     }
--- a/hotspot/src/share/vm/classfile/classFileParser.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/classFileParser.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -231,11 +231,11 @@
   char* skip_over_field_signature(char* signature, bool void_ok, unsigned int length, TRAPS);
 
   bool is_anonymous() {
-    assert(AnonymousClasses || _host_klass.is_null(), "");
+    assert(EnableInvokeDynamic || _host_klass.is_null(), "");
     return _host_klass.not_null();
   }
   bool has_cp_patch_at(int index) {
-    assert(AnonymousClasses, "");
+    assert(EnableInvokeDynamic, "");
     assert(index >= 0, "oob");
     return (_cp_patches != NULL
             && index < _cp_patches->length()
@@ -258,7 +258,7 @@
   // constant pool construction, but in later versions they can.
   // %%% Let's phase out the old is_klass_reference.
   bool is_klass_reference(constantPoolHandle cp, int index) {
-    return ((LinkWellKnownClasses || AnonymousClasses)
+    return ((LinkWellKnownClasses || EnableInvokeDynamic)
             ? cp->tag_at(index).is_klass_or_reference()
             : cp->tag_at(index).is_klass_reference());
   }
--- a/hotspot/src/share/vm/classfile/classFileStream.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/classFileStream.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/classfile/classLoader.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/classLoader.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/classfile/classLoader.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/classLoader.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/classfile/dictionary.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/dictionary.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/classfile/dictionary.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/dictionary.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/classfile/javaAssertions.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/javaAssertions.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/classfile/javaClasses.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/javaClasses.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -301,6 +301,15 @@
   return result;
 }
 
+unsigned int java_lang_String::hash_string(oop java_string) {
+  typeArrayOop value  = java_lang_String::value(java_string);
+  int          offset = java_lang_String::offset(java_string);
+  int          length = java_lang_String::length(java_string);
+
+  if (length == 0) return 0;
+  return hash_string(value->char_at_addr(offset), length);
+}
+
 Symbol* java_lang_String::as_symbol(Handle java_string, TRAPS) {
   oop          obj    = java_string();
   typeArrayOop value  = java_lang_String::value(obj);
@@ -2322,7 +2331,7 @@
 
 void java_lang_invoke_MethodHandle::compute_offsets() {
   klassOop k = SystemDictionary::MethodHandle_klass();
-  if (k != NULL && EnableMethodHandles) {
+  if (k != NULL && EnableInvokeDynamic) {
     bool allow_super = false;
     if (AllowTransitionalJSR292)  allow_super = true;  // temporary, to access java.dyn.MethodHandleImpl
     compute_offset(_type_offset,      k, vmSymbols::type_name(),      vmSymbols::java_lang_invoke_MethodType_signature(), allow_super);
@@ -2337,7 +2346,7 @@
 
 void java_lang_invoke_MemberName::compute_offsets() {
   klassOop k = SystemDictionary::MemberName_klass();
-  if (k != NULL && EnableMethodHandles) {
+  if (k != NULL && EnableInvokeDynamic) {
     compute_offset(_clazz_offset,     k, vmSymbols::clazz_name(),     vmSymbols::class_signature());
     compute_offset(_name_offset,      k, vmSymbols::name_name(),      vmSymbols::string_signature());
     compute_offset(_type_offset,      k, vmSymbols::type_name(),      vmSymbols::object_signature());
@@ -2349,14 +2358,14 @@
 
 void java_lang_invoke_DirectMethodHandle::compute_offsets() {
   klassOop k = SystemDictionary::DirectMethodHandle_klass();
-  if (k != NULL && EnableMethodHandles) {
+  if (k != NULL && EnableInvokeDynamic) {
     compute_offset(_vmindex_offset,   k, vmSymbols::vmindex_name(),   vmSymbols::int_signature(),    true);
   }
 }
 
 void java_lang_invoke_BoundMethodHandle::compute_offsets() {
   klassOop k = SystemDictionary::BoundMethodHandle_klass();
-  if (k != NULL && EnableMethodHandles) {
+  if (k != NULL && EnableInvokeDynamic) {
     compute_offset(_vmargslot_offset, k, vmSymbols::vmargslot_name(), vmSymbols::int_signature(),    true);
     compute_offset(_argument_offset,  k, vmSymbols::argument_name(),  vmSymbols::object_signature(), true);
   }
@@ -2364,7 +2373,7 @@
 
 void java_lang_invoke_AdapterMethodHandle::compute_offsets() {
   klassOop k = SystemDictionary::AdapterMethodHandle_klass();
-  if (k != NULL && EnableMethodHandles) {
+  if (k != NULL && EnableInvokeDynamic) {
     compute_offset(_conversion_offset, k, vmSymbols::conversion_name(), vmSymbols::int_signature(), true);
   }
 }
@@ -2982,7 +2991,7 @@
   java_lang_Class::compute_offsets();
   java_lang_Thread::compute_offsets();
   java_lang_ThreadGroup::compute_offsets();
-  if (EnableMethodHandles) {
+  if (EnableInvokeDynamic) {
     java_lang_invoke_MethodHandle::compute_offsets();
     java_lang_invoke_MemberName::compute_offsets();
     java_lang_invoke_DirectMethodHandle::compute_offsets();
@@ -2990,8 +2999,6 @@
     java_lang_invoke_AdapterMethodHandle::compute_offsets();
     java_lang_invoke_MethodType::compute_offsets();
     java_lang_invoke_MethodTypeForm::compute_offsets();
-  }
-  if (EnableInvokeDynamic) {
     java_lang_invoke_CallSite::compute_offsets();
   }
   java_security_AccessControlContext::compute_offsets();
--- a/hotspot/src/share/vm/classfile/javaClasses.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/javaClasses.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -109,6 +109,30 @@
   static char*  as_platform_dependent_str(Handle java_string, TRAPS);
   static jchar* as_unicode_string(oop java_string, int& length);
 
+  // Compute the hash value for a java.lang.String object which would
+  // contain the characters passed in. This hash value is used for at
+  // least two purposes.
+  //
+  // (a) As the hash value used by the StringTable for bucket selection
+  //     and comparison (stored in the HashtableEntry structures).  This
+  //     is used in the String.intern() method.
+  //
+  // (b) As the hash value used by the String object itself, in
+  //     String.hashCode().  This value is normally calculate in Java code
+  //     in the String.hashCode method(), but is precomputed for String
+  //     objects in the shared archive file.
+  //
+  //     For this reason, THIS ALGORITHM MUST MATCH String.hashCode().
+  static unsigned int hash_string(jchar* s, int len) {
+    unsigned int h = 0;
+    while (len-- > 0) {
+      h = 31*h + (unsigned int) *s;
+      s++;
+    }
+    return h;
+  }
+  static unsigned int hash_string(oop java_string);
+
   static bool equals(oop java_string, jchar* chars, int len);
 
   // Conversion between '.' and '/' formats
--- a/hotspot/src/share/vm/classfile/loaderConstraints.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/loaderConstraints.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/classfile/loaderConstraints.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/loaderConstraints.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/classfile/placeholders.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/placeholders.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/classfile/placeholders.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/placeholders.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/classfile/resolutionErrors.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/resolutionErrors.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/classfile/resolutionErrors.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/resolutionErrors.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/classfile/stackMapFrame.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/stackMapFrame.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/classfile/stackMapFrame.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/stackMapFrame.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/classfile/stackMapTable.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/stackMapTable.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/classfile/stackMapTable.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/stackMapTable.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/classfile/symbolTable.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/symbolTable.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -480,33 +480,6 @@
 
 
 // --------------------------------------------------------------------------
-
-
-// Compute the hash value for a java.lang.String object which would
-// contain the characters passed in. This hash value is used for at
-// least two purposes.
-//
-// (a) As the hash value used by the StringTable for bucket selection
-//     and comparison (stored in the HashtableEntry structures).  This
-//     is used in the String.intern() method.
-//
-// (b) As the hash value used by the String object itself, in
-//     String.hashCode().  This value is normally calculate in Java code
-//     in the String.hashCode method(), but is precomputed for String
-//     objects in the shared archive file.
-//
-//     For this reason, THIS ALGORITHM MUST MATCH String.hashCode().
-
-int StringTable::hash_string(jchar* s, int len) {
-  unsigned h = 0;
-  while (len-- > 0) {
-    h = 31*h + (unsigned) *s;
-    s++;
-  }
-  return h;
-}
-
-
 StringTable* StringTable::_the_table = NULL;
 
 oop StringTable::lookup(int index, jchar* name,
@@ -561,7 +534,7 @@
   ResourceMark rm;
   int length;
   jchar* chars = symbol->as_unicode(length);
-  unsigned int hashValue = hash_string(chars, length);
+  unsigned int hashValue = java_lang_String::hash_string(chars, length);
   int index = the_table()->hash_to_index(hashValue);
   return the_table()->lookup(index, chars, length, hashValue);
 }
@@ -569,7 +542,7 @@
 
 oop StringTable::intern(Handle string_or_null, jchar* name,
                         int len, TRAPS) {
-  unsigned int hashValue = hash_string(name, len);
+  unsigned int hashValue = java_lang_String::hash_string(name, len);
   int index = the_table()->hash_to_index(hashValue);
   oop string = the_table()->lookup(index, name, len, hashValue);
 
@@ -663,10 +636,7 @@
       oop s = p->literal();
       guarantee(s != NULL, "interned string is NULL");
       guarantee(s->is_perm() || !JavaObjectsInPerm, "interned string not in permspace");
-
-      int length;
-      jchar* chars = java_lang_String::as_unicode_string(s, length);
-      unsigned int h = hash_string(chars, length);
+      unsigned int h = java_lang_String::hash_string(s);
       guarantee(p->hash() == h, "broken hash in string table entry");
       guarantee(the_table()->hash_to_index(h) == i,
                 "wrong index in string table");
--- a/hotspot/src/share/vm/classfile/symbolTable.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/symbolTable.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -242,8 +242,6 @@
     _the_table = new StringTable(t, number_of_entries);
   }
 
-  static int hash_string(jchar* s, int len);
-
   // GC support
   //   Delete pointers to otherwise-unreachable objects.
   static void unlink(BoolObjectClosure* cl);
--- a/hotspot/src/share/vm/classfile/systemDictionary.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/systemDictionary.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1017,7 +1017,7 @@
   }
 
   if (host_klass.not_null() && k.not_null()) {
-    assert(AnonymousClasses, "");
+    assert(EnableInvokeDynamic, "");
     // If it's anonymous, initialize it now, since nobody else will.
     k->set_host_klass(host_klass());
 
@@ -1940,7 +1940,7 @@
   }
   Symbol* backup_symbol = NULL;  // symbol to try if the current symbol fails
   if (init_opt == SystemDictionary::Pre_JSR292) {
-    if (!EnableMethodHandles)  try_load = false;  // do not bother to load such classes
+    if (!EnableInvokeDynamic)  try_load = false;  // do not bother to load such classes
     if (AllowTransitionalJSR292) {
       backup_symbol = find_backup_class_name(symbol);
       if (try_load && PreferTransitionalJSR292) {
@@ -2038,25 +2038,15 @@
   instanceKlass::cast(WK_KLASS(FinalReference_klass))->set_reference_type(REF_FINAL);
   instanceKlass::cast(WK_KLASS(PhantomReference_klass))->set_reference_type(REF_PHANTOM);
 
-  WKID meth_group_start = WK_KLASS_ENUM_NAME(MethodHandle_klass);
-  WKID meth_group_end   = WK_KLASS_ENUM_NAME(WrongMethodTypeException_klass);
-  initialize_wk_klasses_until(meth_group_start, scan, CHECK);
-  if (EnableMethodHandles) {
-    initialize_wk_klasses_through(meth_group_end, scan, CHECK);
-  }
-  if (_well_known_klasses[meth_group_start] == NULL) {
-    // Skip the rest of the method handle classes, if MethodHandle is not loaded.
-    scan = WKID(meth_group_end+1);
-  }
-  WKID indy_group_start = WK_KLASS_ENUM_NAME(Linkage_klass);
-  WKID indy_group_end   = WK_KLASS_ENUM_NAME(CallSite_klass);
-  initialize_wk_klasses_until(indy_group_start, scan, CHECK);
+  // JSR 292 classes
+  WKID jsr292_group_start = WK_KLASS_ENUM_NAME(MethodHandle_klass);
+  WKID jsr292_group_end   = WK_KLASS_ENUM_NAME(CallSite_klass);
+  initialize_wk_klasses_until(jsr292_group_start, scan, CHECK);
   if (EnableInvokeDynamic) {
-    initialize_wk_klasses_through(indy_group_end, scan, CHECK);
-  }
-  if (_well_known_klasses[indy_group_start] == NULL) {
-    // Skip the rest of the dynamic typing classes, if Linkage is not loaded.
-    scan = WKID(indy_group_end+1);
+    initialize_wk_klasses_through(jsr292_group_end, scan, CHECK);
+  } else {
+    // Skip the JSR 292 classes, if not enabled.
+    scan = WKID(jsr292_group_end + 1);
   }
 
   initialize_wk_klasses_until(WKID_LIMIT, scan, CHECK);
@@ -2407,7 +2397,7 @@
                                                       Symbol* signature,
                                                       KlassHandle accessing_klass,
                                                       TRAPS) {
-  if (!EnableMethodHandles)  return NULL;
+  if (!EnableInvokeDynamic)  return NULL;
   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);
--- a/hotspot/src/share/vm/classfile/systemDictionary.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/systemDictionary.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -207,7 +207,7 @@
 
   enum InitOption {
     Pre,                        // preloaded; error if not present
-    Pre_JSR292,                 // preloaded if EnableMethodHandles
+    Pre_JSR292,                 // preloaded if EnableInvokeDynamic
 
     // Order is significant.  Options before this point require resolve_or_fail.
     // Options after this point will use resolve_or_null instead.
--- a/hotspot/src/share/vm/classfile/verificationType.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/verificationType.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/classfile/verificationType.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/verificationType.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/classfile/verifier.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/classfile/verifier.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/code/codeBlob.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/code/codeBlob.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/code/codeCache.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/code/codeCache.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/code/compiledIC.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/code/compiledIC.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/code/compiledIC.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/code/compiledIC.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/code/dependencies.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/code/dependencies.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/code/icBuffer.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/code/icBuffer.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/code/nmethod.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/code/nmethod.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -28,6 +28,7 @@
 #include "code/nmethod.hpp"
 #include "code/scopeDesc.hpp"
 #include "compiler/abstractCompiler.hpp"
+#include "compiler/compileBroker.hpp"
 #include "compiler/compileLog.hpp"
 #include "compiler/compilerOracle.hpp"
 #include "compiler/disassembler.hpp"
@@ -469,6 +470,7 @@
 
 
 nmethod* nmethod::new_native_nmethod(methodHandle method,
+  int compile_id,
   CodeBuffer *code_buffer,
   int vep_offset,
   int frame_complete,
@@ -485,7 +487,7 @@
     offsets.set_value(CodeOffsets::Verified_Entry, vep_offset);
     offsets.set_value(CodeOffsets::Frame_Complete, frame_complete);
     nm = new (native_nmethod_size)
-      nmethod(method(), native_nmethod_size, &offsets,
+      nmethod(method(), native_nmethod_size, compile_id, &offsets,
               code_buffer, frame_size,
               basic_lock_owner_sp_offset, basic_lock_sp_offset,
               oop_maps);
@@ -610,6 +612,7 @@
 nmethod::nmethod(
   methodOop method,
   int nmethod_size,
+  int compile_id,
   CodeOffsets* offsets,
   CodeBuffer* code_buffer,
   int frame_size,
@@ -644,7 +647,7 @@
     _handler_table_offset    = _dependencies_offset;
     _nul_chk_table_offset    = _handler_table_offset;
     _nmethod_end_offset      = _nul_chk_table_offset;
-    _compile_id              = 0;  // default
+    _compile_id              = compile_id;
     _comp_level              = CompLevel_none;
     _entry_point             = code_begin()          + offsets->value(CodeOffsets::Entry);
     _verified_entry_point    = code_begin()          + offsets->value(CodeOffsets::Verified_Entry);
@@ -930,72 +933,11 @@
 #undef LOG_OFFSET
 
 
-void nmethod::print_compilation(outputStream *st, const char *method_name, const char *title,
-                                methodOop method, bool is_blocking, int compile_id, int bci, int comp_level) {
-  bool is_synchronized = false, has_xhandler = false, is_native = false;
-  int code_size = -1;
-  if (method != NULL) {
-    is_synchronized = method->is_synchronized();
-    has_xhandler    = method->has_exception_handler();
-    is_native       = method->is_native();
-    code_size       = method->code_size();
-  }
-  // print compilation number
-  st->print("%7d %3d", (int)tty->time_stamp().milliseconds(), compile_id);
-
-  // print method attributes
-  const bool is_osr = bci != InvocationEntryBci;
-  const char blocking_char  = is_blocking     ? 'b' : ' ';
-  const char compile_type   = is_osr          ? '%' : ' ';
-  const char sync_char      = is_synchronized ? 's' : ' ';
-  const char exception_char = has_xhandler    ? '!' : ' ';
-  const char native_char    = is_native       ? 'n' : ' ';
-  st->print("%c%c%c%c%c ", compile_type, sync_char, exception_char, blocking_char, native_char);
-  if (TieredCompilation) {
-    st->print("%d ", comp_level);
-  }
-
-  // print optional title
-  bool do_nl = false;
-  if (title != NULL) {
-    int tlen = (int) strlen(title);
-    bool do_nl = false;
-    if (tlen > 0 && title[tlen-1] == '\n') { tlen--; do_nl = true; }
-    st->print("%.*s", tlen, title);
-  } else {
-    do_nl = true;
-  }
-
-  // print method name string if given
-  if (method_name != NULL) {
-    st->print(method_name);
-  } else {
-    // otherwise as the method to print itself
-    if (method != NULL && !Universe::heap()->is_gc_active()) {
-      method->print_short_name(st);
-    } else {
-      st->print("(method)");
-    }
-  }
-
-  if (method != NULL) {
-    // print osr_bci if any
-    if (is_osr) st->print(" @ %d", bci);
-    // print method size
-    st->print(" (%d bytes)", code_size);
-  }
-  if (do_nl) st->cr();
-}
-
 // Print out more verbose output usually for a newly created nmethod.
-void nmethod::print_on(outputStream* st, const char* title) const {
+void nmethod::print_on(outputStream* st, const char* msg) const {
   if (st != NULL) {
     ttyLocker ttyl;
-    print_compilation(st, /*method_name*/NULL, title,
-                      method(), /*is_blocking*/false,
-                      compile_id(),
-                      is_osr_method() ? osr_entry_bci() : InvocationEntryBci,
-                      comp_level());
+    CompileTask::print_compilation(st, this, msg);
     if (WizardMode) st->print(" (" INTPTR_FORMAT ")", this);
   }
 }
@@ -1309,8 +1251,7 @@
     }
   }
   if (PrintCompilation && _state != unloaded) {
-    print_on(tty, _state == zombie ? "made zombie " : "made not entrant ");
-    tty->cr();
+    print_on(tty, _state == zombie ? "made zombie" : "made not entrant");
   }
 }
 
@@ -1816,7 +1757,7 @@
           break;
       }
       // Mark was clear when we first saw this guy.
-      NOT_PRODUCT(if (TraceScavenge)  print_on(tty, "oops_do, mark\n"));
+      NOT_PRODUCT(if (TraceScavenge)  print_on(tty, "oops_do, mark"));
       return false;
     }
   }
@@ -1841,7 +1782,7 @@
     nmethod* next = cur->_oops_do_mark_link;
     cur->_oops_do_mark_link = NULL;
     cur->fix_oop_relocations();
-    NOT_PRODUCT(if (TraceScavenge)  cur->print_on(tty, "oops_do, unmark\n"));
+    NOT_PRODUCT(if (TraceScavenge)  cur->print_on(tty, "oops_do, unmark"));
     cur = next;
   }
   void* required = _oops_do_mark_nmethods;
@@ -2396,7 +2337,7 @@
   ResourceMark rm;
   ttyLocker ttyl;   // keep the following output all in one block
 
-  tty->print("Compiled ");
+  tty->print("Compiled method ");
 
   if (is_compiled_by_c1()) {
     tty->print("(c1) ");
@@ -2408,8 +2349,8 @@
     tty->print("(nm) ");
   }
 
-  print_on(tty, "nmethod");
-  tty->cr();
+  print_on(tty, NULL);
+
   if (WizardMode) {
     tty->print("((nmethod*) "INTPTR_FORMAT ") ", this);
     tty->print(" for method " INTPTR_FORMAT , (address)method());
@@ -2796,7 +2737,8 @@
 #ifndef PRODUCT
 
 void nmethod::print_value_on(outputStream* st) const {
-  print_on(st, "nmethod");
+  st->print("nmethod");
+  print_on(st, NULL);
 }
 
 void nmethod::print_calls(outputStream* st) {
--- a/hotspot/src/share/vm/code/nmethod.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/code/nmethod.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -229,6 +229,7 @@
   // For native wrappers
   nmethod(methodOop method,
           int nmethod_size,
+          int compile_id,
           CodeOffsets* offsets,
           CodeBuffer *code_buffer,
           int frame_size,
@@ -299,6 +300,7 @@
                               int comp_level);
 
   static nmethod* new_native_nmethod(methodHandle method,
+                                     int compile_id,
                                      CodeBuffer *code_buffer,
                                      int vep_offset,
                                      int frame_complete,
@@ -500,8 +502,8 @@
   address continuation_for_implicit_exception(address pc);
 
   // On-stack replacement support
-  int   osr_entry_bci() const                     { assert(_entry_bci != InvocationEntryBci, "wrong kind of nmethod"); return _entry_bci; }
-  address  osr_entry() const                      { assert(_entry_bci != InvocationEntryBci, "wrong kind of nmethod"); return _osr_entry_point; }
+  int   osr_entry_bci() const                     { assert(is_osr_method(), "wrong kind of nmethod"); return _entry_bci; }
+  address  osr_entry() const                      { assert(is_osr_method(), "wrong kind of nmethod"); return _osr_entry_point; }
   void  invalidate_osr_method();
   nmethod* osr_link() const                       { return _osr_link; }
   void     set_osr_link(nmethod *n)               { _osr_link = n; }
@@ -608,10 +610,6 @@
   void verify_scopes();
   void verify_interrupt_point(address interrupt_point);
 
-  // print compilation helper
-  static void print_compilation(outputStream *st, const char *method_name, const char *title,
-                                methodOop method, bool is_blocking, int compile_id, int bci, int comp_level);
-
   // printing support
   void print()                          const;
   void print_code();
@@ -627,7 +625,7 @@
 
   // need to re-define this from CodeBlob else the overload hides it
   virtual void print_on(outputStream* st) const { CodeBlob::print_on(st); }
-  void print_on(outputStream* st, const char* title) const;
+  void print_on(outputStream* st, const char* msg) const;
 
   // Logging
   void log_identity(xmlStream* log) const;
--- a/hotspot/src/share/vm/code/relocInfo.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/code/relocInfo.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/code/relocInfo.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/code/relocInfo.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/code/vmreg.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/code/vmreg.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/compiler/compileBroker.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/compiler/compileBroker.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -268,11 +268,6 @@
 }
 
 
-void CompileTask::print_compilation(outputStream *st, methodOop method, char* method_name) {
-  nmethod::print_compilation(st, method_name,/*title*/ NULL, method,
-                             is_blocking(), compile_id(), osr_bci(), comp_level());
-}
-
 // ------------------------------------------------------------------
 // CompileTask::print_line_on_error
 //
@@ -284,31 +279,115 @@
 // Otherwise it's the same as CompileTask::print_line()
 //
 void CompileTask::print_line_on_error(outputStream* st, char* buf, int buflen) {
-  methodOop method = (methodOop)JNIHandles::resolve(_method);
   // print compiler name
   st->print("%s:", CompileBroker::compiler(comp_level())->name());
-  char* method_name = NULL;
-  if (method != NULL) {
-    method_name = method->name_and_sig_as_C_string(buf, buflen);
-  }
-  print_compilation(st, method, method_name);
+  print_compilation(st);
 }
 
 // ------------------------------------------------------------------
 // CompileTask::print_line
 void CompileTask::print_line() {
-  Thread *thread = Thread::current();
-  methodHandle method(thread,
-                      (methodOop)JNIHandles::resolve(method_handle()));
-  ResourceMark rm(thread);
-
   ttyLocker ttyl;  // keep the following output all in one block
-
   // print compiler name if requested
   if (CIPrintCompilerName) tty->print("%s:", CompileBroker::compiler(comp_level())->name());
-  print_compilation(tty, method(), NULL);
+  print_compilation();
+}
+
+
+// ------------------------------------------------------------------
+// CompileTask::print_compilation_impl
+void CompileTask::print_compilation_impl(outputStream* st, methodOop method, int compile_id, int comp_level, bool is_osr_method, int osr_bci, bool is_blocking, const char* msg) {
+  st->print("%7d ", (int) st->time_stamp().milliseconds());  // print timestamp
+  st->print("%4d ", compile_id);    // print compilation number
+
+  // method attributes
+  const char compile_type   = is_osr_method                   ? '%' : ' ';
+  const char sync_char      = method->is_synchronized()       ? 's' : ' ';
+  const char exception_char = method->has_exception_handler() ? '!' : ' ';
+  const char blocking_char  = is_blocking                     ? 'b' : ' ';
+  const char native_char    = method->is_native()             ? 'n' : ' ';
+
+  // print method attributes
+  st->print("%c%c%c%c%c ", compile_type, sync_char, exception_char, blocking_char, native_char);
+
+  if (TieredCompilation) {
+    if (comp_level != -1)  st->print("%d ", comp_level);
+    else                   st->print("- ");
+  }
+  st->print("     ");  // more indent
+
+  method->print_short_name(st);
+  if (is_osr_method) {
+    st->print(" @ %d", osr_bci);
+  }
+  st->print(" (%d bytes)", method->code_size());
+
+  if (msg != NULL) {
+    st->print("   %s", msg);
+  }
+  st->cr();
 }
 
+// ------------------------------------------------------------------
+// CompileTask::print_inlining
+void CompileTask::print_inlining(outputStream* st, ciMethod* method, int inline_level, int bci, const char* msg) {
+  //         1234567
+  st->print("        ");     // print timestamp
+  //         1234
+  st->print("     ");        // print compilation number
+
+  // method attributes
+  const char sync_char      = method->is_synchronized()        ? 's' : ' ';
+  const char exception_char = method->has_exception_handlers() ? '!' : ' ';
+  const char monitors_char  = method->has_monitor_bytecodes()  ? 'm' : ' ';
+
+  // print method attributes
+  st->print(" %c%c%c  ", sync_char, exception_char, monitors_char);
+
+  if (TieredCompilation) {
+    st->print("  ");
+  }
+  st->print("     ");        // more indent
+  st->print("    ");         // initial inlining indent
+
+  for (int i = 0; i < inline_level; i++)  st->print("  ");
+
+  st->print("@ %d  ", bci);  // print bci
+  method->print_short_name(st);
+  st->print(" (%d bytes)", method->code_size());
+
+  if (msg != NULL) {
+    st->print("   %s", msg);
+  }
+  st->cr();
+}
+
+// ------------------------------------------------------------------
+// CompileTask::print_inline_indent
+void CompileTask::print_inline_indent(int inline_level, outputStream* st) {
+  //         1234567
+  st->print("        ");     // print timestamp
+  //         1234
+  st->print("     ");        // print compilation number
+  //         %s!bn
+  st->print("      ");       // print method attributes
+  if (TieredCompilation) {
+    st->print("  ");
+  }
+  st->print("     ");        // more indent
+  st->print("    ");         // initial inlining indent
+  for (int i = 0; i < inline_level; i++)  st->print("  ");
+}
+
+// ------------------------------------------------------------------
+// CompileTask::print_compilation
+void CompileTask::print_compilation(outputStream* st) {
+  oop rem = JNIHandles::resolve(method_handle());
+  assert(rem != NULL && rem->is_method(), "must be");
+  methodOop method = (methodOop) rem;
+  bool is_osr_method = osr_bci() != InvocationEntryBci;
+  print_compilation_impl(st, method, compile_id(), comp_level(), is_osr_method, osr_bci(), is_blocking());
+}
 
 // ------------------------------------------------------------------
 // CompileTask::log_task
@@ -874,6 +953,14 @@
     return;
   }
 
+#ifndef PRODUCT
+  if (osr_bci != -1 && !FLAG_IS_DEFAULT(OSROnlyBCI)) {
+    if ((OSROnlyBCI > 0) ? (OSROnlyBCI != osr_bci) : (-OSROnlyBCI == osr_bci)) {
+      // Positive OSROnlyBCI means only compile that bci.  Negative means don't compile that BCI.
+      return;
+    }
+  }
+#endif
 
   // If this method is already in the compile queue, then
   // we do not block the current thread.
@@ -1078,7 +1165,13 @@
   // do the compilation
   if (method->is_native()) {
     if (!PreferInterpreterNativeStubs) {
-      (void) AdapterHandlerLibrary::create_native_wrapper(method);
+      // Acquire our lock.
+      int compile_id;
+      {
+        MutexLocker locker(MethodCompileQueue_lock, THREAD);
+        compile_id = assign_compile_id(method, standard_entry_bci);
+      }
+      (void) AdapterHandlerLibrary::create_native_wrapper(method, compile_id);
     } else {
       return NULL;
     }
@@ -1186,7 +1279,6 @@
   assert(MethodCompileQueue_lock->owner() == Thread::current(),
          "must hold the compilation queue lock");
   bool is_osr = (osr_bci != standard_entry_bci);
-  assert(!method->is_native(), "no longer compile natives");
   uint id;
   if (CICountOSR && is_osr) {
     id = ++_osr_compilation_id;
--- a/hotspot/src/share/vm/compiler/compileBroker.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/compiler/compileBroker.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
@@ -56,7 +56,6 @@
   int          _hot_count;    // information about its invocation counter
   const char*  _comment;      // more info about the task
 
-  void print_compilation(outputStream *st, methodOop method, char* method_name);
  public:
   CompileTask() {
     _lock = new Monitor(Mutex::nonleaf+2, "CompileTaskLock");
@@ -96,10 +95,26 @@
   CompileTask* prev() const                      { return _prev; }
   void         set_prev(CompileTask* prev)       { _prev = prev; }
 
+private:
+  static void  print_compilation_impl(outputStream* st, methodOop method, int compile_id, int comp_level, bool is_osr_method = false, int osr_bci = -1, bool is_blocking = false, const char* msg = NULL);
+
+public:
+  void         print_compilation(outputStream* st = tty);
+  static void  print_compilation(outputStream* st, const nmethod* nm, const char* msg = NULL) {
+    print_compilation_impl(st, nm->method(), nm->compile_id(), nm->comp_level(), nm->is_osr_method(), nm->is_osr_method() ? nm->osr_entry_bci() : -1, /*is_blocking*/ false, msg);
+  }
+
+  static void  print_inlining(outputStream* st, ciMethod* method, int inline_level, int bci, const char* msg = NULL);
+  static void  print_inlining(ciMethod* method, int inline_level, int bci, const char* msg = NULL) {
+    print_inlining(tty, method, inline_level, bci, msg);
+  }
+
+  static void  print_inline_indent(int inline_level, outputStream* st = tty);
+
   void         print();
   void         print_line();
+  void         print_line_on_error(outputStream* st, char* buf, int buflen);
 
-  void         print_line_on_error(outputStream* st, char* buf, int buflen);
   void         log_task(xmlStream* log);
   void         log_task_queued();
   void         log_task_start(CompileLog* log);
--- a/hotspot/src/share/vm/compiler/compileLog.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/compiler/compileLog.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/compiler/compilerOracle.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/compiler/compilerOracle.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/compiler/compilerOracle.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/compiler/compilerOracle.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/compiler/disassembler.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/compiler/disassembler.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/compiler/disassembler.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/compiler/disassembler.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/gc_implementation/g1/collectionSetChooser.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/collectionSetChooser.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -262,39 +262,18 @@
   for (int i = 0; i < _numMarkedRegions; i++) {
     assert(_markedRegions.at(i) != NULL, "Should be true by sorting!");
     _markedRegions.at(i)->set_sort_index(i);
-    if (G1PrintRegionLivenessInfo > 0) {
-      if (i == 0) gclog_or_tty->print_cr("Sorted marked regions:");
-      if (i < G1PrintRegionLivenessInfo ||
-          (_numMarkedRegions-i) < G1PrintRegionLivenessInfo) {
-        HeapRegion* hr = _markedRegions.at(i);
-        size_t u = hr->used();
-        gclog_or_tty->print_cr("  Region %d: %d used, %d max live, %5.2f%%.",
-                      i, u, hr->max_live_bytes(),
-                      100.0*(float)hr->max_live_bytes()/(float)u);
-      }
+  }
+  if (G1PrintRegionLivenessInfo) {
+    G1PrintRegionLivenessInfoClosure cl(gclog_or_tty, "Post-Sorting");
+    for (int i = 0; i < _numMarkedRegions; ++i) {
+      HeapRegion* r = _markedRegions.at(i);
+      cl.doHeapRegion(r);
     }
   }
-  if (G1PolicyVerbose > 1)
-    printSortedHeapRegions();
   assert(verify(), "should now be sorted");
 }
 
 void
-printHeapRegion(HeapRegion *hr) {
-  if (hr->isHumongous())
-    gclog_or_tty->print("H: ");
-  if (hr->in_collection_set())
-    gclog_or_tty->print("CS: ");
-  gclog_or_tty->print_cr("Region " PTR_FORMAT " (%s%s) "
-                         "[" PTR_FORMAT ", " PTR_FORMAT"] "
-                         "Used: " SIZE_FORMAT "K, garbage: " SIZE_FORMAT "K.",
-                         hr, hr->is_young() ? "Y " : "  ",
-                         hr->is_marked()? "M1" : "M0",
-                         hr->bottom(), hr->end(),
-                         hr->used()/K, hr->garbage_bytes()/K);
-}
-
-void
 CollectionSetChooser::addMarkedHeapRegion(HeapRegion* hr) {
   assert(!hr->isHumongous(),
          "Humongous regions shouldn't be added to the collection set");
@@ -351,27 +330,9 @@
 
 void
 CollectionSetChooser::updateAfterFullCollection() {
-  G1CollectedHeap* g1h = G1CollectedHeap::heap();
   clearMarkedHeapRegions();
 }
 
-void
-CollectionSetChooser::printSortedHeapRegions() {
-  gclog_or_tty->print_cr("Printing %d Heap Regions sorted by amount of known garbage",
-                _numMarkedRegions);
-
-  DEBUG_ONLY(int marked_count = 0;)
-  for (int i = 0; i < _markedRegions.length(); i++) {
-    HeapRegion* r = _markedRegions.at(i);
-    if (r != NULL) {
-      printHeapRegion(r);
-      DEBUG_ONLY(marked_count++;)
-    }
-  }
-  assert(marked_count == _numMarkedRegions, "must be");
-  gclog_or_tty->print_cr("Done sorted heap region print");
-}
-
 void CollectionSetChooser::removeRegion(HeapRegion *hr) {
   int si = hr->sort_index();
   assert(si == -1 || hr->is_marked(), "Sort index not valid.");
--- a/hotspot/src/share/vm/gc_implementation/g1/collectionSetChooser.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/collectionSetChooser.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -100,8 +100,6 @@
 
   CollectionSetChooser();
 
-  void printSortedHeapRegions();
-
   void sortMarkedHeapRegions();
   void fillCache();
   bool addRegionToCache(void);
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -31,23 +31,31 @@
 #include "gc_implementation/g1/heapRegionSeq.inline.hpp"
 #include "memory/space.inline.hpp"
 #include "runtime/atomic.hpp"
+#include "runtime/java.hpp"
 #include "utilities/copy.hpp"
 
 // Possible sizes for the card counts cache: odd primes that roughly double in size.
 // (See jvmtiTagMap.cpp).
-int ConcurrentG1Refine::_cc_cache_sizes[] = {
-        16381,    32771,    76831,    150001,   307261,
-       614563,  1228891,  2457733,   4915219,  9830479,
-     19660831, 39321619, 78643219, 157286461,       -1
+
+#define MAX_SIZE ((size_t) -1)
+
+size_t ConcurrentG1Refine::_cc_cache_sizes[] = {
+          16381,    32771,    76831,    150001,   307261,
+         614563,  1228891,  2457733,   4915219,  9830479,
+       19660831, 39321619, 78643219, 157286461,  MAX_SIZE
   };
 
 ConcurrentG1Refine::ConcurrentG1Refine() :
   _card_counts(NULL), _card_epochs(NULL),
-  _n_card_counts(0), _max_n_card_counts(0),
+  _n_card_counts(0), _max_cards(0), _max_n_card_counts(0),
   _cache_size_index(0), _expand_card_counts(false),
   _hot_cache(NULL),
   _def_use_cache(false), _use_cache(false),
-  _n_periods(0),
+  // We initialize the epochs of the array to 0. By initializing
+  // _n_periods to 1 and not 0 we automatically invalidate all the
+  // entries on the array. Otherwise we might accidentally think that
+  // we claimed a card that was in fact never set (see CR7033292).
+  _n_periods(1),
   _threads(NULL), _n_threads(0)
 {
 
@@ -98,27 +106,44 @@
 void ConcurrentG1Refine::init() {
   if (G1ConcRSLogCacheSize > 0) {
     _g1h = G1CollectedHeap::heap();
-    _max_n_card_counts =
-      (unsigned) (_g1h->max_capacity() >> CardTableModRefBS::card_shift);
+
+    _max_cards = _g1h->max_capacity() >> CardTableModRefBS::card_shift;
+    _max_n_card_counts = _max_cards * G1MaxHotCardCountSizePercent / 100;
 
     size_t max_card_num = ((size_t)1 << (sizeof(unsigned)*BitsPerByte-1)) - 1;
-    guarantee(_max_n_card_counts < max_card_num, "card_num representation");
+    guarantee(_max_cards < max_card_num, "card_num representation");
 
-    int desired = _max_n_card_counts / InitialCacheFraction;
-    for (_cache_size_index = 0;
-              _cc_cache_sizes[_cache_size_index] >= 0; _cache_size_index++) {
-      if (_cc_cache_sizes[_cache_size_index] >= desired) break;
-    }
-    _cache_size_index = MAX2(0, (_cache_size_index - 1));
+    // We need _n_card_counts to be less than _max_n_card_counts here
+    // so that the expansion call (below) actually allocates the
+    // _counts and _epochs arrays.
+    assert(_n_card_counts == 0, "pre-condition");
+    assert(_max_n_card_counts > 0, "pre-condition");
 
-    int initial_size = _cc_cache_sizes[_cache_size_index];
-    if (initial_size < 0) initial_size = _max_n_card_counts;
+    // Find the index into cache size array that is of a size that's
+    // large enough to hold desired_sz.
+    size_t desired_sz = _max_cards / InitialCacheFraction;
+    int desired_sz_index = 0;
+    while (_cc_cache_sizes[desired_sz_index] < desired_sz) {
+      desired_sz_index += 1;
+      assert(desired_sz_index <  MAX_CC_CACHE_INDEX, "invariant");
+    }
+    assert(desired_sz_index <  MAX_CC_CACHE_INDEX, "invariant");
 
-    // Make sure we don't go bigger than we will ever need
-    _n_card_counts = MIN2((unsigned) initial_size, _max_n_card_counts);
+    // If the desired_sz value is between two sizes then
+    // _cc_cache_sizes[desired_sz_index-1] < desired_sz <= _cc_cache_sizes[desired_sz_index]
+    // we will start with the lower size in the optimistic expectation that
+    // we will not need to expand up. Note desired_sz_index could also be 0.
+    if (desired_sz_index > 0 &&
+        _cc_cache_sizes[desired_sz_index] > desired_sz) {
+      desired_sz_index -= 1;
+    }
 
-    _card_counts = NEW_C_HEAP_ARRAY(CardCountCacheEntry, _n_card_counts);
-    _card_epochs = NEW_C_HEAP_ARRAY(CardEpochCacheEntry, _n_card_counts);
+    if (!expand_card_count_cache(desired_sz_index)) {
+      // Allocation was unsuccessful - exit
+      vm_exit_during_initialization("Could not reserve enough space for card count cache");
+    }
+    assert(_n_card_counts > 0, "post-condition");
+    assert(_cache_size_index == desired_sz_index, "post-condition");
 
     Copy::fill_to_bytes(&_card_counts[0],
                         _n_card_counts * sizeof(CardCountCacheEntry));
@@ -163,10 +188,13 @@
 
 ConcurrentG1Refine::~ConcurrentG1Refine() {
   if (G1ConcRSLogCacheSize > 0) {
+    // Please see the comment in allocate_card_count_cache
+    // for why we call os::malloc() and os::free() directly.
     assert(_card_counts != NULL, "Logic");
-    FREE_C_HEAP_ARRAY(CardCountCacheEntry, _card_counts);
+    os::free(_card_counts);
     assert(_card_epochs != NULL, "Logic");
-    FREE_C_HEAP_ARRAY(CardEpochCacheEntry, _card_epochs);
+    os::free(_card_epochs);
+
     assert(_hot_cache != NULL, "Logic");
     FREE_C_HEAP_ARRAY(jbyte*, _hot_cache);
   }
@@ -382,29 +410,93 @@
   }
 }
 
-void ConcurrentG1Refine::expand_card_count_cache() {
-  if (_n_card_counts < _max_n_card_counts) {
-    int new_idx = _cache_size_index+1;
-    int new_size = _cc_cache_sizes[new_idx];
-    if (new_size < 0) new_size = _max_n_card_counts;
+// The arrays used to hold the card counts and the epochs must have
+// a 1:1 correspondence. Hence they are allocated and freed together
+// Returns true if the allocations of both the counts and epochs
+// were successful; false otherwise.
+bool ConcurrentG1Refine::allocate_card_count_cache(size_t n,
+                                                   CardCountCacheEntry** counts,
+                                                   CardEpochCacheEntry** epochs) {
+  // We call the allocation/free routines directly for the counts
+  // and epochs arrays. The NEW_C_HEAP_ARRAY/FREE_C_HEAP_ARRAY
+  // macros call AllocateHeap and FreeHeap respectively.
+  // AllocateHeap will call vm_exit_out_of_memory in the event
+  // of an allocation failure and abort the JVM. With the
+  // _counts/epochs arrays we only need to abort the JVM if the
+  // initial allocation of these arrays fails.
+  //
+  // Additionally AllocateHeap/FreeHeap do some tracing of
+  // allocate/free calls so calling one without calling the
+  // other can cause inconsistencies in the tracing. So we
+  // call neither.
 
-    // Make sure we don't go bigger than we will ever need
-    new_size = MIN2((unsigned) new_size, _max_n_card_counts);
+  assert(*counts == NULL, "out param");
+  assert(*epochs == NULL, "out param");
+
+  size_t counts_size = n * sizeof(CardCountCacheEntry);
+  size_t epochs_size = n * sizeof(CardEpochCacheEntry);
+
+  *counts = (CardCountCacheEntry*) os::malloc(counts_size);
+  if (*counts == NULL) {
+    // allocation was unsuccessful
+    return false;
+  }
+
+  *epochs = (CardEpochCacheEntry*) os::malloc(epochs_size);
+  if (*epochs == NULL) {
+    // allocation was unsuccessful - free counts array
+    assert(*counts != NULL, "must be");
+    os::free(*counts);
+    *counts = NULL;
+    return false;
+  }
 
-    // Expand the card count and card epoch tables
-    if (new_size > (int)_n_card_counts) {
-      // We can just free and allocate a new array as we're
-      // not interested in preserving the contents
-      assert(_card_counts != NULL, "Logic!");
-      assert(_card_epochs != NULL, "Logic!");
-      FREE_C_HEAP_ARRAY(CardCountCacheEntry, _card_counts);
-      FREE_C_HEAP_ARRAY(CardEpochCacheEntry, _card_epochs);
-      _n_card_counts = new_size;
-      _card_counts = NEW_C_HEAP_ARRAY(CardCountCacheEntry, _n_card_counts);
-      _card_epochs = NEW_C_HEAP_ARRAY(CardEpochCacheEntry, _n_card_counts);
-      _cache_size_index = new_idx;
+  // We successfully allocated both counts and epochs
+  return true;
+}
+
+// Returns true if the card counts/epochs cache was
+// successfully expanded; false otherwise.
+bool ConcurrentG1Refine::expand_card_count_cache(int cache_size_idx) {
+  // Can we expand the card count and epoch tables?
+  if (_n_card_counts < _max_n_card_counts) {
+    assert(cache_size_idx >= 0 && cache_size_idx  < MAX_CC_CACHE_INDEX, "oob");
+
+    size_t cache_size = _cc_cache_sizes[cache_size_idx];
+    // Make sure we don't go bigger than we will ever need
+    cache_size = MIN2(cache_size, _max_n_card_counts);
+
+    // Should we expand the card count and card epoch tables?
+    if (cache_size > _n_card_counts) {
+      // We have been asked to allocate new, larger, arrays for
+      // the card counts and the epochs. Attempt the allocation
+      // of both before we free the existing arrays in case
+      // the allocation is unsuccessful...
+      CardCountCacheEntry* counts = NULL;
+      CardEpochCacheEntry* epochs = NULL;
+
+      if (allocate_card_count_cache(cache_size, &counts, &epochs)) {
+        // Allocation was successful.
+        // We can just free the old arrays; we're
+        // not interested in preserving the contents
+        if (_card_counts != NULL) os::free(_card_counts);
+        if (_card_epochs != NULL) os::free(_card_epochs);
+
+        // Cache the size of the arrays and the index that got us there.
+        _n_card_counts = cache_size;
+        _cache_size_index = cache_size_idx;
+
+        _card_counts = counts;
+        _card_epochs = epochs;
+
+        // We successfully allocated/expanded the caches.
+        return true;
+      }
     }
   }
+
+  // We did not successfully expand the caches.
+  return false;
 }
 
 void ConcurrentG1Refine::clear_and_record_card_counts() {
@@ -415,10 +507,16 @@
 #endif
 
   if (_expand_card_counts) {
-    expand_card_count_cache();
+    int new_idx = _cache_size_index + 1;
+
+    if (expand_card_count_cache(new_idx)) {
+      // Allocation was successful and  _n_card_counts has
+      // been updated to the new size. We only need to clear
+      // the epochs so we don't read a bogus epoch value
+      // when inserting a card into the hot card cache.
+      Copy::fill_to_bytes(&_card_epochs[0], _n_card_counts * sizeof(CardEpochCacheEntry));
+    }
     _expand_card_counts = false;
-    // Only need to clear the epochs.
-    Copy::fill_to_bytes(&_card_epochs[0], _n_card_counts * sizeof(CardEpochCacheEntry));
   }
 
   int this_epoch = (int) _n_periods;
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
@@ -94,7 +94,7 @@
   } CardEpochCacheEntry;
 
   julong make_epoch_entry(unsigned int card_num, unsigned int epoch) {
-    assert(0 <= card_num && card_num < _max_n_card_counts, "Bounds");
+    assert(0 <= card_num && card_num < _max_cards, "Bounds");
     assert(0 <= epoch && epoch <= _n_periods, "must be");
 
     return ((julong) card_num << card_num_shift) | epoch;
@@ -117,15 +117,24 @@
   CardEpochCacheEntry* _card_epochs;
 
   // The current number of buckets in the card count cache
-  unsigned _n_card_counts;
+  size_t _n_card_counts;
+
+  // The number of cards for the entire reserved heap
+  size_t _max_cards;
 
-  // The max number of buckets required for the number of
-  // cards for the entire reserved heap
-  unsigned _max_n_card_counts;
+  // The max number of buckets for the card counts and epochs caches.
+  // This is the maximum that the counts and epochs will grow to.
+  // It is specified as a fraction or percentage of _max_cards using
+  // G1MaxHotCardCountSizePercent.
+  size_t _max_n_card_counts;
 
   // Possible sizes of the cache: odd primes that roughly double in size.
   // (See jvmtiTagMap.cpp).
-  static int _cc_cache_sizes[];
+  enum {
+    MAX_CC_CACHE_INDEX = 15    // maximum index into the cache size array.
+  };
+
+  static size_t _cc_cache_sizes[MAX_CC_CACHE_INDEX];
 
   // The index in _cc_cache_sizes corresponding to the size of
   // _card_counts.
@@ -147,11 +156,22 @@
   CardTableModRefBS* _ct_bs;
   G1CollectedHeap*   _g1h;
 
-  // Expands the array that holds the card counts to the next size up
-  void expand_card_count_cache();
+  // Helper routine for expand_card_count_cache().
+  // The arrays used to hold the card counts and the epochs must have
+  // a 1:1 correspondence. Hence they are allocated and freed together.
+  // Returns true if the allocations of both the counts and epochs
+  // were successful; false otherwise.
+  bool allocate_card_count_cache(size_t n,
+                                 CardCountCacheEntry** counts,
+                                 CardEpochCacheEntry** epochs);
+
+  // Expands the arrays that hold the card counts and epochs
+  // to the cache size at index. Returns true if the expansion/
+  // allocation was successful; false otherwise.
+  bool expand_card_count_cache(int index);
 
   // hash a given key (index of card_ptr) with the specified size
-  static unsigned int hash(size_t key, int size) {
+  static unsigned int hash(size_t key, size_t size) {
     return (unsigned int) key % size;
   }
 
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1204,7 +1204,6 @@
   g1p->record_concurrent_mark_remark_end();
 }
 
-
 #define CARD_BM_TEST_MODE 0
 
 class CalcLiveObjectsClosure: public HeapRegionClosure {
@@ -1726,6 +1725,11 @@
   }
   _total_counting_time += this_final_counting_time;
 
+  if (G1PrintRegionLivenessInfo) {
+    G1PrintRegionLivenessInfoClosure cl(gclog_or_tty, "Post-Marking");
+    _g1h->heap_region_iterate(&cl);
+  }
+
   // Install newly created mark bitMap as "prev".
   swapMarkBitMaps();
 
@@ -3199,8 +3203,12 @@
                CMTask* task)
     : _g1h(g1h), _cm(cm), _task(task)
   {
-    _ref_processor = g1h->ref_processor();
-    assert(_ref_processor != NULL, "should not be NULL");
+    assert(_ref_processor == NULL, "should be initialized to NULL");
+
+    if (G1UseConcMarkReferenceProcessing) {
+      _ref_processor = g1h->ref_processor();
+      assert(_ref_processor != NULL, "should not be NULL");
+    }
   }
 };
 
@@ -4423,3 +4431,175 @@
 
   _marking_step_diffs_ms.add(0.5);
 }
+
+// These are formatting macros that are used below to ensure
+// consistent formatting. The *_H_* versions are used to format the
+// header for a particular value and they should be kept consistent
+// with the corresponding macro. Also note that most of the macros add
+// the necessary white space (as a prefix) which makes them a bit
+// easier to compose.
+
+// All the output lines are prefixed with this string to be able to
+// identify them easily in a large log file.
+#define G1PPRL_LINE_PREFIX            "###"
+
+#define G1PPRL_ADDR_BASE_FORMAT    " "PTR_FORMAT"-"PTR_FORMAT
+#ifdef _LP64
+#define G1PPRL_ADDR_BASE_H_FORMAT  " %37s"
+#else // _LP64
+#define G1PPRL_ADDR_BASE_H_FORMAT  " %21s"
+#endif // _LP64
+
+// For per-region info
+#define G1PPRL_TYPE_FORMAT            "   %-4s"
+#define G1PPRL_TYPE_H_FORMAT          "   %4s"
+#define G1PPRL_BYTE_FORMAT            "  "SIZE_FORMAT_W(9)
+#define G1PPRL_BYTE_H_FORMAT          "  %9s"
+#define G1PPRL_DOUBLE_FORMAT          "  %14.1f"
+#define G1PPRL_DOUBLE_H_FORMAT        "  %14s"
+
+// For summary info
+#define G1PPRL_SUM_ADDR_FORMAT(tag)    "  "tag":"G1PPRL_ADDR_BASE_FORMAT
+#define G1PPRL_SUM_BYTE_FORMAT(tag)    "  "tag": "SIZE_FORMAT
+#define G1PPRL_SUM_MB_FORMAT(tag)      "  "tag": %1.2f MB"
+#define G1PPRL_SUM_MB_PERC_FORMAT(tag) G1PPRL_SUM_MB_FORMAT(tag)" / %1.2f %%"
+
+G1PrintRegionLivenessInfoClosure::
+G1PrintRegionLivenessInfoClosure(outputStream* out, const char* phase_name)
+  : _out(out),
+    _total_used_bytes(0), _total_capacity_bytes(0),
+    _total_prev_live_bytes(0), _total_next_live_bytes(0),
+    _hum_used_bytes(0), _hum_capacity_bytes(0),
+    _hum_prev_live_bytes(0), _hum_next_live_bytes(0) {
+  G1CollectedHeap* g1h = G1CollectedHeap::heap();
+  MemRegion g1_committed = g1h->g1_committed();
+  MemRegion g1_reserved = g1h->g1_reserved();
+  double now = os::elapsedTime();
+
+  // Print the header of the output.
+  _out->cr();
+  _out->print_cr(G1PPRL_LINE_PREFIX" PHASE %s @ %1.3f", phase_name, now);
+  _out->print_cr(G1PPRL_LINE_PREFIX" HEAP"
+                 G1PPRL_SUM_ADDR_FORMAT("committed")
+                 G1PPRL_SUM_ADDR_FORMAT("reserved")
+                 G1PPRL_SUM_BYTE_FORMAT("region-size"),
+                 g1_committed.start(), g1_committed.end(),
+                 g1_reserved.start(), g1_reserved.end(),
+                 HeapRegion::GrainBytes);
+  _out->print_cr(G1PPRL_LINE_PREFIX);
+  _out->print_cr(G1PPRL_LINE_PREFIX
+                 G1PPRL_TYPE_H_FORMAT
+                 G1PPRL_ADDR_BASE_H_FORMAT
+                 G1PPRL_BYTE_H_FORMAT
+                 G1PPRL_BYTE_H_FORMAT
+                 G1PPRL_BYTE_H_FORMAT
+                 G1PPRL_DOUBLE_H_FORMAT,
+                 "type", "address-range",
+                 "used", "prev-live", "next-live", "gc-eff");
+}
+
+// It takes as a parameter a reference to one of the _hum_* fields, it
+// deduces the corresponding value for a region in a humongous region
+// series (either the region size, or what's left if the _hum_* field
+// is < the region size), and updates the _hum_* field accordingly.
+size_t G1PrintRegionLivenessInfoClosure::get_hum_bytes(size_t* hum_bytes) {
+  size_t bytes = 0;
+  // The > 0 check is to deal with the prev and next live bytes which
+  // could be 0.
+  if (*hum_bytes > 0) {
+    bytes = MIN2((size_t) HeapRegion::GrainBytes, *hum_bytes);
+    *hum_bytes -= bytes;
+  }
+  return bytes;
+}
+
+// It deduces the values for a region in a humongous region series
+// from the _hum_* fields and updates those accordingly. It assumes
+// that that _hum_* fields have already been set up from the "starts
+// humongous" region and we visit the regions in address order.
+void G1PrintRegionLivenessInfoClosure::get_hum_bytes(size_t* used_bytes,
+                                                     size_t* capacity_bytes,
+                                                     size_t* prev_live_bytes,
+                                                     size_t* next_live_bytes) {
+  assert(_hum_used_bytes > 0 && _hum_capacity_bytes > 0, "pre-condition");
+  *used_bytes      = get_hum_bytes(&_hum_used_bytes);
+  *capacity_bytes  = get_hum_bytes(&_hum_capacity_bytes);
+  *prev_live_bytes = get_hum_bytes(&_hum_prev_live_bytes);
+  *next_live_bytes = get_hum_bytes(&_hum_next_live_bytes);
+}
+
+bool G1PrintRegionLivenessInfoClosure::doHeapRegion(HeapRegion* r) {
+  const char* type = "";
+  HeapWord* bottom       = r->bottom();
+  HeapWord* end          = r->end();
+  size_t capacity_bytes  = r->capacity();
+  size_t used_bytes      = r->used();
+  size_t prev_live_bytes = r->live_bytes();
+  size_t next_live_bytes = r->next_live_bytes();
+  double gc_eff          = r->gc_efficiency();
+  if (r->used() == 0) {
+    type = "FREE";
+  } else if (r->is_survivor()) {
+    type = "SURV";
+  } else if (r->is_young()) {
+    type = "EDEN";
+  } else if (r->startsHumongous()) {
+    type = "HUMS";
+
+    assert(_hum_used_bytes == 0 && _hum_capacity_bytes == 0 &&
+           _hum_prev_live_bytes == 0 && _hum_next_live_bytes == 0,
+           "they should have been zeroed after the last time we used them");
+    // Set up the _hum_* fields.
+    _hum_capacity_bytes  = capacity_bytes;
+    _hum_used_bytes      = used_bytes;
+    _hum_prev_live_bytes = prev_live_bytes;
+    _hum_next_live_bytes = next_live_bytes;
+    get_hum_bytes(&used_bytes, &capacity_bytes,
+                  &prev_live_bytes, &next_live_bytes);
+    end = bottom + HeapRegion::GrainWords;
+  } else if (r->continuesHumongous()) {
+    type = "HUMC";
+    get_hum_bytes(&used_bytes, &capacity_bytes,
+                  &prev_live_bytes, &next_live_bytes);
+    assert(end == bottom + HeapRegion::GrainWords, "invariant");
+  } else {
+    type = "OLD";
+  }
+
+  _total_used_bytes      += used_bytes;
+  _total_capacity_bytes  += capacity_bytes;
+  _total_prev_live_bytes += prev_live_bytes;
+  _total_next_live_bytes += next_live_bytes;
+
+  // Print a line for this particular region.
+  _out->print_cr(G1PPRL_LINE_PREFIX
+                 G1PPRL_TYPE_FORMAT
+                 G1PPRL_ADDR_BASE_FORMAT
+                 G1PPRL_BYTE_FORMAT
+                 G1PPRL_BYTE_FORMAT
+                 G1PPRL_BYTE_FORMAT
+                 G1PPRL_DOUBLE_FORMAT,
+                 type, bottom, end,
+                 used_bytes, prev_live_bytes, next_live_bytes, gc_eff);
+
+  return false;
+}
+
+G1PrintRegionLivenessInfoClosure::~G1PrintRegionLivenessInfoClosure() {
+  // Print the footer of the output.
+  _out->print_cr(G1PPRL_LINE_PREFIX);
+  _out->print_cr(G1PPRL_LINE_PREFIX
+                 " SUMMARY"
+                 G1PPRL_SUM_MB_FORMAT("capacity")
+                 G1PPRL_SUM_MB_PERC_FORMAT("used")
+                 G1PPRL_SUM_MB_PERC_FORMAT("prev-live")
+                 G1PPRL_SUM_MB_PERC_FORMAT("next-live"),
+                 bytes_to_mb(_total_capacity_bytes),
+                 bytes_to_mb(_total_used_bytes),
+                 perc(_total_used_bytes, _total_capacity_bytes),
+                 bytes_to_mb(_total_prev_live_bytes),
+                 perc(_total_prev_live_bytes, _total_capacity_bytes),
+                 bytes_to_mb(_total_next_live_bytes),
+                 perc(_total_next_live_bytes, _total_capacity_bytes));
+  _out->cr();
+}
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1149,4 +1149,54 @@
 #endif // _MARKING_STATS_
 };
 
+// Class that's used to to print out per-region liveness
+// information. It's currently used at the end of marking and also
+// after we sort the old regions at the end of the cleanup operation.
+class G1PrintRegionLivenessInfoClosure: public HeapRegionClosure {
+private:
+  outputStream* _out;
+
+  // Accumulators for these values.
+  size_t _total_used_bytes;
+  size_t _total_capacity_bytes;
+  size_t _total_prev_live_bytes;
+  size_t _total_next_live_bytes;
+
+  // These are set up when we come across a "stars humongous" region
+  // (as this is where most of this information is stored, not in the
+  // subsequent "continues humongous" regions). After that, for every
+  // region in a given humongous region series we deduce the right
+  // values for it by simply subtracting the appropriate amount from
+  // these fields. All these values should reach 0 after we've visited
+  // the last region in the series.
+  size_t _hum_used_bytes;
+  size_t _hum_capacity_bytes;
+  size_t _hum_prev_live_bytes;
+  size_t _hum_next_live_bytes;
+
+  static double perc(size_t val, size_t total) {
+    if (total == 0) {
+      return 0.0;
+    } else {
+      return 100.0 * ((double) val / (double) total);
+    }
+  }
+
+  static double bytes_to_mb(size_t val) {
+    return (double) val / (double) M;
+  }
+
+  // See the .cpp file.
+  size_t get_hum_bytes(size_t* hum_bytes);
+  void get_hum_bytes(size_t* used_bytes, size_t* capacity_bytes,
+                     size_t* prev_live_bytes, size_t* next_live_bytes);
+
+public:
+  // The header and footer are printed in the constructor and
+  // destructor respectively.
+  G1PrintRegionLivenessInfoClosure(outputStream* out, const char* phase_name);
+  virtual bool doHeapRegion(HeapRegion* r);
+  ~G1PrintRegionLivenessInfoClosure();
+};
+
 #endif // SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTMARK_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1AllocRegion.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,208 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "gc_implementation/g1/g1AllocRegion.inline.hpp"
+#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
+
+G1CollectedHeap* G1AllocRegion::_g1h = NULL;
+HeapRegion* G1AllocRegion::_dummy_region = NULL;
+
+void G1AllocRegion::setup(G1CollectedHeap* g1h, HeapRegion* dummy_region) {
+  assert(_dummy_region == NULL, "should be set once");
+  assert(dummy_region != NULL, "pre-condition");
+  assert(dummy_region->free() == 0, "pre-condition");
+
+  // Make sure that any allocation attempt on this region will fail
+  // and will not trigger any asserts.
+  assert(allocate(dummy_region, 1, false) == NULL, "should fail");
+  assert(par_allocate(dummy_region, 1, false) == NULL, "should fail");
+  assert(allocate(dummy_region, 1, true) == NULL, "should fail");
+  assert(par_allocate(dummy_region, 1, true) == NULL, "should fail");
+
+  _g1h = g1h;
+  _dummy_region = dummy_region;
+}
+
+void G1AllocRegion::fill_up_remaining_space(HeapRegion* alloc_region,
+                                            bool bot_updates) {
+  assert(alloc_region != NULL && alloc_region != _dummy_region,
+         "pre-condition");
+
+  // Other threads might still be trying to allocate using a CAS out
+  // of the region we are trying to retire, as they can do so without
+  // holding the lock. So, we first have to make sure that noone else
+  // can allocate out of it by doing a maximal allocation. Even if our
+  // CAS attempt fails a few times, we'll succeed sooner or later
+  // given that failed CAS attempts mean that the region is getting
+  // closed to being full.
+  size_t free_word_size = alloc_region->free() / HeapWordSize;
+
+  // This is the minimum free chunk we can turn into a dummy
+  // object. If the free space falls below this, then noone can
+  // allocate in this region anyway (all allocation requests will be
+  // of a size larger than this) so we won't have to perform the dummy
+  // allocation.
+  size_t min_word_size_to_fill = CollectedHeap::min_fill_size();
+
+  while (free_word_size >= min_word_size_to_fill) {
+    HeapWord* dummy = par_allocate(alloc_region, free_word_size, bot_updates);
+    if (dummy != NULL) {
+      // If the allocation was successful we should fill in the space.
+      CollectedHeap::fill_with_object(dummy, free_word_size);
+      alloc_region->set_pre_dummy_top(dummy);
+      break;
+    }
+
+    free_word_size = alloc_region->free() / HeapWordSize;
+    // It's also possible that someone else beats us to the
+    // allocation and they fill up the region. In that case, we can
+    // just get out of the loop.
+  }
+  assert(alloc_region->free() / HeapWordSize < min_word_size_to_fill,
+         "post-condition");
+}
+
+void G1AllocRegion::retire(bool fill_up) {
+  assert(_alloc_region != NULL, ar_ext_msg(this, "not initialized properly"));
+
+  trace("retiring");
+  HeapRegion* alloc_region = _alloc_region;
+  if (alloc_region != _dummy_region) {
+    // We never have to check whether the active region is empty or not,
+    // and potentially free it if it is, given that it's guaranteed that
+    // it will never be empty.
+    assert(!alloc_region->is_empty(),
+           ar_ext_msg(this, "the alloc region should never be empty"));
+
+    if (fill_up) {
+      fill_up_remaining_space(alloc_region, _bot_updates);
+    }
+
+    assert(alloc_region->used() >= _used_bytes_before,
+           ar_ext_msg(this, "invariant"));
+    size_t allocated_bytes = alloc_region->used() - _used_bytes_before;
+    retire_region(alloc_region, allocated_bytes);
+    _used_bytes_before = 0;
+    _alloc_region = _dummy_region;
+  }
+  trace("retired");
+}
+
+HeapWord* G1AllocRegion::new_alloc_region_and_allocate(size_t word_size,
+                                                       bool force) {
+  assert(_alloc_region == _dummy_region, ar_ext_msg(this, "pre-condition"));
+  assert(_used_bytes_before == 0, ar_ext_msg(this, "pre-condition"));
+
+  trace("attempting region allocation");
+  HeapRegion* new_alloc_region = allocate_new_region(word_size, force);
+  if (new_alloc_region != NULL) {
+    new_alloc_region->reset_pre_dummy_top();
+    // Need to do this before the allocation
+    _used_bytes_before = new_alloc_region->used();
+    HeapWord* result = allocate(new_alloc_region, word_size, _bot_updates);
+    assert(result != NULL, ar_ext_msg(this, "the allocation should succeeded"));
+
+    OrderAccess::storestore();
+    // Note that we first perform the allocation and then we store the
+    // region in _alloc_region. This is the reason why an active region
+    // can never be empty.
+    _alloc_region = new_alloc_region;
+    trace("region allocation successful");
+    return result;
+  } else {
+    trace("region allocation failed");
+    return NULL;
+  }
+  ShouldNotReachHere();
+}
+
+void G1AllocRegion::fill_in_ext_msg(ar_ext_msg* msg, const char* message) {
+  msg->append("[%s] %s b: %s r: "PTR_FORMAT" u: "SIZE_FORMAT,
+              _name, message, BOOL_TO_STR(_bot_updates),
+              _alloc_region, _used_bytes_before);
+}
+
+void G1AllocRegion::init() {
+  trace("initializing");
+  assert(_alloc_region == NULL && _used_bytes_before == 0,
+         ar_ext_msg(this, "pre-condition"));
+  assert(_dummy_region != NULL, "should have been set");
+  _alloc_region = _dummy_region;
+  trace("initialized");
+}
+
+HeapRegion* G1AllocRegion::release() {
+  trace("releasing");
+  HeapRegion* alloc_region = _alloc_region;
+  retire(false /* fill_up */);
+  assert(_alloc_region == _dummy_region, "post-condition of retire()");
+  _alloc_region = NULL;
+  trace("released");
+  return (alloc_region == _dummy_region) ? NULL : alloc_region;
+}
+
+#if G1_ALLOC_REGION_TRACING
+void G1AllocRegion::trace(const char* str, size_t word_size, HeapWord* result) {
+  // All the calls to trace that set either just the size or the size
+  // and the result are considered part of level 2 tracing and are
+  // skipped during level 1 tracing.
+  if ((word_size == 0 && result == NULL) || (G1_ALLOC_REGION_TRACING > 1)) {
+    const size_t buffer_length = 128;
+    char hr_buffer[buffer_length];
+    char rest_buffer[buffer_length];
+
+    HeapRegion* alloc_region = _alloc_region;
+    if (alloc_region == NULL) {
+      jio_snprintf(hr_buffer, buffer_length, "NULL");
+    } else if (alloc_region == _dummy_region) {
+      jio_snprintf(hr_buffer, buffer_length, "DUMMY");
+    } else {
+      jio_snprintf(hr_buffer, buffer_length,
+                   HR_FORMAT, HR_FORMAT_PARAMS(alloc_region));
+    }
+
+    if (G1_ALLOC_REGION_TRACING > 1) {
+      if (result != NULL) {
+        jio_snprintf(rest_buffer, buffer_length, SIZE_FORMAT" "PTR_FORMAT,
+                     word_size, result);
+      } else if (word_size != 0) {
+        jio_snprintf(rest_buffer, buffer_length, SIZE_FORMAT, word_size);
+      } else {
+        jio_snprintf(rest_buffer, buffer_length, "");
+      }
+    } else {
+      jio_snprintf(rest_buffer, buffer_length, "");
+    }
+
+    tty->print_cr("[%s] %s : %s %s", _name, hr_buffer, str, rest_buffer);
+  }
+}
+#endif // G1_ALLOC_REGION_TRACING
+
+G1AllocRegion::G1AllocRegion(const char* name,
+                             bool bot_updates)
+  : _name(name), _bot_updates(bot_updates),
+    _alloc_region(NULL), _used_bytes_before(0) { }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1AllocRegion.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,174 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1ALLOCREGION_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_G1ALLOCREGION_HPP
+
+#include "gc_implementation/g1/heapRegion.hpp"
+
+class G1CollectedHeap;
+
+// 0 -> no tracing, 1 -> basic tracing, 2 -> basic + allocation tracing
+#define G1_ALLOC_REGION_TRACING 0
+
+class ar_ext_msg;
+
+// A class that holds a region that is active in satisfying allocation
+// requests, potentially issued in parallel. When the active region is
+// full it will be retired it replaced with a new one. The
+// implementation assumes that fast-path allocations will be lock-free
+// and a lock will need to be taken when the active region needs to be
+// replaced.
+
+class G1AllocRegion VALUE_OBJ_CLASS_SPEC {
+  friend class ar_ext_msg;
+
+private:
+  // The active allocating region we are currently allocating out
+  // of. The invariant is that if this object is initialized (i.e.,
+  // init() has been called and release() has not) then _alloc_region
+  // is either an active allocating region or the dummy region (i.e.,
+  // it can never be NULL) and this object can be used to satisfy
+  // allocation requests. If this object is not initialized
+  // (i.e. init() has not been called or release() has been called)
+  // then _alloc_region is NULL and this object should not be used to
+  // satisfy allocation requests (it was done this way to force the
+  // correct use of init() and release()).
+  HeapRegion* _alloc_region;
+
+  // When we set up a new active region we save its used bytes in this
+  // field so that, when we retire it, we can calculate how much space
+  // we allocated in it.
+  size_t _used_bytes_before;
+
+  // Specifies whether the allocate calls will do BOT updates or not.
+  bool _bot_updates;
+
+  // Useful for debugging and tracing.
+  const char* _name;
+
+  // A dummy region (i.e., it's been allocated specially for this
+  // purpose and it is not part of the heap) that is full (i.e., top()
+  // == end()). When we don't have a valid active region we make
+  // _alloc_region point to this. This allows us to skip checking
+  // whether the _alloc_region is NULL or not.
+  static HeapRegion* _dummy_region;
+
+  // Some of the methods below take a bot_updates parameter. Its value
+  // should be the same as the _bot_updates field. The idea is that
+  // the parameter will be a constant for a particular alloc region
+  // and, given that these methods will be hopefully inlined, the
+  // compiler should compile out the test.
+
+  // Perform a non-MT-safe allocation out of the given region.
+  static inline HeapWord* allocate(HeapRegion* alloc_region,
+                                   size_t word_size,
+                                   bool bot_updates);
+
+  // Perform a MT-safe allocation out of the given region.
+  static inline HeapWord* par_allocate(HeapRegion* alloc_region,
+                                       size_t word_size,
+                                       bool bot_updates);
+
+  // Ensure that the region passed as a parameter has been filled up
+  // so that noone else can allocate out of it any more.
+  static void fill_up_remaining_space(HeapRegion* alloc_region,
+                                      bool bot_updates);
+
+  // Retire the active allocating region. If fill_up is true then make
+  // sure that the region is full before we retire it so that noone
+  // else can allocate out of it.
+  void retire(bool fill_up);
+
+  // Allocate a new active region and use it to perform a word_size
+  // allocation. The force parameter will be passed on to
+  // G1CollectedHeap::allocate_new_alloc_region() and tells it to try
+  // to allocate a new region even if the max has been reached.
+  HeapWord* new_alloc_region_and_allocate(size_t word_size, bool force);
+
+  void fill_in_ext_msg(ar_ext_msg* msg, const char* message);
+
+protected:
+  // For convenience as subclasses use it.
+  static G1CollectedHeap* _g1h;
+
+  virtual HeapRegion* allocate_new_region(size_t word_size, bool force) = 0;
+  virtual void retire_region(HeapRegion* alloc_region,
+                             size_t allocated_bytes) = 0;
+
+  G1AllocRegion(const char* name, bool bot_updates);
+
+public:
+  static void setup(G1CollectedHeap* g1h, HeapRegion* dummy_region);
+
+  HeapRegion* get() const {
+    // Make sure that the dummy region does not escape this class.
+    return (_alloc_region == _dummy_region) ? NULL : _alloc_region;
+  }
+
+  // The following two are the building blocks for the allocation method.
+
+  // First-level allocation: Should be called without holding a
+  // lock. It will try to allocate lock-free out of the active region,
+  // or return NULL if it was unable to.
+  inline HeapWord* attempt_allocation(size_t word_size, bool bot_updates);
+
+  // Second-level allocation: Should be called while holding a
+  // lock. It will try to first allocate lock-free out of the active
+  // region or, if it's unable to, it will try to replace the active
+  // alloc region with a new one. We require that the caller takes the
+  // appropriate lock before calling this so that it is easier to make
+  // it conform to its locking protocol.
+  inline HeapWord* attempt_allocation_locked(size_t word_size,
+                                             bool bot_updates);
+
+  // Should be called to allocate a new region even if the max of this
+  // type of regions has been reached. Should only be called if other
+  // allocation attempts have failed and we are not holding a valid
+  // active region.
+  inline HeapWord* attempt_allocation_force(size_t word_size,
+                                            bool bot_updates);
+
+  // Should be called before we start using this object.
+  void init();
+
+  // Should be called when we want to release the active region which
+  // is returned after it's been retired.
+  HeapRegion* release();
+
+#if G1_ALLOC_REGION_TRACING
+  void trace(const char* str, size_t word_size = 0, HeapWord* result = NULL);
+#else // G1_ALLOC_REGION_TRACING
+  void trace(const char* str, size_t word_size = 0, HeapWord* result = NULL) { }
+#endif // G1_ALLOC_REGION_TRACING
+};
+
+class ar_ext_msg : public err_msg {
+public:
+  ar_ext_msg(G1AllocRegion* alloc_region, const char *message) : err_msg("") {
+    alloc_region->fill_in_ext_msg(this, message);
+  }
+};
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1ALLOCREGION_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1AllocRegion.inline.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1ALLOCREGION_INLINE_HPP
+#define SHARE_VM_GC_IMPLEMENTATION_G1_G1ALLOCREGION_INLINE_HPP
+
+#include "gc_implementation/g1/g1AllocRegion.hpp"
+
+inline HeapWord* G1AllocRegion::allocate(HeapRegion* alloc_region,
+                                         size_t word_size,
+                                         bool bot_updates) {
+  assert(alloc_region != NULL, err_msg("pre-condition"));
+
+  if (!bot_updates) {
+    return alloc_region->allocate_no_bot_updates(word_size);
+  } else {
+    return alloc_region->allocate(word_size);
+  }
+}
+
+inline HeapWord* G1AllocRegion::par_allocate(HeapRegion* alloc_region,
+                                             size_t word_size,
+                                             bool bot_updates) {
+  assert(alloc_region != NULL, err_msg("pre-condition"));
+  assert(!alloc_region->is_empty(), err_msg("pre-condition"));
+
+  if (!bot_updates) {
+    return alloc_region->par_allocate_no_bot_updates(word_size);
+  } else {
+    return alloc_region->par_allocate(word_size);
+  }
+}
+
+inline HeapWord* G1AllocRegion::attempt_allocation(size_t word_size,
+                                                   bool bot_updates) {
+  assert(bot_updates == _bot_updates, ar_ext_msg(this, "pre-condition"));
+
+  HeapRegion* alloc_region = _alloc_region;
+  assert(alloc_region != NULL, ar_ext_msg(this, "not initialized properly"));
+
+  HeapWord* result = par_allocate(alloc_region, word_size, bot_updates);
+  if (result != NULL) {
+    trace("alloc", word_size, result);
+    return result;
+  }
+  trace("alloc failed", word_size);
+  return NULL;
+}
+
+inline HeapWord* G1AllocRegion::attempt_allocation_locked(size_t word_size,
+                                                          bool bot_updates) {
+  // First we have to tedo the allocation, assuming we're holding the
+  // appropriate lock, in case another thread changed the region while
+  // we were waiting to get the lock.
+  HeapWord* result = attempt_allocation(word_size, bot_updates);
+  if (result != NULL) {
+    return result;
+  }
+
+  retire(true /* fill_up */);
+  result = new_alloc_region_and_allocate(word_size, false /* force */);
+  if (result != NULL) {
+    trace("alloc locked (second attempt)", word_size, result);
+    return result;
+  }
+  trace("alloc locked failed", word_size);
+  return NULL;
+}
+
+inline HeapWord* G1AllocRegion::attempt_allocation_force(size_t word_size,
+                                                         bool bot_updates) {
+  assert(bot_updates == _bot_updates, ar_ext_msg(this, "pre-condition"));
+  assert(_alloc_region != NULL, ar_ext_msg(this, "not initialized properly"));
+
+  trace("forcing alloc");
+  HeapWord* result = new_alloc_region_and_allocate(word_size, true /* force */);
+  if (result != NULL) {
+    trace("alloc forced", word_size, result);
+    return result;
+  }
+  trace("alloc forced failed", word_size);
+  return NULL;
+}
+
+#endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1ALLOCREGION_INLINE_HPP
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -28,6 +28,7 @@
 #include "gc_implementation/g1/concurrentG1Refine.hpp"
 #include "gc_implementation/g1/concurrentG1RefineThread.hpp"
 #include "gc_implementation/g1/concurrentMarkThread.inline.hpp"
+#include "gc_implementation/g1/g1AllocRegion.inline.hpp"
 #include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
 #include "gc_implementation/g1/g1CollectorPolicy.hpp"
 #include "gc_implementation/g1/g1MarkSweep.hpp"
@@ -517,8 +518,7 @@
   return NULL;
 }
 
-HeapRegion* G1CollectedHeap::new_region_work(size_t word_size,
-                                             bool do_expand) {
+HeapRegion* G1CollectedHeap::new_region(size_t word_size, bool do_expand) {
   assert(!isHumongous(word_size) ||
                                   word_size <= (size_t) HeapRegion::GrainWords,
          "the only time we use this to allocate a humongous region is "
@@ -566,7 +566,7 @@
                                                  size_t word_size) {
   HeapRegion* alloc_region = NULL;
   if (_gc_alloc_region_counts[purpose] < g1_policy()->max_regions(purpose)) {
-    alloc_region = new_region_work(word_size, true /* do_expand */);
+    alloc_region = new_region(word_size, true /* do_expand */);
     if (purpose == GCAllocForSurvived && alloc_region != NULL) {
       alloc_region->set_survivor();
     }
@@ -587,7 +587,7 @@
     // Only one region to allocate, no need to go through the slower
     // path. The caller will attempt the expasion if this fails, so
     // let's not try to expand here too.
-    HeapRegion* hr = new_region_work(word_size, false /* do_expand */);
+    HeapRegion* hr = new_region(word_size, false /* do_expand */);
     if (hr != NULL) {
       first = hr->hrs_index();
     } else {
@@ -788,407 +788,12 @@
   return result;
 }
 
-void
-G1CollectedHeap::retire_cur_alloc_region(HeapRegion* cur_alloc_region) {
-  // Other threads might still be trying to allocate using CASes out
-  // of the region we are retiring, as they can do so without holding
-  // the Heap_lock. So we first have to make sure that noone else can
-  // allocate in it by doing a maximal allocation. Even if our CAS
-  // attempt fails a few times, we'll succeed sooner or later given
-  // that a failed CAS attempt mean that the region is getting closed
-  // to being full (someone else succeeded in allocating into it).
-  size_t free_word_size = cur_alloc_region->free() / HeapWordSize;
-
-  // This is the minimum free chunk we can turn into a dummy
-  // object. If the free space falls below this, then noone can
-  // allocate in this region anyway (all allocation requests will be
-  // of a size larger than this) so we won't have to perform the dummy
-  // allocation.
-  size_t min_word_size_to_fill = CollectedHeap::min_fill_size();
-
-  while (free_word_size >= min_word_size_to_fill) {
-    HeapWord* dummy =
-      cur_alloc_region->par_allocate_no_bot_updates(free_word_size);
-    if (dummy != NULL) {
-      // If the allocation was successful we should fill in the space.
-      CollectedHeap::fill_with_object(dummy, free_word_size);
-      break;
-    }
-
-    free_word_size = cur_alloc_region->free() / HeapWordSize;
-    // It's also possible that someone else beats us to the
-    // allocation and they fill up the region. In that case, we can
-    // just get out of the loop
-  }
-  assert(cur_alloc_region->free() / HeapWordSize < min_word_size_to_fill,
-         "sanity");
-
-  retire_cur_alloc_region_common(cur_alloc_region);
-  assert(_cur_alloc_region == NULL, "post-condition");
-}
-
-// See the comment in the .hpp file about the locking protocol and
-// assumptions of this method (and other related ones).
-HeapWord*
-G1CollectedHeap::replace_cur_alloc_region_and_allocate(size_t word_size,
-                                                       bool at_safepoint,
-                                                       bool do_dirtying,
-                                                       bool can_expand) {
-  assert_heap_locked_or_at_safepoint(true /* should_be_vm_thread */);
-  assert(_cur_alloc_region == NULL,
-         "replace_cur_alloc_region_and_allocate() should only be called "
-         "after retiring the previous current alloc region");
-  assert(SafepointSynchronize::is_at_safepoint() == at_safepoint,
-         "at_safepoint and is_at_safepoint() should be a tautology");
-  assert(!can_expand || g1_policy()->can_expand_young_list(),
-         "we should not call this method with can_expand == true if "
-         "we are not allowed to expand the young gen");
-
-  if (can_expand || !g1_policy()->is_young_list_full()) {
-    HeapRegion* new_cur_alloc_region = new_alloc_region(word_size);
-    if (new_cur_alloc_region != NULL) {
-      assert(new_cur_alloc_region->is_empty(),
-             "the newly-allocated region should be empty, "
-             "as right now we only allocate new regions out of the free list");
-      g1_policy()->update_region_num(true /* next_is_young */);
-      set_region_short_lived_locked(new_cur_alloc_region);
-
-      assert(!new_cur_alloc_region->isHumongous(),
-             "Catch a regression of this bug.");
-
-      // We need to ensure that the stores to _cur_alloc_region and,
-      // subsequently, to top do not float above the setting of the
-      // young type.
-      OrderAccess::storestore();
-
-      // Now, perform the allocation out of the region we just
-      // allocated. Note that noone else can access that region at
-      // this point (as _cur_alloc_region has not been updated yet),
-      // so we can just go ahead and do the allocation without any
-      // atomics (and we expect this allocation attempt to
-      // suceeded). Given that other threads can attempt an allocation
-      // with a CAS and without needing the Heap_lock, if we assigned
-      // the new region to _cur_alloc_region before first allocating
-      // into it other threads might have filled up the new region
-      // before we got a chance to do the allocation ourselves. In
-      // that case, we would have needed to retire the region, grab a
-      // new one, and go through all this again. Allocating out of the
-      // new region before assigning it to _cur_alloc_region avoids
-      // all this.
-      HeapWord* result =
-                     new_cur_alloc_region->allocate_no_bot_updates(word_size);
-      assert(result != NULL, "we just allocate out of an empty region "
-             "so allocation should have been successful");
-      assert(is_in(result), "result should be in the heap");
-
-      // Now make sure that the store to _cur_alloc_region does not
-      // float above the store to top.
-      OrderAccess::storestore();
-      _cur_alloc_region = new_cur_alloc_region;
-
-      if (!at_safepoint) {
-        Heap_lock->unlock();
-      }
-
-      // do the dirtying, if necessary, after we release the Heap_lock
-      if (do_dirtying) {
-        dirty_young_block(result, word_size);
-      }
-      return result;
-    }
-  }
-
-  assert(_cur_alloc_region == NULL, "we failed to allocate a new current "
-         "alloc region, it should still be NULL");
-  assert_heap_locked_or_at_safepoint(true /* should_be_vm_thread */);
-  return NULL;
-}
-
-// See the comment in the .hpp file about the locking protocol and
-// assumptions of this method (and other related ones).
-HeapWord*
-G1CollectedHeap::attempt_allocation_slow(size_t word_size) {
-  assert_heap_locked_and_not_at_safepoint();
-  assert(!isHumongous(word_size), "attempt_allocation_slow() should not be "
-         "used for humongous allocations");
-
-  // We should only reach here when we were unable to allocate
-  // otherwise. So, we should have not active current alloc region.
-  assert(_cur_alloc_region == NULL, "current alloc region should be NULL");
-
-  // We will loop while succeeded is false, which means that we tried
-  // to do a collection, but the VM op did not succeed. So, when we
-  // exit the loop, either one of the allocation attempts was
-  // successful, or we succeeded in doing the VM op but which was
-  // unable to allocate after the collection.
-  for (int try_count = 1; /* we'll return or break */; try_count += 1) {
-    bool succeeded = true;
-
-    // Every time we go round the loop we should be holding the Heap_lock.
-    assert_heap_locked();
-
-    if (GC_locker::is_active_and_needs_gc()) {
-      // We are locked out of GC because of the GC locker. We can
-      // allocate a new region only if we can expand the young gen.
-
-      if (g1_policy()->can_expand_young_list()) {
-        // Yes, we are allowed to expand the young gen. Let's try to
-        // allocate a new current alloc region.
-        HeapWord* result =
-          replace_cur_alloc_region_and_allocate(word_size,
-                                                false, /* at_safepoint */
-                                                true,  /* do_dirtying */
-                                                true   /* can_expand */);
-        if (result != NULL) {
-          assert_heap_not_locked();
-          return result;
-        }
-      }
-      // We could not expand the young gen further (or we could but we
-      // failed to allocate a new region). We'll stall until the GC
-      // locker forces a GC.
-
-      // If this thread is not in a jni critical section, we stall
-      // the requestor until the critical section has cleared and
-      // GC allowed. When the critical section clears, a GC is
-      // initiated by the last thread exiting the critical section; so
-      // we retry the allocation sequence from the beginning of the loop,
-      // rather than causing more, now probably unnecessary, GC attempts.
-      JavaThread* jthr = JavaThread::current();
-      assert(jthr != NULL, "sanity");
-      if (jthr->in_critical()) {
-        if (CheckJNICalls) {
-          fatal("Possible deadlock due to allocating while"
-                " in jni critical section");
-        }
-        // We are returning NULL so the protocol is that we're still
-        // holding the Heap_lock.
-        assert_heap_locked();
-        return NULL;
-      }
-
-      Heap_lock->unlock();
-      GC_locker::stall_until_clear();
-
-      // No need to relock the Heap_lock. We'll fall off to the code
-      // below the else-statement which assumes that we are not
-      // holding the Heap_lock.
-    } else {
-      // We are not locked out. So, let's try to do a GC. The VM op
-      // will retry the allocation before it completes.
-
-      // Read the GC count while holding the Heap_lock
-      unsigned int gc_count_before = SharedHeap::heap()->total_collections();
-
-      Heap_lock->unlock();
-
-      HeapWord* result =
-        do_collection_pause(word_size, gc_count_before, &succeeded);
-      assert_heap_not_locked();
-      if (result != NULL) {
-        assert(succeeded, "the VM op should have succeeded");
-
-        // Allocations that take place on VM operations do not do any
-        // card dirtying and we have to do it here.
-        dirty_young_block(result, word_size);
-        return result;
-      }
-    }
-
-    // Both paths that get us here from above unlock the Heap_lock.
-    assert_heap_not_locked();
-
-    // We can reach here when we were unsuccessful in doing a GC,
-    // because another thread beat us to it, or because we were locked
-    // out of GC due to the GC locker. In either case a new alloc
-    // region might be available so we will retry the allocation.
-    HeapWord* result = attempt_allocation(word_size);
-    if (result != NULL) {
-      assert_heap_not_locked();
-      return result;
-    }
-
-    // So far our attempts to allocate failed. The only time we'll go
-    // around the loop and try again is if we tried to do a GC and the
-    // VM op that we tried to schedule was not successful because
-    // another thread beat us to it. If that happened it's possible
-    // that by the time we grabbed the Heap_lock again and tried to
-    // allocate other threads filled up the young generation, which
-    // means that the allocation attempt after the GC also failed. So,
-    // it's worth trying to schedule another GC pause.
-    if (succeeded) {
-      break;
-    }
-
-    // Give a warning if we seem to be looping forever.
-    if ((QueuedAllocationWarningCount > 0) &&
-        (try_count % QueuedAllocationWarningCount == 0)) {
-      warning("G1CollectedHeap::attempt_allocation_slow() "
-              "retries %d times", try_count);
-    }
-  }
-
-  assert_heap_locked();
-  return NULL;
-}
-
-// See the comment in the .hpp file about the locking protocol and
-// assumptions of this method (and other related ones).
-HeapWord*
-G1CollectedHeap::attempt_allocation_humongous(size_t word_size,
-                                              bool at_safepoint) {
-  // This is the method that will allocate a humongous object. All
-  // allocation paths that attempt to allocate a humongous object
-  // should eventually reach here. Currently, the only paths are from
-  // mem_allocate() and attempt_allocation_at_safepoint().
-  assert_heap_locked_or_at_safepoint(true /* should_be_vm_thread */);
-  assert(isHumongous(word_size), "attempt_allocation_humongous() "
-         "should only be used for humongous allocations");
-  assert(SafepointSynchronize::is_at_safepoint() == at_safepoint,
-         "at_safepoint and is_at_safepoint() should be a tautology");
-
-  HeapWord* result = NULL;
-
-  // We will loop while succeeded is false, which means that we tried
-  // to do a collection, but the VM op did not succeed. So, when we
-  // exit the loop, either one of the allocation attempts was
-  // successful, or we succeeded in doing the VM op but which was
-  // unable to allocate after the collection.
-  for (int try_count = 1; /* we'll return or break */; try_count += 1) {
-    bool succeeded = true;
-
-    // Given that humongous objects are not allocated in young
-    // regions, we'll first try to do the allocation without doing a
-    // collection hoping that there's enough space in the heap.
-    result = humongous_obj_allocate(word_size);
-    assert(_cur_alloc_region == NULL || !_cur_alloc_region->isHumongous(),
-           "catch a regression of this bug.");
-    if (result != NULL) {
-      if (!at_safepoint) {
-        // If we're not at a safepoint, unlock the Heap_lock.
-        Heap_lock->unlock();
-      }
-      return result;
-    }
-
-    // If we failed to allocate the humongous object, we should try to
-    // do a collection pause (if we're allowed) in case it reclaims
-    // enough space for the allocation to succeed after the pause.
-    if (!at_safepoint) {
-      // Read the GC count while holding the Heap_lock
-      unsigned int gc_count_before = SharedHeap::heap()->total_collections();
-
-      // If we're allowed to do a collection we're not at a
-      // safepoint, so it is safe to unlock the Heap_lock.
-      Heap_lock->unlock();
-
-      result = do_collection_pause(word_size, gc_count_before, &succeeded);
-      assert_heap_not_locked();
-      if (result != NULL) {
-        assert(succeeded, "the VM op should have succeeded");
-        return result;
-      }
-
-      // If we get here, the VM operation either did not succeed
-      // (i.e., another thread beat us to it) or it succeeded but
-      // failed to allocate the object.
-
-      // If we're allowed to do a collection we're not at a
-      // safepoint, so it is safe to lock the Heap_lock.
-      Heap_lock->lock();
-    }
-
-    assert(result == NULL, "otherwise we should have exited the loop earlier");
-
-    // So far our attempts to allocate failed. The only time we'll go
-    // around the loop and try again is if we tried to do a GC and the
-    // VM op that we tried to schedule was not successful because
-    // another thread beat us to it. That way it's possible that some
-    // space was freed up by the thread that successfully scheduled a
-    // GC. So it's worth trying to allocate again.
-    if (succeeded) {
-      break;
-    }
-
-    // Give a warning if we seem to be looping forever.
-    if ((QueuedAllocationWarningCount > 0) &&
-        (try_count % QueuedAllocationWarningCount == 0)) {
-      warning("G1CollectedHeap::attempt_allocation_humongous "
-              "retries %d times", try_count);
-    }
-  }
-
-  assert_heap_locked_or_at_safepoint(true /* should_be_vm_thread */);
-  return NULL;
-}
-
-HeapWord* G1CollectedHeap::attempt_allocation_at_safepoint(size_t word_size,
-                                           bool expect_null_cur_alloc_region) {
-  assert_at_safepoint(true /* should_be_vm_thread */);
-  assert(_cur_alloc_region == NULL || !expect_null_cur_alloc_region,
-         err_msg("the current alloc region was unexpectedly found "
-                 "to be non-NULL, cur alloc region: "PTR_FORMAT" "
-                 "expect_null_cur_alloc_region: %d word_size: "SIZE_FORMAT,
-                 _cur_alloc_region, expect_null_cur_alloc_region, word_size));
-
-  if (!isHumongous(word_size)) {
-    if (!expect_null_cur_alloc_region) {
-      HeapRegion* cur_alloc_region = _cur_alloc_region;
-      if (cur_alloc_region != NULL) {
-        // We are at a safepoint so no reason to use the MT-safe version.
-        HeapWord* result = cur_alloc_region->allocate_no_bot_updates(word_size);
-        if (result != NULL) {
-          assert(is_in(result), "result should be in the heap");
-
-          // We will not do any dirtying here. This is guaranteed to be
-          // called during a safepoint and the thread that scheduled the
-          // pause will do the dirtying if we return a non-NULL result.
-          return result;
-        }
-
-        retire_cur_alloc_region_common(cur_alloc_region);
-      }
-    }
-
-    assert(_cur_alloc_region == NULL,
-           "at this point we should have no cur alloc region");
-    return replace_cur_alloc_region_and_allocate(word_size,
-                                                 true, /* at_safepoint */
-                                                 false /* do_dirtying */,
-                                                 false /* can_expand */);
-  } else {
-    return attempt_allocation_humongous(word_size,
-                                        true /* at_safepoint */);
-  }
-
-  ShouldNotReachHere();
-}
-
 HeapWord* G1CollectedHeap::allocate_new_tlab(size_t word_size) {
   assert_heap_not_locked_and_not_at_safepoint();
-  assert(!isHumongous(word_size), "we do not allow TLABs of humongous size");
-
-  // First attempt: Try allocating out of the current alloc region
-  // using a CAS. If that fails, take the Heap_lock and retry the
-  // allocation, potentially replacing the current alloc region.
-  HeapWord* result = attempt_allocation(word_size);
-  if (result != NULL) {
-    assert_heap_not_locked();
-    return result;
-  }
-
-  // Second attempt: Go to the slower path where we might try to
-  // schedule a collection.
-  result = attempt_allocation_slow(word_size);
-  if (result != NULL) {
-    assert_heap_not_locked();
-    return result;
-  }
-
-  assert_heap_locked();
-  // Need to unlock the Heap_lock before returning.
-  Heap_lock->unlock();
-  return NULL;
+  assert(!isHumongous(word_size), "we do not allow humongous TLABs");
+
+  unsigned int dummy_gc_count_before;
+  return attempt_allocation(word_size, &dummy_gc_count_before);
 }
 
 HeapWord*
@@ -1200,48 +805,18 @@
   assert(!is_tlab, "mem_allocate() this should not be called directly "
          "to allocate TLABs");
 
-  // Loop until the allocation is satisified,
-  // or unsatisfied after GC.
+  // Loop until the allocation is satisified, or unsatisfied after GC.
   for (int try_count = 1; /* we'll return */; try_count += 1) {
     unsigned int gc_count_before;
-    {
-      if (!isHumongous(word_size)) {
-        // First attempt: Try allocating out of the current alloc region
-        // using a CAS. If that fails, take the Heap_lock and retry the
-        // allocation, potentially replacing the current alloc region.
-        HeapWord* result = attempt_allocation(word_size);
-        if (result != NULL) {
-          assert_heap_not_locked();
-          return result;
-        }
-
-        assert_heap_locked();
-
-        // Second attempt: Go to the slower path where we might try to
-        // schedule a collection.
-        result = attempt_allocation_slow(word_size);
-        if (result != NULL) {
-          assert_heap_not_locked();
-          return result;
-        }
-      } else {
-        // attempt_allocation_humongous() requires the Heap_lock to be held.
-        Heap_lock->lock();
-
-        HeapWord* result = attempt_allocation_humongous(word_size,
-                                                     false /* at_safepoint */);
-        if (result != NULL) {
-          assert_heap_not_locked();
-          return result;
-        }
-      }
-
-      assert_heap_locked();
-      // Read the gc count while the heap lock is held.
-      gc_count_before = SharedHeap::heap()->total_collections();
-
-      // Release the Heap_lock before attempting the collection.
-      Heap_lock->unlock();
+
+    HeapWord* result = NULL;
+    if (!isHumongous(word_size)) {
+      result = attempt_allocation(word_size, &gc_count_before);
+    } else {
+      result = attempt_allocation_humongous(word_size, &gc_count_before);
+    }
+    if (result != NULL) {
+      return result;
     }
 
     // Create the garbage collection operation...
@@ -1249,7 +824,6 @@
     // ...and get the VM thread to execute it.
     VMThread::execute(&op);
 
-    assert_heap_not_locked();
     if (op.prologue_succeeded() && op.pause_succeeded()) {
       // If the operation was successful we'll return the result even
       // if it is NULL. If the allocation attempt failed immediately
@@ -1275,21 +849,207 @@
   }
 
   ShouldNotReachHere();
+  return NULL;
 }
 
-void G1CollectedHeap::abandon_cur_alloc_region() {
+HeapWord* G1CollectedHeap::attempt_allocation_slow(size_t word_size,
+                                           unsigned int *gc_count_before_ret) {
+  // Make sure you read the note in attempt_allocation_humongous().
+
+  assert_heap_not_locked_and_not_at_safepoint();
+  assert(!isHumongous(word_size), "attempt_allocation_slow() should not "
+         "be called for humongous allocation requests");
+
+  // We should only get here after the first-level allocation attempt
+  // (attempt_allocation()) failed to allocate.
+
+  // We will loop until a) we manage to successfully perform the
+  // allocation or b) we successfully schedule a collection which
+  // fails to perform the allocation. b) is the only case when we'll
+  // return NULL.
+  HeapWord* result = NULL;
+  for (int try_count = 1; /* we'll return */; try_count += 1) {
+    bool should_try_gc;
+    unsigned int gc_count_before;
+
+    {
+      MutexLockerEx x(Heap_lock);
+
+      result = _mutator_alloc_region.attempt_allocation_locked(word_size,
+                                                      false /* bot_updates */);
+      if (result != NULL) {
+        return result;
+      }
+
+      // If we reach here, attempt_allocation_locked() above failed to
+      // allocate a new region. So the mutator alloc region should be NULL.
+      assert(_mutator_alloc_region.get() == NULL, "only way to get here");
+
+      if (GC_locker::is_active_and_needs_gc()) {
+        if (g1_policy()->can_expand_young_list()) {
+          result = _mutator_alloc_region.attempt_allocation_force(word_size,
+                                                      false /* bot_updates */);
+          if (result != NULL) {
+            return result;
+          }
+        }
+        should_try_gc = false;
+      } else {
+        // Read the GC count while still holding the Heap_lock.
+        gc_count_before = SharedHeap::heap()->total_collections();
+        should_try_gc = true;
+      }
+    }
+
+    if (should_try_gc) {
+      bool succeeded;
+      result = do_collection_pause(word_size, gc_count_before, &succeeded);
+      if (result != NULL) {
+        assert(succeeded, "only way to get back a non-NULL result");
+        return result;
+      }
+
+      if (succeeded) {
+        // If we get here we successfully scheduled a collection which
+        // failed to allocate. No point in trying to allocate
+        // further. We'll just return NULL.
+        MutexLockerEx x(Heap_lock);
+        *gc_count_before_ret = SharedHeap::heap()->total_collections();
+        return NULL;
+      }
+    } else {
+      GC_locker::stall_until_clear();
+    }
+
+    // We can reach here if we were unsuccessul in scheduling a
+    // collection (because another thread beat us to it) or if we were
+    // stalled due to the GC locker. In either can we should retry the
+    // allocation attempt in case another thread successfully
+    // performed a collection and reclaimed enough space. We do the
+    // first attempt (without holding the Heap_lock) here and the
+    // follow-on attempt will be at the start of the next loop
+    // iteration (after taking the Heap_lock).
+    result = _mutator_alloc_region.attempt_allocation(word_size,
+                                                      false /* bot_updates */);
+    if (result != NULL ){
+      return result;
+    }
+
+    // Give a warning if we seem to be looping forever.
+    if ((QueuedAllocationWarningCount > 0) &&
+        (try_count % QueuedAllocationWarningCount == 0)) {
+      warning("G1CollectedHeap::attempt_allocation_slow() "
+              "retries %d times", try_count);
+    }
+  }
+
+  ShouldNotReachHere();
+  return NULL;
+}
+
+HeapWord* G1CollectedHeap::attempt_allocation_humongous(size_t word_size,
+                                          unsigned int * gc_count_before_ret) {
+  // The structure of this method has a lot of similarities to
+  // attempt_allocation_slow(). The reason these two were not merged
+  // into a single one is that such a method would require several "if
+  // allocation is not humongous do this, otherwise do that"
+  // conditional paths which would obscure its flow. In fact, an early
+  // version of this code did use a unified method which was harder to
+  // follow and, as a result, it had subtle bugs that were hard to
+  // track down. So keeping these two methods separate allows each to
+  // be more readable. It will be good to keep these two in sync as
+  // much as possible.
+
+  assert_heap_not_locked_and_not_at_safepoint();
+  assert(isHumongous(word_size), "attempt_allocation_humongous() "
+         "should only be called for humongous allocations");
+
+  // We will loop until a) we manage to successfully perform the
+  // allocation or b) we successfully schedule a collection which
+  // fails to perform the allocation. b) is the only case when we'll
+  // return NULL.
+  HeapWord* result = NULL;
+  for (int try_count = 1; /* we'll return */; try_count += 1) {
+    bool should_try_gc;
+    unsigned int gc_count_before;
+
+    {
+      MutexLockerEx x(Heap_lock);
+
+      // Given that humongous objects are not allocated in young
+      // regions, we'll first try to do the allocation without doing a
+      // collection hoping that there's enough space in the heap.
+      result = humongous_obj_allocate(word_size);
+      if (result != NULL) {
+        return result;
+      }
+
+      if (GC_locker::is_active_and_needs_gc()) {
+        should_try_gc = false;
+      } else {
+        // Read the GC count while still holding the Heap_lock.
+        gc_count_before = SharedHeap::heap()->total_collections();
+        should_try_gc = true;
+      }
+    }
+
+    if (should_try_gc) {
+      // If we failed to allocate the humongous object, we should try to
+      // do a collection pause (if we're allowed) in case it reclaims
+      // enough space for the allocation to succeed after the pause.
+
+      bool succeeded;
+      result = do_collection_pause(word_size, gc_count_before, &succeeded);
+      if (result != NULL) {
+        assert(succeeded, "only way to get back a non-NULL result");
+        return result;
+      }
+
+      if (succeeded) {
+        // If we get here we successfully scheduled a collection which
+        // failed to allocate. No point in trying to allocate
+        // further. We'll just return NULL.
+        MutexLockerEx x(Heap_lock);
+        *gc_count_before_ret = SharedHeap::heap()->total_collections();
+        return NULL;
+      }
+    } else {
+      GC_locker::stall_until_clear();
+    }
+
+    // We can reach here if we were unsuccessul in scheduling a
+    // collection (because another thread beat us to it) or if we were
+    // stalled due to the GC locker. In either can we should retry the
+    // allocation attempt in case another thread successfully
+    // performed a collection and reclaimed enough space.  Give a
+    // warning if we seem to be looping forever.
+
+    if ((QueuedAllocationWarningCount > 0) &&
+        (try_count % QueuedAllocationWarningCount == 0)) {
+      warning("G1CollectedHeap::attempt_allocation_humongous() "
+              "retries %d times", try_count);
+    }
+  }
+
+  ShouldNotReachHere();
+  return NULL;
+}
+
+HeapWord* G1CollectedHeap::attempt_allocation_at_safepoint(size_t word_size,
+                                       bool expect_null_mutator_alloc_region) {
   assert_at_safepoint(true /* should_be_vm_thread */);
-
-  HeapRegion* cur_alloc_region = _cur_alloc_region;
-  if (cur_alloc_region != NULL) {
-    assert(!cur_alloc_region->is_empty(),
-           "the current alloc region can never be empty");
-    assert(cur_alloc_region->is_young(),
-           "the current alloc region should be young");
-
-    retire_cur_alloc_region_common(cur_alloc_region);
-  }
-  assert(_cur_alloc_region == NULL, "post-condition");
+  assert(_mutator_alloc_region.get() == NULL ||
+                                             !expect_null_mutator_alloc_region,
+         "the current alloc region was unexpectedly found to be non-NULL");
+
+  if (!isHumongous(word_size)) {
+    return _mutator_alloc_region.attempt_allocation_locked(word_size,
+                                                      false /* bot_updates */);
+  } else {
+    return humongous_obj_allocate(word_size);
+  }
+
+  ShouldNotReachHere();
 }
 
 void G1CollectedHeap::abandon_gc_alloc_regions() {
@@ -1417,8 +1177,8 @@
 
     if (VerifyBeforeGC && total_collections() >= VerifyGCStartAt) {
       HandleMark hm;  // Discard invalid handles created during verification
+      gclog_or_tty->print(" VerifyBeforeGC:");
       prepare_for_verify();
-      gclog_or_tty->print(" VerifyBeforeGC:");
       Universe::verify(true);
     }
 
@@ -1439,9 +1199,8 @@
     concurrent_mark()->abort();
 
     // Make sure we'll choose a new allocation region afterwards.
-    abandon_cur_alloc_region();
+    release_mutator_alloc_region();
     abandon_gc_alloc_regions();
-    assert(_cur_alloc_region == NULL, "Invariant.");
     g1_rem_set()->cleanupHRRS();
     tear_down_region_lists();
 
@@ -1547,6 +1306,8 @@
     // evacuation pause.
     clear_cset_fast_test();
 
+    init_mutator_alloc_region();
+
     double end = os::elapsedTime();
     g1_policy()->record_full_collection_end();
 
@@ -1720,8 +1481,9 @@
 
   *succeeded = true;
   // Let's attempt the allocation first.
-  HeapWord* result = attempt_allocation_at_safepoint(word_size,
-                                     false /* expect_null_cur_alloc_region */);
+  HeapWord* result =
+    attempt_allocation_at_safepoint(word_size,
+                                 false /* expect_null_mutator_alloc_region */);
   if (result != NULL) {
     assert(*succeeded, "sanity");
     return result;
@@ -1748,7 +1510,7 @@
 
   // Retry the allocation
   result = attempt_allocation_at_safepoint(word_size,
-                                      true /* expect_null_cur_alloc_region */);
+                                  true /* expect_null_mutator_alloc_region */);
   if (result != NULL) {
     assert(*succeeded, "sanity");
     return result;
@@ -1765,7 +1527,7 @@
 
   // Retry the allocation once more
   result = attempt_allocation_at_safepoint(word_size,
-                                      true /* expect_null_cur_alloc_region */);
+                                  true /* expect_null_mutator_alloc_region */);
   if (result != NULL) {
     assert(*succeeded, "sanity");
     return result;
@@ -1796,7 +1558,7 @@
   if (expand(expand_bytes)) {
     verify_region_sets_optional();
     return attempt_allocation_at_safepoint(word_size,
-                                          false /* expect_null_cur_alloc_region */);
+                                 false /* expect_null_mutator_alloc_region */);
   }
   return NULL;
 }
@@ -1940,7 +1702,6 @@
   _evac_failure_scan_stack(NULL) ,
   _mark_in_progress(false),
   _cg1r(NULL), _summary_bytes_used(0),
-  _cur_alloc_region(NULL),
   _refine_cte_cl(NULL),
   _full_collection(false),
   _free_list("Master Free List"),
@@ -2099,7 +1860,6 @@
   _g1_max_committed = _g1_committed;
   _hrs = new HeapRegionSeq(_expansion_regions);
   guarantee(_hrs != NULL, "Couldn't allocate HeapRegionSeq");
-  guarantee(_cur_alloc_region == NULL, "from constructor");
 
   // 6843694 - ensure that the maximum region index can fit
   // in the remembered set structures.
@@ -2195,6 +1955,22 @@
   // Do later initialization work for concurrent refinement.
   _cg1r->init();
 
+  // Here we allocate the dummy full region that is required by the
+  // G1AllocRegion class. If we don't pass an address in the reserved
+  // space here, lots of asserts fire.
+  MemRegion mr(_g1_reserved.start(), HeapRegion::GrainWords);
+  HeapRegion* dummy_region = new HeapRegion(_bot_shared, mr, true);
+  // We'll re-use the same region whether the alloc region will
+  // require BOT updates or not and, if it doesn't, then a non-young
+  // region will complain that it cannot support allocations without
+  // BOT updates. So we'll tag the dummy region as young to avoid that.
+  dummy_region->set_young();
+  // Make sure it's full.
+  dummy_region->set_top(dummy_region->end());
+  G1AllocRegion::setup(this, dummy_region);
+
+  init_mutator_alloc_region();
+
   return JNI_OK;
 }
 
@@ -2261,7 +2037,7 @@
          "Should be owned on this thread's behalf.");
   size_t result = _summary_bytes_used;
   // Read only once in case it is set to NULL concurrently
-  HeapRegion* hr = _cur_alloc_region;
+  HeapRegion* hr = _mutator_alloc_region.get();
   if (hr != NULL)
     result += hr->used();
   return result;
@@ -2324,13 +2100,11 @@
   // to free(), resulting in a SIGSEGV. Note that this doesn't appear
   // to be a problem in the optimized build, since the two loads of the
   // current allocation region field are optimized away.
-  HeapRegion* car = _cur_alloc_region;
-
-  // FIXME: should iterate over all regions?
-  if (car == NULL) {
+  HeapRegion* hr = _mutator_alloc_region.get();
+  if (hr == NULL) {
     return 0;
   }
-  return car->free();
+  return hr->free();
 }
 
 bool G1CollectedHeap::should_do_concurrent_full_gc(GCCause::Cause cause) {
@@ -2781,16 +2555,12 @@
   // since we can't allow tlabs to grow big enough to accomodate
   // humongous objects.
 
-  // We need to store the cur alloc region locally, since it might change
-  // between when we test for NULL and when we use it later.
-  ContiguousSpace* cur_alloc_space = _cur_alloc_region;
+  HeapRegion* hr = _mutator_alloc_region.get();
   size_t max_tlab_size = _humongous_object_threshold_in_words * wordSize;
-
-  if (cur_alloc_space == NULL) {
+  if (hr == NULL) {
     return max_tlab_size;
   } else {
-    return MIN2(MAX2(cur_alloc_space->free(), (size_t)MinTLABSize),
-                max_tlab_size);
+    return MIN2(MAX2(hr->free(), (size_t) MinTLABSize), max_tlab_size);
   }
 }
 
@@ -3364,6 +3134,7 @@
   }
 
   verify_region_sets_optional();
+  verify_dirty_young_regions();
 
   {
     // This call will decide whether this pause is an initial-mark
@@ -3425,8 +3196,8 @@
 
       if (VerifyBeforeGC && total_collections() >= VerifyGCStartAt) {
         HandleMark hm;  // Discard invalid handles created during verification
+        gclog_or_tty->print(" VerifyBeforeGC:");
         prepare_for_verify();
-        gclog_or_tty->print(" VerifyBeforeGC:");
         Universe::verify(false);
       }
 
@@ -3442,7 +3213,7 @@
 
       // Forget the current alloc region (we might even choose it to be part
       // of the collection set!).
-      abandon_cur_alloc_region();
+      release_mutator_alloc_region();
 
       // The elapsed time induced by the start time below deliberately elides
       // the possible verification above.
@@ -3573,6 +3344,8 @@
       g1_policy()->print_collection_set(g1_policy()->inc_cset_head(), gclog_or_tty);
 #endif // YOUNG_LIST_VERBOSE
 
+      init_mutator_alloc_region();
+
       double end_time_sec = os::elapsedTime();
       double pause_time_ms = (end_time_sec - start_time_sec) * MILLIUNITS;
       g1_policy()->record_pause_time_ms(pause_time_ms);
@@ -3655,6 +3428,15 @@
   return gclab_word_size;
 }
 
+void G1CollectedHeap::init_mutator_alloc_region() {
+  assert(_mutator_alloc_region.get() == NULL, "pre-condition");
+  _mutator_alloc_region.init();
+}
+
+void G1CollectedHeap::release_mutator_alloc_region() {
+  _mutator_alloc_region.release();
+  assert(_mutator_alloc_region.get() == NULL, "post-condition");
+}
 
 void G1CollectedHeap::set_gc_alloc_region(int purpose, HeapRegion* r) {
   assert(purpose >= 0 && purpose < GCAllocPurposeCount, "invalid purpose");
@@ -3879,7 +3661,7 @@
       if (r->is_empty()) {
         // We didn't actually allocate anything in it; let's just put
         // it back on the free list.
-        _free_list.add_as_tail(r);
+        _free_list.add_as_head(r);
       } else if (_retain_gc_alloc_region[ap] && !totally) {
         // retain it so that we can use it at the beginning of the next GC
         _retained_gc_alloc_regions[ap] = r;
@@ -5013,7 +4795,7 @@
 
   *pre_used += hr->used();
   hr->hr_clear(par, true /* clear_space */);
-  free_list->add_as_tail(hr);
+  free_list->add_as_head(hr);
 }
 
 void G1CollectedHeap::free_humongous_region(HeapRegion* hr,
@@ -5065,7 +4847,7 @@
   }
   if (free_list != NULL && !free_list->is_empty()) {
     MutexLockerEx x(FreeList_lock, Mutex::_no_safepoint_check_flag);
-    _free_list.add_as_tail(free_list);
+    _free_list.add_as_head(free_list);
   }
   if (humongous_proxy_set != NULL && !humongous_proxy_set->is_empty()) {
     MutexLockerEx x(OldSets_lock, Mutex::_no_safepoint_check_flag);
@@ -5140,10 +4922,8 @@
   CardTableModRefBS* _ct_bs;
 public:
   G1VerifyCardTableCleanup(CardTableModRefBS* ct_bs)
-    : _ct_bs(ct_bs)
-  { }
-  virtual bool doHeapRegion(HeapRegion* r)
-  {
+    : _ct_bs(ct_bs) { }
+  virtual bool doHeapRegion(HeapRegion* r) {
     MemRegion mr(r->bottom(), r->end());
     if (r->is_survivor()) {
       _ct_bs->verify_dirty_region(mr);
@@ -5153,6 +4933,29 @@
     return false;
   }
 };
+
+void G1CollectedHeap::verify_dirty_young_list(HeapRegion* head) {
+  CardTableModRefBS* ct_bs = (CardTableModRefBS*) (barrier_set());
+  for (HeapRegion* hr = head; hr != NULL; hr = hr->get_next_young_region()) {
+    // We cannot guarantee that [bottom(),end()] is dirty.  Threads
+    // dirty allocated blocks as they allocate them. The thread that
+    // retires each region and replaces it with a new one will do a
+    // maximal allocation to fill in [pre_dummy_top(),end()] but will
+    // not dirty that area (one less thing to have to do while holding
+    // a lock). So we can only verify that [bottom(),pre_dummy_top()]
+    // is dirty. Also note that verify_dirty_region() requires
+    // mr.start() and mr.end() to be card aligned and pre_dummy_top()
+    // is not guaranteed to be.
+    MemRegion mr(hr->bottom(),
+                 ct_bs->align_to_card_boundary(hr->pre_dummy_top()));
+    ct_bs->verify_dirty_region(mr);
+  }
+}
+
+void G1CollectedHeap::verify_dirty_young_regions() {
+  verify_dirty_young_list(_young_list->first_region());
+  verify_dirty_young_list(_young_list->first_survivor_region());
+}
 #endif
 
 void G1CollectedHeap::cleanUpCardTable() {
@@ -5500,6 +5303,44 @@
   }
 }
 
+HeapRegion* G1CollectedHeap::new_mutator_alloc_region(size_t word_size,
+                                                      bool force) {
+  assert_heap_locked_or_at_safepoint(true /* should_be_vm_thread */);
+  assert(!force || g1_policy()->can_expand_young_list(),
+         "if force is true we should be able to expand the young list");
+  if (force || !g1_policy()->is_young_list_full()) {
+    HeapRegion* new_alloc_region = new_region(word_size,
+                                              false /* do_expand */);
+    if (new_alloc_region != NULL) {
+      g1_policy()->update_region_num(true /* next_is_young */);
+      set_region_short_lived_locked(new_alloc_region);
+      return new_alloc_region;
+    }
+  }
+  return NULL;
+}
+
+void G1CollectedHeap::retire_mutator_alloc_region(HeapRegion* alloc_region,
+                                                  size_t allocated_bytes) {
+  assert_heap_locked_or_at_safepoint(true /* should_be_vm_thread */);
+  assert(alloc_region->is_young(), "all mutator alloc regions should be young");
+
+  g1_policy()->add_region_to_incremental_cset_lhs(alloc_region);
+  _summary_bytes_used += allocated_bytes;
+}
+
+HeapRegion* MutatorAllocRegion::allocate_new_region(size_t word_size,
+                                                    bool force) {
+  return _g1h->new_mutator_alloc_region(word_size, force);
+}
+
+void MutatorAllocRegion::retire_region(HeapRegion* alloc_region,
+                                       size_t allocated_bytes) {
+  _g1h->retire_mutator_alloc_region(alloc_region, allocated_bytes);
+}
+
+// Heap region set verification
+
 class VerifyRegionListsClosure : public HeapRegionClosure {
 private:
   HumongousRegionSet* _humongous_set;
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -26,6 +26,7 @@
 #define SHARE_VM_GC_IMPLEMENTATION_G1_G1COLLECTEDHEAP_HPP
 
 #include "gc_implementation/g1/concurrentMark.hpp"
+#include "gc_implementation/g1/g1AllocRegion.hpp"
 #include "gc_implementation/g1/g1RemSet.hpp"
 #include "gc_implementation/g1/heapRegionSets.hpp"
 #include "gc_implementation/parNew/parGCAllocBuffer.hpp"
@@ -128,6 +129,15 @@
   void          print();
 };
 
+class MutatorAllocRegion : public G1AllocRegion {
+protected:
+  virtual HeapRegion* allocate_new_region(size_t word_size, bool force);
+  virtual void retire_region(HeapRegion* alloc_region, size_t allocated_bytes);
+public:
+  MutatorAllocRegion()
+    : G1AllocRegion("Mutator Alloc Region", false /* bot_updates */) { }
+};
+
 class RefineCardTableEntryClosure;
 class G1CollectedHeap : public SharedHeap {
   friend class VM_G1CollectForAllocation;
@@ -135,6 +145,7 @@
   friend class VM_G1CollectFull;
   friend class VM_G1IncCollectionPause;
   friend class VMStructs;
+  friend class MutatorAllocRegion;
 
   // Closures used in implementation.
   friend class G1ParCopyHelper;
@@ -197,12 +208,15 @@
   // The sequence of all heap regions in the heap.
   HeapRegionSeq* _hrs;
 
-  // The region from which normal-sized objects are currently being
-  // allocated.  May be NULL.
-  HeapRegion* _cur_alloc_region;
+  // Alloc region used to satisfy mutator allocation requests.
+  MutatorAllocRegion _mutator_alloc_region;
 
-  // Postcondition: cur_alloc_region == NULL.
-  void abandon_cur_alloc_region();
+  // It resets the mutator alloc region before new allocations can take place.
+  void init_mutator_alloc_region();
+
+  // It releases the mutator alloc region.
+  void release_mutator_alloc_region();
+
   void abandon_gc_alloc_regions();
 
   // The to-space memory regions into which objects are being copied during
@@ -360,27 +374,21 @@
   G1CollectorPolicy* _g1_policy;
 
   // This is the second level of trying to allocate a new region. If
-  // new_region_work didn't find a region in the free_list, this call
-  // will check whether there's anything available in the
-  // secondary_free_list and/or wait for more regions to appear in that
-  // list, if _free_regions_coming is set.
+  // new_region() didn't find a region on the free_list, this call will
+  // check whether there's anything available on the
+  // secondary_free_list and/or wait for more regions to appear on
+  // that list, if _free_regions_coming is set.
   HeapRegion* new_region_try_secondary_free_list();
 
   // Try to allocate a single non-humongous HeapRegion sufficient for
   // an allocation of the given word_size. If do_expand is true,
   // attempt to expand the heap if necessary to satisfy the allocation
   // request.
-  HeapRegion* new_region_work(size_t word_size, bool do_expand);
+  HeapRegion* new_region(size_t word_size, bool do_expand);
 
-  // Try to allocate a new region to be used for allocation by a
-  // mutator thread. Attempt to expand the heap if no region is
+  // Try to allocate a new region to be used for allocation by
+  // a GC thread. It will try to expand the heap if no region is
   // available.
-  HeapRegion* new_alloc_region(size_t word_size) {
-    return new_region_work(word_size, false /* do_expand */);
-  }
-
-  // Try to allocate a new region to be used for allocation by a GC
-  // thread. Attempt to expand the heap if no region is available.
   HeapRegion* new_gc_alloc_region(int purpose, size_t word_size);
 
   // Attempt to satisfy a humongous allocation request of the given
@@ -415,10 +423,6 @@
   // * All non-TLAB allocation requests should go to mem_allocate()
   //   and mem_allocate() should never be called with is_tlab == true.
   //
-  // * If the GC locker is active we currently stall until we can
-  //   allocate a new young region. This will be changed in the
-  //   near future (see CR 6994056).
-  //
   // * If either call cannot satisfy the allocation request using the
   //   current allocating region, they will try to get a new one. If
   //   this fails, they will attempt to do an evacuation pause and
@@ -441,122 +445,38 @@
                                  bool   is_tlab, /* expected to be false */
                                  bool*  gc_overhead_limit_was_exceeded);
 
-  // The following methods, allocate_from_cur_allocation_region(),
-  // attempt_allocation(), attempt_allocation_locked(),
-  // replace_cur_alloc_region_and_allocate(),
-  // attempt_allocation_slow(), and attempt_allocation_humongous()
-  // have very awkward pre- and post-conditions with respect to
-  // locking:
-  //
-  // If they are called outside a safepoint they assume the caller
-  // holds the Heap_lock when it calls them. However, on exit they
-  // will release the Heap_lock if they return a non-NULL result, but
-  // keep holding the Heap_lock if they return a NULL result. The
-  // reason for this is that we need to dirty the cards that span
-  // allocated blocks on young regions to avoid having to take the
-  // slow path of the write barrier (for performance reasons we don't
-  // update RSets for references whose source is a young region, so we
-  // don't need to look at dirty cards on young regions). But, doing
-  // this card dirtying while holding the Heap_lock can be a
-  // scalability bottleneck, especially given that some allocation
-  // requests might be of non-trivial size (and the larger the region
-  // size is, the fewer allocations requests will be considered
-  // humongous, as the humongous size limit is a fraction of the
-  // region size). So, when one of these calls succeeds in allocating
-  // a block it does the card dirtying after it releases the Heap_lock
-  // which is why it will return without holding it.
-  //
-  // The above assymetry is the reason why locking / unlocking is done
-  // explicitly (i.e., with Heap_lock->lock() and
-  // Heap_lock->unlocked()) instead of using MutexLocker and
-  // MutexUnlocker objects. The latter would ensure that the lock is
-  // unlocked / re-locked at every possible exit out of the basic
-  // block. However, we only want that action to happen in selected
-  // places.
-  //
-  // Further, if the above methods are called during a safepoint, then
-  // naturally there's no assumption about the Heap_lock being held or
-  // there's no attempt to unlock it. The parameter at_safepoint
-  // indicates whether the call is made during a safepoint or not (as
-  // an optimization, to avoid reading the global flag with
-  // SafepointSynchronize::is_at_safepoint()).
-  //
-  // The methods share these parameters:
-  //
-  // * word_size     : the size of the allocation request in words
-  // * at_safepoint  : whether the call is done at a safepoint; this
-  //                   also determines whether a GC is permitted
-  //                   (at_safepoint == false) or not (at_safepoint == true)
-  // * do_dirtying   : whether the method should dirty the allocated
-  //                   block before returning
-  //
-  // They all return either the address of the block, if they
-  // successfully manage to allocate it, or NULL.
+  // The following three methods take a gc_count_before_ret
+  // parameter which is used to return the GC count if the method
+  // returns NULL. Given that we are required to read the GC count
+  // while holding the Heap_lock, and these paths will take the
+  // Heap_lock at some point, it's easier to get them to read the GC
+  // count while holding the Heap_lock before they return NULL instead
+  // of the caller (namely: mem_allocate()) having to also take the
+  // Heap_lock just to read the GC count.
+
+  // First-level mutator allocation attempt: try to allocate out of
+  // the mutator alloc region without taking the Heap_lock. This
+  // should only be used for non-humongous allocations.
+  inline HeapWord* attempt_allocation(size_t word_size,
+                                      unsigned int* gc_count_before_ret);
 
-  // It tries to satisfy an allocation request out of the current
-  // alloc region, which is passed as a parameter. It assumes that the
-  // caller has checked that the current alloc region is not NULL.
-  // Given that the caller has to check the current alloc region for
-  // at least NULL, it might as well pass it as the first parameter so
-  // that the method doesn't have to read it from the
-  // _cur_alloc_region field again. It is called from both
-  // attempt_allocation() and attempt_allocation_locked() and the
-  // with_heap_lock parameter indicates whether the caller was holding
-  // the heap lock when it called it or not.
-  inline HeapWord* allocate_from_cur_alloc_region(HeapRegion* cur_alloc_region,
-                                                  size_t word_size,
-                                                  bool with_heap_lock);
-
-  // First-level of allocation slow path: it attempts to allocate out
-  // of the current alloc region in a lock-free manner using a CAS. If
-  // that fails it takes the Heap_lock and calls
-  // attempt_allocation_locked() for the second-level slow path.
-  inline HeapWord* attempt_allocation(size_t word_size);
-
-  // Second-level of allocation slow path: while holding the Heap_lock
-  // it tries to allocate out of the current alloc region and, if that
-  // fails, tries to allocate out of a new current alloc region.
-  inline HeapWord* attempt_allocation_locked(size_t word_size);
+  // Second-level mutator allocation attempt: take the Heap_lock and
+  // retry the allocation attempt, potentially scheduling a GC
+  // pause. This should only be used for non-humongous allocations.
+  HeapWord* attempt_allocation_slow(size_t word_size,
+                                    unsigned int* gc_count_before_ret);
 
-  // It assumes that the current alloc region has been retired and
-  // tries to allocate a new one. If it's successful, it performs the
-  // allocation out of the new current alloc region and updates
-  // _cur_alloc_region. Normally, it would try to allocate a new
-  // region if the young gen is not full, unless can_expand is true in
-  // which case it would always try to allocate a new region.
-  HeapWord* replace_cur_alloc_region_and_allocate(size_t word_size,
-                                                  bool at_safepoint,
-                                                  bool do_dirtying,
-                                                  bool can_expand);
-
-  // Third-level of allocation slow path: when we are unable to
-  // allocate a new current alloc region to satisfy an allocation
-  // request (i.e., when attempt_allocation_locked() fails). It will
-  // try to do an evacuation pause, which might stall due to the GC
-  // locker, and retry the allocation attempt when appropriate.
-  HeapWord* attempt_allocation_slow(size_t word_size);
+  // Takes the Heap_lock and attempts a humongous allocation. It can
+  // potentially schedule a GC pause.
+  HeapWord* attempt_allocation_humongous(size_t word_size,
+                                         unsigned int* gc_count_before_ret);
 
-  // The method that tries to satisfy a humongous allocation
-  // request. If it cannot satisfy it it will try to do an evacuation
-  // pause to perhaps reclaim enough space to be able to satisfy the
-  // allocation request afterwards.
-  HeapWord* attempt_allocation_humongous(size_t word_size,
-                                         bool at_safepoint);
-
-  // It does the common work when we are retiring the current alloc region.
-  inline void retire_cur_alloc_region_common(HeapRegion* cur_alloc_region);
-
-  // It retires the current alloc region, which is passed as a
-  // parameter (since, typically, the caller is already holding on to
-  // it). It sets _cur_alloc_region to NULL.
-  void retire_cur_alloc_region(HeapRegion* cur_alloc_region);
-
-  // It attempts to do an allocation immediately before or after an
-  // evacuation pause and can only be called by the VM thread. It has
-  // slightly different assumptions that the ones before (i.e.,
-  // assumes that the current alloc region has been retired).
+  // Allocation attempt that should be called during safepoints (e.g.,
+  // at the end of a successful GC). expect_null_mutator_alloc_region
+  // specifies whether the mutator alloc region is expected to be NULL
+  // or not.
   HeapWord* attempt_allocation_at_safepoint(size_t word_size,
-                                            bool expect_null_cur_alloc_region);
+                                       bool expect_null_mutator_alloc_region);
 
   // It dirties the cards that cover the block so that so that the post
   // write barrier never queues anything when updating objects on this
@@ -583,6 +503,12 @@
   // GC pause.
   void  retire_alloc_region(HeapRegion* alloc_region, bool par);
 
+  // These two methods are the "callbacks" from the G1AllocRegion class.
+
+  HeapRegion* new_mutator_alloc_region(size_t word_size, bool force);
+  void retire_mutator_alloc_region(HeapRegion* alloc_region,
+                                   size_t allocated_bytes);
+
   // - if explicit_gc is true, the GC is for a System.gc() or a heap
   //   inspection request and should collect the entire heap
   // - if clear_all_soft_refs is true, all soft references should be
@@ -1027,6 +953,9 @@
   // The number of regions available for "regular" expansion.
   size_t expansion_regions() { return _expansion_regions; }
 
+  void verify_dirty_young_list(HeapRegion* head) PRODUCT_RETURN;
+  void verify_dirty_young_regions() PRODUCT_RETURN;
+
   // verify_region_sets() performs verification over the region
   // lists. It will be compiled in the product code to be used when
   // necessary (i.e., during heap verification).
@@ -1061,7 +990,7 @@
   }
 
   void append_secondary_free_list() {
-    _free_list.add_as_tail(&_secondary_free_list);
+    _free_list.add_as_head(&_secondary_free_list);
   }
 
   void append_secondary_free_list_if_not_empty_with_lock() {
@@ -1128,7 +1057,13 @@
     return _g1_reserved.contains(p);
   }
 
-  // Returns a MemRegion that corresponds to the space that  has been
+  // Returns a MemRegion that corresponds to the space that has been
+  // reserved for the heap
+  MemRegion g1_reserved() {
+    return _g1_reserved;
+  }
+
+  // Returns a MemRegion that corresponds to the space that has been
   // committed in the heap
   MemRegion g1_committed() {
     return _g1_committed;
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.inline.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.inline.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -27,6 +27,7 @@
 
 #include "gc_implementation/g1/concurrentMark.hpp"
 #include "gc_implementation/g1/g1CollectedHeap.hpp"
+#include "gc_implementation/g1/g1AllocRegion.inline.hpp"
 #include "gc_implementation/g1/g1CollectorPolicy.hpp"
 #include "gc_implementation/g1/heapRegionSeq.inline.hpp"
 #include "utilities/taskqueue.hpp"
@@ -59,131 +60,23 @@
   return r != NULL && r->in_collection_set();
 }
 
-// See the comment in the .hpp file about the locking protocol and
-// assumptions of this method (and other related ones).
 inline HeapWord*
-G1CollectedHeap::allocate_from_cur_alloc_region(HeapRegion* cur_alloc_region,
-                                                size_t word_size,
-                                                bool with_heap_lock) {
-  assert_not_at_safepoint();
-  assert(with_heap_lock == Heap_lock->owned_by_self(),
-         "with_heap_lock and Heap_lock->owned_by_self() should be a tautology");
-  assert(cur_alloc_region != NULL, "pre-condition of the method");
-  assert(cur_alloc_region->is_young(),
-         "we only support young current alloc regions");
-  assert(!isHumongous(word_size), "allocate_from_cur_alloc_region() "
-         "should not be used for humongous allocations");
-  assert(!cur_alloc_region->isHumongous(), "Catch a regression of this bug.");
-
-  assert(!cur_alloc_region->is_empty(),
-         err_msg("region ["PTR_FORMAT","PTR_FORMAT"] should not be empty",
-                 cur_alloc_region->bottom(), cur_alloc_region->end()));
-  HeapWord* result = cur_alloc_region->par_allocate_no_bot_updates(word_size);
-  if (result != NULL) {
-    assert(is_in(result), "result should be in the heap");
-
-    if (with_heap_lock) {
-      Heap_lock->unlock();
-    }
-    assert_heap_not_locked();
-    // Do the dirtying after we release the Heap_lock.
-    dirty_young_block(result, word_size);
-    return result;
-  }
-
-  if (with_heap_lock) {
-    assert_heap_locked();
-  } else {
-    assert_heap_not_locked();
-  }
-  return NULL;
-}
-
-// See the comment in the .hpp file about the locking protocol and
-// assumptions of this method (and other related ones).
-inline HeapWord*
-G1CollectedHeap::attempt_allocation(size_t word_size) {
+G1CollectedHeap::attempt_allocation(size_t word_size,
+                                    unsigned int* gc_count_before_ret) {
   assert_heap_not_locked_and_not_at_safepoint();
-  assert(!isHumongous(word_size), "attempt_allocation() should not be called "
-         "for humongous allocation requests");
-
-  HeapRegion* cur_alloc_region = _cur_alloc_region;
-  if (cur_alloc_region != NULL) {
-    HeapWord* result = allocate_from_cur_alloc_region(cur_alloc_region,
-                                                   word_size,
-                                                   false /* with_heap_lock */);
-    assert_heap_not_locked();
-    if (result != NULL) {
-      return result;
-    }
-  }
+  assert(!isHumongous(word_size), "attempt_allocation() should not "
+         "be called for humongous allocation requests");
 
-  // Our attempt to allocate lock-free failed as the current
-  // allocation region is either NULL or full. So, we'll now take the
-  // Heap_lock and retry.
-  Heap_lock->lock();
-
-  HeapWord* result = attempt_allocation_locked(word_size);
-  if (result != NULL) {
-    assert_heap_not_locked();
-    return result;
+  HeapWord* result = _mutator_alloc_region.attempt_allocation(word_size,
+                                                      false /* bot_updates */);
+  if (result == NULL) {
+    result = attempt_allocation_slow(word_size, gc_count_before_ret);
   }
-
-  assert_heap_locked();
-  return NULL;
-}
-
-inline void
-G1CollectedHeap::retire_cur_alloc_region_common(HeapRegion* cur_alloc_region) {
-  assert_heap_locked_or_at_safepoint(true /* should_be_vm_thread */);
-  assert(cur_alloc_region != NULL && cur_alloc_region == _cur_alloc_region,
-         "pre-condition of the call");
-  assert(cur_alloc_region->is_young(),
-         "we only support young current alloc regions");
-
-  // The region is guaranteed to be young
-  g1_policy()->add_region_to_incremental_cset_lhs(cur_alloc_region);
-  _summary_bytes_used += cur_alloc_region->used();
-  _cur_alloc_region = NULL;
-}
-
-inline HeapWord*
-G1CollectedHeap::attempt_allocation_locked(size_t word_size) {
-  assert_heap_locked_and_not_at_safepoint();
-  assert(!isHumongous(word_size), "attempt_allocation_locked() "
-         "should not be called for humongous allocation requests");
-
-  // First, reread the current alloc region and retry the allocation
-  // in case somebody replaced it while we were waiting to get the
-  // Heap_lock.
-  HeapRegion* cur_alloc_region = _cur_alloc_region;
-  if (cur_alloc_region != NULL) {
-    HeapWord* result = allocate_from_cur_alloc_region(
-                                                  cur_alloc_region, word_size,
-                                                  true /* with_heap_lock */);
-    if (result != NULL) {
-      assert_heap_not_locked();
-      return result;
-    }
-
-    // We failed to allocate out of the current alloc region, so let's
-    // retire it before getting a new one.
-    retire_cur_alloc_region(cur_alloc_region);
+  assert_heap_not_locked();
+  if (result != NULL) {
+    dirty_young_block(result, word_size);
   }
-
-  assert_heap_locked();
-  // Try to get a new region and allocate out of it
-  HeapWord* result = replace_cur_alloc_region_and_allocate(word_size,
-                                                     false, /* at_safepoint */
-                                                     true,  /* do_dirtying */
-                                                     false  /* can_expand */);
-  if (result != NULL) {
-    assert_heap_not_locked();
-    return result;
-  }
-
-  assert_heap_locked();
-  return NULL;
+  return result;
 }
 
 // It dirties the cards that cover the block so that so that the post
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -307,6 +307,7 @@
   _par_last_termination_times_ms = new double[_parallel_gc_threads];
   _par_last_termination_attempts = new double[_parallel_gc_threads];
   _par_last_gc_worker_end_times_ms = new double[_parallel_gc_threads];
+  _par_last_gc_worker_times_ms = new double[_parallel_gc_threads];
 
   // start conservatively
   _expensive_region_limit_ms = 0.5 * (double) MaxGCPauseMillis;
@@ -911,6 +912,7 @@
     _par_last_termination_times_ms[i] = -1234.0;
     _par_last_termination_attempts[i] = -1234.0;
     _par_last_gc_worker_end_times_ms[i] = -1234.0;
+    _par_last_gc_worker_times_ms[i] = -1234.0;
   }
 #endif
 
@@ -1063,8 +1065,7 @@
 
 void G1CollectorPolicy::print_par_stats(int level,
                                         const char* str,
-                                        double* data,
-                                         bool summary) {
+                                        double* data) {
   double min = data[0], max = data[0];
   double total = 0.0;
   LineBuffer buf(level);
@@ -1078,20 +1079,15 @@
     total += val;
     buf.append("  %3.1lf", val);
   }
-  if (summary) {
-    buf.append_and_print_cr("");
-    double avg = total / (double) ParallelGCThreads;
-    buf.append(" ");
-    buf.append("Avg: %5.1lf, Min: %5.1lf, Max: %5.1lf",
-                        avg, min, max);
-  }
-  buf.append_and_print_cr("]");
+  buf.append_and_print_cr("");
+  double avg = total / (double) ParallelGCThreads;
+  buf.append_and_print_cr(" Avg: %5.1lf, Min: %5.1lf, Max: %5.1lf, Diff: %5.1lf]",
+    avg, min, max, max - min);
 }
 
 void G1CollectorPolicy::print_par_sizes(int level,
                                         const char* str,
-                                        double* data,
-                                        bool summary) {
+                                        double* data) {
   double min = data[0], max = data[0];
   double total = 0.0;
   LineBuffer buf(level);
@@ -1105,14 +1101,10 @@
     total += val;
     buf.append(" %d", (int) val);
   }
-  if (summary) {
-    buf.append_and_print_cr("");
-    double avg = total / (double) ParallelGCThreads;
-    buf.append(" ");
-    buf.append("Sum: %d, Avg: %d, Min: %d, Max: %d",
-               (int)total, (int)avg, (int)min, (int)max);
-  }
-  buf.append_and_print_cr("]");
+  buf.append_and_print_cr("");
+  double avg = total / (double) ParallelGCThreads;
+  buf.append_and_print_cr(" Sum: %d, Avg: %d, Min: %d, Max: %d, Diff: %d]",
+    (int)total, (int)avg, (int)min, (int)max, (int)max - (int)min);
 }
 
 void G1CollectorPolicy::print_stats (int level,
@@ -1421,22 +1413,22 @@
     }
     if (parallel) {
       print_stats(1, "Parallel Time", _cur_collection_par_time_ms);
-      print_par_stats(2, "GC Worker Start Time",
-                      _par_last_gc_worker_start_times_ms, false);
+      print_par_stats(2, "GC Worker Start Time", _par_last_gc_worker_start_times_ms);
       print_par_stats(2, "Update RS", _par_last_update_rs_times_ms);
-      print_par_sizes(3, "Processed Buffers",
-                      _par_last_update_rs_processed_buffers, true);
-      print_par_stats(2, "Ext Root Scanning",
-                      _par_last_ext_root_scan_times_ms);
-      print_par_stats(2, "Mark Stack Scanning",
-                      _par_last_mark_stack_scan_times_ms);
+      print_par_sizes(3, "Processed Buffers", _par_last_update_rs_processed_buffers);
+      print_par_stats(2, "Ext Root Scanning", _par_last_ext_root_scan_times_ms);
+      print_par_stats(2, "Mark Stack Scanning", _par_last_mark_stack_scan_times_ms);
       print_par_stats(2, "Scan RS", _par_last_scan_rs_times_ms);
       print_par_stats(2, "Object Copy", _par_last_obj_copy_times_ms);
       print_par_stats(2, "Termination", _par_last_termination_times_ms);
-      print_par_sizes(3, "Termination Attempts",
-                      _par_last_termination_attempts, true);
-      print_par_stats(2, "GC Worker End Time",
-                      _par_last_gc_worker_end_times_ms, false);
+      print_par_sizes(3, "Termination Attempts", _par_last_termination_attempts);
+      print_par_stats(2, "GC Worker End Time", _par_last_gc_worker_end_times_ms);
+
+      for (int i = 0; i < _parallel_gc_threads; i++) {
+        _par_last_gc_worker_times_ms[i] = _par_last_gc_worker_end_times_ms[i] - _par_last_gc_worker_start_times_ms[i];
+      }
+      print_par_stats(2, "GC Worker Times", _par_last_gc_worker_times_ms);
+
       print_stats(2, "Other", parallel_other_time);
       print_stats(1, "Clear CT", _cur_clear_ct_time_ms);
     } else {
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -182,6 +182,7 @@
   double* _par_last_termination_times_ms;
   double* _par_last_termination_attempts;
   double* _par_last_gc_worker_end_times_ms;
+  double* _par_last_gc_worker_times_ms;
 
   // indicates that we are in young GC mode
   bool _in_young_gc_mode;
@@ -569,11 +570,8 @@
   void print_stats(int level, const char* str, double value);
   void print_stats(int level, const char* str, int value);
 
-  void print_par_stats(int level, const char* str, double* data) {
-    print_par_stats(level, str, data, true);
-  }
-  void print_par_stats(int level, const char* str, double* data, bool summary);
-  void print_par_sizes(int level, const char* str, double* data, bool summary);
+  void print_par_stats(int level, const char* str, double* data);
+  void print_par_sizes(int level, const char* str, double* data);
 
   void check_other_times(int level,
                          NumberSeq* other_times_ms,
--- a/hotspot/src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -89,6 +89,11 @@
           "The number of discovered reference objects to process before "   \
           "draining concurrent marking work queues.")                       \
                                                                             \
+  experimental(bool, G1UseConcMarkReferenceProcessing, false,               \
+          "If true, enable reference discovery during concurrent "          \
+          "marking and reference processing at the end of remark "          \
+          "(unsafe).")                                                      \
+                                                                            \
   develop(bool, G1SATBBarrierPrintNullPreVals, false,                       \
           "If true, count frac of ptr writes with null pre-vals.")          \
                                                                             \
@@ -138,9 +143,9 @@
   develop(bool, G1RSCountHisto, false,                                      \
           "If true, print a histogram of RS occupancies after each pause")  \
                                                                             \
-  develop(intx, G1PrintRegionLivenessInfo, 0,                               \
-          "When > 0, print the occupancies of the <n> best and worst"       \
-          "regions.")                                                       \
+  product(bool, G1PrintRegionLivenessInfo, false,                           \
+          "Prints the liveness information for all regions in the heap "    \
+          "at the end of a marking cycle.")                                 \
                                                                             \
   develop(bool, G1PrintParCleanupStats, false,                              \
           "When true, print extra stats about parallel cleanup.")           \
@@ -193,6 +198,10 @@
   develop(intx, G1ConcRSHotCardLimit, 4,                                    \
           "The threshold that defines (>=) a hot card.")                    \
                                                                             \
+  develop(intx, G1MaxHotCardCountSizePercent, 25,                           \
+          "The maximum size of the hot card count cache as a "              \
+          "percentage of the number of cards for the maximum heap.")        \
+                                                                            \
   develop(bool, G1PrintOopAppls, false,                                     \
           "When true, print applications of closures to external locs.")    \
                                                                             \
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -360,6 +360,7 @@
   set_young_index_in_cset(-1);
   uninstall_surv_rate_group();
   set_young_type(NotYoung);
+  reset_pre_dummy_top();
 
   if (!par) {
     // If this is parallel, this will be done later.
@@ -923,11 +924,11 @@
     ContiguousSpace::set_saved_mark();
     OrderAccess::storestore();
     _gc_time_stamp = curr_gc_time_stamp;
-    // The following fence is to force a flush of the writes above, but
-    // is strictly not needed because when an allocating worker thread
-    // calls set_saved_mark() it does so under the ParGCRareEvent_lock;
-    // when the lock is released, the write will be flushed.
-    // OrderAccess::fence();
+    // No need to do another barrier to flush the writes above. If
+    // this is called in parallel with other threads trying to
+    // allocate into the region, the caller should call this while
+    // holding a lock and when the lock is released the writes will be
+    // flushed.
   }
 }
 
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegion.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegion.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -149,6 +149,13 @@
   G1BlockOffsetArrayContigSpace _offsets;
   Mutex _par_alloc_lock;
   volatile unsigned _gc_time_stamp;
+  // When we need to retire an allocation region, while other threads
+  // are also concurrently trying to allocate into it, we typically
+  // allocate a dummy object at the end of the region to ensure that
+  // no more allocations can take place in it. However, sometimes we
+  // want to know where the end of the last "real" object we allocated
+  // into the region was and this is what this keeps track.
+  HeapWord* _pre_dummy_top;
 
  public:
   // Constructor.  If "is_zeroed" is true, the MemRegion "mr" may be
@@ -163,6 +170,17 @@
   virtual void set_saved_mark();
   void reset_gc_time_stamp() { _gc_time_stamp = 0; }
 
+  // See the comment above in the declaration of _pre_dummy_top for an
+  // explanation of what it is.
+  void set_pre_dummy_top(HeapWord* pre_dummy_top) {
+    assert(is_in(pre_dummy_top) && pre_dummy_top <= top(), "pre-condition");
+    _pre_dummy_top = pre_dummy_top;
+  }
+  HeapWord* pre_dummy_top() {
+    return (_pre_dummy_top == NULL) ? top() : _pre_dummy_top;
+  }
+  void reset_pre_dummy_top() { _pre_dummy_top = NULL; }
+
   virtual void initialize(MemRegion mr, bool clear_space, bool mangle_space);
   virtual void clear(bool mangle_space);
 
@@ -380,13 +398,16 @@
 
   // The number of bytes marked live in the region in the last marking phase.
   size_t marked_bytes()    { return _prev_marked_bytes; }
+  size_t live_bytes() {
+    return (top() - prev_top_at_mark_start()) * HeapWordSize + marked_bytes();
+  }
+
   // The number of bytes counted in the next marking.
   size_t next_marked_bytes() { return _next_marked_bytes; }
   // The number of bytes live wrt the next marking.
   size_t next_live_bytes() {
-    return (top() - next_top_at_mark_start())
-      * HeapWordSize
-      + next_marked_bytes();
+    return
+      (top() - next_top_at_mark_start()) * HeapWordSize + next_marked_bytes();
   }
 
   // A lower bound on the amount of garbage bytes in the region.
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegion.inline.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegion.inline.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -38,15 +38,8 @@
 // this is used for larger LAB allocations only.
 inline HeapWord* G1OffsetTableContigSpace::par_allocate(size_t size) {
   MutexLocker x(&_par_alloc_lock);
-  // This ought to be just "allocate", because of the lock above, but that
-  // ContiguousSpace::allocate asserts that either the allocating thread
-  // holds the heap lock or it is the VM thread and we're at a safepoint.
-  // The best I (dld) could figure was to put a field in ContiguousSpace
-  // meaning "locking at safepoint taken care of", and set/reset that
-  // here.  But this will do for now, especially in light of the comment
-  // above.  Perhaps in the future some lock-free manner of keeping the
-  // coordination.
-  HeapWord* res = ContiguousSpace::par_allocate(size);
+  // Given that we take the lock no need to use par_allocate() here.
+  HeapWord* res = ContiguousSpace::allocate(size);
   if (res != NULL) {
     _offsets.alloc_block(res, size);
   }
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionSet.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionSet.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -261,6 +261,45 @@
   msg->append(" hd: "PTR_FORMAT" tl: "PTR_FORMAT, head(), tail());
 }
 
+void HeapRegionLinkedList::add_as_head(HeapRegionLinkedList* from_list) {
+  hrs_assert_mt_safety_ok(this);
+  hrs_assert_mt_safety_ok(from_list);
+
+  verify_optional();
+  from_list->verify_optional();
+
+  if (from_list->is_empty()) return;
+
+#ifdef ASSERT
+  HeapRegionLinkedListIterator iter(from_list);
+  while (iter.more_available()) {
+    HeapRegion* hr = iter.get_next();
+    // In set_containing_set() we check that we either set the value
+    // from NULL to non-NULL or vice versa to catch bugs. So, we have
+    // to NULL it first before setting it to the value.
+    hr->set_containing_set(NULL);
+    hr->set_containing_set(this);
+  }
+#endif // ASSERT
+
+  if (_head != NULL) {
+    assert(length() >  0 && _tail != NULL, hrs_ext_msg(this, "invariant"));
+    from_list->_tail->set_next(_head);
+  } else {
+    assert(length() == 0 && _head == NULL, hrs_ext_msg(this, "invariant"));
+    _tail = from_list->_tail;
+  }
+  _head = from_list->_head;
+
+  _length           += from_list->length();
+  _region_num       += from_list->region_num();
+  _total_used_bytes += from_list->total_used_bytes();
+  from_list->clear();
+
+  verify_optional();
+  from_list->verify_optional();
+}
+
 void HeapRegionLinkedList::add_as_tail(HeapRegionLinkedList* from_list) {
   hrs_assert_mt_safety_ok(this);
   hrs_assert_mt_safety_ok(from_list);
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionSet.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionSet.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -277,6 +277,10 @@
   }
 
 public:
+  // It adds hr to the list as the new head. The region should not be
+  // a member of another set.
+  inline void add_as_head(HeapRegion* hr);
+
   // It adds hr to the list as the new tail. The region should not be
   // a member of another set.
   inline void add_as_tail(HeapRegion* hr);
@@ -290,6 +294,11 @@
 
   // It moves the regions from from_list to this list and empties
   // from_list. The new regions will appear in the same order as they
+  // were in from_list and be linked in the beginning of this list.
+  void add_as_head(HeapRegionLinkedList* from_list);
+
+  // It moves the regions from from_list to this list and empties
+  // from_list. The new regions will appear in the same order as they
   // were in from_list and be linked in the end of this list.
   void add_as_tail(HeapRegionLinkedList* from_list);
 
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionSet.inline.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionSet.inline.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -110,6 +110,23 @@
 
 //////////////////// HeapRegionLinkedList ////////////////////
 
+inline void HeapRegionLinkedList::add_as_head(HeapRegion* hr) {
+  hrs_assert_mt_safety_ok(this);
+  assert((length() == 0 && _head == NULL && _tail == NULL) ||
+         (length() >  0 && _head != NULL && _tail != NULL),
+         hrs_ext_msg(this, "invariant"));
+  // add_internal() will verify the region.
+  add_internal(hr);
+
+  // Now link the region.
+  if (_head != NULL) {
+    hr->set_next(_head);
+  } else {
+    _tail = hr;
+  }
+  _head = hr;
+}
+
 inline void HeapRegionLinkedList::add_as_tail(HeapRegion* hr) {
   hrs_assert_mt_safety_ok(this);
   assert((length() == 0 && _head == NULL && _tail == NULL) ||
--- a/hotspot/src/share/vm/gc_implementation/g1/vm_operations_g1.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/vm_operations_g1.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.inline.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.inline.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/gc_implementation/shared/allocationStats.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/shared/allocationStats.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/gc_implementation/shared/concurrentGCThread.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/shared/concurrentGCThread.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/gc_implementation/shared/gcUtil.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/shared/gcUtil.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/gc_implementation/shared/markSweep.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_implementation/shared/markSweep.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/gc_interface/collectedHeap.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/gc_interface/collectedHeap.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -2383,17 +2383,6 @@
       }
 
       DEFAULT:
-#ifdef ZERO
-          // Some zero configurations use the C++ interpreter as a
-          // fallback interpreter and have support for platform
-          // specific fast bytecodes which aren't supported here, so
-          // redispatch to the equivalent non-fast bytecode when they
-          // are encountered.
-          if (Bytecodes::is_defined((Bytecodes::Code)opcode)) {
-              opcode = (jubyte)Bytecodes::java_code((Bytecodes::Code)opcode);
-              goto opcode_switch;
-          }
-#endif
           fatal(err_msg("Unimplemented opcode %d = %s", opcode,
                         Bytecodes::name((Bytecodes::Code)opcode)));
           goto finish;
--- a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.inline.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.inline.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/interpreter/cppInterpreter.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/interpreter/cppInterpreter.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/interpreter/cppInterpreterGenerator.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/interpreter/cppInterpreterGenerator.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/interpreter/interpreter.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/interpreter/interpreter.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/interpreter/interpreterGenerator.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/interpreter/interpreterGenerator.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/interpreter/linkResolver.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/interpreter/linkResolver.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -176,7 +176,7 @@
 
 void LinkResolver::lookup_method_in_klasses(methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS) {
   methodOop result_oop = klass->uncached_lookup_method(name, signature);
-  if (EnableMethodHandles && result_oop != NULL) {
+  if (EnableInvokeDynamic && result_oop != NULL) {
     switch (result_oop->intrinsic_id()) {
     case vmIntrinsics::_invokeExact:
     case vmIntrinsics::_invokeGeneric:
@@ -214,7 +214,7 @@
                                           KlassHandle klass, Symbol* name, Symbol* signature,
                                           KlassHandle current_klass,
                                           TRAPS) {
-  if (EnableMethodHandles &&
+  if (EnableInvokeDynamic &&
       klass() == SystemDictionary::MethodHandle_klass() &&
       methodOopDesc::is_method_handle_invoke_name(name)) {
     if (!THREAD->is_Compiler_thread() && !MethodHandles::enabled()) {
--- a/hotspot/src/share/vm/interpreter/linkResolver.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/interpreter/linkResolver.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/interpreter/templateInterpreter.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/interpreter/templateInterpreter.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/interpreter/templateTable.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/interpreter/templateTable.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/memory/barrierSet.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/memory/barrierSet.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/memory/cardTableModRefBS.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/memory/cardTableModRefBS.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -382,6 +382,11 @@
     return (addr_for(pcard) == p);
   }
 
+  HeapWord* align_to_card_boundary(HeapWord* p) {
+    jbyte* pcard = byte_for(p + card_size_in_words - 1);
+    return addr_for(pcard);
+  }
+
   // The kinds of precision a CardTableModRefBS may offer.
   enum PrecisionStyle {
     Precise,
--- a/hotspot/src/share/vm/memory/cardTableRS.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/memory/cardTableRS.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -318,17 +318,28 @@
 protected:
   template <class T> void do_oop_work(T* p) {
     HeapWord* jp = (HeapWord*)p;
-    if (jp >= _begin && jp < _end) {
-      oop obj = oopDesc::load_decode_heap_oop(p);
-      guarantee(obj == NULL ||
-                (HeapWord*)p < _boundary ||
-                (HeapWord*)obj >= _boundary,
-                "pointer on clean card crosses boundary");
-    }
+    assert(jp >= _begin && jp < _end,
+           err_msg("Error: jp " PTR_FORMAT " should be within "
+                   "[_begin, _end) = [" PTR_FORMAT "," PTR_FORMAT ")",
+                   _begin, _end));
+    oop obj = oopDesc::load_decode_heap_oop(p);
+    guarantee(obj == NULL || (HeapWord*)obj >= _boundary,
+              err_msg("pointer " PTR_FORMAT " at " PTR_FORMAT " on "
+                      "clean card crosses boundary" PTR_FORMAT,
+                      (HeapWord*)obj, jp, _boundary));
   }
+
 public:
   VerifyCleanCardClosure(HeapWord* b, HeapWord* begin, HeapWord* end) :
-    _boundary(b), _begin(begin), _end(end) {}
+    _boundary(b), _begin(begin), _end(end) {
+    assert(b <= begin,
+           err_msg("Error: boundary " PTR_FORMAT " should be at or below begin " PTR_FORMAT,
+                   b, begin));
+    assert(begin <= end,
+           err_msg("Error: begin " PTR_FORMAT " should be strictly below end " PTR_FORMAT,
+                   begin, end));
+  }
+
   virtual void do_oop(oop* p)       { VerifyCleanCardClosure::do_oop_work(p); }
   virtual void do_oop(narrowOop* p) { VerifyCleanCardClosure::do_oop_work(p); }
 };
@@ -392,13 +403,14 @@
         }
       }
       // Now traverse objects until end.
-      HeapWord* cur = start_block;
-      VerifyCleanCardClosure verify_blk(gen_boundary, begin, end);
-      while (cur < end) {
-        if (s->block_is_obj(cur) && s->obj_is_alive(cur)) {
-          oop(cur)->oop_iterate(&verify_blk);
+      if (begin < end) {
+        MemRegion mr(begin, end);
+        VerifyCleanCardClosure verify_blk(gen_boundary, begin, end);
+        for (HeapWord* cur = start_block; cur < end; cur += s->block_size(cur)) {
+          if (s->block_is_obj(cur) && s->obj_is_alive(cur)) {
+            oop(cur)->oop_iterate(&verify_blk, mr);
+          }
         }
-        cur += s->block_size(cur);
       }
       cur_entry = first_dirty;
     } else {
--- a/hotspot/src/share/vm/memory/classify.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/memory/classify.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/memory/compactingPermGenGen.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/memory/compactingPermGenGen.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/memory/dump.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/memory/dump.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
@@ -80,16 +80,7 @@
       oop obj = *p;
       if (obj->klass() == SystemDictionary::String_klass()) {
 
-        int hash;
-        typeArrayOop value = java_lang_String::value(obj);
-        int length = java_lang_String::length(obj);
-        if (length == 0) {
-          hash = 0;
-        } else {
-          int offset = java_lang_String::offset(obj);
-          jchar* s = value->char_at_addr(offset);
-          hash = StringTable::hash_string(s, length);
-        }
+        int hash = java_lang_String::hash_string(obj);
         obj->int_field_put(hash_offset, hash);
       }
     }
--- a/hotspot/src/share/vm/memory/genCollectedHeap.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/memory/genCollectedHeap.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/memory/genMarkSweep.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/memory/genMarkSweep.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/memory/heap.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/memory/heap.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/memory/heapInspection.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/memory/heapInspection.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/memory/iterator.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/memory/iterator.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/memory/restore.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/memory/restore.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/memory/serialize.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/memory/serialize.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/memory/sharedHeap.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/memory/sharedHeap.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/memory/space.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/memory/space.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -818,9 +818,14 @@
 // This version requires locking.
 inline HeapWord* ContiguousSpace::allocate_impl(size_t size,
                                                 HeapWord* const end_value) {
+  // In G1 there are places where a GC worker can allocates into a
+  // region using this serial allocation code without being prone to a
+  // race with other GC workers (we ensure that no other GC worker can
+  // access the same region at the same time). So the assert below is
+  // too strong in the case of G1.
   assert(Heap_lock->owned_by_self() ||
          (SafepointSynchronize::is_at_safepoint() &&
-          Thread::current()->is_VM_thread()),
+                               (Thread::current()->is_VM_thread() || UseG1GC)),
          "not locked");
   HeapWord* obj = top();
   if (pointer_delta(end_value, obj) >= size) {
--- a/hotspot/src/share/vm/memory/universe.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/memory/universe.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/oops/arrayKlass.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/oops/arrayKlass.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/oops/arrayOop.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/oops/arrayOop.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/oops/constantPoolKlass.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/oops/constantPoolKlass.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -245,13 +245,13 @@
   }
   oop* addr;
   addr = cp->tags_addr();
-  blk->do_oop(addr);
+  if (mr.contains(addr)) blk->do_oop(addr);
   addr = cp->cache_addr();
-  blk->do_oop(addr);
+  if (mr.contains(addr)) blk->do_oop(addr);
   addr = cp->operands_addr();
-  blk->do_oop(addr);
+  if (mr.contains(addr)) blk->do_oop(addr);
   addr = cp->pool_holder_addr();
-  blk->do_oop(addr);
+  if (mr.contains(addr)) blk->do_oop(addr);
   return size;
 }
 
@@ -286,7 +286,7 @@
   assert(obj->is_constantPool(), "should be constant pool");
   constantPoolOop cp = (constantPoolOop) obj;
   if (cp->tags() != NULL &&
-      (!JavaObjectsInPerm || (AnonymousClasses && cp->has_pseudo_string()))) {
+      (!JavaObjectsInPerm || (EnableInvokeDynamic && cp->has_pseudo_string()))) {
     for (int i = 1; i < cp->length(); ++i) {
       if (cp->tag_at(i).is_string()) {
         oop* base = cp->obj_at_addr_raw(i);
--- a/hotspot/src/share/vm/oops/constantPoolOop.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/oops/constantPoolOop.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -429,7 +429,7 @@
 
   // A "pseudo-string" is an non-string oop that has found is way into
   // a String entry.
-  // Under AnonymousClasses this can happen if the user patches a live
+  // Under EnableInvokeDynamic this can happen if the user patches a live
   // object into a CONSTANT_String entry of an anonymous class.
   // Method oops internally created for method handles may also
   // use pseudo-strings to link themselves to related metaobjects.
@@ -442,7 +442,7 @@
   }
 
   void pseudo_string_at_put(int which, oop x) {
-    assert(AnonymousClasses, "");
+    assert(EnableInvokeDynamic, "");
     set_pseudo_string();        // mark header
     assert(tag_at(which).is_string() || tag_at(which).is_unresolved_string(), "Corrupted constant pool");
     string_at_put(which, x);    // this works just fine
--- a/hotspot/src/share/vm/oops/cpCacheKlass.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/oops/cpCacheKlass.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/oops/generateOopMap.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/oops/generateOopMap.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/oops/instanceKlass.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/oops/instanceKlass.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -2337,7 +2337,7 @@
     st->print_cr(BULLET"fake entry for oop_size: %d", java_lang_Class::oop_size(obj));
     st->print_cr(BULLET"fake entry for static_oop_field_count: %d", java_lang_Class::static_oop_field_count(obj));
     klassOop real_klass = java_lang_Class::as_klassOop(obj);
-    if (real_klass && real_klass->klass_part()->oop_is_instance()) {
+    if (real_klass != NULL && real_klass->klass_part()->oop_is_instance()) {
       instanceKlass::cast(real_klass)->do_local_static_fields(&print_field);
     }
   } else if (as_klassOop() == SystemDictionary::MethodType_klass()) {
--- a/hotspot/src/share/vm/oops/instanceKlass.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/oops/instanceKlass.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -182,7 +182,7 @@
   // Protection domain.
   oop             _protection_domain;
   // Host class, which grants its access privileges to this class also.
-  // This is only non-null for an anonymous class (AnonymousClasses enabled).
+  // This is only non-null for an anonymous class (JSR 292 enabled).
   // The host class is either named, or a previously loaded anonymous class.
   klassOop        _host_klass;
   // Class signers.
--- a/hotspot/src/share/vm/oops/instanceMirrorKlass.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/oops/instanceMirrorKlass.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -36,6 +36,8 @@
 
 
 class instanceMirrorKlass: public instanceKlass {
+  friend class VMStructs;
+
  private:
   static int _offset_of_static_fields;
 
--- a/hotspot/src/share/vm/oops/klass.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/oops/klass.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -500,7 +500,7 @@
   if (oop_is_instance()) {
     instanceKlass* ik = (instanceKlass*) this;
     if (ik->is_anonymous()) {
-      assert(AnonymousClasses, "");
+      assert(EnableInvokeDynamic, "");
       intptr_t hash = ik->java_mirror()->identity_hash();
       char     hash_buf[40];
       sprintf(hash_buf, "/" UINTX_FORMAT, (uintx)hash);
--- a/hotspot/src/share/vm/oops/markOop.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/oops/markOop.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/oops/methodOop.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/oops/methodOop.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -607,7 +607,7 @@
   // method handles want to be able to push a few extra values (e.g., a bound receiver), and
   // invokedynamic sometimes needs to push a bootstrap method, call site, and arglist,
   // all without checking for a stack overflow
-  static int extra_stack_entries() { return (EnableMethodHandles ? (int)MethodHandlePushLimit : 0) + (EnableInvokeDynamic ? 3 : 0); }
+  static int extra_stack_entries() { return EnableInvokeDynamic ? (int) MethodHandlePushLimit + 3 : 0; }
   static int extra_stack_words();  // = extra_stack_entries() * Interpreter::stackElementSize()
 
   // RedefineClasses() support:
--- a/hotspot/src/share/vm/oops/symbol.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/oops/symbol.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/oops/symbol.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/oops/symbol.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/oops/typeArrayOop.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/oops/typeArrayOop.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/opto/buildOopMap.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/buildOopMap.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/opto/bytecodeInfo.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/bytecodeInfo.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -25,6 +25,7 @@
 #include "precompiled.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "classfile/vmSymbols.hpp"
+#include "compiler/compileBroker.hpp"
 #include "compiler/compileLog.hpp"
 #include "interpreter/linkResolver.hpp"
 #include "oops/objArrayKlass.hpp"
@@ -75,13 +76,6 @@
   assert(!UseOldInlining, "do not use for old stuff");
 }
 
-
-
-static void print_indent(int depth) {
-  tty->print("      ");
-  for (int i = depth; i != 0; --i) tty->print("  ");
-}
-
 static bool is_init_with_ea(ciMethod* callee_method,
                             ciMethod* caller_method, Compile* C) {
   // True when EA is ON and a java constructor is called or
@@ -100,7 +94,7 @@
   if(callee_method->should_inline()) {
     *wci_result = *(WarmCallInfo::always_hot());
     if (PrintInlining && Verbose) {
-      print_indent(inline_depth());
+      CompileTask::print_inline_indent(inline_depth());
       tty->print_cr("Inlined method is hot: ");
     }
     return NULL;
@@ -116,7 +110,7 @@
      size < InlineThrowMaxSize ) {
     wci_result->set_profit(wci_result->profit() * 100);
     if (PrintInlining && Verbose) {
-      print_indent(inline_depth());
+      CompileTask::print_inline_indent(inline_depth());
       tty->print_cr("Inlined method with many throws (throws=%d):", callee_method->interpreter_throwout_count());
     }
     return NULL;
@@ -138,9 +132,9 @@
 
     max_size = C->freq_inline_size();
     if (size <= max_size && TraceFrequencyInlining) {
-      print_indent(inline_depth());
+      CompileTask::print_inline_indent(inline_depth());
       tty->print_cr("Inlined frequent method (freq=%d count=%d):", freq, call_site_count);
-      print_indent(inline_depth());
+      CompileTask::print_inline_indent(inline_depth());
       callee_method->print();
       tty->cr();
     }
@@ -315,8 +309,25 @@
   if( inline_depth() > MaxInlineLevel ) {
     return "inlining too deep";
   }
-  if( method() == callee_method &&
-      inline_depth() > MaxRecursiveInlineLevel ) {
+
+  // We need to detect recursive inlining of method handle targets: if
+  // the current method is a method handle adapter and one of the
+  // callers is the same method as the callee, we bail out if
+  // MaxRecursiveInlineLevel is hit.
+  if (method()->is_method_handle_adapter()) {
+    JVMState* jvms = caller_jvms();
+    int inline_level = 0;
+    while (jvms != NULL && jvms->has_method()) {
+      if (jvms->method() == callee_method) {
+        inline_level++;
+        if (inline_level > MaxRecursiveInlineLevel)
+          return "recursively inlining too deep";
+      }
+      jvms = jvms->caller();
+    }
+  }
+
+  if (method() == callee_method && inline_depth() > MaxRecursiveInlineLevel) {
     return "recursively inlining too deep";
   }
 
@@ -368,18 +379,14 @@
 #ifndef PRODUCT
 //------------------------------print_inlining---------------------------------
 // Really, the failure_msg can be a success message also.
-void InlineTree::print_inlining(ciMethod *callee_method, int caller_bci, const char *failure_msg) const {
-  print_indent(inline_depth());
-  tty->print("@ %d  ", caller_bci);
-  if( callee_method ) callee_method->print_short_name();
-  else                tty->print(" callee not monotonic or profiled");
-  tty->print("  %s", (failure_msg ? failure_msg : "inline"));
-  if( Verbose && callee_method ) {
+void InlineTree::print_inlining(ciMethod* callee_method, int caller_bci, const char* failure_msg) const {
+  CompileTask::print_inlining(callee_method, inline_depth(), caller_bci, failure_msg ? failure_msg : "inline");
+  if (callee_method == NULL)  tty->print(" callee not monotonic or profiled");
+  if (Verbose && callee_method) {
     const InlineTree *top = this;
     while( top->caller_tree() != NULL ) { top = top->caller_tree(); }
     tty->print("  bcs: %d+%d  invoked: %d", top->count_inline_bcs(), callee_method->code_size(), callee_method->interpreter_invocation_count());
   }
-  tty->cr();
 }
 #endif
 
--- a/hotspot/src/share/vm/opto/c2_globals.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/c2_globals.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/opto/c2compiler.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/c2compiler.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/opto/chaitin.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/chaitin.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
@@ -673,7 +673,7 @@
         case Op_RegD:
           lrg.set_num_regs(2);
           // Define platform specific register pressure
-#ifdef SPARC
+#if defined(SPARC) || defined(ARM)
           lrg.set_reg_pressure(2);
 #elif defined(IA32)
           if( ireg == Op_RegL ) {
--- a/hotspot/src/share/vm/opto/compile.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/compile.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -2544,6 +2544,36 @@
       frc.inc_inner_loop_count();
     }
     break;
+  case Op_LShiftI:
+  case Op_RShiftI:
+  case Op_URShiftI:
+  case Op_LShiftL:
+  case Op_RShiftL:
+  case Op_URShiftL:
+    if (Matcher::need_masked_shift_count) {
+      // The cpu's shift instructions don't restrict the count to the
+      // lower 5/6 bits. We need to do the masking ourselves.
+      Node* in2 = n->in(2);
+      juint mask = (n->bottom_type() == TypeInt::INT) ? (BitsPerInt - 1) : (BitsPerLong - 1);
+      const TypeInt* t = in2->find_int_type();
+      if (t != NULL && t->is_con()) {
+        juint shift = t->get_con();
+        if (shift > mask) { // Unsigned cmp
+          Compile* C = Compile::current();
+          n->set_req(2, ConNode::make(C, TypeInt::make(shift & mask)));
+        }
+      } else {
+        if (t == NULL || t->_lo < 0 || t->_hi > (int)mask) {
+          Compile* C = Compile::current();
+          Node* shift = new (C, 3) AndINode(in2, ConNode::make(C, TypeInt::make(mask)));
+          n->set_req(2, shift);
+        }
+      }
+      if (in2->outcnt() == 0) { // Remove dead node
+        in2->disconnect_inputs(NULL);
+      }
+    }
+    break;
   default:
     assert( !n->is_Call(), "" );
     assert( !n->is_Mem(), "" );
--- a/hotspot/src/share/vm/opto/doCall.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/doCall.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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,6 +27,7 @@
 #include "ci/ciCallSite.hpp"
 #include "ci/ciMethodHandle.hpp"
 #include "classfile/vmSymbols.hpp"
+#include "compiler/compileBroker.hpp"
 #include "compiler/compileLog.hpp"
 #include "interpreter/linkResolver.hpp"
 #include "opto/addnode.hpp"
@@ -43,17 +44,17 @@
 #ifndef PRODUCT
 void trace_type_profile(ciMethod *method, int depth, int bci, ciMethod *prof_method, ciKlass *prof_klass, int site_count, int receiver_count) {
   if (TraceTypeProfile || PrintInlining || PrintOptoInlining) {
-    tty->print("   ");
-    for( int i = 0; i < depth; i++ ) tty->print("  ");
-    if (!PrintOpto) {
-      method->print_short_name();
-      tty->print(" ->");
+    if (!PrintInlining) {
+      if (!PrintOpto && !PrintCompilation) {
+        method->print_short_name();
+        tty->cr();
+      }
+      CompileTask::print_inlining(prof_method, depth, bci);
     }
-    tty->print(" @ %d  ", bci);
-    prof_method->print_short_name();
-    tty->print("  >>TypeProfile (%d/%d counts) = ", receiver_count, site_count);
+    CompileTask::print_inline_indent(depth);
+    tty->print(" \\-> TypeProfile (%d/%d counts) = ", receiver_count, site_count);
     prof_klass->name()->print_symbol();
-    tty->print_cr(" (%d bytes)", prof_method->code_size());
+    tty->cr();
   }
 }
 #endif
@@ -269,13 +270,13 @@
           }
           if (miss_cg != NULL) {
             if (next_hit_cg != NULL) {
-              NOT_PRODUCT(trace_type_profile(jvms->method(), jvms->depth(), jvms->bci(), next_receiver_method, profile.receiver(1), site_count, profile.receiver_count(1)));
+              NOT_PRODUCT(trace_type_profile(jvms->method(), jvms->depth() - 1, jvms->bci(), next_receiver_method, profile.receiver(1), site_count, profile.receiver_count(1)));
               // We don't need to record dependency on a receiver here and below.
               // Whenever we inline, the dependency is added by Parse::Parse().
               miss_cg = CallGenerator::for_predicted_call(profile.receiver(1), miss_cg, next_hit_cg, PROB_MAX);
             }
             if (miss_cg != NULL) {
-              NOT_PRODUCT(trace_type_profile(jvms->method(), jvms->depth(), jvms->bci(), receiver_method, profile.receiver(0), site_count, receiver_count));
+              NOT_PRODUCT(trace_type_profile(jvms->method(), jvms->depth() - 1, jvms->bci(), receiver_method, profile.receiver(0), site_count, receiver_count));
               cg = CallGenerator::for_predicted_call(profile.receiver(0), miss_cg, hit_cg, profile.receiver_prob(0));
               if (cg != NULL)  return cg;
             }
--- a/hotspot/src/share/vm/opto/gcm.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/gcm.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/opto/graphKit.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/graphKit.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/opto/graphKit.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/graphKit.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/opto/idealGraphPrinter.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/idealGraphPrinter.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
@@ -599,11 +599,35 @@
 
     if (caller != NULL) {
       stringStream bciStream;
+      ciMethod* last = NULL;
+      int last_bci;
       while(caller) {
+        if (caller->has_method()) {
+          last = caller->method();
+          last_bci = caller->bci();
+        }
         bciStream.print("%d ", caller->bci());
         caller = caller->caller();
       }
       print_prop("bci", bciStream.as_string());
+      if (last != NULL && last->has_linenumber_table() && last_bci >= 0) {
+        print_prop("line", last->line_number_from_bci(last_bci));
+      }
+    }
+
+    if (node->debug_orig() != NULL) {
+      stringStream dorigStream;
+      Node* dorig = node->debug_orig();
+      if (dorig) {
+        dorigStream.print("%d ", dorig->_idx);
+        Node* first = dorig;
+        dorig = first->debug_orig();
+        while (dorig && dorig != first) {
+          dorigStream.print("%d ", dorig->_idx);
+          dorig = dorig->debug_orig();
+        }
+      }
+      print_prop("debug_orig", dorigStream.as_string());
     }
 
     if (_chaitin && _chaitin != (PhaseChaitin *)0xdeadbeef) {
@@ -628,6 +652,17 @@
   GrowableArray<Node *> nodeStack(Thread::current()->resource_area(), 0, 0, NULL);
   nodeStack.push(start);
   visited.test_set(start->_idx);
+  if (C->cfg() != NULL) {
+    // once we have a CFG there are some nodes that aren't really
+    // reachable but are in the CFG so add them here.
+    for (uint i = 0; i < C->cfg()->_blocks.size(); i++) {
+      Block *b = C->cfg()->_blocks[i];
+      for (uint s = 0; s < b->_nodes.size(); s++) {
+        nodeStack.push(b->_nodes[s]);
+      }
+    }
+  }
+
   while(nodeStack.length() > 0) {
 
     Node *n = nodeStack.pop();
@@ -686,16 +721,23 @@
       end_head();
 
       head(SUCCESSORS_ELEMENT);
-      for (uint s = 0; s < C->cfg()->_blocks[i]->_num_succs; s++) {
+      for (uint s = 0; s < b->_num_succs; s++) {
         begin_elem(SUCCESSOR_ELEMENT);
         print_attr(BLOCK_NAME_PROPERTY, b->_succs[s]->_pre_order);
         end_elem();
       }
       tail(SUCCESSORS_ELEMENT);
 
+      head(NODES_ELEMENT);
+      for (uint s = 0; s < b->_nodes.size(); s++) {
+        begin_elem(NODE_ELEMENT);
+        print_attr(NODE_ID_PROPERTY, get_node_id(b->_nodes[s]));
+        end_elem();
+      }
+      tail(NODES_ELEMENT);
+
       tail(BLOCK_ELEMENT);
     }
-
     tail(CONTROL_FLOW_ELEMENT);
   }
   tail(GRAPH_ELEMENT);
--- a/hotspot/src/share/vm/opto/idealGraphPrinter.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/idealGraphPrinter.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
@@ -45,15 +45,6 @@
 {
 private:
 
-  enum State
-  {
-    Invalid,
-    Valid,
-    New
-  };
-
-private:
-
   static const char *INDENT;
   static const char *TOP_ELEMENT;
   static const char *GROUP_ELEMENT;
--- a/hotspot/src/share/vm/opto/idealKit.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/idealKit.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/opto/idealKit.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/idealKit.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/opto/lcm.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/lcm.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
@@ -42,6 +42,9 @@
 #ifdef TARGET_ARCH_MODEL_zero
 # include "adfiles/ad_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_MODEL_arm
+# include "adfiles/ad_arm.hpp"
+#endif
 
 // Optimization - Graph Style
 
--- a/hotspot/src/share/vm/opto/library_call.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/library_call.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -25,6 +25,7 @@
 #include "precompiled.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "classfile/vmSymbols.hpp"
+#include "compiler/compileBroker.hpp"
 #include "compiler/compileLog.hpp"
 #include "oops/objArrayKlass.hpp"
 #include "opto/addnode.hpp"
@@ -388,11 +389,7 @@
 #endif
   if (kit.try_to_inline()) {
     if (PrintIntrinsics || PrintInlining NOT_PRODUCT( || PrintOptoInlining) ) {
-      tty->print("Inlining intrinsic %s%s at bci:%d in",
-                 vmIntrinsics::name_at(intrinsic_id()),
-                 (is_virtual() ? " (virtual)" : ""), kit.bci());
-      kit.caller()->print_short_name(tty);
-      tty->print_cr(" (%d bytes)", kit.caller()->code_size());
+      CompileTask::print_inlining(kit.callee(), jvms->depth() - 1, kit.bci(), is_virtual() ? "(intrinsic, virtual)" : "(intrinsic)");
     }
     C->gather_intrinsic_statistics(intrinsic_id(), is_virtual(), Compile::_intrinsic_worked);
     if (C->log()) {
--- a/hotspot/src/share/vm/opto/locknode.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/locknode.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/opto/loopTransform.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/loopTransform.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
@@ -396,16 +396,16 @@
 // Return exact loop trip count, or 0 if not maximally unrolling
 bool IdealLoopTree::policy_maximally_unroll( PhaseIdealLoop *phase ) const {
   CountedLoopNode *cl = _head->as_CountedLoop();
-  assert( cl->is_normal_loop(), "" );
+  assert(cl->is_normal_loop(), "");
 
   Node *init_n = cl->init_trip();
   Node *limit_n = cl->limit();
 
   // Non-constant bounds
-  if( init_n   == NULL || !init_n->is_Con()  ||
+  if (init_n   == NULL || !init_n->is_Con()  ||
       limit_n  == NULL || !limit_n->is_Con() ||
       // protect against stride not being a constant
-      !cl->stride_is_con() ) {
+      !cl->stride_is_con()) {
     return false;
   }
   int init   = init_n->get_int();
@@ -428,7 +428,31 @@
   uint unroll_limit = (uint)LoopUnrollLimit * 4;
   assert( (intx)unroll_limit == LoopUnrollLimit * 4, "LoopUnrollLimit must fit in 32bits");
   cl->set_trip_count(trip_count);
-  if( trip_count <= unroll_limit && body_size <= unroll_limit ) {
+  if (trip_count > unroll_limit || body_size > unroll_limit) {
+    return false;
+  }
+
+  // Currently we don't have policy to optimize one iteration loops.
+  // Maximally unrolling transformation is used for that:
+  // it is peeled and the original loop become non reachable (dead).
+  if (trip_count == 1)
+    return true;
+
+  // Do not unroll a loop with String intrinsics code.
+  // String intrinsics are large and have loops.
+  for (uint k = 0; k < _body.size(); k++) {
+    Node* n = _body.at(k);
+    switch (n->Opcode()) {
+      case Op_StrComp:
+      case Op_StrEquals:
+      case Op_StrIndexOf:
+      case Op_AryEq: {
+        return false;
+      }
+    } // switch
+  }
+
+  if (body_size <= unroll_limit) {
     uint new_body_size = body_size * trip_count;
     if (new_body_size <= unroll_limit &&
         body_size == new_body_size / trip_count &&
@@ -448,13 +472,13 @@
 bool IdealLoopTree::policy_unroll( PhaseIdealLoop *phase ) const {
 
   CountedLoopNode *cl = _head->as_CountedLoop();
-  assert( cl->is_normal_loop() || cl->is_main_loop(), "" );
+  assert(cl->is_normal_loop() || cl->is_main_loop(), "");
 
   // protect against stride not being a constant
-  if( !cl->stride_is_con() ) return false;
+  if (!cl->stride_is_con()) return false;
 
   // protect against over-unrolling
-  if( cl->trip_count() <= 1 ) return false;
+  if (cl->trip_count() <= 1) return false;
 
   int future_unroll_ct = cl->unrolled_count() * 2;
 
@@ -485,21 +509,21 @@
   // Non-constant bounds.
   // Protect against over-unrolling when init or/and limit are not constant
   // (so that trip_count's init value is maxint) but iv range is known.
-  if( init_n   == NULL || !init_n->is_Con()  ||
-      limit_n  == NULL || !limit_n->is_Con() ) {
+  if (init_n   == NULL || !init_n->is_Con()  ||
+      limit_n  == NULL || !limit_n->is_Con()) {
     Node* phi = cl->phi();
-    if( phi != NULL ) {
+    if (phi != NULL) {
       assert(phi->is_Phi() && phi->in(0) == _head, "Counted loop should have iv phi.");
       const TypeInt* iv_type = phase->_igvn.type(phi)->is_int();
       int next_stride = cl->stride_con() * 2; // stride after this unroll
-      if( next_stride > 0 ) {
-        if( iv_type->_lo + next_stride <= iv_type->_lo || // overflow
-            iv_type->_lo + next_stride >  iv_type->_hi ) {
+      if (next_stride > 0) {
+        if (iv_type->_lo + next_stride <= iv_type->_lo || // overflow
+            iv_type->_lo + next_stride >  iv_type->_hi) {
           return false;  // over-unrolling
         }
-      } else if( next_stride < 0 ) {
-        if( iv_type->_hi + next_stride >= iv_type->_hi || // overflow
-            iv_type->_hi + next_stride <  iv_type->_lo ) {
+      } else if (next_stride < 0) {
+        if (iv_type->_hi + next_stride >= iv_type->_hi || // overflow
+            iv_type->_hi + next_stride <  iv_type->_lo) {
           return false;  // over-unrolling
         }
       }
@@ -511,24 +535,33 @@
   // Key test to unroll CaffeineMark's Logic test
   int xors_in_loop = 0;
   // Also count ModL, DivL and MulL which expand mightly
-  for( uint k = 0; k < _body.size(); k++ ) {
-    switch( _body.at(k)->Opcode() ) {
-    case Op_XorI: xors_in_loop++; break; // CaffeineMark's Logic test
-    case Op_ModL: body_size += 30; break;
-    case Op_DivL: body_size += 30; break;
-    case Op_MulL: body_size += 10; break;
-    }
+  for (uint k = 0; k < _body.size(); k++) {
+    Node* n = _body.at(k);
+    switch (n->Opcode()) {
+      case Op_XorI: xors_in_loop++; break; // CaffeineMark's Logic test
+      case Op_ModL: body_size += 30; break;
+      case Op_DivL: body_size += 30; break;
+      case Op_MulL: body_size += 10; break;
+      case Op_StrComp:
+      case Op_StrEquals:
+      case Op_StrIndexOf:
+      case Op_AryEq: {
+        // Do not unroll a loop with String intrinsics code.
+        // String intrinsics are large and have loops.
+        return false;
+      }
+    } // switch
   }
 
   // Check for being too big
-  if( body_size > (uint)LoopUnrollLimit ) {
-    if( xors_in_loop >= 4 && body_size < (uint)LoopUnrollLimit*4) return true;
+  if (body_size > (uint)LoopUnrollLimit) {
+    if (xors_in_loop >= 4 && body_size < (uint)LoopUnrollLimit*4) return true;
     // Normal case: loop too big
     return false;
   }
 
   // Check for stride being a small enough constant
-  if( abs(cl->stride_con()) > (1<<3) ) return false;
+  if (abs(cl->stride_con()) > (1<<3)) return false;
 
   // Unroll once!  (Each trip will soon do double iterations)
   return true;
@@ -1608,15 +1641,7 @@
     return false; // Malformed loop
   if (!phase->is_member(this, phase->get_ctrl(cl->loopexit()->in(CountedLoopEndNode::TestValue))))
     return false;             // Infinite loop
-#ifndef PRODUCT
-  if (PrintOpto) {
-    tty->print("Removing empty loop");
-    this->dump_head();
-  } else if (TraceLoopOpts) {
-    tty->print("Empty        ");
-    this->dump_head();
-  }
-#endif
+
 #ifdef ASSERT
   // Ensure only one phi which is the iv.
   Node* iv = NULL;
@@ -1629,6 +1654,43 @@
   }
   assert(iv == cl->phi(), "Wrong phi" );
 #endif
+
+  // main and post loops have explicitly created zero trip guard
+  bool needs_guard = !cl->is_main_loop() && !cl->is_post_loop();
+  if (needs_guard) {
+    // Check for an obvious zero trip guard.
+    Node* inctrl = cl->in(LoopNode::EntryControl);
+    if (inctrl->Opcode() == Op_IfTrue) {
+      // The test should look like just the backedge of a CountedLoop
+      Node* iff = inctrl->in(0);
+      if (iff->is_If()) {
+        Node* bol = iff->in(1);
+        if (bol->is_Bool() && bol->as_Bool()->_test._test == cl->loopexit()->test_trip()) {
+          Node* cmp = bol->in(1);
+          if (cmp->is_Cmp() && cmp->in(1) == cl->init_trip() && cmp->in(2) == cl->limit()) {
+            needs_guard = false;
+          }
+        }
+      }
+    }
+  }
+
+#ifndef PRODUCT
+  if (PrintOpto) {
+    tty->print("Removing empty loop with%s zero trip guard", needs_guard ? "out" : "");
+    this->dump_head();
+  } else if (TraceLoopOpts) {
+    tty->print("Empty with%s zero trip guard   ", needs_guard ? "out" : "");
+    this->dump_head();
+  }
+#endif
+
+  if (needs_guard) {
+    // Peel the loop to ensure there's a zero trip guard
+    Node_List old_new;
+    phase->do_peeling(this, old_new);
+  }
+
   // Replace the phi at loop head with the final value of the last
   // iteration.  Then the CountedLoopEnd will collapse (backedge never
   // taken) and all loop-invariant uses of the exit values will be correct.
--- a/hotspot/src/share/vm/opto/loopUnswitch.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/loopUnswitch.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/opto/loopnode.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/loopnode.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1064,8 +1064,6 @@
   // Cache parts in locals for easy
   PhaseIterGVN &igvn = phase->_igvn;
 
-  phase->C->print_method("Before beautify loops", 3);
-
   igvn.hash_delete(_head);      // Yank from hash before hacking edges
 
   // Check for multiple fall-in paths.  Peel off a landing pad if need be.
@@ -1547,6 +1545,7 @@
   ResourceMark rm;
 
   int old_progress = C->major_progress();
+  uint orig_worklist_size = _igvn._worklist.size();
 
   // Reset major-progress flag for the driver's heuristics
   C->clear_major_progress();
@@ -1610,6 +1609,7 @@
   // Split shared headers and insert loop landing pads.
   // Do not bother doing this on the Root loop of course.
   if( !_verify_me && !_verify_only && _ltree_root->_child ) {
+    C->print_method("Before beautify loops", 3);
     if( _ltree_root->_child->beautify_loops( this ) ) {
       // Re-build loop tree!
       _ltree_root->_child = NULL;
@@ -1694,7 +1694,7 @@
     for (int i = 0; i < old_progress; i++)
       C->set_major_progress();
     assert(C->unique() == unique, "verification mode made Nodes? ? ?");
-    assert(_igvn._worklist.size() == 0, "shouldn't push anything");
+    assert(_igvn._worklist.size() == orig_worklist_size, "shouldn't push anything");
     return;
   }
 
--- a/hotspot/src/share/vm/opto/loopopts.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/loopopts.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/opto/matcher.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/matcher.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -49,6 +49,9 @@
 #ifdef TARGET_ARCH_MODEL_zero
 # include "adfiles/ad_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_MODEL_arm
+# include "adfiles/ad_arm.hpp"
+#endif
 
 OptoReg::Name OptoReg::c_frame_pointer;
 
--- a/hotspot/src/share/vm/opto/matcher.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/matcher.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -427,6 +427,11 @@
   // Do ints take an entire long register or just half?
   static const bool int_in_long;
 
+  // Do the processor's shift instructions only use the low 5/6 bits
+  // of the count for 32/64 bit ints? If not we need to do the masking
+  // ourselves.
+  static const bool need_masked_shift_count;
+
   // This routine is run whenever a graph fails to match.
   // If it returns, the compiler should bailout to interpreter without error.
   // In non-product mode, SoftMatchFailure is false to detect non-canonical
--- a/hotspot/src/share/vm/opto/memnode.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/memnode.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -2617,54 +2617,28 @@
 }
 
 //=============================================================================
-// Do we match on this edge? No memory edges
-uint StrCompNode::match_edge(uint idx) const {
-  return idx == 2 || idx == 3; // StrComp (Binary str1 cnt1) (Binary str2 cnt2)
-}
-
-//------------------------------Ideal------------------------------------------
-// Return a node which is more "ideal" than the current node.  Strip out
-// control copies
-Node *StrCompNode::Ideal(PhaseGVN *phase, bool can_reshape){
-  return remove_dead_region(phase, can_reshape) ? this : NULL;
-}
-
-//=============================================================================
-// Do we match on this edge? No memory edges
-uint StrEqualsNode::match_edge(uint idx) const {
-  return idx == 2 || idx == 3; // StrEquals (Binary str1 str2) cnt
+// Do not match memory edge.
+uint StrIntrinsicNode::match_edge(uint idx) const {
+  return idx == 2 || idx == 3;
 }
 
 //------------------------------Ideal------------------------------------------
 // Return a node which is more "ideal" than the current node.  Strip out
 // control copies
-Node *StrEqualsNode::Ideal(PhaseGVN *phase, bool can_reshape){
-  return remove_dead_region(phase, can_reshape) ? this : NULL;
-}
-
-//=============================================================================
-// Do we match on this edge? No memory edges
-uint StrIndexOfNode::match_edge(uint idx) const {
-  return idx == 2 || idx == 3; // StrIndexOf (Binary str1 cnt1) (Binary str2 cnt2)
-}
-
-//------------------------------Ideal------------------------------------------
-// Return a node which is more "ideal" than the current node.  Strip out
-// control copies
-Node *StrIndexOfNode::Ideal(PhaseGVN *phase, bool can_reshape){
-  return remove_dead_region(phase, can_reshape) ? this : NULL;
-}
-
-//=============================================================================
-// Do we match on this edge? No memory edges
-uint AryEqNode::match_edge(uint idx) const {
-  return idx == 2 || idx == 3; // StrEquals ary1 ary2
-}
-//------------------------------Ideal------------------------------------------
-// Return a node which is more "ideal" than the current node.  Strip out
-// control copies
-Node *AryEqNode::Ideal(PhaseGVN *phase, bool can_reshape){
-  return remove_dead_region(phase, can_reshape) ? this : NULL;
+Node *StrIntrinsicNode::Ideal(PhaseGVN *phase, bool can_reshape) {
+  if (remove_dead_region(phase, can_reshape)) return this;
+
+  if (can_reshape) {
+    Node* mem = phase->transform(in(MemNode::Memory));
+    // If transformed to a MergeMem, get the desired slice
+    uint alias_idx = phase->C->get_alias_index(adr_type());
+    mem = mem->is_MergeMem() ? mem->as_MergeMem()->memory_at(alias_idx) : mem;
+    if (mem != in(MemNode::Memory)) {
+      set_req(MemNode::Memory, mem);
+      return this;
+    }
+  }
+  return NULL;
 }
 
 //=============================================================================
--- a/hotspot/src/share/vm/opto/memnode.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/memnode.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -776,67 +776,69 @@
   static bool step_through(Node** np, uint instance_id, PhaseTransform* phase);
 };
 
-//------------------------------StrComp-------------------------------------
-class StrCompNode: public Node {
+//------------------------------StrIntrinsic-------------------------------
+// Base class for Ideal nodes used in String instrinsic code.
+class StrIntrinsicNode: public Node {
 public:
-  StrCompNode(Node* control, Node* char_array_mem,
-              Node* s1, Node* c1,
-              Node* s2, Node* c2): Node(control, char_array_mem,
-                                        s1, c1,
-                                        s2, c2) {};
-  virtual int Opcode() const;
+  StrIntrinsicNode(Node* control, Node* char_array_mem,
+                   Node* s1, Node* c1, Node* s2, Node* c2):
+    Node(control, char_array_mem, s1, c1, s2, c2) {
+  }
+
+  StrIntrinsicNode(Node* control, Node* char_array_mem,
+                   Node* s1, Node* s2, Node* c):
+    Node(control, char_array_mem, s1, s2, c) {
+  }
+
+  StrIntrinsicNode(Node* control, Node* char_array_mem,
+                   Node* s1, Node* s2):
+    Node(control, char_array_mem, s1, s2) {
+  }
+
   virtual bool depends_only_on_test() const { return false; }
-  virtual const Type* bottom_type() const { return TypeInt::INT; }
   virtual const TypePtr* adr_type() const { return TypeAryPtr::CHARS; }
   virtual uint match_edge(uint idx) const;
   virtual uint ideal_reg() const { return Op_RegI; }
   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
 };
 
+//------------------------------StrComp-------------------------------------
+class StrCompNode: public StrIntrinsicNode {
+public:
+  StrCompNode(Node* control, Node* char_array_mem,
+              Node* s1, Node* c1, Node* s2, Node* c2):
+    StrIntrinsicNode(control, char_array_mem, s1, c1, s2, c2) {};
+  virtual int Opcode() const;
+  virtual const Type* bottom_type() const { return TypeInt::INT; }
+};
+
 //------------------------------StrEquals-------------------------------------
-class StrEqualsNode: public Node {
+class StrEqualsNode: public StrIntrinsicNode {
 public:
   StrEqualsNode(Node* control, Node* char_array_mem,
-                Node* s1, Node* s2, Node* c): Node(control, char_array_mem,
-                                                   s1, s2, c) {};
+                Node* s1, Node* s2, Node* c):
+    StrIntrinsicNode(control, char_array_mem, s1, s2, c) {};
   virtual int Opcode() const;
-  virtual bool depends_only_on_test() const { return false; }
   virtual const Type* bottom_type() const { return TypeInt::BOOL; }
-  virtual const TypePtr* adr_type() const { return TypeAryPtr::CHARS; }
-  virtual uint match_edge(uint idx) const;
-  virtual uint ideal_reg() const { return Op_RegI; }
-  virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
 };
 
 //------------------------------StrIndexOf-------------------------------------
-class StrIndexOfNode: public Node {
+class StrIndexOfNode: public StrIntrinsicNode {
 public:
   StrIndexOfNode(Node* control, Node* char_array_mem,
-                 Node* s1, Node* c1,
-                 Node* s2, Node* c2): Node(control, char_array_mem,
-                                           s1, c1,
-                                           s2, c2) {};
+              Node* s1, Node* c1, Node* s2, Node* c2):
+    StrIntrinsicNode(control, char_array_mem, s1, c1, s2, c2) {};
   virtual int Opcode() const;
-  virtual bool depends_only_on_test() const { return false; }
   virtual const Type* bottom_type() const { return TypeInt::INT; }
-  virtual const TypePtr* adr_type() const { return TypeAryPtr::CHARS; }
-  virtual uint match_edge(uint idx) const;
-  virtual uint ideal_reg() const { return Op_RegI; }
-  virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
 };
 
 //------------------------------AryEq---------------------------------------
-class AryEqNode: public Node {
+class AryEqNode: public StrIntrinsicNode {
 public:
-  AryEqNode(Node* control, Node* char_array_mem,
-            Node* s1, Node* s2): Node(control, char_array_mem, s1, s2) {};
+  AryEqNode(Node* control, Node* char_array_mem, Node* s1, Node* s2):
+    StrIntrinsicNode(control, char_array_mem, s1, s2) {};
   virtual int Opcode() const;
-  virtual bool depends_only_on_test() const { return false; }
   virtual const Type* bottom_type() const { return TypeInt::BOOL; }
-  virtual const TypePtr* adr_type() const { return TypeAryPtr::CHARS; }
-  virtual uint match_edge(uint idx) const;
-  virtual uint ideal_reg() const { return Op_RegI; }
-  virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
 };
 
 //------------------------------MemBar-----------------------------------------
--- a/hotspot/src/share/vm/opto/node.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/node.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -1373,12 +1373,12 @@
 //------------------------------find------------------------------------------
 // Find a neighbor of this Node with the given _idx
 // If idx is negative, find its absolute value, following both _in and _out.
-static void find_recur( Node* &result, Node *n, int idx, bool only_ctrl,
-                        VectorSet &old_space, VectorSet &new_space ) {
+static void find_recur(Compile* C,  Node* &result, Node *n, int idx, bool only_ctrl,
+                        VectorSet* old_space, VectorSet* new_space ) {
   int node_idx = (idx >= 0) ? idx : -idx;
   if (NotANode(n))  return;  // Gracefully handle NULL, -1, 0xabababab, etc.
-  // Contained in new_space or old_space?
-  VectorSet *v = Compile::current()->node_arena()->contains(n) ? &new_space : &old_space;
+  // Contained in new_space or old_space?   Check old_arena first since it's mostly empty.
+  VectorSet *v = C->old_arena()->contains(n) ? old_space : new_space;
   if( v->test(n->_idx) ) return;
   if( (int)n->_idx == node_idx
       debug_only(|| n->debug_idx() == node_idx) ) {
@@ -1390,19 +1390,23 @@
   v->set(n->_idx);
   for( uint i=0; i<n->len(); i++ ) {
     if( only_ctrl && !(n->is_Region()) && (n->Opcode() != Op_Root) && (i != TypeFunc::Control) ) continue;
-    find_recur( result, n->in(i), idx, only_ctrl, old_space, new_space );
+    find_recur(C, result, n->in(i), idx, only_ctrl, old_space, new_space );
   }
   // Search along forward edges also:
   if (idx < 0 && !only_ctrl) {
     for( uint j=0; j<n->outcnt(); j++ ) {
-      find_recur( result, n->raw_out(j), idx, only_ctrl, old_space, new_space );
+      find_recur(C, result, n->raw_out(j), idx, only_ctrl, old_space, new_space );
     }
   }
 #ifdef ASSERT
-  // Search along debug_orig edges last:
-  for (Node* orig = n->debug_orig(); orig != NULL && n != orig; orig = orig->debug_orig()) {
-    if (NotANode(orig))  break;
-    find_recur( result, orig, idx, only_ctrl, old_space, new_space );
+  // Search along debug_orig edges last, checking for cycles
+  Node* orig = n->debug_orig();
+  if (orig != NULL) {
+    do {
+      if (NotANode(orig))  break;
+      find_recur(C, result, orig, idx, only_ctrl, old_space, new_space );
+      orig = orig->debug_orig();
+    } while (orig != NULL && orig != n->debug_orig());
   }
 #endif //ASSERT
 }
@@ -1417,7 +1421,7 @@
   ResourceArea *area = Thread::current()->resource_area();
   VectorSet old_space(area), new_space(area);
   Node* result = NULL;
-  find_recur( result, (Node*) this, idx, false, old_space, new_space );
+  find_recur(Compile::current(), result, (Node*) this, idx, false, &old_space, &new_space );
   return result;
 }
 
@@ -1427,7 +1431,7 @@
   ResourceArea *area = Thread::current()->resource_area();
   VectorSet old_space(area), new_space(area);
   Node* result = NULL;
-  find_recur( result, (Node*) this, idx, true, old_space, new_space );
+  find_recur(Compile::current(), result, (Node*) this, idx, true, &old_space, &new_space );
   return result;
 }
 #endif
--- a/hotspot/src/share/vm/opto/output.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/output.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/opto/output.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/output.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/opto/parse1.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/parse1.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/opto/parse2.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/parse2.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/opto/regmask.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/regmask.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/opto/regmask.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/regmask.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/opto/runtime.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/runtime.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/opto/stringopts.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/stringopts.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/opto/type.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/opto/type.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/precompiled.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/precompiled.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/prims/forte.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/prims/forte.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/prims/jni_md.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/prims/jni_md.h	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/prims/jvm_misc.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/prims/jvm_misc.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/prims/jvmtiEventController.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/prims/jvmtiEventController.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/prims/jvmtiRedefineClasses.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/prims/jvmtiRedefineClasses.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/prims/jvmtiTagMap.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/prims/jvmtiTagMap.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/prims/methodHandles.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/prims/methodHandles.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -112,7 +112,7 @@
 // MethodHandles::generate_adapters
 //
 void MethodHandles::generate_adapters() {
-  if (!EnableMethodHandles || SystemDictionary::MethodHandle_klass() == NULL)  return;
+  if (!EnableInvokeDynamic || SystemDictionary::MethodHandle_klass() == NULL)  return;
 
   assert(_adapter_code == NULL, "generate only once");
 
@@ -143,7 +143,7 @@
 
 void MethodHandles::set_enabled(bool z) {
   if (_enabled != z) {
-    guarantee(z && EnableMethodHandles, "can only enable once, and only if -XX:+EnableMethodHandles");
+    guarantee(z && EnableInvokeDynamic, "can only enable once, and only if -XX:+EnableInvokeDynamic");
     _enabled = z;
   }
 }
@@ -2579,7 +2579,6 @@
   {CC"getMembers",              CC"("CLS""STRG""STRG"I"CLS"I["MEM")I",  FN_PTR(MHN_getMembers)}
 };
 
-// More entry points specifically for EnableInvokeDynamic.
 // FIXME: Remove methods2 after AllowTransitionalJSR292 is removed.
 static JNINativeMethod methods2[] = {
   {CC"registerBootstrap",       CC"("CLS MH")V",                FN_PTR(MHN_registerBootstrap)},
@@ -2618,10 +2617,8 @@
 JVM_ENTRY(void, JVM_RegisterMethodHandleMethods(JNIEnv *env, jclass MHN_class)) {
   assert(MethodHandles::spot_check_entry_names(), "entry enum is OK");
 
-  // note: this explicit warning-producing stuff will be replaced by auto-detection of the JSR 292 classes
-
-  if (!EnableMethodHandles) {
-    warning("JSR 292 method handles are disabled in this JVM.  Use -XX:+UnlockExperimentalVMOptions -XX:+EnableMethodHandles to enable.");
+  if (!EnableInvokeDynamic) {
+    warning("JSR 292 is disabled in this JVM.  Use -XX:+UnlockDiagnosticVMOptions -XX:+EnableInvokeDynamic to enable.");
     return;  // bind nothing
   }
 
@@ -2702,11 +2699,6 @@
     MethodHandles::set_enabled(true);
   }
 
-  if (!EnableInvokeDynamic) {
-    warning("JSR 292 invokedynamic is disabled in this JVM.  Use -XX:+UnlockExperimentalVMOptions -XX:+EnableInvokeDynamic to enable.");
-    return;  // bind nothing
-  }
-
   if (AllowTransitionalJSR292) {
     ThreadToNativeFromVM ttnfv(thread);
 
--- a/hotspot/src/share/vm/prims/unsafe.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/prims/unsafe.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1560,7 +1560,7 @@
         }
       }
     }
-    if (AnonymousClasses) {
+    if (EnableInvokeDynamic) {
       env->RegisterNatives(unsafecls, anonk_methods, sizeof(anonk_methods)/sizeof(JNINativeMethod));
       if (env->ExceptionOccurred()) {
         if (PrintMiscellaneous && (Verbose || WizardMode)) {
--- a/hotspot/src/share/vm/runtime/arguments.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/arguments.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -2974,21 +2974,28 @@
   }
 #endif // PRODUCT
 
-  if (EnableInvokeDynamic && !EnableMethodHandles) {
-    if (!FLAG_IS_DEFAULT(EnableMethodHandles)) {
-      warning("forcing EnableMethodHandles true because EnableInvokeDynamic is true");
+  // Transitional
+  if (EnableMethodHandles || AnonymousClasses) {
+    if (!EnableInvokeDynamic && !FLAG_IS_DEFAULT(EnableInvokeDynamic)) {
+      warning("EnableMethodHandles and AnonymousClasses are obsolete.  Keeping EnableInvokeDynamic disabled.");
+    } else {
+      EnableInvokeDynamic = true;
     }
-    EnableMethodHandles = true;
   }
-  if (EnableMethodHandles && !AnonymousClasses) {
-    if (!FLAG_IS_DEFAULT(AnonymousClasses)) {
-      warning("forcing AnonymousClasses true because EnableMethodHandles is true");
+
+  // JSR 292 is not supported before 1.7
+  if (!JDK_Version::is_gte_jdk17x_version()) {
+    if (EnableInvokeDynamic) {
+      if (!FLAG_IS_DEFAULT(EnableInvokeDynamic)) {
+        warning("JSR 292 is not supported before 1.7.  Disabling support.");
+      }
+      EnableInvokeDynamic = false;
     }
-    AnonymousClasses = true;
   }
-  if ((EnableMethodHandles || AnonymousClasses) && ScavengeRootsInCode == 0) {
+
+  if (EnableInvokeDynamic && ScavengeRootsInCode == 0) {
     if (!FLAG_IS_DEFAULT(ScavengeRootsInCode)) {
-      warning("forcing ScavengeRootsInCode non-zero because EnableMethodHandles or AnonymousClasses is true");
+      warning("forcing ScavengeRootsInCode non-zero because EnableInvokeDynamic is true");
     }
     ScavengeRootsInCode = 1;
   }
--- a/hotspot/src/share/vm/runtime/compilationPolicy.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/compilationPolicy.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -396,8 +396,6 @@
 // SimpleCompPolicy - compile current method
 
 void SimpleCompPolicy::method_invocation_event( methodHandle m, TRAPS) {
-  assert(UseCompiler || CompileTheWorld, "UseCompiler should be set by now.");
-
   int hot_count = m->invocation_count();
   reset_counter_for_invocation_event(m);
   const char* comment = "count";
@@ -413,8 +411,6 @@
 }
 
 void SimpleCompPolicy::method_back_branch_event(methodHandle m, int bci, TRAPS) {
-  assert(UseCompiler || CompileTheWorld, "UseCompiler should be set by now.");
-
   int hot_count = m->backedge_count();
   const char* comment = "backedge_count";
 
@@ -432,8 +428,6 @@
 
 // Consider m for compilation
 void StackWalkCompPolicy::method_invocation_event(methodHandle m, TRAPS) {
-  assert(UseCompiler || CompileTheWorld, "UseCompiler should be set by now.");
-
   int hot_count = m->invocation_count();
   reset_counter_for_invocation_event(m);
   const char* comment = "count";
@@ -473,8 +467,6 @@
 }
 
 void StackWalkCompPolicy::method_back_branch_event(methodHandle m, int bci, TRAPS) {
-  assert(UseCompiler || CompileTheWorld, "UseCompiler should be set by now.");
-
   int hot_count = m->backedge_count();
   const char* comment = "backedge_count";
 
--- a/hotspot/src/share/vm/runtime/deoptimization.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/deoptimization.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/dtraceJSDT.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/dtraceJSDT.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/fieldDescriptor.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/fieldDescriptor.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/fieldType.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/fieldType.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/fieldType.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/fieldType.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/fprofiler.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/fprofiler.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/fprofiler.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/fprofiler.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/frame.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/frame.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/frame.inline.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/frame.inline.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/globals.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/globals.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1924,7 +1924,7 @@
   experimental(intx, WorkStealingSleepMillis, 1,                            \
           "Sleep time when sleep is used for yields")                       \
                                                                             \
-  experimental(uintx, WorkStealingYieldsBeforeSleep, 1000,                  \
+  experimental(uintx, WorkStealingYieldsBeforeSleep, 5000,                  \
           "Number of yields before a sleep is done during workstealing")    \
                                                                             \
   experimental(uintx, WorkStealingHardSpins, 4096,                          \
@@ -2377,6 +2377,9 @@
   develop(intx, CICloneLoopTestLimit, 100,                                  \
           "size limit for blocks heuristically cloned in ciTypeFlow")       \
                                                                             \
+  develop(intx, OSROnlyBCI, -1,                                             \
+          "OSR only at this bci.  Negative values mean exclude that bci")   \
+                                                                            \
   /* temp diagnostics */                                                    \
                                                                             \
   diagnostic(bool, TraceRedundantCompiles, false,                           \
@@ -3690,11 +3693,15 @@
           "Skip assert() and verify() which page-in unwanted shared "       \
           "objects. ")                                                      \
                                                                             \
+  diagnostic(bool, EnableInvokeDynamic, true,                               \
+          "support JSR 292 (method handles, invokedynamic, "                \
+          "anonymous classes")                                              \
+                                                                            \
   product(bool, AnonymousClasses, false,                                    \
-          "support sun.misc.Unsafe.defineAnonymousClass")                   \
+          "support sun.misc.Unsafe.defineAnonymousClass (deprecated)")      \
                                                                             \
   experimental(bool, EnableMethodHandles, false,                            \
-          "support method handles (true by default under JSR 292)")         \
+          "support method handles (deprecated)")                            \
                                                                             \
   diagnostic(intx, MethodHandlePushLimit, 3,                                \
           "number of additional stack slots a method handle may push")      \
@@ -3711,9 +3718,6 @@
   experimental(bool, TrustFinalNonStaticFields, false,                      \
           "trust final non-static declarations for constant folding")       \
                                                                             \
-  experimental(bool, EnableInvokeDynamic, false,                            \
-          "recognize the invokedynamic instruction")                        \
-                                                                            \
   experimental(bool, AllowTransitionalJSR292, true,                         \
           "recognize pre-PFD formats of invokedynamic")                     \
                                                                             \
--- a/hotspot/src/share/vm/runtime/handles.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/handles.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/icache.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/icache.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/interfaceSupport.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/interfaceSupport.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/interfaceSupport.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/interfaceSupport.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/javaCalls.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/javaCalls.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/javaCalls.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/javaCalls.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/javaFrameAnchor.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/javaFrameAnchor.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/jniHandles.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/jniHandles.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/objectMonitor.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/objectMonitor.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/reflection.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/reflection.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/reflectionUtils.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/reflectionUtils.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/registerMap.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/registerMap.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/rframe.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/rframe.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/safepoint.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/safepoint.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/sharedRuntime.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/sharedRuntime.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1682,7 +1682,7 @@
     tty->print_cr("WrongMethodType thread="PTR_FORMAT" req="PTR_FORMAT" act="PTR_FORMAT"",
                   thread, required, actual);
   }
-  assert(EnableMethodHandles, "");
+  assert(EnableInvokeDynamic, "");
   oop singleKlass = wrong_method_type_is_for_single_argument(thread, required);
   char* message = NULL;
   if (singleKlass != NULL) {
@@ -2479,20 +2479,10 @@
 // java compiled calling convention to the native convention, handlizes
 // arguments, and transitions to native.  On return from the native we transition
 // back to java blocking if a safepoint is in progress.
-nmethod *AdapterHandlerLibrary::create_native_wrapper(methodHandle method) {
+nmethod *AdapterHandlerLibrary::create_native_wrapper(methodHandle method, int compile_id) {
   ResourceMark rm;
   nmethod* nm = NULL;
 
-  if (PrintCompilation) {
-    ttyLocker ttyl;
-    tty->print("---   n%s ", (method->is_synchronized() ? "s" : " "));
-    method->print_short_name(tty);
-    if (method->is_static()) {
-      tty->print(" (static)");
-    }
-    tty->cr();
-  }
-
   assert(method->has_native_function(), "must have something valid to call!");
 
   {
@@ -2537,6 +2527,7 @@
       // Generate the compiled-to-native wrapper code
       nm = SharedRuntime::generate_native_wrapper(&_masm,
                                                   method,
+                                                  compile_id,
                                                   total_args_passed,
                                                   comp_args_on_stack,
                                                   sig_bt,regs,
@@ -2548,6 +2539,10 @@
 
   // Install the generated code.
   if (nm != NULL) {
+    if (PrintCompilation) {
+      ttyLocker ttyl;
+      CompileTask::print_compilation(tty, nm, method->is_static() ? "(static)" : "");
+    }
     method->set_code(method, nm);
     nm->post_compiled_method_load_event();
   } else {
--- a/hotspot/src/share/vm/runtime/sharedRuntime.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/sharedRuntime.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -438,6 +438,7 @@
   // returns.
   static nmethod *generate_native_wrapper(MacroAssembler* masm,
                                           methodHandle method,
+                                          int compile_id,
                                           int total_args_passed,
                                           int max_arg,
                                           BasicType *sig_bt,
@@ -659,7 +660,7 @@
 
   static AdapterHandlerEntry* new_entry(AdapterFingerPrint* fingerprint,
                                         address i2c_entry, address c2i_entry, address c2i_unverified_entry);
-  static nmethod* create_native_wrapper(methodHandle method);
+  static nmethod* create_native_wrapper(methodHandle method, int compile_id);
   static AdapterHandlerEntry* get_adapter(methodHandle method);
 
 #ifdef HAVE_DTRACE_H
--- a/hotspot/src/share/vm/runtime/signature.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/signature.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/signature.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/signature.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/stackValueCollection.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/stackValueCollection.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/statSampler.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/statSampler.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/sweeper.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/sweeper.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/synchronizer.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/synchronizer.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/thread.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/thread.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -3229,7 +3229,7 @@
       warning("java.lang.ArithmeticException has not been initialized");
       warning("java.lang.StackOverflowError has not been initialized");
     }
-    }
+  }
 
   // See        : bugid 4211085.
   // Background : the static initializer of java.lang.Compiler tries to read
--- a/hotspot/src/share/vm/runtime/threadLocalStorage.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/threadLocalStorage.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/vframe.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/vframe.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/vmStructs.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/vmStructs.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -70,6 +70,7 @@
 #include "oops/cpCacheKlass.hpp"
 #include "oops/cpCacheOop.hpp"
 #include "oops/instanceKlass.hpp"
+#include "oops/instanceMirrorKlass.hpp"
 #include "oops/instanceKlassKlass.hpp"
 #include "oops/instanceOop.hpp"
 #include "oops/klass.hpp"
@@ -1101,6 +1102,7 @@
            declare_type(instanceKlass, Klass)                             \
            declare_type(instanceKlassKlass, klassKlass)                   \
            declare_type(instanceOopDesc, oopDesc)                         \
+           declare_type(instanceMirrorKlass, instanceKlass)               \
            declare_type(instanceRefKlass, instanceKlass)                  \
            declare_type(klassKlass, Klass)                                \
            declare_type(klassOopDesc, oopDesc)                            \
--- a/hotspot/src/share/vm/runtime/vmStructs.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/vmStructs.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/vm_operations.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/vm_operations.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/vm_operations.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/vm_operations.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/vm_version.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/vm_version.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/runtime/vm_version.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/runtime/vm_version.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/services/attachListener.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/services/attachListener.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/services/attachListener.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/services/attachListener.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/services/classLoadingService.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/services/classLoadingService.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/services/management.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/services/management.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/services/memoryManager.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/services/memoryManager.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/services/memoryPool.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/services/memoryPool.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/services/memoryService.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/services/memoryService.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
--- a/hotspot/src/share/vm/utilities/copy.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/utilities/copy.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/utilities/debug.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/utilities/debug.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/utilities/debug.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/utilities/debug.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/utilities/elfSymbolTable.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/utilities/elfSymbolTable.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/utilities/exceptions.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/utilities/exceptions.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/utilities/exceptions.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/utilities/exceptions.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/utilities/globalDefinitions_sparcWorks.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/utilities/globalDefinitions_sparcWorks.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/utilities/globalDefinitions_visCPP.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/utilities/globalDefinitions_visCPP.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/utilities/hashtable.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/utilities/hashtable.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/utilities/hashtable.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/utilities/hashtable.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/utilities/hashtable.inline.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/utilities/hashtable.inline.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/utilities/ostream.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/utilities/ostream.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -424,6 +424,15 @@
 
   const char* star = strchr(basename, '*');
   int star_pos = (star == NULL) ? -1 : (star - nametail);
+  int skip = 1;
+  if (star == NULL) {
+    // Try %p
+    star = strstr(basename, "%p");
+    if (star != NULL) {
+      skip = 2;
+    }
+  }
+  star_pos = (star == NULL) ? -1 : (star - nametail);
 
   char pid[32];
   if (star_pos >= 0) {
@@ -442,11 +451,11 @@
   }
 
   if (star_pos >= 0) {
-    // convert foo*bar.log to foo123bar.log
+    // convert foo*bar.log or foo%pbar.log to foo123bar.log
     int buf_pos = (int) strlen(buf);
     strncpy(&buf[buf_pos], nametail, star_pos);
     strcpy(&buf[buf_pos + star_pos], pid);
-    nametail += star_pos + 1;  // skip prefix and star
+    nametail += star_pos + skip;  // skip prefix and pid format
   }
 
   strcat(buf, nametail);      // append rest of name, or all of name
@@ -466,7 +475,7 @@
     // Note:  This feature is for maintainer use only.  No need for L10N.
     jio_print(warnbuf);
     FREE_C_HEAP_ARRAY(char, try_name);
-    try_name = make_log_name("hs_pid*.log", os::get_temp_directory());
+    try_name = make_log_name("hs_pid%p.log", os::get_temp_directory());
     jio_snprintf(warnbuf, sizeof(warnbuf),
                  "Warning:  Forcing option -XX:LogFile=%s\n", try_name);
     jio_print(warnbuf);
@@ -801,6 +810,8 @@
   _buffer = buffer;
   _buflen = buflen;
   _outer_stream = outer_stream;
+  // compile task prints time stamp relative to VM start
+  _stamp.update_to(1);
 }
 
 void staticBufferStream::write(const char* c, size_t len) {
--- a/hotspot/src/share/vm/utilities/ostream.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/utilities/ostream.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/utilities/taskqueue.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/utilities/taskqueue.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/utilities/utf8.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/utilities/utf8.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/utilities/utf8.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/utilities/utf8.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/utilities/xmlstream.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/utilities/xmlstream.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/hotspot/src/share/vm/utilities/xmlstream.hpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/hotspot/src/share/vm/utilities/xmlstream.hpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7024475/Test7024475.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7024475
+ * @summary loop doesn't terminate when compiled
+ *
+ * @run main Test7024475
+ */
+
+public class Test7024475 {
+
+    static int i;
+    static int x1;
+    static int[] bucket_B;
+
+    static void test(Test7024475 test, int i, int c0, int j, int c1) {
+        for (;;) {
+            if (c1 > c0) {
+                if (c0 > 253) {
+                    throw new InternalError("c0 = " + c0);
+                }
+                int index = c0 * 256 + c1;
+                if (index == -1) return;
+                i = bucket_B[index];
+                if (1 < j - i && test != null)
+                    x1 = 0;
+                j = i;
+                c1--;
+            } else {
+                c0--;
+                if (j <= 0)
+                    break;
+                c1 = 255;
+            }
+        }
+    }
+
+    public static void main(String args[]) {
+        Test7024475 t = new Test7024475();
+        bucket_B = new int[256*256];
+        for (int i = 1; i < 256*256; i++) {
+            bucket_B[i] = 1;
+        }
+        for (int n = 0; n < 100000; n++) {
+            test(t, 2, 85, 1, 134);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7029152/Test.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 7029152
+ * @summary Ideal nodes for String intrinsics miss memory edge optimization
+ *
+ * @run main/othervm -Xbatch Test
+ */
+
+public class Test {
+
+  static final String str = "11111xx11111xx1x";
+  static int idx = 0;
+
+  static int IndexOfTest(String str) {
+    return str.indexOf("11111xx1x");
+  }
+
+  public static void main(String args[]) {
+    final int ITERS=2000000;
+
+    for (int i=0; i<ITERS; i++) {
+      idx = IndexOfTest(str);
+    }
+    System.out.println("IndexOf = " + idx);
+  }
+}
--- a/jaxp/.hgtags	Tue Apr 19 10:26:18 2011 -0700
+++ b/jaxp/.hgtags	Wed Apr 20 09:31:11 2011 -0700
@@ -110,3 +110,5 @@
 8e1148c7911b02e00a727461525f239da025cab7 jdk7-b133
 d56b326ae0544fc16c3e0d0285876f3c82054db2 jdk7-b134
 4aa9916693dc1078580c1865e6f2584046851e5a jdk7-b135
+1759daa85d33800bd578853f9531f9de73f70fc7 jdk7-b136
+1d87f7460cde7f8f30af668490f82b52b879bfd8 jdk7-b137
--- a/jaxp/build-defs.xml	Tue Apr 19 10:26:18 2011 -0700
+++ b/jaxp/build-defs.xml	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
- Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2009, 2010, Oracle and/or its affiliates. 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
--- a/jaxp/build-drop-template.xml	Tue Apr 19 10:26:18 2011 -0700
+++ b/jaxp/build-drop-template.xml	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
- Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2009, 2010, Oracle and/or its affiliates. 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
--- a/jaxp/build.xml	Tue Apr 19 10:26:18 2011 -0700
+++ b/jaxp/build.xml	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
- Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2009, 2010, Oracle and/or its affiliates. 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
--- a/jaxp/jaxp.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jaxp/jaxp.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jaxp/make/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jaxp/make/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jaxws/.hgtags	Tue Apr 19 10:26:18 2011 -0700
+++ b/jaxws/.hgtags	Wed Apr 20 09:31:11 2011 -0700
@@ -110,3 +110,5 @@
 359d0c8c00a02d3a094c19f8a485b2217c99a4e0 jdk7-b133
 545de8303fec939db3892f7c324dd7df197e8f09 jdk7-b134
 d5fc61f18043765705ef22b57a68c924ab2f1a5b jdk7-b135
+c81d289c9a532d6e94af3c09d856a2a20529040f jdk7-b136
+ccea3282991ce8b678e188cf32a8239f76ff3bfa jdk7-b137
--- a/jaxws/build-defs.xml	Tue Apr 19 10:26:18 2011 -0700
+++ b/jaxws/build-defs.xml	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
- Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2009, 2010, Oracle and/or its affiliates. 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
--- a/jaxws/build-drop-template.xml	Tue Apr 19 10:26:18 2011 -0700
+++ b/jaxws/build-drop-template.xml	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
- Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2009, 2010, Oracle and/or its affiliates. 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
--- a/jaxws/build.xml	Tue Apr 19 10:26:18 2011 -0700
+++ b/jaxws/build.xml	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
- Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2009, 2010, Oracle and/or its affiliates. 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
--- a/jaxws/make/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jaxws/make/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/.hgtags	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/.hgtags	Wed Apr 20 09:31:11 2011 -0700
@@ -111,3 +111,5 @@
 554adcfb615e63e62af530b1c10fcf7813a75b26 jdk7-b134
 d8ced728159fbb2caa8b6adb477fd8efdbbdf179 jdk7-b135
 aa13e7702cd9d8aca9aa38f1227f966990866944 jdk7-b136
+29296ea6529a418037ccce95903249665ef31c11 jdk7-b137
+60d3d55dcc9c31a30ced9caa6ef5c0dcd7db031d jdk7-b138
--- a/jdk/make/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/com/sun/crypto/provider/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/com/sun/crypto/provider/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/com/sun/java/pack/prop/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/com/sun/java/pack/prop/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/com/sun/jndi/cosnaming/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/com/sun/jndi/cosnaming/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/com/sun/jndi/dns/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/com/sun/jndi/dns/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/com/sun/jndi/ldap/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/com/sun/jndi/ldap/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/com/sun/jndi/rmi/registry/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/com/sun/jndi/rmi/registry/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/com/sun/nio/sctp/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/com/sun/nio/sctp/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/com/sun/org/apache/xml/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/com/sun/org/apache/xml/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/com/sun/rowset/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/com/sun/rowset/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/com/sun/script/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/com/sun/script/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/com/sun/security/auth/module/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/com/sun/security/auth/module/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/com/sun/servicetag/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/com/sun/servicetag/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,4 +1,4 @@
-# Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/com/sun/tools/attach/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/com/sun/tools/attach/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/common/Defs-solaris.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/common/Defs-solaris.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/common/Defs-windows.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/common/Defs-windows.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/common/Demo.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/common/Demo.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/common/Release.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/common/Release.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -885,12 +885,18 @@
 ABS_DB_PATH  :=$(call FullPath,$(CLOSED_SHARE_SRC)/db)
 DB_ZIP_LIST = $(shell $(LS) $(ABS_DB_PATH)/*.zip 2>/dev/null)
 
+# Java DB image. Move the Java DB demo directory into the JDK's demo
+# dir and in the process, rename it to db.  Also remove index.html,
+# since it presumes docs are co-located. Also remove register.html (no
+# longer relevant).
 initial-image-jdk-db: $(DB_ZIP_LIST)
 	$(MKDIR) -p $(JDK_IMAGE_DIR)/db
 	for d in $(DB_ZIP_LIST); do \
           ($(CD) $(JDK_IMAGE_DIR)/db && $(UNZIP) -o $$d); \
 	done
-
+	$(RM) -rf $(DEMODIR)/db
+	$(MV) $(JDK_IMAGE_DIR)/db/demo $(DEMODIR)/db
+	$(RM) $(JDK_IMAGE_DIR)/db/index.html $(JDK_IMAGE_DIR)/db/register.html
 endif
 
 # Standard jdk image
--- a/jdk/make/common/Sanity.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/common/Sanity.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/common/Subdirs.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/common/Subdirs.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,4 +1,4 @@
-# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/common/shared/Compiler-msvc.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/common/shared/Compiler-msvc.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/common/shared/Defs-control.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/common/shared/Defs-control.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/common/shared/Defs-javadoc.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/common/shared/Defs-javadoc.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/common/shared/Defs-linux.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/common/shared/Defs-linux.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -187,6 +187,12 @@
 
 # Special define for checking the binaries
 
+# Debug builds should downgrade warnings to just info
+MAPFILE_WARNING-DBG=INFO
+MAPFILE_WARNING-OPT=WARNING
+MAPFILE_WARNING-=WARNING
+MAPFILE_WARNING=$(MAPFILE_WARNING-$(VARIANT))
+
 # Macro to check it's input file for banned dependencies and verify the
 #   binary built properly. Relies on process exit code.
 ifndef CROSS_COMPILE_ARCH
@@ -194,7 +200,7 @@
 ( \
   $(ECHO) "Checking for mapfile use in: $1" && \
   if [ "`$(NM) -D -g --defined-only $1 | $(EGREP) 'SUNWprivate'`" = "" ] ; then \
-    $(ECHO) "WARNING: File was not built with a mapfile: $1"; \
+    $(ECHO) "$(MAPFILE_WARNING): File was not built with a mapfile: $1"; \
   fi && \
   $(ECHO) "Library loads for: $1" && \
   $(LDD) $1 && \
@@ -208,4 +214,5 @@
   $(ECHO) "Skipping binary file verification for cross-compile build" \
 )
 endef
-endif
\ No newline at end of file
+endif
+
--- a/jdk/make/common/shared/Defs-solaris.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/common/shared/Defs-solaris.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -188,14 +188,37 @@
 
 # Special define for checking the binaries
 
+# Debug builds should downgrade warnings to just info
+MAPFILE_WARNING-DBG=INFO
+MAPFILE_WARNING-OPT=WARNING
+MAPFILE_WARNING-=WARNING
+MAPFILE_WARNING=$(MAPFILE_WARNING-$(VARIANT))
+
+# Some libraries do not have mapfiles for multiple reasons.
+#   These libraries for sparc and sparcv9 are exceptions to the mapfile rule:
+#     libjdgaSUNWafb.so
+#     libjdgaSUNWcg6.so
+#     libjdgaSUNWffb.so
+#     libjdgaSUNWm64.so
+#     libxinerama.so
+#   The library libJdbcOdbc.so has also been given an exception.
+#   The JNI/JVMTI demo libraries are also missing mapfiles, no exceptions yet.
+ifeq ($(ARCH_FAMILY),sparc)
+  MAPFILE_EXCEPTIONS = \
+    (libJdbcOdbc|libjdgaSUNWafb|libjdgaSUNWcg6|libjdgaSUNWffb|libjdgaSUNWm64|libxinerama)
+else
+  MAPFILE_EXCEPTIONS = (libJdbcOdbc)
+endif
+
 # Macro to check it's input file for banned dependencies and verify the
 #   binary built properly. Relies on process exit code.
 ifndef CROSS_COMPILE_ARCH
 define binary_file_verification # binary_file
 ( \
   $(ECHO) "Checking for mapfile use in: $1" && \
-  if [ "`$(NM) -g -D $1 | $(EGREP) -v 'UNDEF' | $(EGREP) 'SUNWprivate'`" = "" ] ; then \
-    $(ECHO) "WARNING: File was not built with a mapfile: $1"; \
+  if [ "`$(ECHO) $(basename $(notdir $1)) | $(EGREP) '$(MAPFILE_EXCEPTIONS)'`" = "" \
+       -a "`$(NM) -g -D $1 | $(EGREP) -v 'UNDEF' | $(EGREP) 'SUNWprivate'`" = "" ] ; then \
+    $(ECHO) "$(MAPFILE_WARNING): File was not built with a mapfile: $1"; \
   fi && \
   $(ECHO) "Library loads for: $1" && \
   $(LDD) $1 && \
@@ -209,4 +232,5 @@
   $(ECHO) "Skipping binary file verification for cross-compile build" \
 )
 endef
-endif
\ No newline at end of file
+endif
+
--- a/jdk/make/common/shared/Defs-windows.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/common/shared/Defs-windows.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/common/shared/Defs.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/common/shared/Defs.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/docs/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/docs/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,4 +1,4 @@
-# Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -40,7 +40,7 @@
 COPYRIGHT_URL = $(COPYRIGHT_URL-$(JDK_MINOR_VERSION))
 
 # Url to bug filing site
-BUG_SUBMIT_URL = http://bugs.sun.com/services/bugreport/index.jsp
+BUG_SUBMIT_URL = http://bugreport.sun.com/bugreport/
 
 # Common line for how to submit a bug or rfe
 BUG_SUBMIT_LINE = <a href="$(BUG_SUBMIT_URL)">Submit a bug or feature</a>
@@ -53,7 +53,7 @@
 DEV_DOCS_URL = $(DEV_DOCS_URL-$(JDK_MINOR_VERSION))
 
 # Url to Java Language Spec
-JLS3_URL = http://java.sun.com/docs/books/jls/
+#JLS3_URL = http://java.sun.com/docs/books/jls/
 
 # Common Java trademark line
 JAVA_TRADEMARK_LINE = Java is a trademark or registered trademark of \
@@ -293,8 +293,8 @@
 <strong>Java$(TRADEMARK)&nbsp;Platform<br>Standard&nbsp;Ed.&nbsp;$(JDK_MINOR_VERSION)</strong>
 
 # Java language specification cite
-TAG_JLS3 = jls3:a:See <cite><a href="$(JLS3_URL)"> \
-The Java Language Specification, Third Edition</a></cite>:
+TAG_JLS = jls:a:See <cite> \
+The Java&trade; Language Specification</cite>:
 
 # Overview file for core apis
 COREAPI_OVERVIEW = $(SHARE_SRC)/classes/overview-core.html
@@ -329,7 +329,7 @@
 	  $(call OptionPair,-tag,specdefault:X)				; \
 	  $(call OptionPair,-tag,Note:X)				; \
 	  $(call OptionPair,-tag,ToDo:X)				; \
-          $(call OptionPair,-tag,$(TAG_JLS3)) 				; \
+          $(call OptionPair,-tag,$(TAG_JLS)) 				; \
 	  $(call OptionOnly,-splitIndex)				; \
 	  $(call OptionPair,-overview,$(COREAPI_OVERVIEW))		; \
 	  $(call OptionPair,-doctitle,$(COREAPI_DOCTITLE))		; \
@@ -1081,6 +1081,7 @@
 	  $(call OptionPair,-doctitle,$(TREEAPI_DOCTITLE))		; \
 	  $(call OptionPair,-windowtitle,$(TREEAPI_WINDOWTITLE) $(DRAFT_WINTITLE));\
 	  $(call OptionPair,-header,$(TREEAPI_HEADER)$(DRAFT_HEADER))	; \
+          $(call OptionPair,-tag,$(TAG_JLS)) 				; \
 	  $(call OptionPair,-bottom,$(TREEAPI_BOTTOM)$(DRAFT_BOTTOM))	; \
 	  $(call OptionTrip,-group,$(TREEAPI_GROUPNAME),$(TREEAPI_REGEXP)); \
 	  $(call OptionTrip,-linkoffline,$(TREEAPI2COREAPI),$(COREAPI_DOCSDIR)/); \
--- a/jdk/make/docs/NON_CORE_PKGS.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/docs/NON_CORE_PKGS.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/java/awt/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/java/awt/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/java/fdlibm/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/java/fdlibm/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/java/java/FILES_java.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/java/java/FILES_java.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/java/java/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/java/java/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/java/java_crw_demo/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/java/java_crw_demo/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/java/java_hprof_demo/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/java/java_hprof_demo/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/java/jli/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/java/jli/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/java/logging/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/java/logging/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/java/main/javaw/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/java/main/javaw/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/java/management/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/java/management/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/java/net/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/java/net/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/java/nio/FILES_java.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/java/nio/FILES_java.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/java/nio/mapfile-linux	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/java/nio/mapfile-linux	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/java/nio/mapfile-solaris	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/java/nio/mapfile-solaris	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/java/npt/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/java/npt/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/java/redist/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/java/redist/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/java/redist/fonts/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/java/redist/fonts/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/java/redist/sajdi/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/java/redist/sajdi/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/java/sql/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/java/sql/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/java/text/base/FILES_java.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/java/text/base/FILES_java.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/java/text/base/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/java/text/base/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/java/util/FILES_properties.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/java/util/FILES_properties.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
@@ -55,6 +55,7 @@
         sun/util/resources/LocaleNames_mt.properties \
         sun/util/resources/LocaleNames_nl.properties \
         sun/util/resources/LocaleNames_no.properties \
+        sun/util/resources/LocaleNames_no_NO_NY.properties \
         sun/util/resources/LocaleNames_pl.properties \
         sun/util/resources/LocaleNames_pt.properties \
         sun/util/resources/LocaleNames_pt_BR.properties \
--- a/jdk/make/java/verify/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/java/verify/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/javax/crypto/Defs-jce.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/javax/crypto/Defs-jce.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
@@ -58,7 +58,7 @@
 SIGNING_KEY_DIR    = /security/ws/JCE-signing/src
 SIGNING_KEYSTORE   = $(SIGNING_KEY_DIR)/KeyStore.jks
 SIGNING_PASSPHRASE = $(SIGNING_KEY_DIR)/passphrase.txt
-SIGNING_ALIAS      = jce_rsa
+SIGNING_ALIAS      = oracle_jce_rsa
 
 #
 # Defines for signing the various jar files.
--- a/jdk/make/javax/crypto/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/javax/crypto/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/javax/imageio/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/javax/imageio/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/javax/print/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/javax/print/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/javax/sound/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/javax/sound/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/javax/sound/jsoundalsa/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/javax/sound/jsoundalsa/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/javax/sound/jsoundds/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/javax/sound/jsoundds/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/javax/sql/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/javax/sql/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/javax/swing/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/javax/swing/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/javax/swing/plaf/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/javax/swing/plaf/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/jdk_generic_profile.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/jdk_generic_profile.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/jpda/back/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/jpda/back/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/jpda/jdwp/jdwp.spec	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/jpda/jdwp/jdwp.spec	Wed Apr 20 09:31:11 2011 -0700
@@ -519,9 +519,8 @@
         "Both the JNI signature and the generic signature are "
         "returned for each class.  "
 	"Generic signatures are described in the signature attribute "
-        "section in the "
-	"<a href=\"http://java.sun.com/docs/books/vmspec\">
-        "Java Virtual Machine Specification, 3rd Edition.</a>  "
+        "section in "
+        "<cite>The Java&trade; Virtual Machine Specification</cite>. "
         "Since JDWP version 1.5."
 	(Out 
         )
@@ -623,8 +622,8 @@
             (referenceType refType "The reference type ID.")
         )
         (Reply
-            (int modBits "Modifier bits as defined in the "
-	                 "<a href=\"http://java.sun.com/docs/books/vmspec/html/ClassFile.doc.html\">VM Specification</a>")
+            (int modBits "Modifier bits as defined in Chapter 4 of "
+	                 "<cite>The Java&trade; Virtual Machine Specification</cite>")
         )
         (ErrorSet
             (Error INVALID_CLASS     "refType is not the ID of a reference "
@@ -651,8 +650,8 @@
                     (int modBits "The modifier bit flags (also known as access flags) "
 		                 "which provide additional information on the  "
                                  "field declaration. Individual flag values are "
-				 "defined in the "
- 	                         "<a href=\"http://java.sun.com/docs/books/vmspec/html/ClassFile.doc.html\">VM Specification</a>."
+				 "defined in Chapter 4 of "
+ 	                         "<cite>The Java&trade; Virtual Machine Specification</cite>. "
 				 "In addition, The <code>0xf0000000</code> bit identifies "
 				 "the field as synthetic, if the synthetic attribute "
 				 "<a href=\"#JDWP_VirtualMachine_Capabilities\">capability</a> is available.")
@@ -686,8 +685,8 @@
                     (int modBits "The modifier bit flags (also known as access flags) "
 		                 "which provide additional information on the  "
                                  "method declaration. Individual flag values are "
-				 "defined in the "
- 	                         "<a href=\"http://java.sun.com/docs/books/vmspec/html/ClassFile.doc.html\">VM Specification</a>."
+				 "defined in Chapter 4 of "
+ 	                         "<cite>The Java&trade; Virtual Machine Specification</cite>. "
 				 "In addition, The <code>0xf0000000</code> bit identifies "
 				 "the method as synthetic, if the synthetic attribute "
 				 "<a href=\"#JDWP_VirtualMachine_Capabilities\">capability</a> is available.")
@@ -773,8 +772,8 @@
     (Command Status=9
         "Returns the current status of the reference type. The status "
 	"indicates the extent to which the reference type has been "
-	"initialized, as described in the "
-	"<a href=\"http://java.sun.com/docs/books/vmspec/html/Concepts.doc.html#16491\">VM specification</a>. "
+	"initialized, as described in section 2.1.6 of "
+	"<cite>The Java&trade; Virtual Machine Specification</cite>. "
 	"If the class is linked the PREPARED and VERIFIED bits in the returned status bits "
 	"will be set. If the class is initialized the INITIALIZED bit in the returned "
 	"status bits will be set. If an error occured during initialization then the "
@@ -852,9 +851,8 @@
         "Returns the JNI signature of a reference type along with the "
         "generic signature if there is one.  "
 	"Generic signatures are described in the signature attribute "
-        "section in the "
-	"<a href=\"http://java.sun.com/docs/books/vmspec\">
-        "Java Virtual Machine Specification, 3rd Edition.</a>  "
+        "section in "
+        "<cite>The Java&trade; Virtual Machine Specification</cite>. "
         "Since JDWP version 1.5."
 	"<p>
 	(Out
@@ -882,9 +880,8 @@
 	"by the compiler. "
         "Fields are returned in the order they occur in the class file.  "
 	"Generic signatures are described in the signature attribute "
-        "section in the "
-	"<a href=\"http://java.sun.com/docs/books/vmspec\">
-        "Java Virtual Machine Specification, 3rd Edition.</a>  "
+        "section in "
+        "<cite>The Java&trade; Virtual Machine Specification</cite>. "
         "Since JDWP version 1.5."
         (Out
             (referenceType refType "The reference type ID.")
@@ -900,8 +897,8 @@
                     (int modBits "The modifier bit flags (also known as access flags) "
 		                 "which provide additional information on the  "
                                  "field declaration. Individual flag values are "
-				 "defined in the "
- 	                         "<a href=\"http://java.sun.com/docs/books/vmspec/html/ClassFile.doc.html\">VM Specification</a>."
+				 "defined in Chapter 4 of "
+ 	                         "<cite>The Java&trade; Virtual Machine Specification</cite>. "
 				 "In addition, The <code>0xf0000000</code> bit identifies "
 				 "the field as synthetic, if the synthetic attribute "
 				 "<a href=\"#JDWP_VirtualMachine_Capabilities\">capability</a> is available.")
@@ -925,9 +922,8 @@
 	"if present, and any synthetic methods created by the compiler. "
         "Methods are returned in the order they occur in the class file.  "
 	"Generic signatures are described in the signature attribute "
-        "section in the "
-	"<a href=\"http://java.sun.com/docs/books/vmspec\">
-        "Java Virtual Machine Specification, 3rd Edition.</a>  "
+        "section in "
+        "<cite>The Java&trade; Virtual Machine Specification</cite>. "
         "Since JDWP version 1.5."
         (Out
             (referenceType refType "The reference type ID.")
@@ -943,8 +939,8 @@
                     (int modBits "The modifier bit flags (also known as access flags) "
 		                 "which provide additional information on the  "
                                  "method declaration. Individual flag values are "
-				 "defined in the "
- 	                         "<a href=\"http://java.sun.com/docs/books/vmspec/html/ClassFile.doc.html\">VM Specification</a>."
+				 "defined in Chapter 4 of "
+ 	                         "<cite>The Java&trade; Virtual Machine Specification</cite>. "
 				 "In addition, The <code>0xf0000000</code> bit identifies "
 				 "the method as synthetic, if the synthetic attribute "
 				 "<a href=\"#JDWP_VirtualMachine_Capabilities\">capability</a> is available.")
@@ -1006,8 +1002,8 @@
     )
     (Command ConstantPool=18
         "Return the raw bytes of the constant pool in the format of the "
-        "constant_pool item of the Class File Format in the "
-        "Java Virtual Machine Specification. "
+        "constant_pool item of the Class File Format in "
+        "<cite>The Java&trade; Virtual Machine Specification</cite>. "
         "<p>Since JDWP version 1.6. Requires canGetConstantPool capability - see "
 	"<a href=\"#JDWP_VirtualMachine_CapabilitiesNew\">CapabilitiesNew</a>.""
         (Out
@@ -1016,7 +1012,8 @@
         (Reply
             (int count "Total number of constant pool entries plus one. This "
                        "corresponds to the constant_pool_count item of the "
-                       "Class File Format in the Java Virtual Machine Specification. ")
+                       "Class File Format in "
+                       "<cite>The Java&trade; Virtual Machine Specification</cite>. ")
             (Repeat bytes
                 (byte cpbytes "Raw bytes of constant pool")
             )
@@ -1324,7 +1321,8 @@
         )
     )
     (Command Bytecodes=3
-        "Retrieve the method's bytecodes as defined in the JVM Specification."
+        "Retrieve the method's bytecodes as defined in "
+        "<cite>The Java&trade; Virtual Machine Specification</cite>. "
 	"Requires canGetBytecodes capability - see "
 	"<a href=\"#JDWP_VirtualMachine_CapabilitiesNew\">CapabilitiesNew</a>."
         (Out
@@ -1379,9 +1377,8 @@
 	"instance methods, the \"this\" reference is included in the "
 	"table. Also, synthetic variables may be present. "
 	"Generic signatures are described in the signature attribute "
-        "section in the "
-	"<a href=\"http://java.sun.com/docs/books/vmspec\">
-        "Java Virtual Machine Specification, 3rd Edition.</a>  "
+        "section in "
+        "<cite>The Java&trade; Virtual Machine Specification</cite>. "
         "Since JDWP version 1.5."
         (Out
             (referenceType refType "The class.")
@@ -1970,8 +1967,9 @@
 	"<p>"
         "The method which will return early is referred to as the "
         "called method. The called method is the current method (as "
-        "defined by the Frames section in the Java Virtual Machine "
-        "Specification) for the specified thread at the time this command "
+        "defined by the Frames section in "
+        "<cite>The Java&trade; Virtual Machine Specification</cite>) "
+        "for the specified thread at the time this command "
         "is received. "
 	"<p>"
         "The specified thread must be suspended. "
--- a/jdk/make/jpda/transport/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/jpda/transport/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/jpda/transport/shmem/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/jpda/transport/shmem/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/jpda/transport/socket/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/jpda/transport/socket/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/jpda/tty/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/jpda/tty/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/mkdemo/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/mkdemo/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/mkdemo/jfc/Font2DTest/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/mkdemo/jfc/Font2DTest/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
@@ -33,7 +33,7 @@
 include $(BUILDDIR)/common/Defs.gmk
 
 DEMO_ROOT       = $(SHARE_SRC)/demo/jfc/$(DEMONAME)
-DEMO_TOPFILES   = ./README.txt
+DEMO_TOPFILES   = ./README.txt ./$(DEMONAME).html
 DEMO_MAINCLASS  = $(DEMONAME)
 DEMO_DESTDIR    = $(DEMODIR)/jfc/$(DEMONAME)
 
--- a/jdk/make/mkdemo/jfc/Java2D/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/mkdemo/jfc/Java2D/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
@@ -33,7 +33,7 @@
 include $(BUILDDIR)/common/Defs.gmk
 
 DEMO_ROOT       = $(CLOSED_SRC)/share/demo/jfc/Java2D
-DEMO_TOPFILES   = ./Java2Demo.html ./README.txt
+DEMO_TOPFILES   = ./README.txt ./$(DEMONAME).html
 DEMO_MAINCLASS  = java2d.Java2Demo
 DEMO_DESTDIR    = $(DEMODIR)/jfc/Java2D
 
--- a/jdk/make/mkdemo/jfc/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/mkdemo/jfc/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -39,7 +39,8 @@
     Notepad         \
     SampleTree      \
     SwingApplet     \
-    TableExample
+    TableExample    \
+    TransparentRuler
 
 # Some demos aren't currently included in OpenJDK
 ifndef OPENJDK
--- a/jdk/make/mkdemo/jfc/SwingApplet/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/mkdemo/jfc/SwingApplet/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2002, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -33,7 +33,7 @@
 include $(BUILDDIR)/common/Defs.gmk
 
 DEMO_ROOT       = $(SHARE_SRC)/demo/jfc/$(DEMONAME)
-DEMO_TOPFILES   = ./README.txt
+DEMO_TOPFILES   = ./README.txt ./$(DEMONAME).html
 DEMO_MAINCLASS  = $(DEMONAME)
 DEMO_DESTDIR    = $(DEMODIR)/jfc/$(DEMONAME)
 
--- a/jdk/make/mkdemo/jfc/SwingSet2/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/mkdemo/jfc/SwingSet2/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
@@ -33,7 +33,7 @@
 include $(BUILDDIR)/common/Defs.gmk
 
 DEMO_ROOT       = $(CLOSED_SRC)/share/demo/jfc/$(DEMONAME)
-DEMO_TOPFILES   = ./README.txt
+DEMO_TOPFILES   = ./README.txt ./$(DEMONAME).html
 DEMO_MAINCLASS  = $(DEMONAME)
 DEMO_MANIFEST_ATTR = SplashScreen-Image: resources/images/splash.png
 DEMO_DESTDIR    = $(DEMODIR)/jfc/$(DEMONAME)
--- a/jdk/make/mkdemo/jfc/SwingSet3/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/mkdemo/jfc/SwingSet3/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/mkdemo/jfc/TransparentRuler/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,44 @@
+#
+# Copyright (c) 2011, Oracle and/or its affiliates. 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.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+#
+# Makefile to build the TransparentRuler demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/jfc
+DEMONAME = TransparentRuler
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT       = $(SHARE_SRC)/demo/jfc/$(DEMONAME)
+DEMO_TOPFILES	= ./README.txt
+DEMO_MAINCLASS  = transparentruler.Ruler
+DEMO_DESTDIR    = $(DEMODIR)/jfc/$(DEMONAME)
+
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
--- a/jdk/make/mkdemo/jpda/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/mkdemo/jpda/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/mkdemo/jvmti/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/mkdemo/jvmti/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/mkdemo/management/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/mkdemo/management/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/mksample/dtrace/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/mksample/dtrace/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2006, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/mksample/jmx/jmx-scandir/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/mksample/jmx/jmx-scandir/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2006, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/mksample/nbproject/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/mksample/nbproject/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2006, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/mksample/nio/file/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/mksample/nio/file/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/mksample/nio/multicast/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/mksample/nio/multicast/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/mksample/nio/server/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/mksample/nio/server/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/mksample/scripting/scriptpad/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/mksample/scripting/scriptpad/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2006, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/mksample/webservices/EbayClient/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/mksample/webservices/EbayClient/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2006, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/mksample/webservices/EbayServer/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/mksample/webservices/EbayServer/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2006, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/netbeans/common/java-data-native.ent	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/netbeans/common/java-data-native.ent	Wed Apr 20 09:31:11 2011 -0700
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!--
- Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
 
  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions
--- a/jdk/make/netbeans/common/java-data-no-native.ent	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/netbeans/common/java-data-no-native.ent	Wed Apr 20 09:31:11 2011 -0700
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!--
- Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
 
  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions
--- a/jdk/make/sun/applet/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/applet/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/awt/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/awt/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/awt/mapfile-mawt-vers	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/awt/mapfile-mawt-vers	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/awt/mapfile-vers-linux	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/awt/mapfile-vers-linux	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/cmm/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/cmm/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2006, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/cmm/kcms/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/cmm/kcms/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/cmm/lcms/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/cmm/lcms/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/dcpr/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/dcpr/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/font/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/font/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/font/t2k/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/font/t2k/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/headless/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/headless/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/headless/mapfile-vers	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/headless/mapfile-vers	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/image/generic/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/image/generic/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/image/vis/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/image/vis/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/jar/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/jar/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/javazic/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/javazic/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/javazic/tzdata/VERSION	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/javazic/tzdata/VERSION	Wed Apr 20 09:31:11 2011 -0700
@@ -21,4 +21,4 @@
 # or visit www.oracle.com if you need additional information or have any
 # questions.
 #
-tzdata2011d
+tzdata2011e
--- a/jdk/make/sun/javazic/tzdata/africa	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/javazic/tzdata/africa	Wed Apr 20 09:31:11 2011 -0700
@@ -734,6 +734,48 @@
 # http://www.timeanddate.com/news/time/morocco-starts-dst-2010.html
 # </a>
 
+# From Dan Abitol (2011-03-30):
+# ...Rules for Africa/Casablanca are the following (24h format)
+# The 3rd april 2011 at 00:00:00, [it] will be 3rd april 1:00:00
+# The 31th july 2011 at 00:59:59,  [it] will be 31th July 00:00:00
+# ...Official links of change in morocco
+# The change was broadcast on the FM Radio
+# I ve called ANRT (telecom regulations in Morocco) at
+# +212.537.71.84.00
+# <a href="http://www.anrt.net.ma/fr/">
+# http://www.anrt.net.ma/fr/
+# </a>
+# They said that
+# <a href="http://www.map.ma/fr/sections/accueil/l_heure_legale_au_ma/view">
+# http://www.map.ma/fr/sections/accueil/l_heure_legale_au_ma/view
+# </a>
+# is the official publication to look at.
+# They said that the decision was already taken.
+#
+# More articles in the press
+# <a href="http://www.yabiladi.com/articles/details/5058/secret-l-heure-d-ete-maroc-lev">
+# http://www.yabiladi.com/articles/details/5058/secret-l-heure-d-ete-maroc-lev
+# </a>
+# e.html
+# <a href="http://www.lematin.ma/Actualite/Express/Article.asp?id=148923">
+# http://www.lematin.ma/Actualite/Express/Article.asp?id=148923
+# </a>
+# <a href="http://www.lavieeco.com/actualite/Le-Maroc-passe-sur-GMT%2B1-a-partir-de-dim">
+# http://www.lavieeco.com/actualite/Le-Maroc-passe-sur-GMT%2B1-a-partir-de-dim
+# anche-prochain-5538.html
+# </a>
+
+# From Petr Machata (2011-03-30):
+# They have it written in English here:
+# <a href="http://www.map.ma/eng/sections/home/morocco_to_spring_fo/view">
+# http://www.map.ma/eng/sections/home/morocco_to_spring_fo/view
+# </a>
+#
+# It says there that "Morocco will resume its standard time on July 31,
+# 2011 at midnight." Now they don't say whether they mean midnight of
+# wall clock time (i.e. 11pm UTC), but that's what I would assume. It has
+# also been like that in the past.
+
 # RULE	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 
 Rule	Morocco	1939	only	-	Sep	12	 0:00	1:00	S
@@ -757,6 +799,8 @@
 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	-
+Rule	Morocco	2011	only	-	Apr	 3	 0:00	1:00	S
+Rule	Morocco	2011	only	-	Jul	 31	 0	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
--- a/jdk/make/sun/javazic/tzdata/southamerica	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/javazic/tzdata/southamerica	Wed Apr 20 09:31:11 2011 -0700
@@ -1193,6 +1193,19 @@
 # From Arthur David Olson (2011-03-02):
 # The emol.com article mentions a water shortage as the cause of the
 # postponement, which may mean that it's not a permanent change.
+
+# From Glenn Eychaner (2011-03-28):
+# The article:
+# <a href="http://diario.elmercurio.com/2011/03/28/_portada/_portada/noticias/7565897A-CA86-49E6-9E03-660B21A4883E.htm?id=3D{7565897A-CA86-49E6-9E03-660B21A4883E}">
+# http://diario.elmercurio.com/2011/03/28/_portada/_portada/noticias/7565897A-CA86-49E6-9E03-660B21A4883E.htm?id=3D{7565897A-CA86-49E6-9E03-660B21A4883E}
+# </a>
+#
+# In English:
+# Chile's clocks will go back an hour this year on the 7th of May instead
+# of this Saturday. They will go forward again the 3rd Saturday in
+# August, not in October as they have since 1968. This is a pilot plan
+# which will be reevaluated in 2012.
+
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Chile	1927	1932	-	Sep	 1	0:00	1:00	S
 Rule	Chile	1928	1932	-	Apr	 1	0:00	0	-
@@ -1222,13 +1235,16 @@
 Rule	Chile	1998	only	-	Mar	Sun>=9	3:00u	0	-
 Rule	Chile	1998	only	-	Sep	27	4:00u	1:00	S
 Rule	Chile	1999	only	-	Apr	 4	3:00u	0	-
-Rule	Chile	1999	max	-	Oct	Sun>=9	4:00u	1:00	S
+Rule	Chile	1999	2010	-	Oct	Sun>=9	4:00u	1:00	S
+Rule	Chile	2011	only	-	Aug	Sun>=16	4:00u	1:00	S
+Rule	Chile	2012	max	-	Oct	Sun>=9	4:00u	1:00	S
 Rule	Chile	2000	2007	-	Mar	Sun>=9	3:00u	0	-
 # N.B.: the end of March 29 in Chile is March 30 in Universal time,
 # which is used below in specifying the transition.
 Rule	Chile	2008	only	-	Mar	30	3:00u	0	-
 Rule	Chile	2009	only	-	Mar	Sun>=9	3:00u	0	-
-Rule	Chile	2010	2011	-	Apr	Sun>=1	3:00u	0	-
+Rule	Chile	2010	only	-	Apr	Sun>=1	3:00u	0	-
+Rule	Chile	2011	only	-	May	Sun>=2	3:00u	0	-
 Rule	Chile	2012	max	-	Mar	Sun>=9	3:00u	0	-
 # IATA SSIM anomalies: (1992-02) says 1992-03-14;
 # (1996-09) says 1998-03-08.  Ignore these.
--- a/jdk/make/sun/jconsole/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/jconsole/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/jdbc/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/jdbc/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/jdga/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/jdga/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/jpeg/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/jpeg/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/launcher/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/launcher/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/management/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/management/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/native2ascii/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/native2ascii/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/net/others/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/net/others/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/net/spi/nameservice/dns/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/net/spi/nameservice/dns/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/nio/cs/FILES_java.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/nio/cs/FILES_java.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/org/mozilla/javascript/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/org/mozilla/javascript/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/pisces/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/pisces/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/rmi/cgi/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/rmi/cgi/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/rmi/oldtools/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/rmi/oldtools/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/rmi/registry/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/rmi/registry/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/rmi/rmi/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/rmi/rmi/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/rmi/rmic/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/rmi/rmic/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/rmi/rmid/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/rmi/rmid/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/security/ec/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/security/ec/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/security/jgss/wrapper/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/security/jgss/wrapper/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/security/krb5/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/security/krb5/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/security/mscapi/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/security/mscapi/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/security/pkcs11/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/security/pkcs11/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/security/smartcardio/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/security/smartcardio/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/serialver/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/serialver/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/splashscreen/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/splashscreen/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/text/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/text/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/tools/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/tools/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/tracing/dtrace/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/tracing/dtrace/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/sun/xawt/mapfile-vers	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/sun/xawt/mapfile-vers	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
@@ -158,6 +158,7 @@
         Java_sun_awt_X11_XRobotPeer_mouseReleaseImpl;
         Java_sun_awt_X11_XRobotPeer_mouseWheelImpl;
         Java_sun_awt_X11_XRobotPeer_setup;
+        Java_sun_awt_X11_XRobotPeer__1dispose;
         Java_sun_awt_X11_XToolkit_getNumberOfButtonsImpl;
         Java_java_awt_Component_initIDs;
         Java_java_awt_Container_initIDs;
@@ -225,6 +226,7 @@
 	Java_sun_awt_X11GraphicsConfig_destroyBackBuffer;
 	Java_sun_awt_X11GraphicsConfig_swapBuffers;
 	Java_sun_awt_X11GraphicsConfig_isTranslucencyCapable;
+        Java_sun_awt_X11_XToolkit_getTrayIconDisplayTimeout;
         Java_java_awt_Insets_initIDs;
         Java_java_awt_KeyboardFocusManager_initIDs;
         Java_java_awt_Font_initIDs;
--- a/jdk/make/tools/reorder/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/tools/reorder/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/make/tools/sharing/classlist.linux	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/tools/sharing/classlist.linux	Wed Apr 20 09:31:11 2011 -0700
@@ -104,9 +104,7 @@
 java/lang/ref/Reference$Lock
 java/lang/ref/Reference$ReferenceHandler
 java/lang/ref/Finalizer$FinalizerThread
-java/util/Hashtable$EmptyEnumerator
 java/util/Enumeration
-java/util/Hashtable$EmptyIterator
 java/util/Iterator
 java/util/Hashtable$Entry
 java/nio/charset/Charset
@@ -192,8 +190,6 @@
 java/util/LinkedHashMap
 java/util/LinkedHashMap$Entry
 java/lang/StringBuilder
-java/io/File$1
-sun/misc/JavaIODeleteOnExitAccess
 sun/misc/SharedSecrets
 java/lang/ClassLoader$3
 java/lang/StringCoding$StringEncoder
@@ -207,7 +203,6 @@
 java/io/Console
 java/io/Console$1
 sun/misc/JavaIOAccess
-java/io/Console$1$1
 java/lang/Shutdown
 java/util/ArrayList
 java/lang/Shutdown$Lock
@@ -330,7 +325,6 @@
 java/beans/PropertyChangeEvent
 java/util/EventObject
 java/awt/Component$AWTTreeLock
-sun/awt/DebugHelper
 sun/awt/NativeLibLoader
 sun/security/action/LoadLibraryAction
 java/awt/GraphicsEnvironment
@@ -341,7 +335,6 @@
 java/lang/ProcessEnvironment$Value
 java/lang/ProcessEnvironment$StringEnvironment
 java/util/Collections$UnmodifiableMap
-sun/awt/DebugHelperStub
 java/awt/Toolkit
 java/awt/Toolkit$3
 sun/util/CoreResourceBundleControl
@@ -391,9 +384,7 @@
 sun/java2d/SunGraphicsEnvironment
 sun/java2d/FontSupport
 sun/awt/DisplayChangedListener
-sun/java2d/SunGraphicsEnvironment$TTFilter
 java/io/FilenameFilter
-sun/java2d/SunGraphicsEnvironment$T1Filter
 sun/awt/X11GraphicsEnvironment$1
 sun/awt/SunToolkit
 sun/awt/WindowClosingSupport
@@ -403,7 +394,6 @@
 java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject
 java/util/concurrent/locks/Condition
 sun/awt/AWTAutoShutdown
-sun/awt/AWTAutoShutdown$PeerMap
 sun/awt/SunToolkit$6
 java/awt/Dialog$ModalExclusionType
 java/lang/Enum
@@ -425,7 +415,6 @@
 java/util/HashMap$Values
 java/util/HashMap$ValueIterator
 java/util/HashMap$HashIterator
-sun/font/FontManager$1
 java/awt/Font
 java/awt/geom/AffineTransform
 sun/font/AttributeValues
@@ -463,13 +452,11 @@
 sun/java2d/Disposer
 sun/java2d/Disposer$1
 sun/font/StrikeCache$1
-sun/font/FontManager$FontRegistrationInfo
 sun/awt/motif/MFontConfiguration
 sun/awt/FontConfiguration
 sun/awt/FontDescriptor
 java/util/Scanner
 java/util/regex/Pattern
-java/util/regex/Pattern$8
 java/util/regex/Pattern$Node
 java/util/regex/Pattern$LastNode
 java/util/regex/Pattern$GroupHead
@@ -509,7 +496,6 @@
 java/util/regex/Pattern$BmpCharProperty
 java/util/regex/Pattern$6
 java/util/regex/Pattern$CharProperty$1
-java/util/regex/Pattern$10
 sun/nio/ch/FileChannelImpl
 java/nio/channels/FileChannel
 java/nio/channels/ByteChannel
@@ -565,7 +551,6 @@
 java/text/spi/DecimalFormatSymbolsProvider
 java/util/Currency
 java/util/Currency$1
-java/util/CurrencyData
 java/util/spi/CurrencyNameProvider
 sun/util/resources/CurrencyNames
 sun/util/resources/LocaleNamesBundle
@@ -582,7 +567,6 @@
 java/util/regex/Pattern$5
 java/util/regex/Pattern$Loop
 java/util/regex/Pattern$Prolog
-java/util/regex/Pattern$9
 java/util/regex/Pattern$BranchConn
 java/util/regex/Pattern$Branch
 java/nio/channels/spi/AbstractInterruptibleChannel$1
@@ -635,11 +619,8 @@
 java/awt/image/PackedColorModel
 java/awt/color/ColorSpace
 java/awt/color/ICC_Profile
-sun/awt/color/ProfileDeferralInfo
-sun/awt/color/ProfileDeferralMgr
 java/awt/color/ICC_ProfileRGB
 java/awt/color/ICC_Profile$1
-sun/awt/color/ProfileActivator
 java/awt/color/ICC_ColorSpace
 sun/java2d/pipe/NullPipe
 sun/java2d/pipe/PixelDrawPipe
@@ -662,8 +643,6 @@
 sun/java2d/pipe/SpanClipRenderer
 sun/java2d/pipe/Region
 sun/java2d/pipe/RegionIterator
-sun/java2d/pipe/DuctusShapeRenderer
-sun/java2d/pipe/DuctusRenderer
 sun/java2d/pipe/AlphaPaintPipe
 sun/java2d/pipe/SpanShapeRenderer$Composite
 sun/java2d/pipe/SpanShapeRenderer
@@ -737,7 +716,6 @@
 sun/awt/X11/Native
 sun/awt/X11/Native$1
 java/awt/EventQueue
-sun/awt/X11/XToolkit$7
 java/util/EmptyStackException
 java/lang/reflect/InvocationTargetException
 java/awt/EventDispatchThread
@@ -746,10 +724,7 @@
 sun/awt/PeerEvent
 java/awt/event/InvocationEvent
 java/awt/ActiveEvent
-java/awt/EventQueueItem
 sun/awt/X11/XToolkit$1
-sun/awt/X11/XToolkit$XErrorHandler
-sun/awt/X11/XToolkit$5
 sun/awt/X11/XEventDispatcher
 sun/awt/SunToolkit$ModalityListenerList
 sun/awt/ModalityListener
@@ -761,21 +736,18 @@
 java/util/Deque
 java/util/Queue
 java/util/AbstractSequentialList
-java/util/LinkedList$Entry
 sun/awt/X11/AwtScreenData
 sun/awt/X11/XWM
 sun/awt/X11/MWMConstants
 sun/awt/X11/XAtom
 java/awt/Insets
 sun/awt/X11/XWM$1
-sun/awt/X11/XWM$2
 sun/awt/X11/XSetWindowAttributes
 sun/awt/X11/XErrorEvent
 sun/awt/X11/XNETProtocol
 sun/awt/X11/XStateProtocol
 sun/awt/X11/XLayerProtocol
 sun/awt/X11/XProtocol
-sun/awt/X11/XProtocol$1
 sun/awt/X11/WindowPropertyGetter
 sun/awt/X11/UnsafeXDisposerRecord
 sun/awt/X11/XPropertyCache
@@ -783,7 +755,6 @@
 sun/awt/X11/XAtomList
 sun/awt/X11/XToolkit$3
 sun/awt/X11/XAnyEvent
-sun/awt/X11/IXAnyEvent
 java/awt/Window$WindowDisposerRecord
 java/awt/KeyboardFocusManager
 java/awt/KeyEventDispatcher
@@ -794,7 +765,6 @@
 java/awt/DefaultFocusTraversalPolicy
 java/awt/ContainerOrderFocusTraversalPolicy
 java/awt/FocusTraversalPolicy
-java/awt/MutableBoolean
 java/util/Collections$UnmodifiableSet
 sun/awt/HeadlessToolkit
 sun/awt/X11/XKeyboardFocusManagerPeer
@@ -856,7 +826,6 @@
 sun/java2d/x11/X11Renderer
 sun/awt/X11/XGlobalCursorManager
 sun/awt/GlobalCursorManager
-sun/awt/X11/XToolkit$6
 java/awt/Cursor$CursorDisposer
 java/awt/AWTException
 java/awt/HeadlessException
@@ -888,7 +857,6 @@
 java/awt/event/MouseMotionListener
 java/awt/event/MouseWheelListener
 java/awt/event/InputMethodListener
-java/awt/Component$NativeInLightFixer
 java/awt/event/ContainerListener
 javax/accessibility/AccessibleContext
 sun/reflect/UnsafeObjectFieldAccessorImpl
@@ -969,7 +937,6 @@
 javax/swing/SwingPaintEventDispatcher
 sun/awt/PaintEventDispatcher
 javax/swing/UIManager$2
-javax/swing/UIManager$3
 java/awt/PopupMenu
 java/awt/Menu
 java/awt/MenuItem
@@ -1062,8 +1029,6 @@
 javax/swing/plaf/LabelUI
 javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate$1
 javax/swing/plaf/basic/BasicHTML
-javax/swing/SystemEventQueueUtilities
-javax/swing/SystemEventQueueUtilities$SystemEventQueue
 sun/awt/NullComponentPeer
 java/awt/event/WindowEvent
 java/awt/EventQueue$1
@@ -1084,11 +1049,9 @@
 sun/misc/ExtensionDependency
 java/lang/Package
 sun/security/util/ManifestEntryVerifier
-sun/security/provider/Sun
 java/security/Provider
 java/security/Provider$ServiceKey
 java/security/Provider$EngineDescription
-sun/security/provider/Sun$1
 java/security/Security
 java/security/Security$1
 sun/misc/FloatingDecimal
@@ -1133,7 +1096,6 @@
 javax/swing/text/SimpleAttributeSet$EmptyAttributeSet
 javax/swing/text/StyleContext$NamedStyle
 javax/swing/text/Style
-javax/swing/text/SimpleAttributeSet$1
 javax/swing/text/StyleContext$SmallAttributeSet
 javax/swing/text/AbstractDocument$BidiRootElement
 javax/swing/text/AbstractDocument$BranchElement
@@ -1267,7 +1229,6 @@
 sun/nio/cs/UTF_16$Decoder
 sun/nio/cs/UnicodeDecoder
 sun/font/FileFontStrike
-sun/font/FileFont$FileFontDisposer
 sun/font/TrueTypeGlyphMapper
 sun/font/CMap
 sun/font/CMap$NullCMapClass
@@ -1281,20 +1242,12 @@
 sun/awt/EventQueueItem
 sun/awt/SunToolkit$3
 sun/awt/X11/XExposeEvent
-sun/awt/X11/ComponentAccessor
-sun/awt/X11/ComponentAccessor$1
 sun/reflect/UnsafeBooleanFieldAccessorImpl
 sun/awt/event/IgnorePaintEvent
 java/awt/image/DataBufferInt
 java/awt/image/SinglePixelPackedSampleModel
 sun/awt/image/IntegerInterleavedRaster
-sun/java2d/x11/X11RemoteOffScreenImage
-sun/awt/image/RemoteOffScreenImage
 sun/awt/image/OffScreenImage
-sun/java2d/x11/X11RemoteOffScreenImage$X11RemoteSurfaceManager
-sun/awt/image/OffScreenSurfaceManager
-sun/awt/image/CachingSurfaceManager
-sun/awt/image/RasterListener
 sun/awt/image/BufImgSurfaceData
 sun/java2d/opengl/GLXGraphicsConfig
 sun/java2d/opengl/OGLGraphicsConfig
@@ -1302,7 +1255,6 @@
 sun/awt/image/WritableRasterNative
 sun/awt/image/DataBufferNative
 sun/java2d/SurfaceManagerFactory
-sun/java2d/x11/X11CachingSurfaceManager
 sun/java2d/opengl/GLXSurfaceData
 sun/java2d/opengl/OGLSurfaceData
 sun/font/CompositeGlyphMapper
@@ -1332,10 +1284,7 @@
 java/lang/ProcessImpl
 java/lang/UNIXProcess
 java/lang/Process
-java/lang/UNIXProcess$Gate
 java/lang/UNIXProcess$1
-java/lang/UNIXProcess$1$1
-java/lang/UNIXProcess$1$1$1
 java/net/ServerSocket
 java/util/Random
 java/util/concurrent/atomic/AtomicLong
@@ -1422,7 +1371,6 @@
 javax/swing/ToolTipManager$insideTimerAction
 javax/swing/ToolTipManager$outsideTimerAction
 javax/swing/ToolTipManager$stillInsideTimerAction
-javax/swing/ToolTipManager$Actions
 sun/swing/UIAction
 javax/swing/Action
 javax/swing/ToolTipManager$MoveBeforeEnterListener
@@ -1715,7 +1663,6 @@
 javax/swing/border/EtchedBorder
 javax/swing/JToolBar$Separator
 javax/swing/plaf/basic/BasicToolBarSeparatorUI
-sun/awt/color/CMM
 java/applet/Applet
 java/awt/Panel
 com/sun/awt/AWTUtilities
@@ -1752,7 +1699,6 @@
 java/awt/LightweightDispatcher$2
 sun/awt/X11/XReparentEvent
 sun/awt/X11/XWindowAttributes
-javax/swing/SystemEventQueueUtilities$ComponentWorkRequest
 sun/awt/X11/XFocusChangeEvent
 sun/awt/X11/XComponentPeer$1
 sun/awt/X11/XUnmapEvent
@@ -1771,7 +1717,6 @@
 sun/net/www/MimeTable
 java/net/FileNameMap
 sun/net/www/MimeTable$1
-sun/net/www/MimeTable$2
 sun/net/www/MimeEntry
 java/net/URLConnection$1
 java/text/SimpleDateFormat
@@ -1957,7 +1902,6 @@
 javax/swing/tree/VariableHeightLayoutCache$TreeStateNode
 javax/swing/tree/DefaultMutableTreeNode
 javax/swing/tree/MutableTreeNode
-javax/swing/tree/DefaultMutableTreeNode$1
 javax/swing/tree/DefaultMutableTreeNode$PreorderEnumeration
 javax/swing/event/TableColumnModelEvent
 java/text/ParseException
@@ -2014,21 +1958,13 @@
 sun/java2d/HeadlessGraphicsEnvironment
 java/util/Hashtable$KeySet
 java/awt/FontFormatException
-sun/java2d/SunGraphicsEnvironment$2
 sun/font/Type1Font$1
 java/nio/channels/FileChannel$MapMode
 sun/nio/ch/FileChannelImpl$Unmapper
 sun/nio/ch/Util$3
 java/nio/DirectByteBufferR
 java/nio/charset/Charset$3
-sun/nio/cs/ext/ExtendedCharsets
 sun/nio/cs/AbstractCharsetProvider
-sun/nio/cs/ext/SJIS
-sun/nio/cs/ext/SJIS$Decoder
-sun/nio/cs/ext/DelegatableDecoder
-sun/nio/cs/ext/JIS_X_0208_Decoder
-sun/nio/cs/ext/DoubleByteDecoder
-sun/nio/cs/ext/JIS_X_0201$Decoder
 sun/nio/cs/SingleByteDecoder
 java/lang/CharacterData00
 javax/swing/DefaultListModel
@@ -2145,7 +2081,6 @@
 java/security/MessageDigest$Delegate
 sun/security/provider/ByteArrayAccess
 java/io/ObjectStreamClass$ClassDataSlot
-java/io/ObjectInputStream$CallbackContext
 sun/reflect/UnsafeQualifiedStaticLongFieldAccessorImpl
 java/security/SignatureException
 java/security/InvalidKeyException
@@ -2194,8 +2129,6 @@
 java/math/MutableBigInteger
 java/math/SignedMutableBigInteger
 java/awt/EventQueue$1AWTInvocationLock
-javax/swing/SystemEventQueueUtilities$RunnableCanvas
-javax/swing/SystemEventQueueUtilities$RunnableCanvasGraphics
 java/awt/Component$FlipBufferStrategy
 java/awt/SentEvent
 sun/awt/X11/XDestroyWindowEvent
@@ -2231,18 +2164,13 @@
 javax/swing/plaf/synth/SynthLookAndFeel$Handler
 javax/swing/plaf/synth/SynthDefaultLookup
 com/sun/java/swing/plaf/gtk/GTKEngine
-com/sun/java/swing/plaf/gtk/GTKDefaultEngine
 com/sun/java/swing/plaf/gtk/GTKEngine$Settings
 com/sun/java/swing/plaf/gtk/GTKStyleFactory
 com/sun/java/swing/plaf/gtk/PangoFonts
-sun/font/FontManager$FontConfigInfo
 com/sun/java/swing/plaf/gtk/GTKLookAndFeel$WeakPCL
 javax/swing/plaf/synth/Region
 javax/swing/plaf/synth/SynthLookAndFeel$AATextListener
-com/sun/java/swing/plaf/gtk/GTKNativeEngine
-com/sun/java/swing/plaf/gtk/GTKNativeEngine$WidgetType
 com/sun/java/swing/plaf/gtk/GTKRegion
-com/sun/java/swing/plaf/gtk/GTKDefaultStyle
 com/sun/java/swing/plaf/gtk/GTKStyle
 com/sun/java/swing/plaf/gtk/GTKConstants
 javax/swing/plaf/synth/SynthStyle
@@ -2268,7 +2196,6 @@
 javax/swing/plaf/synth/SynthToggleButtonUI
 javax/swing/plaf/basic/BasicBorders$FieldBorder
 javax/swing/plaf/synth/SynthMenuBarUI
-javax/swing/plaf/synth/DefaultMenuLayout
 javax/swing/plaf/synth/SynthMenuUI
 javax/swing/plaf/synth/SynthUI
 com/sun/java/swing/plaf/gtk/GTKIconFactory
@@ -2332,7 +2259,6 @@
 javax/security/auth/AuthPermission
 java/lang/Thread$1
 java/util/logging/LogManager$5
-java/util/logging/LogManager$6
 sun/applet/StdAppletViewerFactory
 sun/applet/AppletViewerFactory
 sun/applet/AppletViewer$UserActionListener
@@ -2343,7 +2269,6 @@
 sun/applet/AppletPanel$10
 java/security/Policy$1
 sun/security/provider/PolicyFile$1
-sun/security/provider/PolicyInfo
 sun/security/provider/PolicyFile$3
 sun/security/util/PropertyExpander
 sun/security/provider/PolicyParser
@@ -2353,12 +2278,10 @@
 sun/security/provider/PolicyFile$PolicyEntry
 sun/security/provider/PolicyFile$6
 sun/security/provider/PolicyFile$7
-sun/security/provider/SelfPermission
 java/net/SocketPermissionCollection
 java/util/PropertyPermissionCollection
 sun/applet/AppletPanel$9
 sun/applet/AppletClassLoader
-sun/applet/AppletClassLoader$4
 sun/applet/AppletThreadGroup
 sun/applet/AppContextCreator
 sun/applet/AppletPanel$1
@@ -2372,10 +2295,8 @@
 sun/awt/X11/XMenuItemPeer
 java/awt/MenuShortcut
 sun/awt/X11/XMenuWindow
-sun/awt/X11/XMenuBarPeer$1
 sun/awt/X11/XMenuItemPeer$TextMetrics
 sun/awt/AppContext$3
-sun/awt/MostRecentThreadAppContext
 sun/awt/X11/XMenuBarPeer$MappingData
 sun/awt/X11/XBaseMenuWindow$MappingData
 sun/applet/AppletViewer$1
--- a/jdk/make/tools/sharing/classlist.solaris	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/tools/sharing/classlist.solaris	Wed Apr 20 09:31:11 2011 -0700
@@ -104,9 +104,7 @@
 java/lang/ref/Reference$Lock
 java/lang/ref/Reference$ReferenceHandler
 java/lang/ref/Finalizer$FinalizerThread
-java/util/Hashtable$EmptyEnumerator
 java/util/Enumeration
-java/util/Hashtable$EmptyIterator
 java/util/Iterator
 java/util/Hashtable$Entry
 java/nio/charset/Charset
@@ -198,8 +196,6 @@
 java/io/ExpiringCache$1
 java/util/LinkedHashMap
 java/util/LinkedHashMap$Entry
-java/io/File$1
-sun/misc/JavaIODeleteOnExitAccess
 sun/misc/SharedSecrets
 java/lang/ClassLoader$3
 java/lang/StringCoding$StringEncoder
@@ -213,7 +209,6 @@
 java/io/Console
 java/io/Console$1
 sun/misc/JavaIOAccess
-java/io/Console$1$1
 java/lang/Shutdown
 java/util/ArrayList
 java/lang/Shutdown$Lock
@@ -332,7 +327,6 @@
 java/beans/PropertyChangeEvent
 java/util/EventObject
 java/awt/Component$AWTTreeLock
-sun/awt/DebugHelper
 sun/awt/NativeLibLoader
 sun/security/action/LoadLibraryAction
 java/awt/GraphicsEnvironment
@@ -343,7 +337,6 @@
 java/lang/ProcessEnvironment$Value
 java/lang/ProcessEnvironment$StringEnvironment
 java/util/Collections$UnmodifiableMap
-sun/awt/DebugHelperStub
 java/awt/Toolkit
 java/awt/Toolkit$3
 sun/util/CoreResourceBundleControl
@@ -393,9 +386,7 @@
 sun/java2d/SunGraphicsEnvironment
 sun/java2d/FontSupport
 sun/awt/DisplayChangedListener
-sun/java2d/SunGraphicsEnvironment$TTFilter
 java/io/FilenameFilter
-sun/java2d/SunGraphicsEnvironment$T1Filter
 sun/awt/X11GraphicsEnvironment$1
 sun/awt/SunToolkit
 sun/awt/WindowClosingSupport
@@ -405,7 +396,6 @@
 java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject
 java/util/concurrent/locks/Condition
 sun/awt/AWTAutoShutdown
-sun/awt/AWTAutoShutdown$PeerMap
 sun/awt/SunToolkit$6
 java/awt/Dialog$ModalExclusionType
 java/lang/Enum
@@ -426,7 +416,6 @@
 java/util/HashMap$Values
 java/util/HashMap$ValueIterator
 java/util/HashMap$HashIterator
-sun/font/FontManager$1
 java/awt/Font
 java/awt/geom/AffineTransform
 sun/font/AttributeValues
@@ -464,7 +453,6 @@
 sun/java2d/Disposer
 sun/java2d/Disposer$1
 sun/font/StrikeCache$1
-sun/font/FontManager$FontRegistrationInfo
 sun/awt/motif/MFontConfiguration
 sun/awt/FontConfiguration
 sun/awt/FontDescriptor
@@ -509,11 +497,8 @@
 java/awt/image/PackedColorModel
 java/awt/color/ColorSpace
 java/awt/color/ICC_Profile
-sun/awt/color/ProfileDeferralInfo
-sun/awt/color/ProfileDeferralMgr
 java/awt/color/ICC_ProfileRGB
 java/awt/color/ICC_Profile$1
-sun/awt/color/ProfileActivator
 java/awt/color/ICC_ColorSpace
 sun/java2d/pipe/NullPipe
 sun/java2d/pipe/PixelDrawPipe
@@ -536,8 +521,6 @@
 sun/java2d/pipe/SpanClipRenderer
 sun/java2d/pipe/Region
 sun/java2d/pipe/RegionIterator
-sun/java2d/pipe/DuctusShapeRenderer
-sun/java2d/pipe/DuctusRenderer
 sun/java2d/pipe/AlphaPaintPipe
 sun/java2d/pipe/SpanShapeRenderer$Composite
 sun/java2d/pipe/SpanShapeRenderer
@@ -611,7 +594,6 @@
 sun/awt/X11/Native
 sun/awt/X11/Native$1
 java/awt/EventQueue
-sun/awt/X11/XToolkit$7
 java/util/EmptyStackException
 java/lang/reflect/InvocationTargetException
 java/awt/EventDispatchThread
@@ -620,10 +602,7 @@
 sun/awt/PeerEvent
 java/awt/event/InvocationEvent
 java/awt/ActiveEvent
-java/awt/EventQueueItem
 sun/awt/X11/XToolkit$1
-sun/awt/X11/XToolkit$XErrorHandler
-sun/awt/X11/XToolkit$5
 sun/awt/X11/XEventDispatcher
 sun/awt/SunToolkit$ModalityListenerList
 sun/awt/ModalityListener
@@ -635,21 +614,18 @@
 java/util/Deque
 java/util/Queue
 java/util/AbstractSequentialList
-java/util/LinkedList$Entry
 sun/awt/X11/AwtScreenData
 sun/awt/X11/XWM
 sun/awt/X11/MWMConstants
 sun/awt/X11/XAtom
 java/awt/Insets
 sun/awt/X11/XWM$1
-sun/awt/X11/XWM$2
 sun/awt/X11/XSetWindowAttributes
 sun/awt/X11/XErrorEvent
 sun/awt/X11/XNETProtocol
 sun/awt/X11/XStateProtocol
 sun/awt/X11/XLayerProtocol
 sun/awt/X11/XProtocol
-sun/awt/X11/XProtocol$1
 java/lang/Long$LongCache
 sun/awt/X11/WindowPropertyGetter
 sun/awt/X11/UnsafeXDisposerRecord
@@ -659,7 +635,6 @@
 sun/awt/X11/XToolkit$3
 java/awt/Window$WindowDisposerRecord
 sun/awt/X11/XAnyEvent
-sun/awt/X11/IXAnyEvent
 java/awt/KeyboardFocusManager
 java/awt/KeyEventDispatcher
 java/awt/KeyEventPostProcessor
@@ -669,7 +644,6 @@
 java/awt/DefaultFocusTraversalPolicy
 java/awt/ContainerOrderFocusTraversalPolicy
 java/awt/FocusTraversalPolicy
-java/awt/MutableBoolean
 java/util/Collections$UnmodifiableSet
 sun/awt/HeadlessToolkit
 sun/awt/X11/XKeyboardFocusManagerPeer
@@ -728,7 +702,6 @@
 sun/java2d/x11/X11Renderer
 sun/awt/X11/XGlobalCursorManager
 sun/awt/GlobalCursorManager
-sun/awt/X11/XToolkit$6
 java/awt/Cursor$CursorDisposer
 java/awt/AWTException
 java/awt/HeadlessException
@@ -760,7 +733,6 @@
 java/awt/event/MouseMotionListener
 java/awt/event/MouseWheelListener
 java/awt/event/InputMethodListener
-java/awt/Component$NativeInLightFixer
 java/awt/event/ContainerListener
 javax/accessibility/AccessibleContext
 sun/reflect/UnsafeObjectFieldAccessorImpl
@@ -845,7 +817,6 @@
 javax/swing/SwingPaintEventDispatcher
 sun/awt/PaintEventDispatcher
 javax/swing/UIManager$2
-javax/swing/UIManager$3
 java/awt/PopupMenu
 java/awt/Menu
 java/awt/MenuItem
@@ -941,8 +912,6 @@
 javax/swing/plaf/LabelUI
 javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate$1
 javax/swing/plaf/basic/BasicHTML
-javax/swing/SystemEventQueueUtilities
-javax/swing/SystemEventQueueUtilities$SystemEventQueue
 sun/awt/NullComponentPeer
 java/awt/event/WindowEvent
 java/awt/EventQueue$1
@@ -954,11 +923,8 @@
 java/awt/event/ActionEvent
 sun/awt/X11/XReparentEvent
 sun/awt/X11/XWindowAttributes
-sun/awt/X11/ComponentAccessor
-sun/awt/X11/ComponentAccessor$1
 sun/awt/EventQueueItem
 sun/awt/SunToolkit$3
-javax/swing/SystemEventQueueUtilities$ComponentWorkRequest
 java/applet/Applet
 java/awt/Panel
 com/sun/awt/AWTUtilities
@@ -974,17 +940,14 @@
 sun/misc/ExtensionDependency
 java/lang/Package
 sun/security/util/ManifestEntryVerifier
-sun/security/provider/Sun
 java/security/Provider
 java/security/Provider$ServiceKey
 java/security/Provider$EngineDescription
-sun/security/provider/Sun$1
 java/security/Security
 java/security/Security$1
 sun/misc/FloatingDecimal
 sun/misc/FloatingDecimal$1
 java/util/regex/Pattern
-java/util/regex/Pattern$8
 java/util/regex/Pattern$Node
 java/util/regex/Pattern$LastNode
 java/util/regex/Pattern$GroupHead
@@ -1068,7 +1031,6 @@
 javax/swing/text/SimpleAttributeSet$EmptyAttributeSet
 javax/swing/text/StyleContext$NamedStyle
 javax/swing/text/Style
-javax/swing/text/SimpleAttributeSet$1
 javax/swing/text/StyleContext$SmallAttributeSet
 javax/swing/text/AbstractDocument$BidiRootElement
 javax/swing/text/AbstractDocument$BranchElement
@@ -1232,7 +1194,6 @@
 sun/nio/cs/UTF_16$Decoder
 sun/nio/cs/UnicodeDecoder
 sun/font/FileFontStrike
-sun/font/FileFont$FileFontDisposer
 sun/font/TrueTypeGlyphMapper
 sun/font/CMap
 sun/font/CMap$NullCMapClass
@@ -1242,17 +1203,9 @@
 java/awt/FontFormatException
 sun/java2d/HeadlessGraphicsEnvironment
 java/nio/charset/Charset$3
-sun/nio/cs/ext/ExtendedCharsets
 sun/nio/cs/AbstractCharsetProvider
-sun/nio/cs/ext/EUC_KR
-sun/nio/cs/ext/EUC_KR$Decoder
-sun/nio/cs/ext/DoubleByteDecoder
 sun/font/NativeFont
-sun/nio/cs/ext/MS950
-sun/nio/cs/ext/MS950$Decoder
 java/lang/CharacterData00
-sun/nio/cs/ext/GBK
-sun/nio/cs/ext/GBK$Decoder
 sun/font/CMap$CMapFormat2
 sun/font/FontDesignMetrics$KeyReference
 sun/awt/image/PNGImageDecoder
@@ -1264,13 +1217,7 @@
 java/awt/image/DataBufferInt
 java/awt/image/SinglePixelPackedSampleModel
 sun/awt/image/IntegerInterleavedRaster
-sun/java2d/x11/X11RemoteOffScreenImage
-sun/awt/image/RemoteOffScreenImage
 sun/awt/image/OffScreenImage
-sun/java2d/x11/X11RemoteOffScreenImage$X11RemoteSurfaceManager
-sun/awt/image/OffScreenSurfaceManager
-sun/awt/image/CachingSurfaceManager
-sun/awt/image/RasterListener
 sun/awt/image/BufImgSurfaceData
 sun/java2d/opengl/GLXGraphicsConfig
 sun/java2d/opengl/OGLGraphicsConfig
@@ -1278,7 +1225,6 @@
 sun/awt/image/WritableRasterNative
 sun/awt/image/DataBufferNative
 sun/java2d/SurfaceManagerFactory
-sun/java2d/x11/X11CachingSurfaceManager
 sun/java2d/opengl/GLXSurfaceData
 sun/java2d/opengl/OGLSurfaceData
 sun/font/CompositeGlyphMapper
@@ -1419,7 +1365,6 @@
 javax/swing/ToolTipManager$insideTimerAction
 javax/swing/ToolTipManager$outsideTimerAction
 javax/swing/ToolTipManager$stillInsideTimerAction
-javax/swing/ToolTipManager$Actions
 sun/swing/UIAction
 javax/swing/Action
 javax/swing/ToolTipManager$MoveBeforeEnterListener
@@ -1712,7 +1657,6 @@
 javax/swing/JToolBar$Separator
 javax/swing/plaf/basic/BasicToolBarSeparatorUI
 sun/font/FontDesignMetrics$MetricsKey
-sun/awt/color/CMM
 javax/swing/KeyboardManager$ComponentKeyStrokePair
 sun/awt/EmbeddedFrame
 sun/awt/im/InputMethodContext
@@ -1763,7 +1707,6 @@
 sun/net/www/MimeTable
 java/net/FileNameMap
 sun/net/www/MimeTable$1
-sun/net/www/MimeTable$2
 sun/net/www/MimeEntry
 java/net/URLConnection$1
 java/text/SimpleDateFormat
@@ -1785,7 +1728,6 @@
 java/text/spi/DecimalFormatSymbolsProvider
 java/util/Currency
 java/util/Currency$1
-java/util/CurrencyData
 java/util/spi/CurrencyNameProvider
 sun/util/resources/CurrencyNames
 sun/util/resources/CurrencyNames_en_US
@@ -1964,7 +1906,6 @@
 javax/swing/tree/VariableHeightLayoutCache$TreeStateNode
 javax/swing/tree/DefaultMutableTreeNode
 javax/swing/tree/MutableTreeNode
-javax/swing/tree/DefaultMutableTreeNode$1
 javax/swing/tree/DefaultMutableTreeNode$PreorderEnumeration
 javax/swing/event/TableColumnModelEvent
 java/text/ParseException
@@ -2019,7 +1960,6 @@
 javax/swing/plaf/metal/MetalSliderUI$MetalPropertyListener
 javax/swing/plaf/basic/BasicSliderUI$PropertyChangeHandler
 java/util/Hashtable$KeySet
-sun/java2d/SunGraphicsEnvironment$5
 sun/font/Type1Font$1
 java/nio/channels/FileChannel$MapMode
 sun/nio/ch/FileChannelImpl$Unmapper
@@ -2134,7 +2074,6 @@
 sun/security/jca/ProviderList$1
 sun/security/jca/ProviderList$2
 sun/security/jca/ProviderConfig$2
-sun/security/jca/ProviderConfig$4
 sun/security/util/PropertyExpander
 sun/security/jca/ProviderConfig$1
 sun/security/jca/ProviderConfig$3
@@ -2192,7 +2131,6 @@
 java/security/KeyFactory
 sun/security/jca/ProviderList$ServiceList
 sun/security/jca/ProviderList$ServiceList$1
-sun/security/rsa/SunRsaSign
 sun/security/rsa/RSAKeyFactory
 java/security/KeyFactorySpi
 java/security/spec/RSAPublicKeySpec
@@ -2276,9 +2214,7 @@
 java/io/NotSerializableException
 java/io/ObjectStreamException
 java/security/InvalidParameterException
-java/util/Collections$EmptySet$1
 java/io/ObjectStreamClass$ClassDataSlot
-java/io/ObjectInputStream$CallbackContext
 sun/reflect/UnsafeQualifiedStaticLongFieldAccessorImpl
 java/io/ObjectOutputStream$BlockDataOutputStream
 java/io/ObjectOutputStream$HandleTable
@@ -2294,11 +2230,8 @@
 java/security/spec/InvalidKeySpecException
 java/security/spec/DSAParameterSpec
 java/security/spec/AlgorithmParameterSpec
-javax/crypto/SecretKey
 sun/security/util/MemoryCache$HardCacheEntry
 java/awt/EventQueue$1AWTInvocationLock
-javax/swing/SystemEventQueueUtilities$RunnableCanvas
-javax/swing/SystemEventQueueUtilities$RunnableCanvasGraphics
 java/awt/Component$FlipBufferStrategy
 java/awt/SentEvent
 sun/awt/X11/XDestroyWindowEvent
@@ -2331,18 +2264,14 @@
 javax/swing/plaf/synth/SynthLookAndFeel$Handler
 javax/swing/plaf/synth/SynthDefaultLookup
 com/sun/java/swing/plaf/gtk/GTKEngine
-com/sun/java/swing/plaf/gtk/GTKNativeEngine
 javax/swing/plaf/synth/Region
-com/sun/java/swing/plaf/gtk/GTKNativeEngine$WidgetType
 com/sun/java/swing/plaf/gtk/GTKRegion
 sun/swing/ImageCache
 com/sun/java/swing/plaf/gtk/GTKEngine$Settings
 com/sun/java/swing/plaf/gtk/GTKStyleFactory
 com/sun/java/swing/plaf/gtk/PangoFonts
-sun/font/FontManager$FontConfigInfo
 com/sun/java/swing/plaf/gtk/GTKLookAndFeel$WeakPCL
 javax/swing/plaf/synth/SynthLookAndFeel$AATextListener
-com/sun/java/swing/plaf/gtk/GTKNativeStyle
 com/sun/java/swing/plaf/gtk/GTKStyle
 com/sun/java/swing/plaf/gtk/GTKConstants
 javax/swing/plaf/synth/SynthStyle
@@ -2370,7 +2299,6 @@
 javax/swing/plaf/synth/SynthToggleButtonUI
 javax/swing/plaf/basic/BasicBorders$FieldBorder
 javax/swing/plaf/synth/SynthMenuBarUI
-javax/swing/plaf/synth/DefaultMenuLayout
 javax/swing/plaf/synth/SynthMenuUI
 javax/swing/plaf/synth/SynthUI
 com/sun/java/swing/plaf/gtk/GTKIconFactory
@@ -2424,7 +2352,6 @@
 javax/security/auth/AuthPermission
 java/lang/Thread$1
 java/util/logging/LogManager$5
-java/util/logging/LogManager$6
 sun/applet/StdAppletViewerFactory
 sun/applet/AppletViewerFactory
 sun/applet/AppletViewer$UserActionListener
@@ -2435,7 +2362,6 @@
 sun/applet/AppletPanel$10
 java/security/Policy$1
 sun/security/provider/PolicyFile$1
-sun/security/provider/PolicyInfo
 sun/security/provider/PolicyFile$3
 sun/security/provider/PolicyParser
 sun/security/util/PolicyUtil
@@ -2444,12 +2370,10 @@
 sun/security/provider/PolicyFile$PolicyEntry
 sun/security/provider/PolicyFile$6
 sun/security/provider/PolicyFile$7
-sun/security/provider/SelfPermission
 java/net/SocketPermissionCollection
 java/util/PropertyPermissionCollection
 sun/applet/AppletPanel$9
 sun/applet/AppletClassLoader
-sun/applet/AppletClassLoader$4
 sun/applet/AppletThreadGroup
 sun/applet/AppContextCreator
 sun/applet/AppletPanel$1
@@ -2463,9 +2387,7 @@
 sun/awt/X11/XMenuItemPeer
 java/awt/MenuShortcut
 sun/awt/X11/XMenuWindow
-sun/awt/X11/XMenuBarPeer$1
 sun/awt/AppContext$3
-sun/awt/MostRecentThreadAppContext
 sun/awt/X11/XMenuItemPeer$TextMetrics
 sun/awt/X11/XMenuBarPeer$MappingData
 sun/awt/X11/XBaseMenuWindow$MappingData
--- a/jdk/make/tools/sharing/classlist.windows	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/tools/sharing/classlist.windows	Wed Apr 20 09:31:11 2011 -0700
@@ -104,9 +104,7 @@
 java/lang/ref/Reference$Lock
 java/lang/ref/Reference$ReferenceHandler
 java/lang/ref/Finalizer$FinalizerThread
-java/util/Hashtable$EmptyEnumerator
 java/util/Enumeration
-java/util/Hashtable$EmptyIterator
 java/util/Iterator
 java/util/Hashtable$Entry
 sun/misc/Version
@@ -165,11 +163,9 @@
 sun/reflect/NativeConstructorAccessorImpl
 sun/reflect/DelegatingConstructorAccessorImpl
 sun/misc/VM
-sun/nio/cs/MS1252$Encoder
 sun/nio/cs/SingleByteEncoder
 java/nio/charset/CharsetEncoder
 java/nio/charset/CodingErrorAction
-sun/nio/cs/MS1252$Decoder
 sun/nio/cs/SingleByteDecoder
 java/nio/charset/CharsetDecoder
 java/nio/ByteBuffer
@@ -195,8 +191,6 @@
 java/io/ExpiringCache$1
 java/util/LinkedHashMap
 java/util/LinkedHashMap$Entry
-java/io/File$1
-sun/misc/JavaIODeleteOnExitAccess
 sun/misc/SharedSecrets
 java/lang/ClassLoader$3
 java/io/ExpiringCache$Entry
@@ -209,7 +203,6 @@
 java/io/Console
 java/io/Console$1
 sun/misc/JavaIOAccess
-java/io/Console$1$1
 java/lang/Shutdown
 java/util/ArrayList
 java/lang/Shutdown$Lock
@@ -333,10 +326,8 @@
 java/beans/PropertyChangeEvent
 java/util/EventObject
 java/awt/Component$AWTTreeLock
-sun/awt/DebugHelper
 sun/awt/NativeLibLoader
 sun/security/action/LoadLibraryAction
-sun/awt/DebugHelperStub
 java/awt/Toolkit
 java/awt/Toolkit$3
 sun/util/CoreResourceBundleControl
@@ -402,9 +393,7 @@
 sun/awt/Win32GraphicsEnvironment
 sun/java2d/SunGraphicsEnvironment
 sun/java2d/FontSupport
-sun/java2d/SunGraphicsEnvironment$TTFilter
 java/io/FilenameFilter
-sun/java2d/SunGraphicsEnvironment$T1Filter
 sun/awt/windows/WToolkit
 sun/awt/SunToolkit
 sun/awt/WindowClosingSupport
@@ -414,7 +403,6 @@
 java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject
 java/util/concurrent/locks/Condition
 sun/awt/AWTAutoShutdown
-sun/awt/AWTAutoShutdown$PeerMap
 sun/awt/SunToolkit$6
 java/awt/Dialog$ModalExclusionType
 java/awt/Dialog
@@ -429,7 +417,6 @@
 java/awt/peer/PanelPeer
 sun/awt/windows/WCanvasPeer
 java/awt/peer/CanvasPeer
-sun/awt/windows/WToolkit$5
 java/awt/Color
 java/awt/Paint
 java/awt/Transparency
@@ -446,11 +433,8 @@
 java/awt/event/MouseMotionListener
 java/awt/event/MouseWheelListener
 java/awt/event/InputMethodListener
-java/awt/EventQueueItem
-java/awt/Component$NativeInLightFixer
 java/awt/event/ContainerListener
 javax/accessibility/AccessibleContext
-sun/awt/windows/WToolkit$6
 java/io/ObjectOutputStream
 java/io/ObjectOutput
 java/io/DataOutput
@@ -509,11 +493,8 @@
 java/awt/image/PackedColorModel
 java/awt/color/ColorSpace
 java/awt/color/ICC_Profile
-sun/awt/color/ProfileDeferralInfo
-sun/awt/color/ProfileDeferralMgr
 java/awt/color/ICC_ProfileRGB
 java/awt/color/ICC_Profile$1
-sun/awt/color/ProfileActivator
 java/awt/color/ICC_ColorSpace
 sun/java2d/pipe/NullPipe
 sun/java2d/pipe/PixelDrawPipe
@@ -536,8 +517,6 @@
 sun/java2d/pipe/SpanClipRenderer
 sun/java2d/pipe/Region
 sun/java2d/pipe/RegionIterator
-sun/java2d/pipe/DuctusShapeRenderer
-sun/java2d/pipe/DuctusRenderer
 sun/java2d/pipe/AlphaPaintPipe
 sun/java2d/pipe/SpanShapeRenderer$Composite
 sun/java2d/pipe/SpanShapeRenderer
@@ -552,10 +531,8 @@
 sun/awt/image/SurfaceManager$ImageAccessor
 sun/awt/image/SurfaceManager
 sun/awt/image/VolatileSurfaceManager
-sun/java2d/windows/Win32OffScreenSurfaceData
 sun/java2d/windows/WindowsFlags
 sun/java2d/windows/WindowsFlags$1
-sun/java2d/windows/DDBlitLoops
 sun/java2d/loops/Blit
 sun/java2d/loops/GraphicsPrimitive
 sun/java2d/loops/GraphicsPrimitiveMgr
@@ -599,11 +576,8 @@
 sun/java2d/loops/GeneralRenderer
 sun/java2d/loops/GraphicsPrimitiveMgr$1
 sun/java2d/loops/GraphicsPrimitiveMgr$2
-sun/java2d/windows/Win32SurfaceData
 sun/java2d/windows/GDIBlitLoops
 sun/java2d/windows/GDIRenderer
-sun/java2d/windows/DDBlitLoops$DelegateBlitBgLoop
-sun/java2d/windows/DDRenderer
 sun/awt/windows/WToolkit$1
 sun/awt/SunDisplayChanger
 sun/java2d/SunGraphicsEnvironment$1
@@ -615,7 +589,6 @@
 java/util/HashMap$Values
 java/util/HashMap$ValueIterator
 java/util/HashMap$HashIterator
-sun/font/FontManager$1
 sun/font/TrueTypeFont
 java/awt/font/FontRenderContext
 java/awt/RenderingHints
@@ -632,7 +605,6 @@
 sun/java2d/Disposer
 sun/java2d/Disposer$1
 sun/font/StrikeCache$1
-sun/font/FontManager$FontRegistrationInfo
 sun/awt/windows/WFontConfiguration
 sun/awt/FontConfiguration
 sun/awt/FontDescriptor
@@ -670,12 +642,10 @@
 java/util/Deque
 java/util/Queue
 java/util/AbstractSequentialList
-java/util/LinkedList$Entry
 java/awt/DefaultKeyboardFocusManager
 java/awt/DefaultFocusTraversalPolicy
 java/awt/ContainerOrderFocusTraversalPolicy
 java/awt/FocusTraversalPolicy
-java/awt/MutableBoolean
 java/util/Collections$UnmodifiableSet
 sun/awt/HeadlessToolkit
 sun/awt/KeyboardFocusManagerPeerImpl
@@ -690,7 +660,6 @@
 java/awt/event/InvocationEvent
 java/awt/ActiveEvent
 java/awt/MenuComponent
-sun/awt/EventQueueItem
 sun/awt/SunToolkit$3
 java/util/EmptyStackException
 java/lang/reflect/InvocationTargetException
@@ -857,7 +826,6 @@
 javax/swing/RepaintManager$DisplayChangedHandler
 javax/swing/SwingPaintEventDispatcher
 javax/swing/UIManager$2
-javax/swing/UIManager$3
 com/sun/swing/internal/plaf/metal/resources/metal
 sun/util/ResourceBundleEnumeration
 com/sun/swing/internal/plaf/basic/resources/basic
@@ -921,9 +889,6 @@
 javax/swing/plaf/basic/BasicHTML
 sun/awt/AppContext$PostShutdownEventRunnable
 sun/awt/AWTAutoShutdown$1
-javax/swing/SystemEventQueueUtilities
-javax/swing/SystemEventQueueUtilities$ComponentWorkRequest
-javax/swing/SystemEventQueueUtilities$SystemEventQueue
 sun/awt/NullComponentPeer
 java/awt/GraphicsCallback$PaintCallback
 java/awt/GraphicsCallback
@@ -942,17 +907,14 @@
 sun/misc/ExtensionDependency
 java/lang/Package
 sun/security/util/ManifestEntryVerifier
-sun/security/provider/Sun
 java/security/Provider
 java/security/Provider$ServiceKey
 java/security/Provider$EngineDescription
-sun/security/provider/Sun$1
 java/security/Security
 java/security/Security$1
 sun/misc/FloatingDecimal
 sun/misc/FloatingDecimal$1
 java/util/regex/Pattern
-java/util/regex/Pattern$8
 java/util/regex/Pattern$Node
 java/util/regex/Pattern$LastNode
 java/util/regex/Pattern$GroupHead
@@ -1034,7 +996,6 @@
 javax/swing/text/SimpleAttributeSet$EmptyAttributeSet
 javax/swing/text/StyleContext$NamedStyle
 javax/swing/text/Style
-javax/swing/text/SimpleAttributeSet$1
 javax/swing/text/StyleContext$SmallAttributeSet
 javax/swing/text/AbstractDocument$BidiRootElement
 javax/swing/text/AbstractDocument$BranchElement
@@ -1153,7 +1114,6 @@
 sun/nio/cs/UTF_16
 sun/nio/cs/UTF_16$Decoder
 sun/font/FileFontStrike
-sun/font/FileFont$FileFontDisposer
 sun/font/TrueTypeGlyphMapper
 sun/font/CMap
 sun/font/CMap$NullCMapClass
@@ -1178,9 +1138,6 @@
 sun/util/calendar/CalendarSystem
 sun/awt/image/OffScreenImage
 sun/java2d/SurfaceManagerFactory
-sun/java2d/windows/WinCachingSurfaceManager
-sun/awt/image/CachingSurfaceManager
-sun/awt/image/RasterListener
 sun/util/calendar/Gregorian
 sun/util/calendar/BaseCalendar
 sun/util/calendar/AbstractCalendar
@@ -1297,7 +1254,6 @@
 javax/swing/ToolTipManager$insideTimerAction
 javax/swing/ToolTipManager$outsideTimerAction
 javax/swing/ToolTipManager$stillInsideTimerAction
-javax/swing/ToolTipManager$Actions
 sun/swing/UIAction
 javax/swing/Action
 javax/swing/ToolTipManager$MoveBeforeEnterListener
@@ -1665,7 +1621,6 @@
 sun/net/www/MimeTable
 java/net/FileNameMap
 sun/net/www/MimeTable$1
-sun/net/www/MimeTable$2
 sun/net/www/MimeEntry
 java/net/URLConnection$1
 java/text/SimpleDateFormat
@@ -1687,7 +1642,6 @@
 java/text/spi/DecimalFormatSymbolsProvider
 java/util/Currency
 java/util/Currency$1
-java/util/CurrencyData
 java/util/spi/CurrencyNameProvider
 sun/util/resources/CurrencyNames
 sun/util/resources/CurrencyNames_en_US
@@ -1707,7 +1661,6 @@
 java/util/zip/CRC32
 java/util/zip/Checksum
 java/awt/TrayIcon
-java/awt/EventDispatchThread$StopDispatchEvent
 java/lang/Thread$State
 javax/swing/SwingUtilities$SharedOwnerFrame
 javax/swing/JTable
@@ -1722,7 +1675,6 @@
 javax/swing/JRadioButton
 java/lang/ClassFormatError
 sun/java2d/opengl/OGLGraphicsConfig
-sun/java2d/windows/WinVolatileSurfaceManager
 java/awt/print/PrinterGraphics
 java/awt/PrintGraphics
 javax/swing/JTabbedPane
@@ -1863,7 +1815,6 @@
 javax/swing/tree/VariableHeightLayoutCache$TreeStateNode
 javax/swing/tree/DefaultMutableTreeNode
 javax/swing/tree/MutableTreeNode
-javax/swing/tree/DefaultMutableTreeNode$1
 javax/swing/tree/DefaultMutableTreeNode$PreorderEnumeration
 javax/swing/event/TableColumnModelEvent
 java/text/ParseException
@@ -1918,9 +1869,6 @@
 javax/swing/plaf/basic/BasicSliderUI$PropertyChangeHandler
 sun/java2d/HeadlessGraphicsEnvironment
 java/util/Hashtable$KeySet
-sun/font/FontManager$2
-sun/java2d/SunGraphicsEnvironment$2
-sun/java2d/SunGraphicsEnvironment$3
 javax/swing/DefaultListModel
 javax/swing/event/ListDataEvent
 javax/sound/sampled/DataLine
@@ -1959,7 +1907,6 @@
 sun/security/action/GetIntegerAction
 sun/net/InetAddressCachePolicy$2
 java/net/InetAddress$CacheEntry
-java/net/PlainDatagramSocketImpl
 java/net/DatagramSocketImpl
 java/text/Collator
 java/text/spi/CollatorProvider
@@ -2030,7 +1977,6 @@
 java/math/BigInteger
 java/security/interfaces/DSAParams
 java/io/ObjectStreamClass$ClassDataSlot
-java/io/ObjectInputStream$CallbackContext
 java/io/ObjectStreamClass$4
 java/io/ObjectStreamClass$5
 java/security/MessageDigest
@@ -2076,8 +2022,6 @@
 java/math/MutableBigInteger
 java/math/SignedMutableBigInteger
 java/awt/EventQueue$1AWTInvocationLock
-javax/swing/SystemEventQueueUtilities$RunnableCanvas
-javax/swing/SystemEventQueueUtilities$RunnableCanvasGraphics
 java/awt/LightweightDispatcher$2
 java/awt/Component$FlipBufferStrategy
 javax/swing/JTable$2
@@ -2191,7 +2135,6 @@
 javax/security/auth/AuthPermission
 java/lang/Thread$1
 java/util/logging/LogManager$5
-java/util/logging/LogManager$6
 sun/applet/StdAppletViewerFactory
 sun/applet/AppletViewerFactory
 sun/applet/AppletViewer$UserActionListener
@@ -2202,7 +2145,6 @@
 sun/applet/AppletPanel$10
 java/security/Policy$1
 sun/security/provider/PolicyFile$1
-sun/security/provider/PolicyInfo
 sun/security/provider/PolicyFile$3
 sun/security/util/PropertyExpander
 sun/security/provider/PolicyParser
@@ -2214,17 +2156,14 @@
 sun/security/provider/PolicyParser$ParsingException
 sun/security/provider/PolicyFile$6
 sun/security/provider/PolicyFile$7
-sun/security/provider/SelfPermission
 java/net/SocketPermissionCollection
 java/util/PropertyPermissionCollection
 sun/applet/AppletPanel$9
 sun/applet/AppletClassLoader
-sun/applet/AppletClassLoader$4
 sun/applet/AppletThreadGroup
 sun/applet/AppContextCreator
 sun/applet/AppletPanel$1
 sun/awt/AppContext$3
-sun/awt/MostRecentThreadAppContext
 sun/awt/windows/WMenuBarPeer
 java/awt/peer/MenuBarPeer
 java/awt/peer/MenuComponentPeer
--- a/jdk/make/tools/src/build/tools/javazic/Zoneinfo.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/make/tools/src/build/tools/javazic/Zoneinfo.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/back/debugInit.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/back/debugInit.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/back/eventFilter.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/back/eventFilter.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/bin/java.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/bin/java.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/bin/java.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/bin/java.h	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/beans/TypeResolver.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/beans/TypeResolver.java	Wed Apr 20 09:31:11 2011 -0700
@@ -175,8 +175,8 @@
     /**
      * Converts the given {@code type} to the corresponding class.
      * This method implements the concept of type erasure,
-     * that is described in <a href="http://jscstage.sfbay.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.6">section 4.6</a>
-     * of Java Language Specification.
+     * that is described in section 4.6 of
+     * <cite>The Java&trade; Language Specification</cite>.
      *
      * @param type  the array of types to convert
      * @return a corresponding class
@@ -356,7 +356,7 @@
     /**
      * Replaces a {@link GenericArrayType GenericArrayType}
      * with plain array class where it is possible.
-     * Bug <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5041784">5041784</a>
+     * Bug <a href="http://bugs.sun.com/view_bug.do?bug_id=5041784">5041784</a>
      * is that arrays of non-generic type sometimes show up
      * as {@link GenericArrayType GenericArrayType} when using reflection.
      * For example, a {@code String[]} might show up
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_de.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_de.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -21,10 +21,10 @@
 # character of GTKColorChooserPanel.hueText should be underlined to
 # represent the mnemonic.
 GTKColorChooserPanel.hueText=Farbton:
-GTKColorChooserPanel.hueMnemonic=72
+GTKColorChooserPanel.hueMnemonic=70
 
 GTKColorChooserPanel.redText=Rot:
-GTKColorChooserPanel.redMnemonic=69
+GTKColorChooserPanel.redMnemonic=79
 
 GTKColorChooserPanel.saturationText=S\u00E4ttigung:
 GTKColorChooserPanel.saturationMnemonic=83
@@ -33,12 +33,12 @@
 GTKColorChooserPanel.greenMnemonic=71
 
 GTKColorChooserPanel.valueText=Wert:
-GTKColorChooserPanel.valueMnemonic=86
+GTKColorChooserPanel.valueMnemonic=87
 
 GTKColorChooserPanel.blueText=Blau:
 GTKColorChooserPanel.blueMnemonic=66
 
-GTKColorChooserPanel.colorNameText=Name der Farbe:
+GTKColorChooserPanel.colorNameText=Farbname:
 GTKColorChooserPanel.colorNameMnemonic=78
 
 
@@ -54,9 +54,9 @@
 FileChooser.deleteFileButtonText=Datei l\u00F6schen
 FileChooser.deleteFileButtonMnemonic=76
 FileChooser.renameFileButtonText=Datei umbenennen
-FileChooser.renameFileButtonMnemonic=82
+FileChooser.renameFileButtonMnemonic=85
 FileChooser.cancelButtonText=Abbrechen
-FileChooser.cancelButtonMnemonic=67
+FileChooser.cancelButtonMnemonic=65
 FileChooser.saveButtonText=OK
 FileChooser.saveButtonMnemonic=79
 FileChooser.openButtonText=OK
@@ -65,19 +65,20 @@
 FileChooser.openDialogTitleText=\u00D6ffnen
 FileChooser.pathLabelText=Auswahl:
 FileChooser.filterLabelText=Filter:
-FileChooser.pathLabelMnemonic=83
+FileChooser.pathLabelMnemonic=87
 FileChooser.foldersLabelText=Ordner
-FileChooser.foldersLabelMnemonic=68
+FileChooser.foldersLabelMnemonic=79
 FileChooser.filesLabelText=Dateien
-FileChooser.filesLabelMnemonic=70
+FileChooser.filesLabelMnemonic=68
 
 FileChooser.cancelButtonToolTipText=Dialogfeld f\u00FCr Dateiauswahl schlie\u00DFen.
 FileChooser.saveButtonToolTipText=Ausgew\u00E4hlte Datei speichern.
 FileChooser.openButtonToolTipText=Ausgew\u00E4hlte Datei \u00F6ffnen.
 
 FileChooser.renameFileDialogText=Datei "{0}" umbenennen in
-FileChooser.renameFileErrorTitle=Fehler 
+FileChooser.renameFileErrorTitle=Fehler
 FileChooser.renameFileErrorText=Fehler beim Umbenennen der Datei "{0}" in "{1}"
 
 OptionPane.okButtonMnemonic=79
-OptionPane.cancelButtonMnemonic=67
+OptionPane.cancelButtonMnemonic=65
+
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_es.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_es.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -20,23 +20,23 @@
 # GTKColorChooserPanel.hueMnemonicIndex=1 would indicate the second
 # character of GTKColorChooserPanel.hueText should be underlined to
 # represent the mnemonic.
-GTKColorChooserPanel.hueText=Matiz:
-GTKColorChooserPanel.hueMnemonic=72
+GTKColorChooserPanel.hueText=Mat:
+GTKColorChooserPanel.hueMnemonic=77
 
 GTKColorChooserPanel.redText=Rojo:
-GTKColorChooserPanel.redMnemonic=69
+GTKColorChooserPanel.redMnemonic=74
 
 GTKColorChooserPanel.saturationText=Saturaci\u00F3n:
 GTKColorChooserPanel.saturationMnemonic=83
 
 GTKColorChooserPanel.greenText=Verde:
-GTKColorChooserPanel.greenMnemonic=71
+GTKColorChooserPanel.greenMnemonic=86
 
 GTKColorChooserPanel.valueText=Valor:
 GTKColorChooserPanel.valueMnemonic=86
 
 GTKColorChooserPanel.blueText=Azul:
-GTKColorChooserPanel.blueMnemonic=66
+GTKColorChooserPanel.blueMnemonic=65
 
 GTKColorChooserPanel.colorNameText=Nombre del Color:
 GTKColorChooserPanel.colorNameMnemonic=78
@@ -52,32 +52,33 @@
 FileChooser.newFolderNoDirectoryErrorTitleText=Error
 FileChooser.newFolderNoDirectoryErrorText=Error al crear el directorio "{0}": no existe dicho archivo o directorio
 FileChooser.deleteFileButtonText=Suprimir Archivo
-FileChooser.deleteFileButtonMnemonic=76
-FileChooser.renameFileButtonText=Cambiar Nombre a Archivo
+FileChooser.deleteFileButtonMnemonic=80
+FileChooser.renameFileButtonText=Cambiar Nombre de Archivo
 FileChooser.renameFileButtonMnemonic=82
 FileChooser.cancelButtonText=Cancelar
 FileChooser.cancelButtonMnemonic=67
 FileChooser.saveButtonText=Aceptar
-FileChooser.saveButtonMnemonic=79
+FileChooser.saveButtonMnemonic=65
 FileChooser.openButtonText=Aceptar
-FileChooser.openButtonMnemonic=79
+FileChooser.openButtonMnemonic=65
 FileChooser.saveDialogTitleText=Guardar
 FileChooser.openDialogTitleText=Abrir
 FileChooser.pathLabelText=Selecci\u00F3n:
 FileChooser.filterLabelText=Filtro:
 FileChooser.pathLabelMnemonic=83
 FileChooser.foldersLabelText=Carpetas
-FileChooser.foldersLabelMnemonic=68
+FileChooser.foldersLabelMnemonic=84
 FileChooser.filesLabelText=Archivos
-FileChooser.filesLabelMnemonic=70
+FileChooser.filesLabelMnemonic=65
 
 FileChooser.cancelButtonToolTipText=Abortar cuadro de di\u00E1logo del selector de archivos.
 FileChooser.saveButtonToolTipText=Guardar el archivo seleccionado.
 FileChooser.openButtonToolTipText=Abrir el archivo seleccionado.
 
 FileChooser.renameFileDialogText=Cambiar el nombre del archivo "{0}" por
-FileChooser.renameFileErrorTitle=Error 
+FileChooser.renameFileErrorTitle=Error
 FileChooser.renameFileErrorText=Error al cambiar el nombre del archivo "{0}" a "{1}"
 
-OptionPane.okButtonMnemonic=79
+OptionPane.okButtonMnemonic=65
 OptionPane.cancelButtonMnemonic=67
+
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_fr.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_fr.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -20,25 +20,25 @@
 # GTKColorChooserPanel.hueMnemonicIndex=1 would indicate the second
 # character of GTKColorChooserPanel.hueText should be underlined to
 # represent the mnemonic.
-GTKColorChooserPanel.hueText=Teinte\u00A0:
-GTKColorChooserPanel.hueMnemonic=72
+GTKColorChooserPanel.hueText=Teinte :
+GTKColorChooserPanel.hueMnemonic=84
 
 GTKColorChooserPanel.redText=Rouge\u00A0:
 GTKColorChooserPanel.redMnemonic=69
 
-GTKColorChooserPanel.saturationText=Saturation\u00A0:
+GTKColorChooserPanel.saturationText=Saturation :
 GTKColorChooserPanel.saturationMnemonic=83
 
-GTKColorChooserPanel.greenText=Vert\u00A0:
-GTKColorChooserPanel.greenMnemonic=71
+GTKColorChooserPanel.greenText=Vert :
+GTKColorChooserPanel.greenMnemonic=86
 
-GTKColorChooserPanel.valueText=Valeur\u00A0:
+GTKColorChooserPanel.valueText=Valeur :
 GTKColorChooserPanel.valueMnemonic=86
 
-GTKColorChooserPanel.blueText=Bleu\u00A0:
+GTKColorChooserPanel.blueText=Bleu :
 GTKColorChooserPanel.blueMnemonic=66
 
-GTKColorChooserPanel.colorNameText=Nom de la couleur\u00A0:
+GTKColorChooserPanel.colorNameText=Nom de couleur :
 GTKColorChooserPanel.colorNameMnemonic=78
 
 
@@ -56,14 +56,14 @@
 FileChooser.renameFileButtonText=Renommer le fichier
 FileChooser.renameFileButtonMnemonic=82
 FileChooser.cancelButtonText=Annuler
-FileChooser.cancelButtonMnemonic=67
+FileChooser.cancelButtonMnemonic=65
 FileChooser.saveButtonText=OK
 FileChooser.saveButtonMnemonic=79
 FileChooser.openButtonText=OK
 FileChooser.openButtonMnemonic=79
 FileChooser.saveDialogTitleText=Enregistrer
 FileChooser.openDialogTitleText=Ouvrir
-FileChooser.pathLabelText=S\u00E9lection\u00A0:
+FileChooser.pathLabelText=S\u00E9lection :
 FileChooser.filterLabelText=Filtre :
 FileChooser.pathLabelMnemonic=83
 FileChooser.foldersLabelText=Dossiers
@@ -76,8 +76,9 @@
 FileChooser.openButtonToolTipText=Ouvre le fichier s\u00E9lectionn\u00E9.
 
 FileChooser.renameFileDialogText=Renomme le fichier "{0}" en
-FileChooser.renameFileErrorTitle=Erreur 
+FileChooser.renameFileErrorTitle=Erreur
 FileChooser.renameFileErrorText=Erreur lors du changement de nom du fichier "{0}" en "{1}"
 
 OptionPane.okButtonMnemonic=79
-OptionPane.cancelButtonMnemonic=67
+OptionPane.cancelButtonMnemonic=65
+
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_it.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_it.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -20,17 +20,17 @@
 # GTKColorChooserPanel.hueMnemonicIndex=1 would indicate the second
 # character of GTKColorChooserPanel.hueText should be underlined to
 # represent the mnemonic.
-GTKColorChooserPanel.hueText=Tonalit\u00E0:
-GTKColorChooserPanel.hueMnemonic=72
+GTKColorChooserPanel.hueText=Ton.:
+GTKColorChooserPanel.hueMnemonic=84
 
 GTKColorChooserPanel.redText=Rosso:
-GTKColorChooserPanel.redMnemonic=69
+GTKColorChooserPanel.redMnemonic=79
 
 GTKColorChooserPanel.saturationText=Saturazione:
 GTKColorChooserPanel.saturationMnemonic=83
 
 GTKColorChooserPanel.greenText=Verde:
-GTKColorChooserPanel.greenMnemonic=71
+GTKColorChooserPanel.greenMnemonic=86
 
 GTKColorChooserPanel.valueText=Valore:
 GTKColorChooserPanel.valueMnemonic=86
@@ -56,7 +56,7 @@
 FileChooser.renameFileButtonText=Rinomina file
 FileChooser.renameFileButtonMnemonic=82
 FileChooser.cancelButtonText=Annulla
-FileChooser.cancelButtonMnemonic=67
+FileChooser.cancelButtonMnemonic=65
 FileChooser.saveButtonText=OK
 FileChooser.saveButtonMnemonic=79
 FileChooser.openButtonText=OK
@@ -67,7 +67,7 @@
 FileChooser.filterLabelText=Filtro:
 FileChooser.pathLabelMnemonic=83
 FileChooser.foldersLabelText=Cartelle
-FileChooser.foldersLabelMnemonic=68
+FileChooser.foldersLabelMnemonic=84
 FileChooser.filesLabelText=File
 FileChooser.filesLabelMnemonic=70
 
@@ -76,8 +76,9 @@
 FileChooser.openButtonToolTipText=Apre il file selezionato.
 
 FileChooser.renameFileDialogText=Rinomina file "{0}" in
-FileChooser.renameFileErrorTitle=Errore 
+FileChooser.renameFileErrorTitle=Errore
 FileChooser.renameFileErrorText=Errore durante la ridenominazione del file "{0}" in "{1}"
 
 OptionPane.okButtonMnemonic=79
-OptionPane.cancelButtonMnemonic=67
+OptionPane.cancelButtonMnemonic=65
+
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ja.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ja.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -6,7 +6,7 @@
 # GTK specific properties
 
 # GTK color chooser properties:
-GTKColorChooserPanel.nameText=GTK\u30AB\u30E9\u30FC\u30FB\u30C1\u30E5\u30FC\u30B6
+GTKColorChooserPanel.nameText=GTK\u30AB\u30E9\u30FC\u30FB\u30C1\u30E5\u30FC\u30B6(G)
 # mnemonic as a VK_ constant
 GTKColorChooserPanel.mnemonic=71
 # Can also define GTKColorChooserPanel.dispalyedMnemonicIndex if you
@@ -20,25 +20,25 @@
 # GTKColorChooserPanel.hueMnemonicIndex=1 would indicate the second
 # character of GTKColorChooserPanel.hueText should be underlined to
 # represent the mnemonic.
-GTKColorChooserPanel.hueText=\u8272\u76F8:
+GTKColorChooserPanel.hueText=\u8272\u76F8(H):
 GTKColorChooserPanel.hueMnemonic=72
 
-GTKColorChooserPanel.redText=\u8D64:
+GTKColorChooserPanel.redText=\u8D64(E):
 GTKColorChooserPanel.redMnemonic=69
 
-GTKColorChooserPanel.saturationText=\u5F69\u5EA6:
+GTKColorChooserPanel.saturationText=\u5F69\u5EA6(S):
 GTKColorChooserPanel.saturationMnemonic=83
 
-GTKColorChooserPanel.greenText=\u7DD1:
+GTKColorChooserPanel.greenText=\u7DD1(G):
 GTKColorChooserPanel.greenMnemonic=71
 
-GTKColorChooserPanel.valueText=\u5024:
+GTKColorChooserPanel.valueText=\u5024(V):
 GTKColorChooserPanel.valueMnemonic=86
 
-GTKColorChooserPanel.blueText=\u9752:
+GTKColorChooserPanel.blueText=\u9752(B):
 GTKColorChooserPanel.blueMnemonic=66
 
-GTKColorChooserPanel.colorNameText=\u8272\u540D:
+GTKColorChooserPanel.colorNameText=\u8272\u540D(N):
 GTKColorChooserPanel.colorNameMnemonic=78
 
 
@@ -46,29 +46,29 @@
 ############ FILE CHOOSER STRINGS #############
 
 FileChooser.acceptAllFileFilterText=\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB
-FileChooser.newFolderButtonText=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0
+FileChooser.newFolderButtonText=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0(N)
 FileChooser.newFolderButtonMnemonic=78
 FileChooser.newFolderDialogText=\u30D5\u30A9\u30EB\u30C0\u540D:
 FileChooser.newFolderNoDirectoryErrorTitleText=\u30A8\u30E9\u30FC
 FileChooser.newFolderNoDirectoryErrorText=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA"{0}"\u306E\u4F5C\u6210\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F: \u3053\u306E\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306F\u5B58\u5728\u3057\u307E\u305B\u3093
-FileChooser.deleteFileButtonText=\u30D5\u30A1\u30A4\u30EB\u306E\u524A\u9664
+FileChooser.deleteFileButtonText=\u30D5\u30A1\u30A4\u30EB\u306E\u524A\u9664(L)
 FileChooser.deleteFileButtonMnemonic=76
-FileChooser.renameFileButtonText=\u30D5\u30A1\u30A4\u30EB\u306E\u540D\u524D\u5909\u66F4
+FileChooser.renameFileButtonText=\u30D5\u30A1\u30A4\u30EB\u306E\u540D\u524D\u5909\u66F4(R)
 FileChooser.renameFileButtonMnemonic=82
-FileChooser.cancelButtonText=\u53D6\u6D88
+FileChooser.cancelButtonText=\u53D6\u6D88(C)
 FileChooser.cancelButtonMnemonic=67
-FileChooser.saveButtonText=OK
+FileChooser.saveButtonText=OK(O)
 FileChooser.saveButtonMnemonic=79
-FileChooser.openButtonText=OK
+FileChooser.openButtonText=OK(O)
 FileChooser.openButtonMnemonic=79
 FileChooser.saveDialogTitleText=\u4FDD\u5B58
 FileChooser.openDialogTitleText=\u958B\u304F
-FileChooser.pathLabelText=\u9078\u629E:
+FileChooser.pathLabelText=\u9078\u629E(S):
 FileChooser.filterLabelText=\u30D5\u30A3\u30EB\u30BF:
 FileChooser.pathLabelMnemonic=83
-FileChooser.foldersLabelText=\u30D5\u30A9\u30EB\u30C0
+FileChooser.foldersLabelText=\u30D5\u30A9\u30EB\u30C0(D)
 FileChooser.foldersLabelMnemonic=68
-FileChooser.filesLabelText=\u30D5\u30A1\u30A4\u30EB
+FileChooser.filesLabelText=\u30D5\u30A1\u30A4\u30EB(F)
 FileChooser.filesLabelMnemonic=70
 
 FileChooser.cancelButtonToolTipText=\u30D5\u30A1\u30A4\u30EB\u30FB\u30C1\u30E5\u30FC\u30B6\u30FB\u30C0\u30A4\u30A2\u30ED\u30B0\u3092\u7D42\u4E86\u3057\u307E\u3059\u3002
@@ -76,8 +76,9 @@
 FileChooser.openButtonToolTipText=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304D\u307E\u3059\u3002
 
 FileChooser.renameFileDialogText=\u30D5\u30A1\u30A4\u30EB"{0}"\u3092\u6B21\u306E\u540D\u524D\u306B\u5909\u66F4:
-FileChooser.renameFileErrorTitle=\u30A8\u30E9\u30FC 
+FileChooser.renameFileErrorTitle=\u30A8\u30E9\u30FC
 FileChooser.renameFileErrorText=\u30D5\u30A1\u30A4\u30EB"{0}"\u306E"{1}"\u3078\u306E\u5909\u66F4\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
 
 OptionPane.okButtonMnemonic=79
 OptionPane.cancelButtonMnemonic=67
+
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ko.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ko.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -6,7 +6,7 @@
 # GTK specific properties
 
 # GTK color chooser properties:
-GTKColorChooserPanel.nameText=GTK \uC0C9\uC0C1 \uC120\uD0DD\uAE30
+GTKColorChooserPanel.nameText=GTK \uC0C9\uC0C1 \uC120\uD0DD\uAE30(G)
 # mnemonic as a VK_ constant
 GTKColorChooserPanel.mnemonic=71
 # Can also define GTKColorChooserPanel.dispalyedMnemonicIndex if you
@@ -20,25 +20,25 @@
 # GTKColorChooserPanel.hueMnemonicIndex=1 would indicate the second
 # character of GTKColorChooserPanel.hueText should be underlined to
 # represent the mnemonic.
-GTKColorChooserPanel.hueText=\uC0C9\uC870:
+GTKColorChooserPanel.hueText=\uC0C9\uC870(H):
 GTKColorChooserPanel.hueMnemonic=72
 
-GTKColorChooserPanel.redText=\uBE68\uAC04\uC0C9:
+GTKColorChooserPanel.redText=\uBE68\uAC04\uC0C9(E):
 GTKColorChooserPanel.redMnemonic=69
 
-GTKColorChooserPanel.saturationText=\uCC44\uB3C4:
+GTKColorChooserPanel.saturationText=\uCC44\uB3C4(S):
 GTKColorChooserPanel.saturationMnemonic=83
 
-GTKColorChooserPanel.greenText=\uB179\uC0C9:
+GTKColorChooserPanel.greenText=\uB179\uC0C9(G):
 GTKColorChooserPanel.greenMnemonic=71
 
-GTKColorChooserPanel.valueText=\uAC12:
+GTKColorChooserPanel.valueText=\uAC12(V):
 GTKColorChooserPanel.valueMnemonic=86
 
-GTKColorChooserPanel.blueText=\uD30C\uB780\uC0C9:
+GTKColorChooserPanel.blueText=\uD30C\uB780\uC0C9(B):
 GTKColorChooserPanel.blueMnemonic=66
 
-GTKColorChooserPanel.colorNameText=\uC0C9\uC0C1 \uC774\uB984:
+GTKColorChooserPanel.colorNameText=\uC0C9\uC0C1 \uC774\uB984(N):
 GTKColorChooserPanel.colorNameMnemonic=78
 
 
@@ -46,29 +46,29 @@
 ############ FILE CHOOSER STRINGS #############
 
 FileChooser.acceptAllFileFilterText=\uBAA8\uB4E0 \uD30C\uC77C
-FileChooser.newFolderButtonText=\uC0C8 \uD3F4\uB354
+FileChooser.newFolderButtonText=\uC0C8 \uD3F4\uB354(N)
 FileChooser.newFolderButtonMnemonic=78
 FileChooser.newFolderDialogText=\uD3F4\uB354 \uC774\uB984:
 FileChooser.newFolderNoDirectoryErrorTitleText=\uC624\uB958
 FileChooser.newFolderNoDirectoryErrorText="{0}" \uB514\uB809\uD1A0\uB9AC\uB97C \uC0DD\uC131\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: \uD574\uB2F9 \uD30C\uC77C \uB610\uB294 \uB514\uB809\uD1A0\uB9AC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.
-FileChooser.deleteFileButtonText=\uD30C\uC77C \uC0AD\uC81C
+FileChooser.deleteFileButtonText=\uD30C\uC77C \uC0AD\uC81C(L)
 FileChooser.deleteFileButtonMnemonic=76
-FileChooser.renameFileButtonText=\uD30C\uC77C \uC774\uB984 \uBC14\uAFB8\uAE30
+FileChooser.renameFileButtonText=\uD30C\uC77C \uC774\uB984 \uBC14\uAFB8\uAE30(R)
 FileChooser.renameFileButtonMnemonic=82
-FileChooser.cancelButtonText=\uCDE8\uC18C
+FileChooser.cancelButtonText=\uCDE8\uC18C(C)
 FileChooser.cancelButtonMnemonic=67
-FileChooser.saveButtonText=\uD655\uC778
+FileChooser.saveButtonText=\uD655\uC778(O)
 FileChooser.saveButtonMnemonic=79
-FileChooser.openButtonText=\uD655\uC778
+FileChooser.openButtonText=\uD655\uC778(O)
 FileChooser.openButtonMnemonic=79
 FileChooser.saveDialogTitleText=\uC800\uC7A5
 FileChooser.openDialogTitleText=\uC5F4\uAE30
-FileChooser.pathLabelText=\uC120\uD0DD:
+FileChooser.pathLabelText=\uC120\uD0DD \uC0AC\uD56D(S):
 FileChooser.filterLabelText=\uD544\uD130:
 FileChooser.pathLabelMnemonic=83
-FileChooser.foldersLabelText=\uD3F4\uB354
+FileChooser.foldersLabelText=\uD3F4\uB354(D)
 FileChooser.foldersLabelMnemonic=68
-FileChooser.filesLabelText=\uD30C\uC77C
+FileChooser.filesLabelText=\uD30C\uC77C(F)
 FileChooser.filesLabelMnemonic=70
 
 FileChooser.cancelButtonToolTipText=\uD30C\uC77C \uC120\uD0DD\uAE30 \uB300\uD654\uC0C1\uC790\uB97C \uC911\uB2E8\uD569\uB2C8\uB2E4.
@@ -76,8 +76,9 @@
 FileChooser.openButtonToolTipText=\uC120\uD0DD\uB41C \uD30C\uC77C\uC744 \uC5FD\uB2C8\uB2E4.
 
 FileChooser.renameFileDialogText="{0}" \uD30C\uC77C\uC758 \uC774\uB984 \uBC14\uAFB8\uAE30
-FileChooser.renameFileErrorTitle=\uC624\uB958 
+FileChooser.renameFileErrorTitle=\uC624\uB958
 FileChooser.renameFileErrorText="{0}" \uD30C\uC77C\uC758 \uC774\uB984\uC744 "{1}"(\uC73C)\uB85C \uBC14\uAFB8\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
 
 OptionPane.okButtonMnemonic=79
 OptionPane.cancelButtonMnemonic=67
+
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_pt_BR.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_pt_BR.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -21,7 +21,7 @@
 # character of GTKColorChooserPanel.hueText should be underlined to
 # represent the mnemonic.
 GTKColorChooserPanel.hueText=Matiz:
-GTKColorChooserPanel.hueMnemonic=72
+GTKColorChooserPanel.hueMnemonic=77
 
 GTKColorChooserPanel.redText=Vermelho:
 GTKColorChooserPanel.redMnemonic=69
@@ -30,13 +30,13 @@
 GTKColorChooserPanel.saturationMnemonic=83
 
 GTKColorChooserPanel.greenText=Verde:
-GTKColorChooserPanel.greenMnemonic=71
+GTKColorChooserPanel.greenMnemonic=86
 
 GTKColorChooserPanel.valueText=Valor:
 GTKColorChooserPanel.valueMnemonic=86
 
 GTKColorChooserPanel.blueText=Azul:
-GTKColorChooserPanel.blueMnemonic=66
+GTKColorChooserPanel.blueMnemonic=65
 
 GTKColorChooserPanel.colorNameText=Nome da Cor:
 GTKColorChooserPanel.colorNameMnemonic=78
@@ -67,17 +67,18 @@
 FileChooser.filterLabelText=Filtro:
 FileChooser.pathLabelMnemonic=83
 FileChooser.foldersLabelText=Pastas
-FileChooser.foldersLabelMnemonic=68
+FileChooser.foldersLabelMnemonic=80
 FileChooser.filesLabelText=Arquivos
-FileChooser.filesLabelMnemonic=70
+FileChooser.filesLabelMnemonic=65
 
 FileChooser.cancelButtonToolTipText=Abortar caixa de di\u00E1logo do seletor de arquivos.
 FileChooser.saveButtonToolTipText=Salvar arquivo selecionado.
 FileChooser.openButtonToolTipText=Abrir arquivo selecionado.
 
 FileChooser.renameFileDialogText=Renomear arquivo "{0}" por
-FileChooser.renameFileErrorTitle=Erro 
+FileChooser.renameFileErrorTitle=Erro
 FileChooser.renameFileErrorText=Erro ao renomear o arquivo "{0}" por "{1}"
 
 OptionPane.okButtonMnemonic=79
 OptionPane.cancelButtonMnemonic=67
+
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_sv.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_sv.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -21,13 +21,13 @@
 # character of GTKColorChooserPanel.hueText should be underlined to
 # represent the mnemonic.
 GTKColorChooserPanel.hueText=Nyans:
-GTKColorChooserPanel.hueMnemonic=72
+GTKColorChooserPanel.hueMnemonic=78
 
 GTKColorChooserPanel.redText=R\u00F6d:
-GTKColorChooserPanel.redMnemonic=69
+GTKColorChooserPanel.redMnemonic=82
 
 GTKColorChooserPanel.saturationText=M\u00E4ttnad:
-GTKColorChooserPanel.saturationMnemonic=83
+GTKColorChooserPanel.saturationMnemonic=77
 
 GTKColorChooserPanel.greenText=Gr\u00F6n:
 GTKColorChooserPanel.greenMnemonic=71
@@ -38,7 +38,7 @@
 GTKColorChooserPanel.blueText=Bl\u00E5:
 GTKColorChooserPanel.blueMnemonic=66
 
-GTKColorChooserPanel.colorNameText=F\u00E4rg:
+GTKColorChooserPanel.colorNameText=F\u00E4rgnamn:
 GTKColorChooserPanel.colorNameMnemonic=78
 
 
@@ -52,22 +52,22 @@
 FileChooser.newFolderNoDirectoryErrorTitleText=Fel
 FileChooser.newFolderNoDirectoryErrorText=Ett fel intr\u00E4ffade vid f\u00F6rs\u00F6k att skapa katalogen "{0}": Filen eller katalogen finns inte
 FileChooser.deleteFileButtonText=Ta bort fil
-FileChooser.deleteFileButtonMnemonic=76
-FileChooser.renameFileButtonText=Namn\u00E4ndra fil
+FileChooser.deleteFileButtonMnemonic=66
+FileChooser.renameFileButtonText=\u00C4ndra namn p\u00E5 filen
 FileChooser.renameFileButtonMnemonic=82
 FileChooser.cancelButtonText=Avbryt
-FileChooser.cancelButtonMnemonic=67
+FileChooser.cancelButtonMnemonic=65
 FileChooser.saveButtonText=OK
 FileChooser.saveButtonMnemonic=79
 FileChooser.openButtonText=OK
 FileChooser.openButtonMnemonic=79
 FileChooser.saveDialogTitleText=Spara
 FileChooser.openDialogTitleText=\u00D6ppna
-FileChooser.pathLabelText=Val:
+FileChooser.pathLabelText=Urval:
 FileChooser.filterLabelText=Filter:
-FileChooser.pathLabelMnemonic=83
+FileChooser.pathLabelMnemonic=85
 FileChooser.foldersLabelText=Mappar
-FileChooser.foldersLabelMnemonic=68
+FileChooser.foldersLabelMnemonic=80
 FileChooser.filesLabelText=Filer
 FileChooser.filesLabelMnemonic=70
 
@@ -76,8 +76,9 @@
 FileChooser.openButtonToolTipText=\u00D6ppna vald fil.
 
 FileChooser.renameFileDialogText=Namn\u00E4ndra fil "{0}" till
-FileChooser.renameFileErrorTitle=Fel 
+FileChooser.renameFileErrorTitle=Fel
 FileChooser.renameFileErrorText=Fel vid namn\u00E4ndring av fil "{0}" till "{1}"
 
 OptionPane.okButtonMnemonic=79
-OptionPane.cancelButtonMnemonic=67
+OptionPane.cancelButtonMnemonic=65
+
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_CN.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_CN.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -6,7 +6,7 @@
 # GTK specific properties
 
 # GTK color chooser properties:
-GTKColorChooserPanel.nameText=GTK \u989C\u8272\u9009\u62E9\u5668
+GTKColorChooserPanel.nameText=GTK \u989C\u8272\u9009\u62E9\u5668(G)
 # mnemonic as a VK_ constant
 GTKColorChooserPanel.mnemonic=71
 # Can also define GTKColorChooserPanel.dispalyedMnemonicIndex if you
@@ -20,25 +20,25 @@
 # GTKColorChooserPanel.hueMnemonicIndex=1 would indicate the second
 # character of GTKColorChooserPanel.hueText should be underlined to
 # represent the mnemonic.
-GTKColorChooserPanel.hueText=\u8272\u8C03: 
+GTKColorChooserPanel.hueText=\u8272\u8C03(H):
 GTKColorChooserPanel.hueMnemonic=72
 
-GTKColorChooserPanel.redText=\u7EA2: 
+GTKColorChooserPanel.redText=\u7EA2\u8272(E):
 GTKColorChooserPanel.redMnemonic=69
 
-GTKColorChooserPanel.saturationText=\u9971\u548C\u5EA6: 
+GTKColorChooserPanel.saturationText=\u9971\u548C\u5EA6(S):
 GTKColorChooserPanel.saturationMnemonic=83
 
-GTKColorChooserPanel.greenText=\u7EFF: 
+GTKColorChooserPanel.greenText=\u7EFF\u8272(G):
 GTKColorChooserPanel.greenMnemonic=71
 
-GTKColorChooserPanel.valueText=\u503C: 
+GTKColorChooserPanel.valueText=\u503C(V):
 GTKColorChooserPanel.valueMnemonic=86
 
-GTKColorChooserPanel.blueText=\u84DD: 
+GTKColorChooserPanel.blueText=\u84DD\u8272(B):
 GTKColorChooserPanel.blueMnemonic=66
 
-GTKColorChooserPanel.colorNameText=\u989C\u8272\u540D\u79F0: 
+GTKColorChooserPanel.colorNameText=\u989C\u8272\u540D(N):
 GTKColorChooserPanel.colorNameMnemonic=78
 
 
@@ -46,29 +46,29 @@
 ############ FILE CHOOSER STRINGS #############
 
 FileChooser.acceptAllFileFilterText=\u6240\u6709\u6587\u4EF6
-FileChooser.newFolderButtonText=\u65B0\u5EFA\u6587\u4EF6\u5939
+FileChooser.newFolderButtonText=\u65B0\u6587\u4EF6\u5939(N)
 FileChooser.newFolderButtonMnemonic=78
-FileChooser.newFolderDialogText=\u6587\u4EF6\u5939\u540D: 
+FileChooser.newFolderDialogText=\u6587\u4EF6\u5939\u540D:
 FileChooser.newFolderNoDirectoryErrorTitleText=\u9519\u8BEF
 FileChooser.newFolderNoDirectoryErrorText=\u521B\u5EFA\u76EE\u5F55 "{0}" \u65F6\u51FA\u9519: \u6CA1\u6709\u6B64\u7C7B\u6587\u4EF6\u6216\u76EE\u5F55
-FileChooser.deleteFileButtonText=\u5220\u9664\u6587\u4EF6
+FileChooser.deleteFileButtonText=\u5220\u9664\u6587\u4EF6(L)
 FileChooser.deleteFileButtonMnemonic=76
-FileChooser.renameFileButtonText=\u91CD\u547D\u540D\u6587\u4EF6
+FileChooser.renameFileButtonText=\u91CD\u547D\u540D\u6587\u4EF6(R)
 FileChooser.renameFileButtonMnemonic=82
-FileChooser.cancelButtonText=\u53D6\u6D88
+FileChooser.cancelButtonText=\u53D6\u6D88(C)
 FileChooser.cancelButtonMnemonic=67
-FileChooser.saveButtonText=\u786E\u5B9A
+FileChooser.saveButtonText=\u786E\u5B9A(O)
 FileChooser.saveButtonMnemonic=79
-FileChooser.openButtonText=\u786E\u5B9A
+FileChooser.openButtonText=\u786E\u5B9A(O)
 FileChooser.openButtonMnemonic=79
 FileChooser.saveDialogTitleText=\u4FDD\u5B58
 FileChooser.openDialogTitleText=\u6253\u5F00
-FileChooser.pathLabelText=\u9009\u62E9: 
-FileChooser.filterLabelText=\u7B5B\u9009\u5668: 
+FileChooser.pathLabelText=\u9009\u5B9A\u5185\u5BB9(S):
+FileChooser.filterLabelText=\u7B5B\u9009\u5668:
 FileChooser.pathLabelMnemonic=83
-FileChooser.foldersLabelText=\u6587\u4EF6\u5939
+FileChooser.foldersLabelText=\u6587\u4EF6\u5939(D)
 FileChooser.foldersLabelMnemonic=68
-FileChooser.filesLabelText=\u6587\u4EF6
+FileChooser.filesLabelText=\u6587\u4EF6(F)
 FileChooser.filesLabelMnemonic=70
 
 FileChooser.cancelButtonToolTipText=\u4E2D\u6B62\u6587\u4EF6\u9009\u62E9\u5668\u5BF9\u8BDD\u6846\u3002
@@ -76,8 +76,9 @@
 FileChooser.openButtonToolTipText=\u6253\u5F00\u6240\u9009\u6587\u4EF6\u3002
 
 FileChooser.renameFileDialogText=\u5C06\u6587\u4EF6 "{0}" \u91CD\u547D\u540D\u4E3A
-FileChooser.renameFileErrorTitle=\u9519\u8BEF 
+FileChooser.renameFileErrorTitle=\u9519\u8BEF
 FileChooser.renameFileErrorText=\u5C06\u6587\u4EF6 "{0}" \u91CD\u547D\u540D\u4E3A "{1}" \u65F6\u51FA\u9519
 
 OptionPane.okButtonMnemonic=79
 OptionPane.cancelButtonMnemonic=67
+
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_TW.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_TW.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -6,7 +6,7 @@
 # GTK specific properties
 
 # GTK color chooser properties:
-GTKColorChooserPanel.nameText=GTK \u8272\u5F69\u9078\u64C7\u5668
+GTKColorChooserPanel.nameText=GTK \u8272\u5F69\u9078\u64C7\u5668(G)
 # mnemonic as a VK_ constant
 GTKColorChooserPanel.mnemonic=71
 # Can also define GTKColorChooserPanel.dispalyedMnemonicIndex if you
@@ -20,25 +20,25 @@
 # GTKColorChooserPanel.hueMnemonicIndex=1 would indicate the second
 # character of GTKColorChooserPanel.hueText should be underlined to
 # represent the mnemonic.
-GTKColorChooserPanel.hueText=\u8272\u8ABF:
+GTKColorChooserPanel.hueText=\u8272\u8ABF(H)\uFF1A
 GTKColorChooserPanel.hueMnemonic=72
 
-GTKColorChooserPanel.redText=\u7D05:
+GTKColorChooserPanel.redText=\u7D05(E):
 GTKColorChooserPanel.redMnemonic=69
 
-GTKColorChooserPanel.saturationText=\u98FD\u548C:
+GTKColorChooserPanel.saturationText=\u5F69\u5EA6(S):
 GTKColorChooserPanel.saturationMnemonic=83
 
-GTKColorChooserPanel.greenText=\u7DA0:
+GTKColorChooserPanel.greenText=\u7DA0(G):
 GTKColorChooserPanel.greenMnemonic=71
 
-GTKColorChooserPanel.valueText=\u503C:
+GTKColorChooserPanel.valueText=\u503C(V):
 GTKColorChooserPanel.valueMnemonic=86
 
-GTKColorChooserPanel.blueText=\u85CD:
+GTKColorChooserPanel.blueText=\u85CD(B):
 GTKColorChooserPanel.blueMnemonic=66
 
-GTKColorChooserPanel.colorNameText=\u984F\u8272\u540D\u7A31:
+GTKColorChooserPanel.colorNameText=\u984F\u8272\u540D\u7A31(N):
 GTKColorChooserPanel.colorNameMnemonic=78
 
 
@@ -46,29 +46,29 @@
 ############ FILE CHOOSER STRINGS #############
 
 FileChooser.acceptAllFileFilterText=\u6240\u6709\u6A94\u6848
-FileChooser.newFolderButtonText=\u65B0\u8CC7\u6599\u593E
+FileChooser.newFolderButtonText=\u65B0\u5EFA\u8CC7\u6599\u593E(N)
 FileChooser.newFolderButtonMnemonic=78
 FileChooser.newFolderDialogText=\u8CC7\u6599\u593E\u540D\u7A31:
 FileChooser.newFolderNoDirectoryErrorTitleText=\u932F\u8AA4
 FileChooser.newFolderNoDirectoryErrorText=\u5EFA\u7ACB\u76EE\u9304 "{0}" \u6642\u767C\u751F\u932F\u8AA4: \u6C92\u6709\u6B64\u6A94\u6848\u6216\u76EE\u9304
-FileChooser.deleteFileButtonText=\u522A\u9664\u6A94\u6848
+FileChooser.deleteFileButtonText=\u522A\u9664\u6A94\u6848(L)
 FileChooser.deleteFileButtonMnemonic=76
-FileChooser.renameFileButtonText=\u91CD\u65B0\u547D\u540D\u6A94\u6848
+FileChooser.renameFileButtonText=\u91CD\u65B0\u547D\u540D\u6A94\u6848(R)
 FileChooser.renameFileButtonMnemonic=82
-FileChooser.cancelButtonText=\u53D6\u6D88
+FileChooser.cancelButtonText=\u53D6\u6D88(C)
 FileChooser.cancelButtonMnemonic=67
-FileChooser.saveButtonText=\u78BA\u5B9A
+FileChooser.saveButtonText=\u78BA\u5B9A(O)
 FileChooser.saveButtonMnemonic=79
-FileChooser.openButtonText=\u78BA\u5B9A
+FileChooser.openButtonText=\u78BA\u5B9A(O)
 FileChooser.openButtonMnemonic=79
 FileChooser.saveDialogTitleText=\u5132\u5B58
 FileChooser.openDialogTitleText=\u958B\u555F
-FileChooser.pathLabelText=\u9078\u53D6:
+FileChooser.pathLabelText=\u9078\u53D6(S):
 FileChooser.filterLabelText=\u7BE9\u9078:
 FileChooser.pathLabelMnemonic=83
-FileChooser.foldersLabelText=\u8CC7\u6599\u593E
+FileChooser.foldersLabelText=\u8CC7\u6599\u593E(D)
 FileChooser.foldersLabelMnemonic=68
-FileChooser.filesLabelText=\u6A94\u6848
+FileChooser.filesLabelText=\u6A94\u6848(F)
 FileChooser.filesLabelMnemonic=70
 
 FileChooser.cancelButtonToolTipText=\u4E2D\u6B62\u6A94\u6848\u9078\u64C7\u5668\u5C0D\u8A71\u65B9\u584A\u3002
@@ -76,8 +76,9 @@
 FileChooser.openButtonToolTipText=\u958B\u555F\u9078\u53D6\u7684\u6A94\u6848\u3002
 
 FileChooser.renameFileDialogText=\u5C07\u6A94\u6848 "{0}" \u91CD\u65B0\u547D\u540D\u70BA
-FileChooser.renameFileErrorTitle=\u932F\u8AA4 
+FileChooser.renameFileErrorTitle=\u932F\u8AA4
 FileChooser.renameFileErrorText=\u5C07\u6A94\u6848 "{0}" \u91CD\u65B0\u547D\u540D\u70BA "{1}" \u6642\u51FA\u73FE\u932F\u8AA4
 
 OptionPane.okButtonMnemonic=79
 OptionPane.cancelButtonMnemonic=67
+
--- a/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/java/util/jar/pack/package.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/java/util/jar/pack/package.html	Wed Apr 20 09:31:11 2011 -0700
@@ -88,8 +88,8 @@
 http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html</a></li>
 
 <li>
-Java Virtual Machine Specification : <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html">
-http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html</a></li>
+Class File Specification: Chapter 4 of
+<em>The Java&trade; Virtual Machine Specification</em>
 
 <li>
 Hypertext Transfer Protocol -- HTTP/1.1 : <a href="http://www.ietf.org/rfc/rfc2616.txt">
--- a/jdk/src/share/classes/com/sun/jdi/Accessible.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/jdi/Accessible.java	Wed Apr 20 09:31:11 2011 -0700
@@ -42,12 +42,9 @@
      * Returns the Java<sup><font size=-2>TM</font></sup>
      * programming language modifiers, encoded in an integer.
      * <p>
-     * The modifier encodings are defined in the
-     * <a href="http://java.sun.com/docs/books/vmspec/">Java Virtual Machine
-     * Specification</a>, in the <code>access_flag</code> tables for
-     * <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#75734">classes</a>,
-     * <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#88358">fields</a>, and
-     * <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#75568">methods</a>.
+     * The modifier encodings are defined in
+     * <cite>The Java&trade; Virtual Machine Specification</cite>
+     * in the <code>access_flag</code> tables for classes(section 4.1), fields(section 4.5), and methods(section 4.6).
      */
     public int modifiers();
 
--- a/jdk/src/share/classes/com/sun/jdi/ArrayType.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/jdi/ArrayType.java	Wed Apr 20 09:31:11 2011 -0700
@@ -77,11 +77,9 @@
      * as specified in the array declaration.
      * <P>
      * Note: The component type of a array will always be
-     * created or loaded before the array - see the
-     * <a href="http://java.sun.com/docs/books/vmspec/">Java Virtual
-     * Machine Specification</a>, section
-     * <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ConstantPool.doc.html#79473">5.3.3
-     * Creating Array Classes</a>.
+     * created or loaded before the array - see
+     * <cite>The Java&trade; Virtual Machine Specification</cite>,
+     * section 5.3.3 - Creating Array Classes.
      * However, although the component type will be loaded it may
      * not yet be prepared, in which case the type will be returned
      * but attempts to perform some operations on the returned type
--- a/jdk/src/share/classes/com/sun/jdi/ClassLoaderReference.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/jdi/ClassLoaderReference.java	Wed Apr 20 09:31:11 2011 -0700
@@ -71,11 +71,9 @@
      * <p>
      * No ordering of the returned list is guaranteed.
      * <p>
-     * See the revised
-     * <a href="http://java.sun.com/docs/books/vmspec/">Java
-     * Virtual Machine Specification</a> section
-     * <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ConstantPool.doc.html#72007">5.3
-     * Creation and Loading</a>
+     * See
+     * <cite>The Java&trade; Virtual Machine Specification</cite>,
+     * section 5.3 - Creation and Loading
      * for more information on the initiating classloader.
      * <p>
      * Note that unlike {@link #definedClasses()}
--- a/jdk/src/share/classes/com/sun/jdi/ClassNotLoadedException.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/jdi/ClassNotLoadedException.java	Wed Apr 20 09:31:11 2011 -0700
@@ -60,9 +60,9 @@
  * is visible to the class loader of enclosing class. (That is, the
  * class loader of the enclosing class must be an <i>initiating</i> class
  * loader for the class in question.)
- * See the <a href="http://java.sun.com/docs/books/vmspec/">Java
- * Virtual Machine Specification</a> for
- * more details.
+ * See
+ * <cite>The Java&trade; Virtual Machine Specification</cite>
+ * for more details.
  *
  * @author Gordon Hirsch
  * @since  1.3
--- a/jdk/src/share/classes/com/sun/jdi/ClassType.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/jdi/ClassType.java	Wed Apr 20 09:31:11 2011 -0700
@@ -164,10 +164,8 @@
      * component type is passed.  The component type can be a primitive type.
      * Autoboxing is not supported.
      *
-     * See the <a href="http://java.sun.com/docs/books/jls/">
-     * Java Language Specification</a>.
-     * section
-     * <a href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#184206">5.2</a>
+     * See Section 5.2 of
+     * <cite>The Java&trade; Language Specification</cite>
      * for more information on assignment compatibility.
      * <p>
      * By default, all threads in the target VM are resumed while
@@ -280,10 +278,8 @@
      * component type is passed.  The component type can be a primitive type.
      * Autoboxing is not supported.
      *
-     * See the <a href="http://java.sun.com/docs/books/jls/">
-     * Java Language Specification</a>.
-     * section
-     * <a href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#184206">5.2</a>
+     * See section 5.2 of
+     * <cite>The Java&trade; Language Specification</cite>
      * for more information on assignment compatibility.
      * <p>
      * By default, all threads in the target VM are resumed while
--- a/jdk/src/share/classes/com/sun/jdi/LocalVariable.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/jdi/LocalVariable.java	Wed Apr 20 09:31:11 2011 -0700
@@ -102,9 +102,7 @@
     /**
      * Gets the generic signature for this variable if there is one.
      * Generic signatures are described in the
-     * <a href="http://java.sun.com/docs/books/vmspec">
-     * "Java<sup><font size=-2>TM</font></sup>
-     * Virtual Machine Specification, 3rd Edition.</a>
+     * <cite>The Java&trade; Virtual Machine Specification</cite>.
      *
      * @return a string containing the generic signature, or <code>null</code>
      * if there is no generic signature.
--- a/jdk/src/share/classes/com/sun/jdi/Method.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/jdi/Method.java	Wed Apr 20 09:31:11 2011 -0700
@@ -164,10 +164,8 @@
 
     /**
      * Determine if this method is a bridge method. Bridge
-     * methods are defined in the
-     * <a href="http://java.sun.com/docs/books/jls">
-     * "Java<sup><font size=-2>TM</font></sup>
-     * Language Specification, 3rd Edition.</a>
+     * methods are defined in
+     * <cite>The Java&trade; Language Specification</cite>.
      *
      * @return <code>true</code> if the method is a bridge method,
      * false otherwise.
--- a/jdk/src/share/classes/com/sun/jdi/ObjectReference.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/jdi/ObjectReference.java	Wed Apr 20 09:31:11 2011 -0700
@@ -118,10 +118,8 @@
      * enclosing class's class loader). Primitive values must be
      * either assignment compatible with the field type or must be
      * convertible to the field type without loss of information.
-     * See the <a href="http://java.sun.com/docs/books/jls/">
-     * Java<sup><font size=-2>TM</font></sup> Language Specification</a>.
-     * section
-     * <a href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#184206">5.2</a>
+     * See section 5.2 of
+     * <cite>The Java&trade; Language Specification</cite>
      * for more information on assignment
      * compatibility.
      *
@@ -182,18 +180,13 @@
      * component type is passed.  The component type can be a primitive type.
      * Autoboxing is not supported.
      *
-     * See the <a href="http://java.sun.com/docs/books/jls/">
-     * Java Language Specification</a>.
-     * section
-     * <a href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#184206">5.2</a>
+     * See section 5.2 of
+     * <cite>The Java&trade; Language Specification</cite>
      * for more information on assignment compatibility.
      * <p>
      * By default, the method is invoked using dynamic lookup as
-     * documented in the
-     * <a href="http://java.sun.com/docs/books/jls/">
-     * Java Language Specification</a>
-     * second edition, section
-     * <a href="http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#45606">15.12.4.4</a>;
+     * documented in section 15.12.4.4 of
+     * <cite>The Java&trade; Language Specification</cite>
      * in particular, overriding based on the runtime type of the object
      * mirrored by this {@link ObjectReference} will occur. This
      * behavior can be changed by specifying the
--- a/jdk/src/share/classes/com/sun/jdi/ReferenceType.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/jdi/ReferenceType.java	Wed Apr 20 09:31:11 2011 -0700
@@ -30,9 +30,8 @@
 
 /**
  * The type of an object in a target VM. ReferenceType encompasses
- * classes, interfaces, and array types as defined in the
- * <a href="http://java.sun.com/docs/books/jls/">
- * Java<sup><font size=-2>TM</font></sup> Language Specification</a>.
+ * classes, interfaces, and array types as defined in
+ * <cite>The Java&trade; Language Specification</cite>.
  * All ReferenceType objects belong to one of the following
  * subinterfaces:
  * {@link ClassType} for classes,
@@ -98,9 +97,7 @@
     /**
      * Gets the generic signature for this type if there is one.
      * Generic signatures are described in the
-     * <a href="http://java.sun.com/docs/books/vmspec">
-     * "Java<sup><font size=-2>TM</font></sup>
-     * Virtual Machine Specification, 3rd Edition.</a>
+     * <cite>The Java&trade; Virtual Machine Specification</cite>.
      *
      * @return a string containing the generic signature, or <code>null</code>
      * if there is no generic signature.
--- a/jdk/src/share/classes/com/sun/jdi/TypeComponent.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/jdi/TypeComponent.java	Wed Apr 20 09:31:11 2011 -0700
@@ -74,9 +74,7 @@
     /**
      * Gets the generic signature for this TypeComponent if there is one.
      * Generic signatures are described in the
-     * <a href="http://java.sun.com/docs/books/vmspec">
-     * "Java<sup><font size=-2>TM</font></sup>
-     * Virtual Machine Specification, 3rd Edition.</a>
+     * <cite>The Java&trade; Virtual Machine Specification</cite>.
      *
      * @return a string containing the generic signature, or <code>null</code>
      * if there is no generic signature.
--- a/jdk/src/share/classes/com/sun/jndi/toolkit/ctx/Continuation.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/jndi/toolkit/ctx/Continuation.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/media/sound/AiffFileWriter.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/AiffFileWriter.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/media/sound/AlawCodec.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/AlawCodec.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/media/sound/AuFileWriter.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/AuFileWriter.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/media/sound/DirectAudioDevice.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/DirectAudioDevice.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/media/sound/StandardMidiFileReader.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/StandardMidiFileReader.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/media/sound/SunFileWriter.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/SunFileWriter.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/media/sound/WaveFileWriter.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/media/sound/WaveFileWriter.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
@@ -111,13 +111,13 @@
      */
     private String tableName;
 
-
     /**
      * A <code>Vector</code> object containing the <code>Row</code>
      * objects that comprise  this <code>CachedRowSetImpl</code> object.
      * @serial
      */
-    private Vector rvh;
+    private Vector<Object> rvh;
+
     /**
      * The current postion of the cursor in this <code>CachedRowSetImpl</code>
      * object.
@@ -293,12 +293,12 @@
     /**
      * The Vector holding the Match Columns
      */
-       private Vector iMatchColumns;
+    private Vector<Integer> iMatchColumns;
 
     /**
      * The Vector that will hold the Match Column names.
      */
-       private Vector strMatchColumns;
+    private Vector<String> strMatchColumns;
 
     /**
      * Trigger that indicates whether the active SyncProvider is exposes the
@@ -484,7 +484,7 @@
      */
     private void initContainer() {
 
-        rvh = new Vector(100);
+        rvh = new Vector<Object>(100);
         cursorPos = 0;
         absolutePos = 0;
         numRows = 0;
@@ -523,12 +523,12 @@
 
         //Instantiating the vector for MatchColumns
 
-        iMatchColumns = new Vector(10);
+        iMatchColumns = new Vector<Integer>(10);
         for(int i = 0; i < 10 ; i++) {
            iMatchColumns.add(i,Integer.valueOf(-1));
         }
 
-        strMatchColumns = new Vector(10);
+        strMatchColumns = new Vector<String>(10);
         for(int j = 0; j < 10; j++) {
            strMatchColumns.add(j,null);
         }
@@ -622,7 +622,7 @@
         Row currentRow;
         int numCols;
         int i;
-        Map map = getTypeMap();
+        Map<String, Class<?>> map = getTypeMap();
         Object obj;
         int mRows;
 
@@ -939,14 +939,9 @@
      */
     public void acceptChanges(Connection con) throws SyncProviderException{
 
-      try{
-         setConnection(con);
-         acceptChanges();
-      } catch (SyncProviderException spe) {
-          throw spe;
-      } catch(SQLException sqle){
-          throw new SyncProviderException(sqle.getMessage());
-      }
+      setConnection(con);
+      acceptChanges();
+
     }
 
     /**
@@ -1289,14 +1284,7 @@
      */
     public Collection<?> toCollection() throws SQLException {
 
-        TreeMap tMap;
-        int count = 0;
-        Row origRow;
-        Vector newRow;
-
-        int colCount = ((RowSetMetaDataImpl)this.getMetaData()).getColumnCount();
-
-        tMap = new TreeMap();
+        TreeMap<Integer, Object> tMap = new TreeMap<>();
 
         for (int i = 0; i<numRows; i++) {
             tMap.put(Integer.valueOf(i), rvh.get(i));
@@ -1325,10 +1313,8 @@
      */
     public Collection<?> toCollection(int column) throws SQLException {
 
-        Vector vec;
-        Row origRow;
         int nRows = numRows;
-        vec = new Vector(nRows);
+        Vector<Object> vec = new Vector<>(nRows);
 
         // create a copy
         CachedRowSetImpl crsTemp;
@@ -2953,7 +2939,7 @@
      */
     public Object getObject(int columnIndex) throws SQLException {
         Object value;
-        java.util.Map map;
+        Map<String, Class<?>> map;
 
         // sanity check.
         checkIndex(columnIndex);
@@ -7257,7 +7243,7 @@
         Row currentRow;
         int numCols;
         int i;
-        Map map = getTypeMap();
+        Map<String, Class<?>> map = getTypeMap();
         Object obj;
         int mRows;
 
@@ -7304,11 +7290,11 @@
             resultSet.absolute(start -1);
         }
         if( pageSize == 0) {
-           rvh = new Vector(getMaxRows());
+           rvh = new Vector<Object>(getMaxRows());
 
         }
         else{
-            rvh = new Vector(getPageSize());
+            rvh = new Vector<Object>(getPageSize());
         }
 
         if (data == null) {
--- a/jdk/src/share/classes/com/sun/rowset/JdbcRowSetImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/rowset/JdbcRowSetImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
@@ -93,12 +93,12 @@
     /**
      * The Vector holding the Match Columns
      */
-    private Vector iMatchColumns;
+    private Vector<Integer> iMatchColumns;
 
     /**
      * The Vector that will hold the Match Column names.
      */
-    private Vector strMatchColumns;
+    private Vector<String> strMatchColumns;
 
 
     protected transient JdbcRowSetResourceBundle resBundle;
@@ -213,12 +213,12 @@
 
         //Instantiating the vector for MatchColumns
 
-        iMatchColumns = new Vector(10);
+        iMatchColumns = new Vector<Integer>(10);
         for(int i = 0; i < 10 ; i++) {
            iMatchColumns.add(i,Integer.valueOf(-1));
         }
 
-        strMatchColumns = new Vector(10);
+        strMatchColumns = new Vector<String>(10);
         for(int j = 0; j < 10; j++) {
            strMatchColumns.add(j,null);
         }
@@ -286,12 +286,12 @@
 
         //Instantiating the vector for MatchColumns
 
-        iMatchColumns = new Vector(10);
+        iMatchColumns = new Vector<Integer>(10);
         for(int i = 0; i < 10 ; i++) {
            iMatchColumns.add(i,Integer.valueOf(-1));
         }
 
-        strMatchColumns = new Vector(10);
+        strMatchColumns = new Vector<String>(10);
         for(int j = 0; j < 10; j++) {
            strMatchColumns.add(j,null);
         }
@@ -373,12 +373,12 @@
 
         //Instantiating the vector for MatchColumns
 
-        iMatchColumns = new Vector(10);
+        iMatchColumns = new Vector<Integer>(10);
         for(int i = 0; i < 10 ; i++) {
            iMatchColumns.add(i,Integer.valueOf(-1));
         }
 
-        strMatchColumns = new Vector(10);
+        strMatchColumns = new Vector<String>(10);
         for(int j = 0; j < 10; j++) {
            strMatchColumns.add(j,null);
         }
@@ -463,12 +463,12 @@
 
         //Instantiating the vector for MatchColumns
 
-        iMatchColumns = new Vector(10);
+        iMatchColumns = new Vector<Integer>(10);
         for(int i = 0; i < 10 ; i++) {
            iMatchColumns.add(i,Integer.valueOf(-1));
         }
 
-        strMatchColumns = new Vector(10);
+        strMatchColumns = new Vector<String>(10);
         for(int j = 0; j < 10; j++) {
            strMatchColumns.add(j,null);
         }
@@ -675,7 +675,7 @@
 
         try {
 
-            Map aMap = getTypeMap();
+            Map<String, Class<?>> aMap = getTypeMap();
             if( aMap != null) {
                 conn.setTypeMap(aMap);
             }
--- a/jdk/src/share/classes/com/sun/rowset/JoinRowSetImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/rowset/JoinRowSetImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
@@ -59,8 +59,8 @@
     /**
      * A <code>Vector</code> object that contains the <code>RowSet</code> objects
      * that have been added to this <code>JoinRowSet</code> object.
-         */
-    private Vector vecRowSetsInJOIN;
+     */
+    private Vector<CachedRowSetImpl> vecRowSetsInJOIN;
 
     /**
      * The <code>CachedRowSet</code> object that encapsulates this
@@ -78,13 +78,13 @@
      * for this <code>JoinRowSet</code> object.
      * The last join type set forms the basis of succeeding joins.
      */
-    private Vector vecJoinType;
+    private Vector<Integer> vecJoinType;
 
     /**
      * A <code>Vector</code> object containing the names of all the tables entering
      * the join.
      */
-    private Vector vecTableNames;
+    private Vector<String> vecTableNames;
 
     /**
      * An <code>int</code> that indicates the column index of the match column.
@@ -121,10 +121,10 @@
      */
     public JoinRowSetImpl() throws SQLException {
 
-        vecRowSetsInJOIN = new Vector();
+        vecRowSetsInJOIN = new Vector<CachedRowSetImpl>();
         crsInternal = new CachedRowSetImpl();
-        vecJoinType = new Vector();
-        vecTableNames = new Vector();
+        vecJoinType = new Vector<Integer>();
+        vecTableNames = new Vector<String>();
         iMatchKey = -1;
         strMatchKey = null;
         supportedJOINs =
@@ -222,7 +222,7 @@
            // either of the setter methods have been set.
            if(boolColId){
               //
-              ArrayList indices = new ArrayList();
+              ArrayList<Integer> indices = new ArrayList<>();
               for(int i=0;i<cRowset.getMatchColumnNames().length;i++) {
                   if( (strMatchKey = (cRowset.getMatchColumnNames())[i]) != null) {
                       iMatchKey = cRowset.findColumn(strMatchKey);
--- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_es.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_es.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_fr.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_fr.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_it.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_it.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ja.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ja.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ko.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ko.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_pt_BR.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_pt_BR.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_sv.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_sv.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_CN.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_CN.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_TW.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_TW.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/script/javascript/RhinoScriptEngine.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/script/javascript/RhinoScriptEngine.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/script/javascript/RhinoScriptEngineFactory.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/script/javascript/RhinoScriptEngineFactory.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/script/javascript/RhinoTopLevel.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/script/javascript/RhinoTopLevel.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/script/util/InterfaceImplementor.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/script/util/InterfaceImplementor.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/security/auth/PolicyFile.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/security/auth/PolicyFile.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/security/auth/callback/DialogCallbackHandler.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/security/auth/callback/DialogCallbackHandler.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/security/auth/login/ConfigFile.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/security/auth/login/ConfigFile.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/security/auth/module/Krb5LoginModule.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/security/auth/module/Krb5LoginModule.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
@@ -395,7 +395,13 @@
     private boolean succeeded = false;
     private boolean commitSucceeded = false;
     private String username;
+
+    // Encryption keys calculated from password. Assigned when storekey == true
+    // and useKeyTab == false (or true but not found)
     private EncryptionKey[] encKeys = null;
+
+    KeyTab ktab = null;
+
     private Credentials cred = null;
 
     private PrincipalName principal = null;
@@ -663,28 +669,49 @@
                         (krb5PrincName.toString(),
                          PrincipalName.KRB_NT_PRINCIPAL);
                 }
+
+                /*
+                 * Before dynamic KeyTab support (6894072), here we check if
+                 * the keytab contains keys for the principal. If no, keytab
+                 * will not be used and password is prompted for.
+                 *
+                 * After 6894072, we normally don't check it, and expect the
+                 * keys can be populated until a real connection is made. The
+                 * check is still done when isInitiator == true, where the keys
+                 * will be used right now.
+                 *
+                 * Probably tricky relations:
+                 *
+                 * useKeyTab is config flag, but when it's true but the ktab
+                 * does not contains keys for principal, we would use password
+                 * and keep the flag unchanged (for reuse?). In this method,
+                 * we use (ktab != null) to check whether keytab is used.
+                 * After this method (and when storeKey == true), we use
+                 * (encKeys == null) to check.
+                 */
                 if (useKeyTab) {
-                    encKeys =
-                        EncryptionKey.acquireSecretKeys(principal, keyTabName);
-
-                    if (debug) {
-                        if (encKeys != null)
-                            System.out.println
-                                ("principal's key obtained from the keytab");
-                        else
-                            System.out.println
-                                ("Key for the principal " +
-                                 principal  +
-                                 " not available in " +
-                                 ((keyTabName == null) ?
-                                  "default key tab" : keyTabName));
+                    ktab = (keyTabName == null)
+                                ? KeyTab.getInstance()
+                                : KeyTab.getInstance(new File(keyTabName));
+                    if (isInitiator) {
+                        if (Krb5Util.keysFromJavaxKeyTab(ktab, principal).length
+                                == 0) {
+                            ktab = null;
+                            if (debug) {
+                                System.out.println
+                                    ("Key for the principal " +
+                                     principal  +
+                                     " not available in " +
+                                     ((keyTabName == null) ?
+                                      "default key tab" : keyTabName));
+                            }
+                        }
                     }
-
                 }
 
                 KrbAsReqBuilder builder;
-                // We can't get the key from the keytab so prompt
-                if (encKeys == null) {
+
+                if (ktab == null) {
                     promptForPass(getPasswdFromSharedState);
                     builder = new KrbAsReqBuilder(principal, password);
                     if (isInitiator) {
@@ -693,9 +720,13 @@
                         // updated with PA info
                         cred = builder.action().getCreds();
                     }
-                    encKeys = builder.getKeys();
+                    if (storeKey) {
+                        encKeys = builder.getKeys();
+                        // When encKeys is empty, the login actually fails.
+                        // For compatibility, exception is thrown in commit().
+                    }
                 } else {
-                    builder = new KrbAsReqBuilder(principal, encKeys);
+                    builder = new KrbAsReqBuilder(principal, ktab);
                     if (isInitiator) {
                         cred = builder.action().getCreds();
                     }
@@ -705,10 +736,15 @@
                 if (debug) {
                     System.out.println("principal is " + principal);
                     HexDumpEncoder hd = new HexDumpEncoder();
-                    for (int i = 0; i < encKeys.length; i++) {
-                        System.out.println("EncryptionKey: keyType=" +
-                            encKeys[i].getEType() + " keyBytes (hex dump)=" +
-                            hd.encodeBuffer(encKeys[i].getBytes()));
+                    if (ktab != null) {
+                        System.out.println("Will use keytab");
+                    } else if (storeKey) {
+                        for (int i = 0; i < encKeys.length; i++) {
+                            System.out.println("EncryptionKey: keyType=" +
+                                encKeys[i].getEType() +
+                                " keyBytes (hex dump)=" +
+                                hd.encodeBuffer(encKeys[i].getBytes()));
+                        }
                     }
                 }
 
@@ -989,8 +1025,8 @@
                 kerbTicket = Krb5Util.credsToTicket(cred);
             }
 
-            if (storeKey) {
-                if (encKeys == null || encKeys.length <= 0) {
+            if (storeKey && encKeys != null) {
+                if (encKeys.length == 0) {
                     succeeded = false;
                     throw new LoginException("Null Server Key ");
                 }
@@ -1006,10 +1042,11 @@
                 }
 
             }
-            // Let us add the kerbClientPrinc,kerbTicket and kerbKey (if
+            // Let us add the kerbClientPrinc,kerbTicket and KeyTab/KerbKey (if
             // storeKey is true)
-            if (!princSet.contains(kerbClientPrinc))
+            if (!princSet.contains(kerbClientPrinc)) {
                 princSet.add(kerbClientPrinc);
+            }
 
             // add the TGT
             if (kerbTicket != null) {
@@ -1018,19 +1055,29 @@
             }
 
             if (storeKey) {
-                for (int i = 0; i < kerbKeys.length; i++) {
-                    if (!privCredSet.contains(kerbKeys[i])) {
-                        privCredSet.add(kerbKeys[i]);
+                if (encKeys == null) {
+                    if (!privCredSet.contains(ktab)) {
+                        privCredSet.add(ktab);
+                        // Compatibility; also add keys to privCredSet
+                        for (KerberosKey key: ktab.getKeys(kerbClientPrinc)) {
+                            privCredSet.add(new Krb5Util.KeysFromKeyTab(key));
+                        }
                     }
-                    encKeys[i].destroy();
-                    encKeys[i] = null;
-                    if (debug) {
-                        System.out.println("Added server's key"
-                                        + kerbKeys[i]);
-                        System.out.println("\t\t[Krb5LoginModule] " +
-                                       "added Krb5Principal  " +
-                                       kerbClientPrinc.toString()
-                                       + " to Subject");
+                } else {
+                    for (int i = 0; i < kerbKeys.length; i ++) {
+                        if (!privCredSet.contains(kerbKeys[i])) {
+                            privCredSet.add(kerbKeys[i]);
+                        }
+                        encKeys[i].destroy();
+                        encKeys[i] = null;
+                        if (debug) {
+                            System.out.println("Added server's key"
+                                            + kerbKeys[i]);
+                            System.out.println("\t\t[Krb5LoginModule] " +
+                                           "added Krb5Principal  " +
+                                           kerbClientPrinc.toString()
+                                           + " to Subject");
+                        }
                     }
                 }
             }
@@ -1106,7 +1153,8 @@
         while (it.hasNext()) {
             Object o = it.next();
             if (o instanceof KerberosTicket ||
-                o instanceof KerberosKey) {
+                    o instanceof KerberosKey ||
+                    o instanceof KeyTab) {
                 it.remove();
             }
         }
@@ -1161,6 +1209,7 @@
         } else {
             // remove temp results for the next try
             encKeys = null;
+            ktab = null;
             principal = null;
         }
         username = null;
--- a/jdk/src/share/classes/com/sun/security/auth/module/SolarisLoginModule.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/security/auth/module/SolarisLoginModule.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/security/auth/module/UnixLoginModule.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/security/auth/module/UnixLoginModule.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -6,10 +6,10 @@
 #    FileChooser
 #    OptionPane
 #
-# When this file is read in, the strings are put into the 
+# When this file is read in, the strings are put into the
 # defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.  
-# This may change in future versions of Swing as we improve localization 
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
 # support.
 #
 #                        MNEMONIC NOTE:
@@ -41,34 +41,34 @@
 # the String, if it does not exist you should add text that makes it
 # exist. This will typically take the form 'XXXX (M)' where M is the
 # character for the mnemonic.
-# 
+#
 # @author Steve Wilson
 
 ############ FILE CHOOSER STRINGS #############
 FileChooser.fileDescriptionText=Allgemeine Datei
 FileChooser.directoryDescriptionText=Verzeichnis
 FileChooser.newFolderErrorText=Fehler beim Erstellen eines neuen Ordners
-FileChooser.newFolderErrorSeparator= : 
+FileChooser.newFolderErrorSeparator= :
 FileChooser.newFolderParentDoesntExistTitleText=Ordner kann nicht erstellt werden
 FileChooser.newFolderParentDoesntExistText=Ordner kann nicht erstellt werden.\n\nSystem kann den angegebenen Pfad nicht finden.
 FileChooser.renameErrorTitleText=Fehler beim Umbenennen von Datei oder Ordner
 FileChooser.renameErrorText={0} kann nicht umbenannt werden
-FileChooser.renameErrorFileExistsText={0} kann nicht umbenannt werden: Es ist bereits eine Datei mit dem angegebenen Namen vorhanden. Geben Sie einen anderen Dateinamen an. 
+FileChooser.renameErrorFileExistsText={0} kann nicht umbenannt werden: Es ist bereits eine Datei mit dem angegebenen Namen vorhanden. Geben Sie einen anderen Dateinamen an.
 FileChooser.acceptAllFileFilterText=Alle Dateien
 FileChooser.cancelButtonText=Abbrechen
-FileChooser.cancelButtonMnemonic=67
+FileChooser.cancelButtonMnemonic=65
 FileChooser.saveButtonText=Speichern
 FileChooser.saveButtonMnemonic=83
 FileChooser.openButtonText=\u00D6ffnen
-FileChooser.openButtonMnemonic=79
+FileChooser.openButtonMnemonic=70
 FileChooser.saveDialogTitleText=Speichern
 FileChooser.openDialogTitleText=\u00D6ffnen
 FileChooser.updateButtonText=Aktualisieren
-FileChooser.updateButtonMnemonic=85
+FileChooser.updateButtonMnemonic=75
 FileChooser.helpButtonText=Hilfe
 FileChooser.helpButtonMnemonic=72
 FileChooser.directoryOpenButtonText=\u00D6ffnen
-FileChooser.directoryOpenButtonMnemonic=79
+FileChooser.directoryOpenButtonMnemonic=70
 
 # File Size Units
 FileChooser.fileSizeKiloBytes={0} KB
@@ -96,9 +96,9 @@
 ColorChooser.cancelText=Abbrechen
 ColorChooser.resetText=Zur\u00FCcksetzen
 # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic
-ColorChooser.resetMnemonic=82
+ColorChooser.resetMnemonic=90
 ColorChooser.sampleText=Beispieltext  Beispieltext
-ColorChooser.swatchesNameText=Muster
+ColorChooser.swatchesNameText=Swatches
 ColorChooser.swatchesMnemonic=83
 ColorChooser.swatchesRecentText=Aktuell:
 # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX
@@ -120,14 +120,14 @@
 ColorChooser.rgbNameText=RGB
 ColorChooser.rgbMnemonic=71
 ColorChooser.rgbRedText=Rot
-ColorChooser.rgbRedMnemonic=68
+ColorChooser.rgbRedMnemonic=84
 ColorChooser.rgbGreenText=Gr\u00FCn
 ColorChooser.rgbGreenMnemonic=78
 ColorChooser.rgbBlueText=Blau
 ColorChooser.rgbBlueMnemonic=66
 ColorChooser.rgbAlphaText=Alpha
 ColorChooser.rgbHexCodeText=Farbcode
-ColorChooser.rgbHexCodeMnemonic=67
+ColorChooser.rgbHexCodeMnemonic=70
 ColorChooser.cmykNameText=CMYK
 ColorChooser.cmykMnemonic=77
 ColorChooser.cmykCyanText=Zyan
@@ -141,12 +141,12 @@
 # We only define mnemonics for YES/NO, but for completeness you can
 # define mnemonics for any of the buttons.
 OptionPane.yesButtonText=Ja
-OptionPane.yesButtonMnemonic=89
+OptionPane.yesButtonMnemonic=74
 OptionPane.noButtonText=Nein
 OptionPane.noButtonMnemonic=78
-OptionPane.okButtonText=OK
+OptionPane.okButtonText=OK(0)
 OptionPane.okButtonMnemonic=0
-OptionPane.cancelButtonText=Abbrechen
+OptionPane.cancelButtonText=Abbrechen(0)
 OptionPane.cancelButtonMnemonic=0
 OptionPane.titleText=Option ausw\u00E4hlen
 # Title for the dialog for the showInputDialog methods. Only used if
@@ -168,7 +168,7 @@
 
 PrintingDialog.contentAbortingText=Druckvorgang wird abgebrochen...
 
-PrintingDialog.abortButtonText=Abbrechen
+PrintingDialog.abortButtonText=Abbruch
 PrintingDialog.abortButtonMnemonic=65
 PrintingDialog.abortButtonDisplayedMnemonicIndex=0
 PrintingDialog.abortButtonToolTipText=Druckvorgang abbrechen
@@ -223,3 +223,4 @@
 InternalFrameTitlePane.iconifyButtonAccessibleName=Als Symbol darstellen
 InternalFrameTitlePane.maximizeButtonAccessibleName=Maximieren
 InternalFrameTitlePane.closeButtonAccessibleName=Schlie\u00DFen
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -6,10 +6,10 @@
 #    FileChooser
 #    OptionPane
 #
-# When this file is read in, the strings are put into the 
+# When this file is read in, the strings are put into the
 # defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.  
-# This may change in future versions of Swing as we improve localization 
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
 # support.
 #
 #                        MNEMONIC NOTE:
@@ -41,34 +41,34 @@
 # the String, if it does not exist you should add text that makes it
 # exist. This will typically take the form 'XXXX (M)' where M is the
 # character for the mnemonic.
-# 
+#
 # @author Steve Wilson
 
 ############ FILE CHOOSER STRINGS #############
 FileChooser.fileDescriptionText=Archivo Gen\u00E9rico
 FileChooser.directoryDescriptionText=Directorio
 FileChooser.newFolderErrorText=Error al crear una nueva carpeta
-FileChooser.newFolderErrorSeparator= : 
+FileChooser.newFolderErrorSeparator= :
 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 de acceso especificada.
 FileChooser.renameErrorTitleText=Error al cambiar el nombre del archivo o carpeta
 FileChooser.renameErrorText=No se puede cambiar el nombre de {0}
-FileChooser.renameErrorFileExistsText=No se puede cambiar el nombre de {0}: ya existe un archivo con el nombre especificado. Especifique otro nombre de archivo. 
+FileChooser.renameErrorFileExistsText=No se puede cambiar el nombre de {0}: ya existe un archivo con el nombre especificado. Especifique otro nombre de archivo.
 FileChooser.acceptAllFileFilterText=Todos los Archivos
 FileChooser.cancelButtonText=Cancelar
 FileChooser.cancelButtonMnemonic=67
 FileChooser.saveButtonText=Guardar
-FileChooser.saveButtonMnemonic=83
+FileChooser.saveButtonMnemonic=71
 FileChooser.openButtonText=Abrir
-FileChooser.openButtonMnemonic=79
+FileChooser.openButtonMnemonic=66
 FileChooser.saveDialogTitleText=Guardar
 FileChooser.openDialogTitleText=Abrir
 FileChooser.updateButtonText=Actualizar
 FileChooser.updateButtonMnemonic=85
 FileChooser.helpButtonText=Ayuda
-FileChooser.helpButtonMnemonic=72
+FileChooser.helpButtonMnemonic=89
 FileChooser.directoryOpenButtonText=Abrir
-FileChooser.directoryOpenButtonMnemonic=79
+FileChooser.directoryOpenButtonMnemonic=65
 
 # File Size Units
 FileChooser.fileSizeKiloBytes={0} KB
@@ -120,11 +120,11 @@
 ColorChooser.rgbNameText=RGB
 ColorChooser.rgbMnemonic=71
 ColorChooser.rgbRedText=Rojo
-ColorChooser.rgbRedMnemonic=68
+ColorChooser.rgbRedMnemonic=74
 ColorChooser.rgbGreenText=Verde
-ColorChooser.rgbGreenMnemonic=78
+ColorChooser.rgbGreenMnemonic=86
 ColorChooser.rgbBlueText=Azul
-ColorChooser.rgbBlueMnemonic=66
+ColorChooser.rgbBlueMnemonic=90
 ColorChooser.rgbAlphaText=Alfa
 ColorChooser.rgbHexCodeText=C\u00F3digo de Color
 ColorChooser.rgbHexCodeMnemonic=67
@@ -141,12 +141,12 @@
 # We only define mnemonics for YES/NO, but for completeness you can
 # define mnemonics for any of the buttons.
 OptionPane.yesButtonText=S\u00ED
-OptionPane.yesButtonMnemonic=89
+OptionPane.yesButtonMnemonic=83
 OptionPane.noButtonText=No
 OptionPane.noButtonMnemonic=78
-OptionPane.okButtonText=Aceptar
+OptionPane.okButtonText=OK(0)
 OptionPane.okButtonMnemonic=0
-OptionPane.cancelButtonText=Cancelar
+OptionPane.cancelButtonText=Cancelar (0)
 OptionPane.cancelButtonMnemonic=0
 OptionPane.titleText=Seleccionar una Opci\u00F3n
 # Title for the dialog for the showInputDialog methods. Only used if
@@ -223,3 +223,4 @@
 InternalFrameTitlePane.iconifyButtonAccessibleName=Convertir en Icono
 InternalFrameTitlePane.maximizeButtonAccessibleName=Maximizar
 InternalFrameTitlePane.closeButtonAccessibleName=Cerrar
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -6,10 +6,10 @@
 #    FileChooser
 #    OptionPane
 #
-# When this file is read in, the strings are put into the 
+# When this file is read in, the strings are put into the
 # defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.  
-# This may change in future versions of Swing as we improve localization 
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
 # support.
 #
 #                        MNEMONIC NOTE:
@@ -41,22 +41,22 @@
 # the String, if it does not exist you should add text that makes it
 # exist. This will typically take the form 'XXXX (M)' where M is the
 # character for the mnemonic.
-# 
+#
 # @author Steve Wilson
 
 ############ FILE CHOOSER STRINGS #############
 FileChooser.fileDescriptionText=Fichier g\u00E9n\u00E9rique
 FileChooser.directoryDescriptionText=R\u00E9pertoire
 FileChooser.newFolderErrorText=Erreur lors de la cr\u00E9ation du dossier
-FileChooser.newFolderErrorSeparator= : 
+FileChooser.newFolderErrorSeparator= :
 FileChooser.newFolderParentDoesntExistTitleText=Impossible de cr\u00E9er le dossier
 FileChooser.newFolderParentDoesntExistText=Impossible de cr\u00E9er le dossier.\n\nLe syst\u00E8me ne parvient pas \u00E0 trouver le chemin indiqu\u00E9.
 FileChooser.renameErrorTitleText=Erreur lors du changement de nom du fichier ou du dossier
 FileChooser.renameErrorText=Impossible de renommer {0}
-FileChooser.renameErrorFileExistsText=Impossible de renommer {0} : il existe d\u00E9j\u00E0 un fichier portant le nom indiqu\u00E9. Indiquez-en un autre. 
+FileChooser.renameErrorFileExistsText=Impossible de renommer {0} : il existe d\u00E9j\u00E0 un fichier portant le nom indiqu\u00E9. Indiquez-en un autre.
 FileChooser.acceptAllFileFilterText=Tous les fichiers
 FileChooser.cancelButtonText=Annuler
-FileChooser.cancelButtonMnemonic=67
+FileChooser.cancelButtonMnemonic=65
 FileChooser.saveButtonText=Enregistrer
 FileChooser.saveButtonMnemonic=83
 FileChooser.openButtonText=Ouvrir
@@ -66,7 +66,7 @@
 FileChooser.updateButtonText=Mettre \u00E0 jour
 FileChooser.updateButtonMnemonic=85
 FileChooser.helpButtonText=Aide
-FileChooser.helpButtonMnemonic=72
+FileChooser.helpButtonMnemonic=65
 FileChooser.directoryOpenButtonText=Ouvrir
 FileChooser.directoryOpenButtonMnemonic=79
 
@@ -99,14 +99,14 @@
 ColorChooser.resetMnemonic=82
 ColorChooser.sampleText=Echantillon de texte  Echantillon de texte
 ColorChooser.swatchesNameText=Echantillons
-ColorChooser.swatchesMnemonic=83
+ColorChooser.swatchesMnemonic=69
 ColorChooser.swatchesRecentText=Dernier :
 # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX
 # 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=TSV
-ColorChooser.hsvMnemonic=72
+ColorChooser.hsvMnemonic=84
 ColorChooser.hsvHueText=Teinte
 ColorChooser.hsvSaturationText=Saturation
 ColorChooser.hsvValueText=Valeur
@@ -118,17 +118,17 @@
 ColorChooser.hslLightnessText=Lumi\u00E8re
 ColorChooser.hslTransparencyText=Transparence
 ColorChooser.rgbNameText=RVB
-ColorChooser.rgbMnemonic=71
+ColorChooser.rgbMnemonic=86
 ColorChooser.rgbRedText=Rouge
-ColorChooser.rgbRedMnemonic=68
+ColorChooser.rgbRedMnemonic=79
 ColorChooser.rgbGreenText=Vert
-ColorChooser.rgbGreenMnemonic=78
+ColorChooser.rgbGreenMnemonic=86
 ColorChooser.rgbBlueText=Bleu
 ColorChooser.rgbBlueMnemonic=66
 ColorChooser.rgbAlphaText=Alpha
 ColorChooser.rgbHexCodeText=Code couleur
 ColorChooser.rgbHexCodeMnemonic=67
-ColorChooser.cmykNameText=CMJN
+ColorChooser.cmykNameText=CMYK
 ColorChooser.cmykMnemonic=77
 ColorChooser.cmykCyanText=Cyan
 ColorChooser.cmykMagentaText=Magenta
@@ -141,12 +141,12 @@
 # We only define mnemonics for YES/NO, but for completeness you can
 # define mnemonics for any of the buttons.
 OptionPane.yesButtonText=Oui
-OptionPane.yesButtonMnemonic=89
+OptionPane.yesButtonMnemonic=79
 OptionPane.noButtonText=Non
 OptionPane.noButtonMnemonic=78
-OptionPane.okButtonText=OK
+OptionPane.okButtonText=OK(0)
 OptionPane.okButtonMnemonic=0
-OptionPane.cancelButtonText=Annuler
+OptionPane.cancelButtonText=Annuler (0)
 OptionPane.cancelButtonMnemonic=0
 OptionPane.titleText=S\u00E9lectionner une option
 # Title for the dialog for the showInputDialog methods. Only used if
@@ -223,3 +223,4 @@
 InternalFrameTitlePane.iconifyButtonAccessibleName=R\u00E9duire
 InternalFrameTitlePane.maximizeButtonAccessibleName=Agrandir
 InternalFrameTitlePane.closeButtonAccessibleName=Fermer
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_it.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_it.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -6,10 +6,10 @@
 #    FileChooser
 #    OptionPane
 #
-# When this file is read in, the strings are put into the 
+# When this file is read in, the strings are put into the
 # defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.  
-# This may change in future versions of Swing as we improve localization 
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
 # support.
 #
 #                        MNEMONIC NOTE:
@@ -41,34 +41,34 @@
 # the String, if it does not exist you should add text that makes it
 # exist. This will typically take the form 'XXXX (M)' where M is the
 # character for the mnemonic.
-# 
+#
 # @author Steve Wilson
 
 ############ FILE CHOOSER STRINGS #############
 FileChooser.fileDescriptionText=File generico
 FileChooser.directoryDescriptionText=Directory
 FileChooser.newFolderErrorText=Errore durante la creazione della nuova cartella
-FileChooser.newFolderErrorSeparator= : 
+FileChooser.newFolderErrorSeparator= :
 FileChooser.newFolderParentDoesntExistTitleText=Impossibile creare la cartella
 FileChooser.newFolderParentDoesntExistText=Impossibile creare la cartella.\n\nIl sistema non \u00E8 in grado di trovare il percorso specificato.
 FileChooser.renameErrorTitleText=Errore durante la 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 altro nome. 
+FileChooser.renameErrorFileExistsText=Impossibile rinominare {0}: esiste gi\u00E0 un file con il nome specificato. Specificare un altro nome.
 FileChooser.acceptAllFileFilterText=Tutti i file
 FileChooser.cancelButtonText=Annulla
-FileChooser.cancelButtonMnemonic=67
+FileChooser.cancelButtonMnemonic=65
 FileChooser.saveButtonText=Salva
-FileChooser.saveButtonMnemonic=83
+FileChooser.saveButtonMnemonic=86
 FileChooser.openButtonText=Apri
-FileChooser.openButtonMnemonic=79
+FileChooser.openButtonMnemonic=80
 FileChooser.saveDialogTitleText=Salva
 FileChooser.openDialogTitleText=Apri
 FileChooser.updateButtonText=Aggiorna
-FileChooser.updateButtonMnemonic=85
-FileChooser.helpButtonText=?
+FileChooser.updateButtonMnemonic=71
+FileChooser.helpButtonText=?(H)
 FileChooser.helpButtonMnemonic=72
 FileChooser.directoryOpenButtonText=Apri
-FileChooser.directoryOpenButtonMnemonic=79
+FileChooser.directoryOpenButtonMnemonic=65
 
 # File Size Units
 FileChooser.fileSizeKiloBytes={0} KB
@@ -99,7 +99,7 @@
 ColorChooser.resetMnemonic=82
 ColorChooser.sampleText=Testo di prova          Testo di prova
 ColorChooser.swatchesNameText=Colori campione
-ColorChooser.swatchesMnemonic=83
+ColorChooser.swatchesMnemonic=80
 ColorChooser.swatchesRecentText=Recenti:
 # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX
 # constant, and an index into the text to render the mnemonic as. The
@@ -120,9 +120,9 @@
 ColorChooser.rgbNameText=RGB
 ColorChooser.rgbMnemonic=71
 ColorChooser.rgbRedText=Rosso
-ColorChooser.rgbRedMnemonic=68
+ColorChooser.rgbRedMnemonic=83
 ColorChooser.rgbGreenText=Verde
-ColorChooser.rgbGreenMnemonic=78
+ColorChooser.rgbGreenMnemonic=68
 ColorChooser.rgbBlueText=Blu
 ColorChooser.rgbBlueMnemonic=66
 ColorChooser.rgbAlphaText=Alfa
@@ -141,13 +141,13 @@
 # We only define mnemonics for YES/NO, but for completeness you can
 # define mnemonics for any of the buttons.
 OptionPane.yesButtonText=S\u00EC
-OptionPane.yesButtonMnemonic=89
+OptionPane.yesButtonMnemonic=83
 OptionPane.noButtonText=No
 OptionPane.noButtonMnemonic=78
 OptionPane.okButtonText=OK
-OptionPane.okButtonMnemonic=0
+OptionPane.okButtonMnemonic=O
 OptionPane.cancelButtonText=Annulla
-OptionPane.cancelButtonMnemonic=0
+OptionPane.cancelButtonMnemonic=A
 OptionPane.titleText=Selezionare una opzione
 # Title for the dialog for the showInputDialog methods. Only used if
 # the developer uses one of the variants that doesn't take a title.
@@ -169,7 +169,7 @@
 PrintingDialog.contentAbortingText=Interruzione della stampa...
 
 PrintingDialog.abortButtonText=Interrompi
-PrintingDialog.abortButtonMnemonic=65
+PrintingDialog.abortButtonMnemonic=78
 PrintingDialog.abortButtonDisplayedMnemonicIndex=0
 PrintingDialog.abortButtonToolTipText=Interrompi la stampa
 
@@ -223,3 +223,4 @@
 InternalFrameTitlePane.iconifyButtonAccessibleName=Riduci a icona
 InternalFrameTitlePane.maximizeButtonAccessibleName=Ingrandisci
 InternalFrameTitlePane.closeButtonAccessibleName=Chiudi
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ja.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ja.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -6,10 +6,10 @@
 #    FileChooser
 #    OptionPane
 #
-# When this file is read in, the strings are put into the 
+# When this file is read in, the strings are put into the
 # defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.  
-# This may change in future versions of Swing as we improve localization 
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
 # support.
 #
 #                        MNEMONIC NOTE:
@@ -41,33 +41,33 @@
 # the String, if it does not exist you should add text that makes it
 # exist. This will typically take the form 'XXXX (M)' where M is the
 # character for the mnemonic.
-# 
+#
 # @author Steve Wilson
 
 ############ FILE CHOOSER STRINGS #############
 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\u30A8\u30E9\u30FC
-FileChooser.newFolderErrorSeparator= : 
+FileChooser.newFolderErrorSeparator= :
 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\u3057\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\u30A8\u30E9\u30FC
 FileChooser.renameErrorText={0}\u306E\u540D\u524D\u3092\u5909\u66F4\u3067\u304D\u307E\u305B\u3093
-FileChooser.renameErrorFileExistsText={0}\u306E\u540D\u524D\u3092\u5909\u66F4\u3067\u304D\u307E\u305B\u3093: \u6307\u5B9A\u3057\u305F\u540D\u524D\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059\u3002\u5225\u306E\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002 
+FileChooser.renameErrorFileExistsText={0}\u306E\u540D\u524D\u3092\u5909\u66F4\u3067\u304D\u307E\u305B\u3093: \u6307\u5B9A\u3057\u305F\u540D\u524D\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\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
+FileChooser.cancelButtonText=\u53D6\u6D88(C)
 FileChooser.cancelButtonMnemonic=67
-FileChooser.saveButtonText=\u4FDD\u5B58
+FileChooser.saveButtonText=\u4FDD\u5B58(S)
 FileChooser.saveButtonMnemonic=83
-FileChooser.openButtonText=\u958B\u304F
+FileChooser.openButtonText=\u958B\u304F(O)
 FileChooser.openButtonMnemonic=79
 FileChooser.saveDialogTitleText=\u4FDD\u5B58
 FileChooser.openDialogTitleText=\u958B\u304F
-FileChooser.updateButtonText=\u66F4\u65B0
+FileChooser.updateButtonText=\u66F4\u65B0(U)
 FileChooser.updateButtonMnemonic=85
-FileChooser.helpButtonText=\u30D8\u30EB\u30D7
+FileChooser.helpButtonText=\u30D8\u30EB\u30D7(H)
 FileChooser.helpButtonMnemonic=72
-FileChooser.directoryOpenButtonText=\u958B\u304F
+FileChooser.directoryOpenButtonText=\u958B\u304F(O)
 FileChooser.directoryOpenButtonMnemonic=79
 
 # File Size Units
@@ -94,39 +94,39 @@
 ColorChooser.previewText=\u30D7\u30EC\u30D3\u30E5\u30FC
 ColorChooser.okText=OK
 ColorChooser.cancelText=\u53D6\u6D88
-ColorChooser.resetText=\u30EA\u30BB\u30C3\u30C8
+ColorChooser.resetText=\u30EA\u30BB\u30C3\u30C8(R)
 # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic
 ColorChooser.resetMnemonic=82
 ColorChooser.sampleText=\u30B5\u30F3\u30D7\u30EB\u30FB\u30C6\u30AD\u30B9\u30C8  \u30B5\u30F3\u30D7\u30EB\u30FB\u30C6\u30AD\u30B9\u30C8
-ColorChooser.swatchesNameText=\u30B5\u30F3\u30D7\u30EB
+ColorChooser.swatchesNameText=\u30B5\u30F3\u30D7\u30EB(S)
 ColorChooser.swatchesMnemonic=83
 ColorChooser.swatchesRecentText=\u6700\u65B0:
 # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX
 # 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=HSV(H)
 ColorChooser.hsvMnemonic=72
 ColorChooser.hsvHueText=\u8272\u76F8
 ColorChooser.hsvSaturationText=\u5F69\u5EA6
 ColorChooser.hsvValueText=\u5024
 ColorChooser.hsvTransparencyText=\u900F\u660E\u5EA6
-ColorChooser.hslNameText=HSL
+ColorChooser.hslNameText=HSL(L)
 ColorChooser.hslMnemonic=76
 ColorChooser.hslHueText=\u8272\u76F8
 ColorChooser.hslSaturationText=\u5F69\u5EA6
 ColorChooser.hslLightnessText=\u660E\u5EA6
 ColorChooser.hslTransparencyText=\u900F\u660E\u5EA6
-ColorChooser.rgbNameText=RGB
+ColorChooser.rgbNameText=RGB(G)
 ColorChooser.rgbMnemonic=71
-ColorChooser.rgbRedText=\u8D64
+ColorChooser.rgbRedText=\u8D64(D)
 ColorChooser.rgbRedMnemonic=68
-ColorChooser.rgbGreenText=\u7DD1
+ColorChooser.rgbGreenText=\u7DD1(N)
 ColorChooser.rgbGreenMnemonic=78
-ColorChooser.rgbBlueText=\u9752
+ColorChooser.rgbBlueText=\u9752(B)
 ColorChooser.rgbBlueMnemonic=66
 ColorChooser.rgbAlphaText=\u30A2\u30EB\u30D5\u30A1
-ColorChooser.rgbHexCodeText=\u8272\u30B3\u30FC\u30C9
+ColorChooser.rgbHexCodeText=\u8272\u30B3\u30FC\u30C9(C)
 ColorChooser.rgbHexCodeMnemonic=67
 ColorChooser.cmykNameText=CMYK
 ColorChooser.cmykMnemonic=77
@@ -140,13 +140,13 @@
 # Mnemonic keys correspond to KeyEvent.VK_XXX constant
 # We only define mnemonics for YES/NO, but for completeness you can
 # define mnemonics for any of the buttons.
-OptionPane.yesButtonText=\u306F\u3044
+OptionPane.yesButtonText=\u306F\u3044(Y)
 OptionPane.yesButtonMnemonic=89
-OptionPane.noButtonText=\u3044\u3044\u3048
+OptionPane.noButtonText=\u3044\u3044\u3048(N)
 OptionPane.noButtonMnemonic=78
-OptionPane.okButtonText=OK
+OptionPane.okButtonText=OK(0)
 OptionPane.okButtonMnemonic=0
-OptionPane.cancelButtonText=\u53D6\u6D88
+OptionPane.cancelButtonText=\u53D6\u6D88(0)
 OptionPane.cancelButtonMnemonic=0
 OptionPane.titleText=\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u9078\u629E
 # Title for the dialog for the showInputDialog methods. Only used if
@@ -168,7 +168,7 @@
 
 PrintingDialog.contentAbortingText=\u5370\u5237\u3092\u4E2D\u6B62\u3057\u3066\u3044\u307E\u3059...
 
-PrintingDialog.abortButtonText=\u4E2D\u6B62
+PrintingDialog.abortButtonText=\u4E2D\u6B62(A)
 PrintingDialog.abortButtonMnemonic=65
 PrintingDialog.abortButtonDisplayedMnemonicIndex=0
 PrintingDialog.abortButtonToolTipText=\u5370\u5237\u306E\u4E2D\u6B62
@@ -223,3 +223,4 @@
 InternalFrameTitlePane.iconifyButtonAccessibleName=\u30A2\u30A4\u30B3\u30F3\u5316
 InternalFrameTitlePane.maximizeButtonAccessibleName=\u6700\u5927\u5316
 InternalFrameTitlePane.closeButtonAccessibleName=\u9589\u3058\u308B
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -6,10 +6,10 @@
 #    FileChooser
 #    OptionPane
 #
-# When this file is read in, the strings are put into the 
+# When this file is read in, the strings are put into the
 # defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.  
-# This may change in future versions of Swing as we improve localization 
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
 # support.
 #
 #                        MNEMONIC NOTE:
@@ -41,33 +41,33 @@
 # the String, if it does not exist you should add text that makes it
 # exist. This will typically take the form 'XXXX (M)' where M is the
 # character for the mnemonic.
-# 
+#
 # @author Steve Wilson
 
 ############ FILE CHOOSER STRINGS #############
 FileChooser.fileDescriptionText=\uC77C\uBC18 \uD30C\uC77C
 FileChooser.directoryDescriptionText=\uB514\uB809\uD1A0\uB9AC
 FileChooser.newFolderErrorText=\uC0C8 \uD3F4\uB354\uB97C \uC0DD\uC131\uD558\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
-FileChooser.newFolderErrorSeparator= : 
+FileChooser.newFolderErrorSeparator= :
 FileChooser.newFolderParentDoesntExistTitleText=\uD3F4\uB354\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC74C
 FileChooser.newFolderParentDoesntExistText=\uD3F4\uB354\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.\n\n\uC2DC\uC2A4\uD15C\uC5D0\uC11C \uC9C0\uC815\uB41C \uACBD\uB85C\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
 FileChooser.renameErrorTitleText=\uD30C\uC77C \uB610\uB294 \uD3F4\uB354 \uC774\uB984 \uBC14\uAFB8\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD
 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\uC74C: \uC9C0\uC815\uD55C \uC774\uB984\uC744 \uC0AC\uC6A9\uD558\uB294 \uD30C\uC77C\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4. \uB2E4\uB978 \uD30C\uC77C \uC774\uB984\uC744 \uC9C0\uC815\uD558\uC2ED\uC2DC\uC624. 
+FileChooser.renameErrorFileExistsText={0}\uC758 \uC774\uB984\uC744 \uBC14\uAFC0 \uC218 \uC5C6\uC74C: \uC9C0\uC815\uD55C \uC774\uB984\uC744 \uC0AC\uC6A9\uD558\uB294 \uD30C\uC77C\uC774 \uC874\uC7AC\uD569\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.cancelButtonText=\uCDE8\uC18C(C)
 FileChooser.cancelButtonMnemonic=67
-FileChooser.saveButtonText=\uC800\uC7A5
+FileChooser.saveButtonText=\uC800\uC7A5(S)
 FileChooser.saveButtonMnemonic=83
-FileChooser.openButtonText=\uC5F4\uAE30
+FileChooser.openButtonText=\uC5F4\uAE30(O)
 FileChooser.openButtonMnemonic=79
 FileChooser.saveDialogTitleText=\uC800\uC7A5
 FileChooser.openDialogTitleText=\uC5F4\uAE30
-FileChooser.updateButtonText=\uAC31\uC2E0
+FileChooser.updateButtonText=\uAC31\uC2E0(U)
 FileChooser.updateButtonMnemonic=85
-FileChooser.helpButtonText=\uB3C4\uC6C0\uB9D0
+FileChooser.helpButtonText=\uB3C4\uC6C0\uB9D0(H)
 FileChooser.helpButtonMnemonic=72
-FileChooser.directoryOpenButtonText=\uC5F4\uAE30
+FileChooser.directoryOpenButtonText=\uC5F4\uAE30(O)
 FileChooser.directoryOpenButtonMnemonic=79
 
 # File Size Units
@@ -94,39 +94,39 @@
 ColorChooser.previewText=\uBBF8\uB9AC\uBCF4\uAE30
 ColorChooser.okText=\uD655\uC778
 ColorChooser.cancelText=\uCDE8\uC18C
-ColorChooser.resetText=\uC7AC\uC124\uC815
+ColorChooser.resetText=\uC7AC\uC124\uC815(R)
 # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic
 ColorChooser.resetMnemonic=82
 ColorChooser.sampleText=\uC0D8\uD50C \uD14D\uC2A4\uD2B8  \uC0D8\uD50C \uD14D\uC2A4\uD2B8
-ColorChooser.swatchesNameText=\uACAC\uBCF8
+ColorChooser.swatchesNameText=\uACAC\uBCF8(S)
 ColorChooser.swatchesMnemonic=83
 ColorChooser.swatchesRecentText=\uCD5C\uADFC \uBAA9\uB85D:
 # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX
 # 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=HSV(H)
 ColorChooser.hsvMnemonic=72
 ColorChooser.hsvHueText=\uC0C9\uC870
 ColorChooser.hsvSaturationText=\uCC44\uB3C4
 ColorChooser.hsvValueText=\uAC12
 ColorChooser.hsvTransparencyText=\uD22C\uBA85
-ColorChooser.hslNameText=HSL
+ColorChooser.hslNameText=HSL(L)
 ColorChooser.hslMnemonic=76
 ColorChooser.hslHueText=\uC0C9\uC870
 ColorChooser.hslSaturationText=\uCC44\uB3C4
 ColorChooser.hslLightnessText=\uBC1D\uAE30
 ColorChooser.hslTransparencyText=\uD22C\uBA85
-ColorChooser.rgbNameText=RGB
+ColorChooser.rgbNameText=RGB(G)
 ColorChooser.rgbMnemonic=71
-ColorChooser.rgbRedText=\uBE68\uAC04\uC0C9
+ColorChooser.rgbRedText=\uBE68\uAC04\uC0C9(D)
 ColorChooser.rgbRedMnemonic=68
-ColorChooser.rgbGreenText=\uB179\uC0C9
+ColorChooser.rgbGreenText=\uB179\uC0C9(N)
 ColorChooser.rgbGreenMnemonic=78
-ColorChooser.rgbBlueText=\uD30C\uB780\uC0C9
+ColorChooser.rgbBlueText=\uD30C\uB780\uC0C9(B)
 ColorChooser.rgbBlueMnemonic=66
 ColorChooser.rgbAlphaText=\uC54C\uD30C
-ColorChooser.rgbHexCodeText=\uC0C9\uC0C1 \uCF54\uB4DC
+ColorChooser.rgbHexCodeText=\uC0C9\uC0C1 \uCF54\uB4DC(C)
 ColorChooser.rgbHexCodeMnemonic=67
 ColorChooser.cmykNameText=CMYK
 ColorChooser.cmykMnemonic=77
@@ -140,13 +140,13 @@
 # Mnemonic keys correspond to KeyEvent.VK_XXX constant
 # We only define mnemonics for YES/NO, but for completeness you can
 # define mnemonics for any of the buttons.
-OptionPane.yesButtonText=\uC608
+OptionPane.yesButtonText=\uC608(Y)
 OptionPane.yesButtonMnemonic=89
-OptionPane.noButtonText=\uC544\uB2C8\uC624
+OptionPane.noButtonText=\uC544\uB2C8\uC624(N)
 OptionPane.noButtonMnemonic=78
-OptionPane.okButtonText=\uD655\uC778
+OptionPane.okButtonText=OK(0)
 OptionPane.okButtonMnemonic=0
-OptionPane.cancelButtonText=\uCDE8\uC18C
+OptionPane.cancelButtonText=\uCDE8\uC18C(0)
 OptionPane.cancelButtonMnemonic=0
 OptionPane.titleText=\uC635\uC158 \uC120\uD0DD
 # Title for the dialog for the showInputDialog methods. Only used if
@@ -168,7 +168,7 @@
 
 PrintingDialog.contentAbortingText=\uC778\uC1C4 \uC911\uB2E8 \uC911...
 
-PrintingDialog.abortButtonText=\uC911\uB2E8
+PrintingDialog.abortButtonText=\uC911\uB2E8(A)
 PrintingDialog.abortButtonMnemonic=65
 PrintingDialog.abortButtonDisplayedMnemonicIndex=0
 PrintingDialog.abortButtonToolTipText=\uC778\uC1C4 \uC911\uB2E8
@@ -223,3 +223,4 @@
 InternalFrameTitlePane.iconifyButtonAccessibleName=\uC544\uC774\uCF58\uD654
 InternalFrameTitlePane.maximizeButtonAccessibleName=\uCD5C\uB300\uD654
 InternalFrameTitlePane.closeButtonAccessibleName=\uB2EB\uAE30
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_pt_BR.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_pt_BR.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -6,10 +6,10 @@
 #    FileChooser
 #    OptionPane
 #
-# When this file is read in, the strings are put into the 
+# When this file is read in, the strings are put into the
 # defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.  
-# This may change in future versions of Swing as we improve localization 
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
 # support.
 #
 #                        MNEMONIC NOTE:
@@ -41,34 +41,34 @@
 # the String, if it does not exist you should add text that makes it
 # exist. This will typically take the form 'XXXX (M)' where M is the
 # character for the mnemonic.
-# 
+#
 # @author Steve Wilson
 
 ############ FILE CHOOSER STRINGS #############
 FileChooser.fileDescriptionText=Arquivo Gen\u00E9rico
 FileChooser.directoryDescriptionText=Diret\u00F3rio
 FileChooser.newFolderErrorText=Erro ao criar nova pasta
-FileChooser.newFolderErrorSeparator= : 
+FileChooser.newFolderErrorSeparator= :
 FileChooser.newFolderParentDoesntExistTitleText=N\u00E3o \u00E9 poss\u00EDvel criar a pasta
 FileChooser.newFolderParentDoesntExistText=N\u00E3o \u00E9 poss\u00EDvel criar a pasta.\n\nO sistema n\u00E3o pode localizar o caminho especificado.
 FileChooser.renameErrorTitleText=Erro ao Renomear o Arquivo ou a Pasta
 FileChooser.renameErrorText=N\u00E3o \u00E9 poss\u00EDvel renomear {0}
-FileChooser.renameErrorFileExistsText=N\u00E3o \u00E9 poss\u00EDvel renomear {0}: Um arquivo com o nome especificado j\u00E1 existe. Especifique outro nome de arquivo. 
+FileChooser.renameErrorFileExistsText=N\u00E3o \u00E9 poss\u00EDvel renomear {0}: Um arquivo com o nome especificado j\u00E1 existe. Especifique outro nome de arquivo.
 FileChooser.acceptAllFileFilterText=Todos os Arquivos
 FileChooser.cancelButtonText=Cancelar
 FileChooser.cancelButtonMnemonic=67
 FileChooser.saveButtonText=Salvar
 FileChooser.saveButtonMnemonic=83
 FileChooser.openButtonText=Abrir
-FileChooser.openButtonMnemonic=79
+FileChooser.openButtonMnemonic=66
 FileChooser.saveDialogTitleText=Salvar
 FileChooser.openDialogTitleText=Abrir
 FileChooser.updateButtonText=Atualizar
 FileChooser.updateButtonMnemonic=85
 FileChooser.helpButtonText=Ajuda
-FileChooser.helpButtonMnemonic=72
+FileChooser.helpButtonMnemonic=85
 FileChooser.directoryOpenButtonText=Abrir
-FileChooser.directoryOpenButtonMnemonic=79
+FileChooser.directoryOpenButtonMnemonic=66
 
 # File Size Units
 FileChooser.fileSizeKiloBytes={0} KB
@@ -120,11 +120,11 @@
 ColorChooser.rgbNameText=RGB
 ColorChooser.rgbMnemonic=71
 ColorChooser.rgbRedText=Vermelho
-ColorChooser.rgbRedMnemonic=68
+ColorChooser.rgbRedMnemonic=86
 ColorChooser.rgbGreenText=Verde
-ColorChooser.rgbGreenMnemonic=78
+ColorChooser.rgbGreenMnemonic=86
 ColorChooser.rgbBlueText=Azul
-ColorChooser.rgbBlueMnemonic=66
+ColorChooser.rgbBlueMnemonic=65
 ColorChooser.rgbAlphaText=Alfa
 ColorChooser.rgbHexCodeText=C\u00F3digo da Cor
 ColorChooser.rgbHexCodeMnemonic=67
@@ -141,12 +141,12 @@
 # We only define mnemonics for YES/NO, but for completeness you can
 # define mnemonics for any of the buttons.
 OptionPane.yesButtonText=Sim
-OptionPane.yesButtonMnemonic=89
+OptionPane.yesButtonMnemonic=83
 OptionPane.noButtonText=N\u00E3o
 OptionPane.noButtonMnemonic=78
-OptionPane.okButtonText=OK
+OptionPane.okButtonText=OK(0)
 OptionPane.okButtonMnemonic=0
-OptionPane.cancelButtonText=Cancelar
+OptionPane.cancelButtonText=Cancelar(0)
 OptionPane.cancelButtonMnemonic=0
 OptionPane.titleText=Selecionar uma Op\u00E7\u00E3o
 # Title for the dialog for the showInputDialog methods. Only used if
@@ -223,3 +223,4 @@
 InternalFrameTitlePane.iconifyButtonAccessibleName=Iconify
 InternalFrameTitlePane.maximizeButtonAccessibleName=Maximizar
 InternalFrameTitlePane.closeButtonAccessibleName=Fechar
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -6,10 +6,10 @@
 #    FileChooser
 #    OptionPane
 #
-# When this file is read in, the strings are put into the 
+# When this file is read in, the strings are put into the
 # defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.  
-# This may change in future versions of Swing as we improve localization 
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
 # support.
 #
 #                        MNEMONIC NOTE:
@@ -41,34 +41,34 @@
 # the String, if it does not exist you should add text that makes it
 # exist. This will typically take the form 'XXXX (M)' where M is the
 # character for the mnemonic.
-# 
+#
 # @author Steve Wilson
 
 ############ FILE CHOOSER STRINGS #############
 FileChooser.fileDescriptionText=Generisk fil
 FileChooser.directoryDescriptionText=Katalog
 FileChooser.newFolderErrorText=Fel uppstod n\u00E4r ny mapp skapades
-FileChooser.newFolderErrorSeparator= : 
+FileChooser.newFolderErrorSeparator= :
 FileChooser.newFolderParentDoesntExistTitleText=Kan inte skapa mappen
 FileChooser.newFolderParentDoesntExistText=Kan inte skapa mappen.\n\nSystemet kan inte hitta angiven s\u00F6kv\u00E4g.
 FileChooser.renameErrorTitleText=Ett fel intr\u00E4ffade vid f\u00F6rs\u00F6k att \u00E4ndra namn p\u00E5 fil eller mapp
 FileChooser.renameErrorText=Kan inte namn\u00E4ndra {0}
-FileChooser.renameErrorFileExistsText=Kan inte namn\u00E4ndra {0}: En fil med angivet namn finns redan. Ange ett annat filnamn. 
+FileChooser.renameErrorFileExistsText=Kan inte namn\u00E4ndra {0}: En fil med angivet namn finns redan. Ange ett annat filnamn.
 FileChooser.acceptAllFileFilterText=Alla filer
 FileChooser.cancelButtonText=Avbryt
-FileChooser.cancelButtonMnemonic=67
+FileChooser.cancelButtonMnemonic=65
 FileChooser.saveButtonText=Spara
 FileChooser.saveButtonMnemonic=83
 FileChooser.openButtonText=\u00D6ppna
-FileChooser.openButtonMnemonic=79
+FileChooser.openButtonMnemonic=80
 FileChooser.saveDialogTitleText=Spara
 FileChooser.openDialogTitleText=\u00D6ppna
 FileChooser.updateButtonText=Uppdatera
-FileChooser.updateButtonMnemonic=85
+FileChooser.updateButtonMnemonic=68
 FileChooser.helpButtonText=Hj\u00E4lp
 FileChooser.helpButtonMnemonic=72
 FileChooser.directoryOpenButtonText=\u00D6ppna
-FileChooser.directoryOpenButtonMnemonic=79
+FileChooser.directoryOpenButtonMnemonic=80
 
 # File Size Units
 FileChooser.fileSizeKiloBytes={0} KB
@@ -99,7 +99,7 @@
 ColorChooser.resetMnemonic=82
 ColorChooser.sampleText=Exempeltext  Exempeltext
 ColorChooser.swatchesNameText=Prov
-ColorChooser.swatchesMnemonic=83
+ColorChooser.swatchesMnemonic=80
 ColorChooser.swatchesRecentText=Senaste:
 # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX
 # constant, and an index into the text to render the mnemonic as. The
@@ -127,7 +127,7 @@
 ColorChooser.rgbBlueMnemonic=66
 ColorChooser.rgbAlphaText=Alfa
 ColorChooser.rgbHexCodeText=F\u00E4rgkod
-ColorChooser.rgbHexCodeMnemonic=67
+ColorChooser.rgbHexCodeMnemonic=70
 ColorChooser.cmykNameText=CMYK
 ColorChooser.cmykMnemonic=77
 ColorChooser.cmykCyanText=Cyan
@@ -141,13 +141,13 @@
 # We only define mnemonics for YES/NO, but for completeness you can
 # define mnemonics for any of the buttons.
 OptionPane.yesButtonText=Ja
-OptionPane.yesButtonMnemonic=89
+OptionPane.yesButtonMnemonic=74
 OptionPane.noButtonText=Nej
 OptionPane.noButtonMnemonic=78
 OptionPane.okButtonText=OK
-OptionPane.okButtonMnemonic=0
+OptionPane.okButtonMnemonic=O
 OptionPane.cancelButtonText=Avbryt
-OptionPane.cancelButtonMnemonic=0
+OptionPane.cancelButtonMnemonic=A
 OptionPane.titleText=V\u00E4lj ett alternativ
 # Title for the dialog for the showInputDialog methods. Only used if
 # the developer uses one of the variants that doesn't take a title.
@@ -223,3 +223,4 @@
 InternalFrameTitlePane.iconifyButtonAccessibleName=Minimera
 InternalFrameTitlePane.maximizeButtonAccessibleName=Maximera
 InternalFrameTitlePane.closeButtonAccessibleName=St\u00E4ng
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_CN.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_CN.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -6,10 +6,10 @@
 #    FileChooser
 #    OptionPane
 #
-# When this file is read in, the strings are put into the 
+# When this file is read in, the strings are put into the
 # defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.  
-# This may change in future versions of Swing as we improve localization 
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
 # support.
 #
 #                        MNEMONIC NOTE:
@@ -41,33 +41,33 @@
 # the String, if it does not exist you should add text that makes it
 # exist. This will typically take the form 'XXXX (M)' where M is the
 # character for the mnemonic.
-# 
+#
 # @author Steve Wilson
 
 ############ FILE CHOOSER STRINGS #############
 FileChooser.fileDescriptionText=\u666E\u901A\u7684\u6587\u4EF6
 FileChooser.directoryDescriptionText=\u76EE\u5F55
 FileChooser.newFolderErrorText=\u521B\u5EFA\u65B0\u7684\u6587\u4EF6\u5939\u65F6\u51FA\u9519
-FileChooser.newFolderErrorSeparator= : 
+FileChooser.newFolderErrorSeparator= :
 FileChooser.newFolderParentDoesntExistTitleText=\u65E0\u6CD5\u521B\u5EFA\u6587\u4EF6\u5939
 FileChooser.newFolderParentDoesntExistText=\u65E0\u6CD5\u521B\u5EFA\u6587\u4EF6\u5939\u3002\n\n\u7CFB\u7EDF\u627E\u4E0D\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}: \u5DF2\u5B58\u5728\u5177\u6709\u6240\u6307\u5B9A\u540D\u79F0\u7684\u6587\u4EF6\u3002\u8BF7\u6307\u5B9A\u5176\u4ED6\u6587\u4EF6\u540D\u3002
 FileChooser.acceptAllFileFilterText=\u6240\u6709\u6587\u4EF6
-FileChooser.cancelButtonText=\u53D6\u6D88
+FileChooser.cancelButtonText=\u53D6\u6D88(C)
 FileChooser.cancelButtonMnemonic=67
-FileChooser.saveButtonText=\u4FDD\u5B58
+FileChooser.saveButtonText=\u4FDD\u5B58(S)
 FileChooser.saveButtonMnemonic=83
-FileChooser.openButtonText=\u6253\u5F00
+FileChooser.openButtonText=\u6253\u5F00(O)
 FileChooser.openButtonMnemonic=79
 FileChooser.saveDialogTitleText=\u4FDD\u5B58
 FileChooser.openDialogTitleText=\u6253\u5F00
-FileChooser.updateButtonText=\u66F4\u65B0
+FileChooser.updateButtonText=\u66F4\u65B0(U)
 FileChooser.updateButtonMnemonic=85
-FileChooser.helpButtonText=\u5E2E\u52A9
+FileChooser.helpButtonText=\u5E2E\u52A9(H)
 FileChooser.helpButtonMnemonic=72
-FileChooser.directoryOpenButtonText=\u6253\u5F00
+FileChooser.directoryOpenButtonText=\u6253\u5F00(O)
 FileChooser.directoryOpenButtonMnemonic=79
 
 # File Size Units
@@ -94,39 +94,39 @@
 ColorChooser.previewText=\u9884\u89C8
 ColorChooser.okText=\u786E\u5B9A
 ColorChooser.cancelText=\u53D6\u6D88
-ColorChooser.resetText=\u91CD\u8BBE
+ColorChooser.resetText=\u91CD\u7F6E(R)
 # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic
 ColorChooser.resetMnemonic=82
 ColorChooser.sampleText=\u793A\u4F8B\u6587\u672C  \u793A\u4F8B\u6587\u672C
-ColorChooser.swatchesNameText=\u793A\u4F8B
+ColorChooser.swatchesNameText=\u793A\u4F8B(S)
 ColorChooser.swatchesMnemonic=83
 ColorChooser.swatchesRecentText=\u6700\u8FD1:
 # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX
 # 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=HSV(H)
 ColorChooser.hsvMnemonic=72
 ColorChooser.hsvHueText=\u8272\u8C03
 ColorChooser.hsvSaturationText=\u9971\u548C\u5EA6
 ColorChooser.hsvValueText=\u503C
 ColorChooser.hsvTransparencyText=\u900F\u660E\u5EA6
-ColorChooser.hslNameText=HSL
+ColorChooser.hslNameText=HSL(L)
 ColorChooser.hslMnemonic=76
 ColorChooser.hslHueText=\u8272\u8C03
 ColorChooser.hslSaturationText=\u9971\u548C\u5EA6
 ColorChooser.hslLightnessText=\u4EAE\u5EA6
 ColorChooser.hslTransparencyText=\u900F\u660E\u5EA6
-ColorChooser.rgbNameText=RGB
+ColorChooser.rgbNameText=RGB(G)
 ColorChooser.rgbMnemonic=71
-ColorChooser.rgbRedText=\u7EA2
+ColorChooser.rgbRedText=\u7EA2\u8272(D)
 ColorChooser.rgbRedMnemonic=68
-ColorChooser.rgbGreenText=\u7EFF
+ColorChooser.rgbGreenText=\u7EFF\u8272(N)
 ColorChooser.rgbGreenMnemonic=78
-ColorChooser.rgbBlueText=\u84DD
+ColorChooser.rgbBlueText=\u84DD\u8272(B)
 ColorChooser.rgbBlueMnemonic=66
 ColorChooser.rgbAlphaText=Alpha
-ColorChooser.rgbHexCodeText=\u989C\u8272\u4EE3\u7801
+ColorChooser.rgbHexCodeText=\u989C\u8272\u4EE3\u7801(C)
 ColorChooser.rgbHexCodeMnemonic=67
 ColorChooser.cmykNameText=CMYK
 ColorChooser.cmykMnemonic=77
@@ -140,13 +140,13 @@
 # Mnemonic keys correspond to KeyEvent.VK_XXX constant
 # We only define mnemonics for YES/NO, but for completeness you can
 # define mnemonics for any of the buttons.
-OptionPane.yesButtonText=\u662F
+OptionPane.yesButtonText=\u662F(Y)
 OptionPane.yesButtonMnemonic=89
-OptionPane.noButtonText=\u5426
+OptionPane.noButtonText=\u5426(N)
 OptionPane.noButtonMnemonic=78
-OptionPane.okButtonText=\u786E\u5B9A
+OptionPane.okButtonText=OK(0)
 OptionPane.okButtonMnemonic=0
-OptionPane.cancelButtonText=\u53D6\u6D88
+OptionPane.cancelButtonText=\u53D6\u6D88(0)
 OptionPane.cancelButtonMnemonic=0
 OptionPane.titleText=\u9009\u62E9\u4E00\u4E2A\u9009\u9879
 # Title for the dialog for the showInputDialog methods. Only used if
@@ -168,7 +168,7 @@
 
 PrintingDialog.contentAbortingText=\u6B63\u5728\u4E2D\u6B62\u6253\u5370...
 
-PrintingDialog.abortButtonText=\u4E2D\u6B62
+PrintingDialog.abortButtonText=\u4E2D\u6B62(A)
 PrintingDialog.abortButtonMnemonic=65
 PrintingDialog.abortButtonDisplayedMnemonicIndex=0
 PrintingDialog.abortButtonToolTipText=\u4E2D\u6B62\u6253\u5370
@@ -217,9 +217,10 @@
 SplitPane.leftButtonText=\u5DE6\u952E
 SplitPane.rightButtonText=\u53F3\u952E
 # Used for Isindex
-IsindexView.prompt=\u8FD9\u662F\u53EF\u641C\u7D22\u7D22\u5F15\u3002\u8BF7\u8F93\u5165\u641C\u7D22\u5173\u952E\u5B57: 
+IsindexView.prompt=\u8FD9\u662F\u53EF\u641C\u7D22\u7D22\u5F15\u3002\u8BF7\u8F93\u5165\u641C\u7D22\u5173\u952E\u5B57:
 
 ############ InternalFrameTitlePane Strings ############
 InternalFrameTitlePane.iconifyButtonAccessibleName=\u56FE\u6807\u5316
 InternalFrameTitlePane.maximizeButtonAccessibleName=\u6700\u5927\u5316
 InternalFrameTitlePane.closeButtonAccessibleName=\u5173\u95ED
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -6,10 +6,10 @@
 #    FileChooser
 #    OptionPane
 #
-# When this file is read in, the strings are put into the 
+# When this file is read in, the strings are put into the
 # defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.  
-# This may change in future versions of Swing as we improve localization 
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
 # support.
 #
 #                        MNEMONIC NOTE:
@@ -41,33 +41,33 @@
 # the String, if it does not exist you should add text that makes it
 # exist. This will typically take the form 'XXXX (M)' where M is the
 # character for the mnemonic.
-# 
+#
 # @author Steve Wilson
 
 ############ FILE CHOOSER STRINGS #############
 FileChooser.fileDescriptionText=\u4E00\u822C\u6A94\u6848
 FileChooser.directoryDescriptionText=\u76EE\u9304
 FileChooser.newFolderErrorText=\u5EFA\u7ACB\u65B0\u8CC7\u6599\u593E\u6642\u767C\u751F\u932F\u8AA4
-FileChooser.newFolderErrorSeparator= : 
+FileChooser.newFolderErrorSeparator= :
 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\u6307\u5B9A\u7684\u8DEF\u5F91\u3002
 FileChooser.renameErrorTitleText=\u91CD\u65B0\u547D\u540D\u6A94\u6848\u6216\u8CC7\u6599\u593E\u6642\u767C\u751F\u932F\u8AA4\u3002
 FileChooser.renameErrorText=\u7121\u6CD5\u91CD\u65B0\u547D\u540D {0}
 FileChooser.renameErrorFileExistsText=\u7121\u6CD5\u91CD\u65B0\u547D\u540D {0}: \u5DF2\u7D93\u5B58\u5728\u60A8\u6240\u6307\u5B9A\u540D\u7A31\u7684\u6A94\u6848\u3002\u8ACB\u6307\u5B9A\u4E0D\u540C\u7684\u540D\u7A31\u3002
 FileChooser.acceptAllFileFilterText=\u6240\u6709\u6A94\u6848
-FileChooser.cancelButtonText=\u53D6\u6D88
+FileChooser.cancelButtonText=\u53D6\u6D88(C)
 FileChooser.cancelButtonMnemonic=67
-FileChooser.saveButtonText=\u5132\u5B58
+FileChooser.saveButtonText=\u5132\u5B58(S)
 FileChooser.saveButtonMnemonic=83
-FileChooser.openButtonText=\u958B\u555F
+FileChooser.openButtonText=\u958B\u555F(O)
 FileChooser.openButtonMnemonic=79
 FileChooser.saveDialogTitleText=\u5132\u5B58
 FileChooser.openDialogTitleText=\u958B\u555F
-FileChooser.updateButtonText=\u66F4\u65B0
+FileChooser.updateButtonText=\u66F4\u65B0(U)
 FileChooser.updateButtonMnemonic=85
-FileChooser.helpButtonText=\u8AAA\u660E
+FileChooser.helpButtonText=\u8AAA\u660E(H)
 FileChooser.helpButtonMnemonic=72
-FileChooser.directoryOpenButtonText=\u958B\u555F
+FileChooser.directoryOpenButtonText=\u958B\u555F(O)
 FileChooser.directoryOpenButtonMnemonic=79
 
 # File Size Units
@@ -94,39 +94,39 @@
 ColorChooser.previewText=\u9810\u89BD
 ColorChooser.okText=\u78BA\u5B9A
 ColorChooser.cancelText=\u53D6\u6D88
-ColorChooser.resetText=\u91CD\u8A2D
+ColorChooser.resetText=\u91CD\u8A2D(R)
 # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic
 ColorChooser.resetMnemonic=82
 ColorChooser.sampleText=\u7BC4\u4F8B\u6587\u5B57  \u7BC4\u4F8B\u6587\u5B57
-ColorChooser.swatchesNameText=\u8ABF\u8272\u677F
+ColorChooser.swatchesNameText=\u8ABF\u8272\u677F(S)
 ColorChooser.swatchesMnemonic=83
 ColorChooser.swatchesRecentText=\u6700\u65B0\u9078\u64C7:
 # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX
 # 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=HSV(H)
 ColorChooser.hsvMnemonic=72
 ColorChooser.hsvHueText=\u8272\u8ABF
 ColorChooser.hsvSaturationText=\u5F69\u5EA6
 ColorChooser.hsvValueText=\u6578\u503C
 ColorChooser.hsvTransparencyText=\u900F\u660E\u5EA6
-ColorChooser.hslNameText=HSL
+ColorChooser.hslNameText=HSL(L)
 ColorChooser.hslMnemonic=76
 ColorChooser.hslHueText=\u8272\u8ABF
 ColorChooser.hslSaturationText=\u5F69\u5EA6
 ColorChooser.hslLightnessText=\u4EAE\u5EA6
 ColorChooser.hslTransparencyText=\u900F\u660E\u5EA6
-ColorChooser.rgbNameText=RGB
+ColorChooser.rgbNameText=RGB(G)
 ColorChooser.rgbMnemonic=71
-ColorChooser.rgbRedText=\u7D05\u8272
+ColorChooser.rgbRedText=\u7D05(D)
 ColorChooser.rgbRedMnemonic=68
-ColorChooser.rgbGreenText=\u7DA0\u8272
+ColorChooser.rgbGreenText=\u7DA0(N)
 ColorChooser.rgbGreenMnemonic=78
-ColorChooser.rgbBlueText=\u85CD\u8272
+ColorChooser.rgbBlueText=\u85CD(B)
 ColorChooser.rgbBlueMnemonic=66
 ColorChooser.rgbAlphaText=Alpha
-ColorChooser.rgbHexCodeText=\u984F\u8272\u4EE3\u78BC
+ColorChooser.rgbHexCodeText=\u984F\u8272\u4EE3\u78BC(C)
 ColorChooser.rgbHexCodeMnemonic=67
 ColorChooser.cmykNameText=CMYK
 ColorChooser.cmykMnemonic=77
@@ -140,13 +140,13 @@
 # Mnemonic keys correspond to KeyEvent.VK_XXX constant
 # We only define mnemonics for YES/NO, but for completeness you can
 # define mnemonics for any of the buttons.
-OptionPane.yesButtonText=\u662F
+OptionPane.yesButtonText=\u662F(Y)
 OptionPane.yesButtonMnemonic=89
-OptionPane.noButtonText=\u5426
+OptionPane.noButtonText=\u5426(N)
 OptionPane.noButtonMnemonic=78
-OptionPane.okButtonText=\u78BA\u5B9A
+OptionPane.okButtonText=OK(0)
 OptionPane.okButtonMnemonic=0
-OptionPane.cancelButtonText=\u53D6\u6D88
+OptionPane.cancelButtonText=\u53D6\u6D88(0)
 OptionPane.cancelButtonMnemonic=0
 OptionPane.titleText=\u9078\u53D6\u4E00\u500B\u9078\u9805
 # Title for the dialog for the showInputDialog methods. Only used if
@@ -168,7 +168,7 @@
 
 PrintingDialog.contentAbortingText=\u6B63\u5728\u4E2D\u6B62\u5217\u5370...
 
-PrintingDialog.abortButtonText=\u4E2D\u6B62
+PrintingDialog.abortButtonText=\u4E2D\u6B62(A)
 PrintingDialog.abortButtonMnemonic=65
 PrintingDialog.abortButtonDisplayedMnemonicIndex=0
 PrintingDialog.abortButtonToolTipText=\u4E2D\u6B62\u5217\u5370
@@ -217,9 +217,10 @@
 SplitPane.leftButtonText=\u5DE6\u6309\u9215
 SplitPane.rightButtonText=\u53F3\u6309\u9215
 # Used for Isindex
-IsindexView.prompt=\u9019\u662F\u4E00\u500B\u53EF\u641C\u5C0B\u7684\u7D22\u5F15\u3002\u8F38\u5165\u641C\u5C0B\u95DC\u9375\u5B57: 
+IsindexView.prompt=\u9019\u662F\u4E00\u500B\u53EF\u641C\u5C0B\u7684\u7D22\u5F15\u3002\u8F38\u5165\u641C\u5C0B\u95DC\u9375\u5B57:
 
 ############ InternalFrameTitlePane Strings ############
 InternalFrameTitlePane.iconifyButtonAccessibleName=\u5716\u793A\u5316
 InternalFrameTitlePane.maximizeButtonAccessibleName=\u6700\u5927\u5316
 InternalFrameTitlePane.closeButtonAccessibleName=\u95DC\u9589
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_de.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_de.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -4,10 +4,10 @@
 #
 #    FileChooser
 #
-# When this file is read in, the strings are put into the 
+# When this file is read in, the strings are put into the
 # defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.  
-# This may change in future versions of Swing as we improve localization 
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
 # support.
 #
 # Refer to the note in basic.properties for a description as to what
@@ -47,10 +47,11 @@
 ############ Used by MetalTitlePane if rendering window decorations############
 # All mnemonics are KeyEvent.VK_XXX as integers
 MetalTitlePane.restoreTitle=Wiederherstellen
-MetalTitlePane.restoreMnemonic=82
+MetalTitlePane.restoreMnemonic=87
 MetalTitlePane.iconifyTitle=Minimieren
-MetalTitlePane.iconifyMnemonic=69
+MetalTitlePane.iconifyMnemonic=82
 MetalTitlePane.maximizeTitle=Maximieren
 MetalTitlePane.maximizeMnemonic=88
 MetalTitlePane.closeTitle=Schlie\u00DFen
-MetalTitlePane.closeMnemonic=67
+MetalTitlePane.closeMnemonic=83
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_es.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_es.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -4,10 +4,10 @@
 #
 #    FileChooser
 #
-# When this file is read in, the strings are put into the 
+# When this file is read in, the strings are put into the
 # defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.  
-# This may change in future versions of Swing as we improve localization 
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
 # support.
 #
 # Refer to the note in basic.properties for a description as to what
@@ -49,8 +49,9 @@
 MetalTitlePane.restoreTitle=Restaurar
 MetalTitlePane.restoreMnemonic=82
 MetalTitlePane.iconifyTitle=Minimizar
-MetalTitlePane.iconifyMnemonic=69
+MetalTitlePane.iconifyMnemonic=90
 MetalTitlePane.maximizeTitle=Maximizar
 MetalTitlePane.maximizeMnemonic=88
 MetalTitlePane.closeTitle=Cerrar
 MetalTitlePane.closeMnemonic=67
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_fr.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_fr.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -4,10 +4,10 @@
 #
 #    FileChooser
 #
-# When this file is read in, the strings are put into the 
+# When this file is read in, the strings are put into the
 # defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.  
-# This may change in future versions of Swing as we improve localization 
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
 # support.
 #
 # Refer to the note in basic.properties for a description as to what
@@ -49,8 +49,9 @@
 MetalTitlePane.restoreTitle=Restaurer
 MetalTitlePane.restoreMnemonic=82
 MetalTitlePane.iconifyTitle=R\u00E9duire
-MetalTitlePane.iconifyMnemonic=69
+MetalTitlePane.iconifyMnemonic=68
 MetalTitlePane.maximizeTitle=Agrandir
-MetalTitlePane.maximizeMnemonic=88
+MetalTitlePane.maximizeMnemonic=65
 MetalTitlePane.closeTitle=Fermer
-MetalTitlePane.closeMnemonic=67
+MetalTitlePane.closeMnemonic=70
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_it.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_it.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -4,10 +4,10 @@
 #
 #    FileChooser
 #
-# When this file is read in, the strings are put into the 
+# When this file is read in, the strings are put into the
 # defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.  
-# This may change in future versions of Swing as we improve localization 
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
 # support.
 #
 # Refer to the note in basic.properties for a description as to what
@@ -49,8 +49,9 @@
 MetalTitlePane.restoreTitle=Ripristina
 MetalTitlePane.restoreMnemonic=82
 MetalTitlePane.iconifyTitle=Riduci a icona
-MetalTitlePane.iconifyMnemonic=69
+MetalTitlePane.iconifyMnemonic=85
 MetalTitlePane.maximizeTitle=Ingrandisci
-MetalTitlePane.maximizeMnemonic=88
+MetalTitlePane.maximizeMnemonic=71
 MetalTitlePane.closeTitle=Chiudi
 MetalTitlePane.closeMnemonic=67
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ja.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ja.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -4,10 +4,10 @@
 #
 #    FileChooser
 #
-# When this file is read in, the strings are put into the 
+# When this file is read in, the strings are put into the
 # defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.  
-# This may change in future versions of Swing as we improve localization 
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
 # support.
 #
 # Refer to the note in basic.properties for a description as to what
@@ -46,11 +46,12 @@
 
 ############ Used by MetalTitlePane if rendering window decorations############
 # All mnemonics are KeyEvent.VK_XXX as integers
-MetalTitlePane.restoreTitle=\u5FA9\u5143
+MetalTitlePane.restoreTitle=\u5FA9\u5143(R)
 MetalTitlePane.restoreMnemonic=82
-MetalTitlePane.iconifyTitle=\u6700\u5C0F\u5316
+MetalTitlePane.iconifyTitle=\u6700\u5C0F\u5316(E)
 MetalTitlePane.iconifyMnemonic=69
-MetalTitlePane.maximizeTitle=\u6700\u5927\u5316
+MetalTitlePane.maximizeTitle=\u6700\u5927\u5316(X)
 MetalTitlePane.maximizeMnemonic=88
-MetalTitlePane.closeTitle=\u9589\u3058\u308B
+MetalTitlePane.closeTitle=\u9589\u3058\u308B(C)
 MetalTitlePane.closeMnemonic=67
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ko.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ko.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -4,10 +4,10 @@
 #
 #    FileChooser
 #
-# When this file is read in, the strings are put into the 
+# When this file is read in, the strings are put into the
 # defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.  
-# This may change in future versions of Swing as we improve localization 
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
 # support.
 #
 # Refer to the note in basic.properties for a description as to what
@@ -46,11 +46,12 @@
 
 ############ Used by MetalTitlePane if rendering window decorations############
 # All mnemonics are KeyEvent.VK_XXX as integers
-MetalTitlePane.restoreTitle=\uBCF5\uC6D0
+MetalTitlePane.restoreTitle=\uBCF5\uC6D0(R)
 MetalTitlePane.restoreMnemonic=82
-MetalTitlePane.iconifyTitle=\uCD5C\uC18C\uD654
+MetalTitlePane.iconifyTitle=\uCD5C\uC18C\uD654(E)
 MetalTitlePane.iconifyMnemonic=69
-MetalTitlePane.maximizeTitle=\uCD5C\uB300\uD654
+MetalTitlePane.maximizeTitle=\uCD5C\uB300\uD654(X)
 MetalTitlePane.maximizeMnemonic=88
-MetalTitlePane.closeTitle=\uB2EB\uAE30
+MetalTitlePane.closeTitle=\uB2EB\uAE30(C)
 MetalTitlePane.closeMnemonic=67
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_pt_BR.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_pt_BR.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -4,10 +4,10 @@
 #
 #    FileChooser
 #
-# When this file is read in, the strings are put into the 
+# When this file is read in, the strings are put into the
 # defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.  
-# This may change in future versions of Swing as we improve localization 
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
 # support.
 #
 # Refer to the note in basic.properties for a description as to what
@@ -49,8 +49,9 @@
 MetalTitlePane.restoreTitle=Restaurar
 MetalTitlePane.restoreMnemonic=82
 MetalTitlePane.iconifyTitle=Minimizar
-MetalTitlePane.iconifyMnemonic=69
+MetalTitlePane.iconifyMnemonic=77
 MetalTitlePane.maximizeTitle=Maximizar
 MetalTitlePane.maximizeMnemonic=88
 MetalTitlePane.closeTitle=Fechar
-MetalTitlePane.closeMnemonic=67
+MetalTitlePane.closeMnemonic=70
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_sv.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_sv.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -4,10 +4,10 @@
 #
 #    FileChooser
 #
-# When this file is read in, the strings are put into the 
+# When this file is read in, the strings are put into the
 # defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.  
-# This may change in future versions of Swing as we improve localization 
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
 # support.
 #
 # Refer to the note in basic.properties for a description as to what
@@ -53,4 +53,5 @@
 MetalTitlePane.maximizeTitle=Maximera
 MetalTitlePane.maximizeMnemonic=88
 MetalTitlePane.closeTitle=St\u00E4ng
-MetalTitlePane.closeMnemonic=67
+MetalTitlePane.closeMnemonic=83
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_CN.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_CN.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -4,10 +4,10 @@
 #
 #    FileChooser
 #
-# When this file is read in, the strings are put into the 
+# When this file is read in, the strings are put into the
 # defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.  
-# This may change in future versions of Swing as we improve localization 
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
 # support.
 #
 # Refer to the note in basic.properties for a description as to what
@@ -18,11 +18,11 @@
 
 ############ FILE CHOOSER STRINGS #############
 
-FileChooser.lookInLabelText=\u67E5\u770B: 
-FileChooser.saveInLabelText=\u4FDD\u5B58: 
-FileChooser.fileNameLabelText=\u6587\u4EF6\u540D: 
-FileChooser.folderNameLabelText=\u6587\u4EF6\u5939\u540D: 
-FileChooser.filesOfTypeLabelText=\u6587\u4EF6\u7C7B\u578B: 
+FileChooser.lookInLabelText=\u67E5\u770B:
+FileChooser.saveInLabelText=\u4FDD\u5B58:
+FileChooser.fileNameLabelText=\u6587\u4EF6\u540D:
+FileChooser.folderNameLabelText=\u6587\u4EF6\u5939\u540D:
+FileChooser.filesOfTypeLabelText=\u6587\u4EF6\u7C7B\u578B:
 FileChooser.upFolderToolTipText=\u5411\u4E0A\u4E00\u7EA7
 FileChooser.upFolderAccessibleName=\u5411\u4E0A
 FileChooser.homeFolderToolTipText=\u4E3B\u76EE\u5F55
@@ -46,11 +46,12 @@
 
 ############ Used by MetalTitlePane if rendering window decorations############
 # All mnemonics are KeyEvent.VK_XXX as integers
-MetalTitlePane.restoreTitle=\u8FD8\u539F
+MetalTitlePane.restoreTitle=\u8FD8\u539F(R)
 MetalTitlePane.restoreMnemonic=82
-MetalTitlePane.iconifyTitle=\u6700\u5C0F\u5316
+MetalTitlePane.iconifyTitle=\u6700\u5C0F\u5316(E)
 MetalTitlePane.iconifyMnemonic=69
-MetalTitlePane.maximizeTitle=\u6700\u5927\u5316
+MetalTitlePane.maximizeTitle=\u6700\u5927\u5316(X)
 MetalTitlePane.maximizeMnemonic=88
-MetalTitlePane.closeTitle=\u5173\u95ED
+MetalTitlePane.closeTitle=\u5173\u95ED(C)
 MetalTitlePane.closeMnemonic=67
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_TW.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_TW.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -4,10 +4,10 @@
 #
 #    FileChooser
 #
-# When this file is read in, the strings are put into the 
+# When this file is read in, the strings are put into the
 # defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.  
-# This may change in future versions of Swing as we improve localization 
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
 # support.
 #
 # Refer to the note in basic.properties for a description as to what
@@ -19,7 +19,7 @@
 ############ FILE CHOOSER STRINGS #############
 
 FileChooser.lookInLabelText=\u67E5\u8A62:
-FileChooser.saveInLabelText=\u5132\u5B58\u65BC: 
+FileChooser.saveInLabelText=\u5132\u5B58\u65BC:
 FileChooser.fileNameLabelText=\u6A94\u6848\u540D\u7A31:
 FileChooser.folderNameLabelText=\u8CC7\u6599\u593E\u540D\u7A31:
 FileChooser.filesOfTypeLabelText=\u6A94\u6848\u985E\u578B:
@@ -46,11 +46,12 @@
 
 ############ Used by MetalTitlePane if rendering window decorations############
 # All mnemonics are KeyEvent.VK_XXX as integers
-MetalTitlePane.restoreTitle=\u5FA9\u539F
+MetalTitlePane.restoreTitle=\u56DE\u5FA9(R)
 MetalTitlePane.restoreMnemonic=82
-MetalTitlePane.iconifyTitle=\u6700\u5C0F\u5316
+MetalTitlePane.iconifyTitle=\u6700\u5C0F\u5316(E)
 MetalTitlePane.iconifyMnemonic=69
-MetalTitlePane.maximizeTitle=\u6700\u5927\u5316
+MetalTitlePane.maximizeTitle=\u6700\u5927\u5316(X)
 MetalTitlePane.maximizeMnemonic=88
-MetalTitlePane.closeTitle=\u95DC\u9589
+MetalTitlePane.closeTitle=\u95DC\u9589(C)
 MetalTitlePane.closeMnemonic=67
+
--- a/jdk/src/share/classes/com/sun/tools/example/debug/tty/TTYResources_ja.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/tty/TTYResources_ja.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
@@ -185,7 +185,7 @@
         {"Monitor information for expr", "{0} ({1})\u306E\u60C5\u5831\u306E\u30E2\u30CB\u30BF\u30FC:"},
         {"More than one class named", "\u540D\u524D''{0}''\u306E\u30AF\u30E9\u30B9\u304C\u8907\u6570\u3042\u308A\u307E\u3059"},
         {"native method", "native\u30E1\u30BD\u30C3\u30C9"},
-        {"nested:", "\u5165\u308C\u5B50\u306B\u306A\u3063\u3066\u3044\u307E\u3059: {0}"},
+        {"nested:", "\u30CD\u30B9\u30C8\u3055\u308C\u3066\u3044\u307E\u3059: {0}"},
         {"No attach address specified.", "\u63A5\u7D9A\u30A2\u30C9\u30EC\u30B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
         {"No breakpoints set.", "\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
         {"No class named", "\u540D\u524D''{0}''\u306E\u30AF\u30E9\u30B9\u304C\u3042\u308A\u307E\u305B\u3093"},
--- a/jdk/src/share/classes/com/sun/tools/example/debug/tty/TTYResources_zh_CN.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/tty/TTYResources_zh_CN.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/com/sun/tools/script/shell/init.js	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/com/sun/tools/script/shell/init.js	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/awt/AWTEvent.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/awt/AWTEvent.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/awt/Component.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/awt/Component.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
@@ -5821,7 +5821,7 @@
      * <code>InputMethodRequests</code> instance.
      * If listener <code>l</code> is <code>null</code>,
      * no exception is thrown and no action is performed.
-     * <p>Refer to <a href="doc-files/AWTThreadIssues.html#ListenersThreads"
+     * <p>Refer to <a href="{@docRoot}/java/awt/doc-files/AWTThreadIssues.html#ListenersThreads"
      * >AWT Threading Issues</a> for details on AWT's threading model.
      *
      * @param    l   the input method listener
--- a/jdk/src/share/classes/java/awt/EventQueue.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/awt/EventQueue.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/awt/Font.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/awt/Font.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/awt/LinearGradientPaint.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/awt/LinearGradientPaint.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/awt/MenuComponent.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/awt/MenuComponent.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/awt/MultipleGradientPaint.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/awt/MultipleGradientPaint.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/awt/RadialGradientPaint.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/awt/RadialGradientPaint.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/awt/Shape.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/awt/Shape.java	Wed Apr 20 09:31:11 2011 -0700
@@ -43,7 +43,7 @@
  * object that describes the trajectory path of the <code>Shape</code>
  * outline.
  * <p>
- * <b>Definition of insideness:</b>
+ * <a name="def_insideness"><b>Definition of insideness:</b></a>
  * A point is considered to lie inside a
  * <code>Shape</code> if and only if:
  * <ul>
@@ -88,6 +88,32 @@
      * <code>getBounds2D</code> method generally returns a
      * tighter bounding box due to its greater flexibility in
      * representation.
+     *
+     * <p>
+     * Note that the <a href="{@docRoot}/java/awt/Shape.html#def_insideness">
+     * definition of insideness</a> can lead to situations where points
+     * on the defining outline of the {@code shape} may not be considered
+     * contained in the returned {@code bounds} object, but only in cases
+     * where those points are also not considered contained in the original
+     * {@code shape}.
+     * </p>
+     * <p>
+     * If a {@code point} is inside the {@code shape} according to the
+     * {@link #contains(double x, double y) contains(point)} method, then
+     * it must be inside the returned {@code Rectangle} bounds object
+     * according to the {@link #contains(double x, double y) contains(point)}
+     * method of the {@code bounds}. Specifically:
+     * </p>
+     * <p>
+     *  {@code shape.contains(x,y)} requires {@code bounds.contains(x,y)}
+     * </p>
+     * <p>
+     * If a {@code point} is not inside the {@code shape}, then it might
+     * still be contained in the {@code bounds} object:
+     * </p>
+     * <p>
+     *  {@code bounds.contains(x,y)} does not imply {@code shape.contains(x,y)}
+     * </p>
      * @return an integer <code>Rectangle</code> that completely encloses
      *                 the <code>Shape</code>.
      * @see #getBounds2D
@@ -107,6 +133,32 @@
      * to overflow problems since the return value can be an instance of
      * the <code>Rectangle2D</code> that uses double precision values to
      * store the dimensions.
+     *
+     * <p>
+     * Note that the <a href="{@docRoot}/java/awt/Shape.html#def_insideness">
+     * definition of insideness</a> can lead to situations where points
+     * on the defining outline of the {@code shape} may not be considered
+     * contained in the returned {@code bounds} object, but only in cases
+     * where those points are also not considered contained in the original
+     * {@code shape}.
+     * </p>
+     * <p>
+     * If a {@code point} is inside the {@code shape} according to the
+     * {@link #contains(Point2D p) contains(point)} method, then it must
+     * be inside the returned {@code Rectangle2D} bounds object according
+     * to the {@link #contains(Point2D p) contains(point)} method of the
+     * {@code bounds}. Specifically:
+     * </p>
+     * <p>
+     *  {@code shape.contains(p)} requires {@code bounds.contains(p)}
+     * </p>
+     * <p>
+     * If a {@code point} is not inside the {@code shape}, then it might
+     * still be contained in the {@code bounds} object:
+     * </p>
+     * <p>
+     *  {@code bounds.contains(p)} does not imply {@code shape.contains(p)}
+     * </p>
      * @return an instance of <code>Rectangle2D</code> that is a
      *                 high-precision bounding box of the <code>Shape</code>.
      * @see #getBounds
@@ -116,7 +168,9 @@
 
     /**
      * Tests if the specified coordinates are inside the boundary of the
-     * <code>Shape</code>.
+     * <code>Shape</code>, as described by the
+     * <a href="{@docRoot}/java/awt/Shape.html#def_insideness">
+     * definition of insideness</a>.
      * @param x the specified X coordinate to be tested
      * @param y the specified Y coordinate to be tested
      * @return <code>true</code> if the specified coordinates are inside
@@ -128,7 +182,9 @@
 
     /**
      * Tests if a specified {@link Point2D} is inside the boundary
-     * of the <code>Shape</code>.
+     * of the <code>Shape</code>, as described by the
+     * <a href="{@docRoot}/java/awt/Shape.html#def_insideness">
+     * definition of insideness</a>.
      * @param p the specified <code>Point2D</code> to be tested
      * @return <code>true</code> if the specified <code>Point2D</code> is
      *          inside the boundary of the <code>Shape</code>;
--- a/jdk/src/share/classes/java/awt/Toolkit.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/awt/Toolkit.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1157,12 +1157,9 @@
      *          takes JobAttributes and PageAttributes objects. This object
      *          may be updated to reflect the user's job choices on exit. May
      *          be null.
-     *
      * @return  a <code>PrintJob</code> object, or <code>null</code> if the
      *          user cancelled the print job.
-     * @throws  NullPointerException if frame is null.  This exception is
-     *          always thrown when GraphicsEnvironment.isHeadless() returns
-     *          true.
+     * @throws  NullPointerException if frame is null
      * @throws  SecurityException if this thread is not allowed to initiate a
      *          print job request
      * @see     java.awt.GraphicsEnvironment#isHeadless
@@ -1201,12 +1198,9 @@
      *          job. The attributes will be updated to reflect the user's
      *          choices as outlined in the PageAttributes documentation. May be
      *          null.
-     *
      * @return  a <code>PrintJob</code> object, or <code>null</code> if the
      *          user cancelled the print job.
-     * @throws  NullPointerException if frame is null and either jobAttributes
-     *          is null or jobAttributes.getDialog() returns
-     *          JobAttributes.DialogType.NATIVE.
+     * @throws  NullPointerException if frame is null
      * @throws  IllegalArgumentException if pageAttributes specifies differing
      *          cross feed and feed resolutions. Also if this thread has
      *          access to the file system and jobAttributes specifies
@@ -1218,9 +1212,6 @@
      *          opportunity to select a file and proceed with printing.
      *          The dialog will ensure that the selected output file
      *          is valid before returning from this method.
-     *          <p>
-     *          This exception is always thrown when GraphicsEnvironment.isHeadless()
-     *          returns true.
      * @throws  SecurityException if this thread is not allowed to initiate a
      *          print job request, or if jobAttributes specifies print to file,
      *          and this thread is not allowed to access the file system
@@ -1236,10 +1227,6 @@
                                 PageAttributes pageAttributes) {
         // Override to add printing support with new job/page control classes
 
-        if (GraphicsEnvironment.isHeadless()) {
-            throw new IllegalArgumentException();
-        }
-
         if (this != Toolkit.getDefaultToolkit()) {
             return Toolkit.getDefaultToolkit().getPrintJob(frame, jobtitle,
                                                            jobAttributes,
--- a/jdk/src/share/classes/java/awt/TrayIcon.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/awt/TrayIcon.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/awt/Window.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/awt/Window.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/awt/color/ICC_Profile.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/awt/color/ICC_Profile.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/awt/doc-files/AWTThreadIssues.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/awt/doc-files/AWTThreadIssues.html	Wed Apr 20 09:31:11 2011 -0700
@@ -40,10 +40,9 @@
 <a name="Autoshutdown"></a>
 <h2>Auto-shutdown</h2>
 
-According to <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html"><i>The 
-Java</i><sup><small>TM</small></sup> <i>Virtual Machine Specification,
-Second edition</i></a> (see <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/Concepts.doc.html#19152">§2.17.9</a>
-and <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/Concepts.doc.html#33308">§2.19</a>),
+According to
+<cite>The Java&trade; Virtual Machine Specification</cite>,
+sections 2.17.9 and 2.19,
 the Java virtual machine (JVM) initially starts up with a single non-daemon
 thread, which typically calls the <code>main</code> method of some class.
 The virtual machine terminates all its activity and exits when
@@ -115,7 +114,7 @@
 Prior to 1.4, the helper threads were never terminated.
 <p>
 Starting with 1.4, the behavior has changed as a result of the fix for
-<a href="http://developer.java.sun.com/developer/bugParade/bugs/4030718.html">
+<a href="http://bugs.sun.com/view_bug.do?bug_id=4030718">
 4030718</a>. With the current implementation, AWT terminates all its
 helper threads allowing the application to exit cleanly when the
 following three conditions are true:
@@ -148,11 +147,11 @@
 <ul>
   <li> Other packages can create displayable components for internal
        needs and never make them undisplayable. See
-<a href="http://developer.java.sun.com/developer/bugParade/bugs/4515058.html">
+<a href="http://bugs.sun.com/view_bug.do?bug_id=4515058">
 4515058</a>,
-<a href="http://developer.java.sun.com/developer/bugParade/bugs/4671025.html">
+<a href="http://bugs.sun.com/view_bug.do?bug_id=4671025">
 4671025</a>, and
-<a href="http://developer.java.sun.com/developer/bugParade/bugs/4465537.html">
+<a href="http://bugs.sun.com/view_bug.do?bug_id=4465537">
 4465537</a>. 
   <li> Both Microsoft Windows and X11 allow an application to send native
        events to windows that belong to another application. With this
@@ -183,7 +182,8 @@
         <...>
 </pre>
 
-The Java Virtual Machine Specification guarantees
+<cite>The Java&trade; Virtual Machine Specification</cite>
+ guarantees
 that the JVM doesn't exit until this thread terminates.
 </body>
 </html>
--- a/jdk/src/share/classes/java/awt/doc-files/FocusSpec.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/awt/doc-files/FocusSpec.html	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/awt/geom/CubicCurve2D.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/awt/geom/CubicCurve2D.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/awt/image/BandedSampleModel.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/awt/image/BandedSampleModel.java	Wed Apr 20 09:31:11 2011 -0700
@@ -408,7 +408,12 @@
      */
     public int[] getPixels(int x, int y, int w, int h,
                            int iArray[], DataBuffer data) {
-        if ((x < 0) || (y < 0) || (x + w > width) || (y + h > height)) {
+        int x1 = x + w;
+        int y1 = y + h;
+
+        if (x < 0 || x >= width || w > width || x1 < 0 || x1 > width ||
+            y < 0 || y >= height || h > height || y1 < 0 || y1 >  height)
+        {
             throw new ArrayIndexOutOfBoundsException
                 ("Coordinate out of bounds!");
         }
@@ -690,7 +695,12 @@
      */
     public void setPixels(int x, int y, int w, int h,
                           int iArray[], DataBuffer data) {
-        if ((x < 0) || (y < 0) || (x + w > width) || (y + h > height)) {
+        int x1 = x + w;
+        int y1 = y + h;
+
+        if (x < 0 || x >= width || w > width || x1 < 0 || x1 > width ||
+            y < 0 || y >= height || h > height || y1 < 0 || y1 >  height)
+        {
             throw new ArrayIndexOutOfBoundsException
                 ("Coordinate out of bounds!");
         }
--- a/jdk/src/share/classes/java/awt/image/ComponentSampleModel.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/awt/image/ComponentSampleModel.java	Wed Apr 20 09:31:11 2011 -0700
@@ -739,7 +739,12 @@
      */
     public int[] getPixels(int x, int y, int w, int h,
                            int iArray[], DataBuffer data) {
-        if ((x < 0) || (y < 0) || (x + w > width) || (y + h > height)) {
+        int x1 = x + w;
+        int y1 = y + h;
+
+        if (x < 0 || x >= width || w > width || x1 < 0 || x1 > width ||
+            y < 0 || y >= height || y > height || y1 < 0 || y1 >  height)
+        {
             throw new ArrayIndexOutOfBoundsException
                 ("Coordinate out of bounds!");
         }
@@ -1025,7 +1030,12 @@
      */
     public void setPixels(int x, int y, int w, int h,
                           int iArray[], DataBuffer data) {
-        if ((x < 0) || (y < 0) || (x + w > width) || (y + h > height)) {
+        int x1 = x + w;
+        int y1 = y + h;
+
+        if (x < 0 || x >= width || w > width || x1 < 0 || x1 > width ||
+            y < 0 || y >= height || h > height || y1 < 0 || y1 >  height)
+        {
             throw new ArrayIndexOutOfBoundsException
                 ("Coordinate out of bounds!");
         }
--- a/jdk/src/share/classes/java/awt/image/PackedColorModel.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/awt/image/PackedColorModel.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/awt/image/SampleModel.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/awt/image/SampleModel.java	Wed Apr 20 09:31:11 2011 -0700
@@ -361,8 +361,8 @@
         int x1 = x + w;
         int y1 = y + h;
 
-        if (x < 0 || x1 < x || x1 > width ||
-            y < 0 || y1 < y || y1 > height)
+        if (x < 0 || x >= width || w > width || x1 < 0 || x1 > width ||
+            y < 0 || y >= height || h > height || y1 < 0 || y1 > height)
         {
             throw new ArrayIndexOutOfBoundsException("Invalid coordinates.");
         }
@@ -588,6 +588,15 @@
         int type = getTransferType();
         int numDataElems = getNumDataElements();
 
+        int x1 = x + w;
+        int y1 = y + h;
+
+        if (x < 0 || x >= width || w > width || x1 < 0 || x1 > width ||
+            y < 0 || y >= height || h > height || y1 < 0 || y1 > height)
+        {
+            throw new ArrayIndexOutOfBoundsException("Invalid coordinates.");
+        }
+
         switch(type) {
 
         case DataBuffer.TYPE_BYTE:
@@ -595,8 +604,8 @@
             byte[] barray = (byte[])obj;
             byte[] btemp = new byte[numDataElems];
 
-            for (int i=y; i<y+h; i++) {
-                for (int j=x; j<x+w; j++) {
+            for (int i=y; i<y1; i++) {
+                for (int j=x; j<x1; j++) {
                     for (int k=0; k<numDataElems; k++) {
                         btemp[k] = barray[cnt++];
                     }
@@ -612,8 +621,8 @@
             short[] sarray = (short[])obj;
             short[] stemp = new short[numDataElems];
 
-            for (int i=y; i<y+h; i++) {
-                for (int j=x; j<x+w; j++) {
+            for (int i=y; i<y1; i++) {
+                for (int j=x; j<x1; j++) {
                     for (int k=0; k<numDataElems; k++) {
                         stemp[k] = sarray[cnt++];
                     }
@@ -628,8 +637,8 @@
             int[] iArray = (int[])obj;
             int[] itemp = new int[numDataElems];
 
-            for (int i=y; i<y+h; i++) {
-                for (int j=x; j<x+w; j++) {
+            for (int i=y; i<y1; i++) {
+                for (int j=x; j<x1; j++) {
                     for (int k=0; k<numDataElems; k++) {
                         itemp[k] = iArray[cnt++];
                     }
@@ -644,8 +653,8 @@
             float[] fArray = (float[])obj;
             float[] ftemp = new float[numDataElems];
 
-            for (int i=y; i<y+h; i++) {
-                for (int j=x; j<x+w; j++) {
+            for (int i=y; i<y1; i++) {
+                for (int j=x; j<x1; j++) {
                     for (int k=0; k<numDataElems; k++) {
                         ftemp[k] = fArray[cnt++];
                     }
@@ -660,8 +669,8 @@
             double[] dArray = (double[])obj;
             double[] dtemp = new double[numDataElems];
 
-            for (int i=y; i<y+h; i++) {
-                for (int j=x; j<x+w; j++) {
+            for (int i=y; i<y1; i++) {
+                for (int j=x; j<x1; j++) {
                     for (int k=0; k<numDataElems; k++) {
                         dtemp[k] = dArray[cnt++];
                     }
@@ -759,14 +768,22 @@
 
         int pixels[];
         int Offset=0;
+        int x1 = x + w;
+        int y1 = y + h;
+
+        if (x < 0 || x >= width || w > width || x1 < 0 || x1 > width ||
+            y < 0 || y >= height || h > height || y1 < 0 || y1 > height)
+        {
+            throw new ArrayIndexOutOfBoundsException("Invalid coordinates.");
+        }
 
         if (iArray != null)
             pixels = iArray;
         else
             pixels = new int[numBands * w * h];
 
-        for (int i=y; i<(h+y); i++) {
-            for (int j=x; j<(w+x); j++) {
+        for (int i=y; i<y1; i++) {
+            for (int j=x; j<x1; j++) {
                 for(int k=0; k<numBands; k++) {
                     pixels[Offset++] = getSample(j, i, k, data);
                 }
@@ -799,14 +816,22 @@
 
         float pixels[];
         int Offset = 0;
+        int x1 = x + w;
+        int y1 = y + h;
+
+        if (x < 0 || x >= width || w > width || x1 < 0 || x1 > width ||
+            y < 0 || y >= height || h > height || y1 < 0 || y1 > height)
+        {
+            throw new ArrayIndexOutOfBoundsException("Invalid coordinates.");
+        }
 
         if (fArray != null)
             pixels = fArray;
         else
             pixels = new float[numBands * w * h];
 
-        for (int i=y; i<(h+y); i++) {
-            for(int j=x; j<(w+x); j++) {
+        for (int i=y; i<y1; i++) {
+            for(int j=x; j<x1; j++) {
                 for(int k=0; k<numBands; k++) {
                     pixels[Offset++] = getSampleFloat(j, i, k, data);
                 }
@@ -838,6 +863,14 @@
                               double dArray[], DataBuffer data) {
         double pixels[];
         int    Offset = 0;
+        int x1 = x + w;
+        int y1 = y + h;
+
+        if (x < 0 || x >= width || w > width || x1 < 0 || x1 > width ||
+            y < 0 || y >= height || h > height || y1 < 0 || y1 > height)
+        {
+            throw new ArrayIndexOutOfBoundsException("Invalid coordinates.");
+        }
 
         if (dArray != null)
             pixels = dArray;
@@ -845,8 +878,8 @@
             pixels = new double[numBands * w * h];
 
         // Fix 4217412
-        for (int i=y; i<(h+y); i++) {
-            for (int j=x; j<(w+x); j++) {
+        for (int i=y; i<y1; i++) {
+            for (int j=x; j<x1; j++) {
                 for (int k=0; k<numBands; k++) {
                     pixels[Offset++] = getSampleDouble(j, i, k, data);
                 }
@@ -1146,9 +1179,17 @@
     public void setPixels(int x, int y, int w, int h,
                           int iArray[], DataBuffer data) {
         int Offset=0;
+        int x1 = x + w;
+        int y1 = y + h;
 
-        for (int i=y; i<(y+h); i++) {
-            for (int j=x; j<(x+w); j++) {
+        if (x < 0 || x >= width || w > width || x1 < 0 || x1 > width ||
+            y < 0 || y >= height || h > height || y1 < 0 || y1 > height)
+        {
+            throw new ArrayIndexOutOfBoundsException("Invalid coordinates.");
+        }
+
+        for (int i=y; i<y1; i++) {
+            for (int j=x; j<x1; j++) {
                 for (int k=0; k<numBands; k++) {
                     setSample(j, i, k, iArray[Offset++], data);
                 }
@@ -1176,9 +1217,17 @@
     public void setPixels(int x, int y, int w, int h,
                           float fArray[], DataBuffer data) {
         int Offset=0;
+        int x1 = x + w;
+        int y1 = y + h;
 
-        for (int i=y; i<(y+h); i++) {
-            for (int j=x; j<(x+w); j++) {
+        if (x < 0 || x >= width || w > width || x1 < 0 || x1 > width||
+            y < 0 || y >= height || h > height || y1 < 0 || y1 > height)
+        {
+            throw new ArrayIndexOutOfBoundsException("Invalid coordinates.");
+        }
+
+        for (int i=y; i<y1; i++) {
+            for (int j=x; j<x1; j++) {
                 for(int k=0; k<numBands; k++) {
                     setSample(j, i, k, fArray[Offset++], data);
                 }
@@ -1206,9 +1255,17 @@
     public void setPixels(int x, int y, int w, int h,
                           double dArray[], DataBuffer data) {
         int Offset=0;
+        int x1 = x + w;
+        int y1 = y + h;
 
-        for (int i=y; i<(y+h); i++) {
-            for (int j=x; j<(x+w); j++) {
+        if (x < 0 || x >= width || w > width || x1 < 0 || x1 > width ||
+            y < 0 || y >= height || h > height || y1 < 0 || y1 > height)
+        {
+            throw new ArrayIndexOutOfBoundsException("Invalid coordinates.");
+        }
+
+        for (int i=y; i<y1; i++) {
+            for (int j=x; j<x1; j++) {
                 for (int k=0; k<numBands; k++) {
                     setSample(j, i, k, dArray[Offset++], data);
                 }
@@ -1315,9 +1372,16 @@
                            int iArray[], DataBuffer data) {
 
         int Offset=0;
+        int x1 = x + w;
+        int y1 = y + h;
+        if (x < 0 || x >= width || w > width || x1 < 0 || x1 > width ||
+            y < 0 || y >= height || h > height || y1 < 0 || y1 > height)
+        {
+            throw new ArrayIndexOutOfBoundsException("Invalid coordinates.");
+        }
 
-        for (int i=y; i<(y+h); i++) {
-            for (int j=x; j<(x+w); j++) {
+        for (int i=y; i<y1; i++) {
+            for (int j=x; j<x1; j++) {
                 setSample(j, i, b, iArray[Offset++], data);
             }
         }
@@ -1345,9 +1409,17 @@
     public void setSamples(int x, int y, int w, int h, int b,
                            float fArray[], DataBuffer data) {
         int Offset=0;
+        int x1 = x + w;
+        int y1 = y + h;
 
-        for (int i=y; i<(y+h); i++) {
-            for (int j=x; j<(x+w); j++) {
+        if (x < 0 || x >= width || w > width || x1 < 0 || x1 > width ||
+            y < 0 || y >= height || h > height || y1 < 0 || y1 > height)
+        {
+            throw new ArrayIndexOutOfBoundsException("Invalid coordinates.");
+        }
+
+        for (int i=y; i<y1; i++) {
+            for (int j=x; j<x1; j++) {
                 setSample(j, i, b, fArray[Offset++], data);
             }
         }
@@ -1375,9 +1447,18 @@
     public void setSamples(int x, int y, int w, int h, int b,
                            double dArray[], DataBuffer data) {
         int Offset=0;
+        int x1 = x + w;
+        int y1 = y + h;
 
-        for (int i=y; i<(y+h); i++) {
-            for (int j=x; j<(x+w); j++) {
+
+        if (x < 0 || x >= width || w > width || x1 < 0 || x1 > width ||
+            y < 0 || y >= height || h > height || y1 < 0 || y1 > height)
+        {
+            throw new ArrayIndexOutOfBoundsException("Invalid coordinates.");
+        }
+
+        for (int i=y; i<y1; i++) {
+            for (int j=x; j<x1; j++) {
                 setSample(j, i, b, dArray[Offset++], data);
             }
         }
--- a/jdk/src/share/classes/java/awt/image/SinglePixelPackedSampleModel.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/awt/image/SinglePixelPackedSampleModel.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. 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
@@ -461,7 +461,12 @@
      */
     public int[] getPixels(int x, int y, int w, int h,
                            int iArray[], DataBuffer data) {
-        if ((x < 0) || (y < 0) || (x + w > width) || (y + h > height)) {
+        int x1 = x + w;
+        int y1 = y + h;
+
+        if (x < 0 || x >= width || w > width || x1 < 0 || x1 > width ||
+            y < 0 || y >= height || h > height || y1 < 0 || y1 >  height)
+        {
             throw new ArrayIndexOutOfBoundsException
                 ("Coordinate out of bounds!");
         }
@@ -659,7 +664,12 @@
      */
     public void setPixels(int x, int y, int w, int h,
                           int iArray[], DataBuffer data) {
-        if ((x < 0) || (y < 0) || (x + w > width) || (y + h > height)) {
+        int x1 = x + w;
+        int y1 = y + h;
+
+        if (x < 0 || x >= width || w > width || x1 < 0 || x1 > width ||
+            y < 0 || y >= height || h > height || y1 < 0 || y1 >  height)
+        {
             throw new ArrayIndexOutOfBoundsException
                 ("Coordinate out of bounds!");
         }
--- a/jdk/src/share/classes/java/beans/DefaultPersistenceDelegate.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/beans/DefaultPersistenceDelegate.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/beans/DesignMode.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/beans/DesignMode.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/beans/IndexedPropertyChangeEvent.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/beans/IndexedPropertyChangeEvent.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/beans/Introspector.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/beans/Introspector.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/beans/VetoableChangeSupport.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/beans/VetoableChangeSupport.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/beans/package.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/beans/package.html	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/io/BufferedReader.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/io/BufferedReader.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/io/BufferedWriter.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/io/BufferedWriter.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/io/Console.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/io/Console.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
@@ -148,8 +148,8 @@
     *         extra arguments are ignored.  The number of arguments is
     *         variable and may be zero.  The maximum number of arguments is
     *         limited by the maximum dimension of a Java array as defined by
-    *         the <a href="http://java.sun.com/docs/books/vmspec/">Java
-    *         Virtual Machine Specification</a>.  The behaviour on a
+    *         <cite>The Java&trade; Virtual Machine Specification</cite>.
+    *         The behaviour on a
     *         <tt>null</tt> argument depends on the <a
     *         href="../util/Formatter.html#syntax">conversion</a>.
     *
@@ -187,8 +187,8 @@
     *         extra arguments are ignored.  The number of arguments is
     *         variable and may be zero.  The maximum number of arguments is
     *         limited by the maximum dimension of a Java array as defined by
-    *         the <a href="http://java.sun.com/docs/books/vmspec/">Java
-    *         Virtual Machine Specification</a>.  The behaviour on a
+    *         <cite>The Java&trade; Virtual Machine Specification</cite>.
+    *         The behaviour on a
     *         <tt>null</tt> argument depends on the <a
     *         href="../util/Formatter.html#syntax">conversion</a>.
     *
@@ -220,8 +220,7 @@
     *         string.  If there are more arguments than format specifiers, the
     *         extra arguments are ignored.  The maximum number of arguments is
     *         limited by the maximum dimension of a Java array as defined by
-    *         the <a href="http://java.sun.com/docs/books/vmspec/">Java
-    *         Virtual Machine Specification</a>.
+    *         <cite>The Java&trade; Virtual Machine Specification</cite>.
     *
     * @throws  IllegalFormatException
     *          If a format string contains an illegal syntax, a format
@@ -285,8 +284,7 @@
     *         string.  If there are more arguments than format specifiers, the
     *         extra arguments are ignored.  The maximum number of arguments is
     *         limited by the maximum dimension of a Java array as defined by
-    *         the <a href="http://java.sun.com/docs/books/vmspec/">Java
-    *         Virtual Machine Specification</a>.
+    *         <cite>The Java&trade; Virtual Machine Specification</cite>.
     *
     * @throws  IllegalFormatException
     *          If a format string contains an illegal syntax, a format
--- a/jdk/src/share/classes/java/io/DeleteOnExitHook.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/io/DeleteOnExitHook.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/io/File.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/io/File.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1994, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/io/FileInputStream.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/io/FileInputStream.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1994, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/io/FileOutputStream.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/io/FileOutputStream.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/io/FilePermission.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/io/FilePermission.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/io/FilterOutputStream.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/io/FilterOutputStream.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1994, 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/io/ObjectStreamClass.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/io/ObjectStreamClass.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/io/PrintStream.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/io/PrintStream.java	Wed Apr 20 09:31:11 2011 -0700
@@ -846,8 +846,8 @@
      *         extra arguments are ignored.  The number of arguments is
      *         variable and may be zero.  The maximum number of arguments is
      *         limited by the maximum dimension of a Java array as defined by
-     *         the <a href="http://java.sun.com/docs/books/vmspec/">Java
-     *         Virtual Machine Specification</a>.  The behaviour on a
+     *         <cite>The Java&trade; Virtual Machine Specification</cite>.
+     *         The behaviour on a
      *         <tt>null</tt> argument depends on the <a
      *         href="../util/Formatter.html#syntax">conversion</a>.
      *
@@ -896,8 +896,8 @@
      *         extra arguments are ignored.  The number of arguments is
      *         variable and may be zero.  The maximum number of arguments is
      *         limited by the maximum dimension of a Java array as defined by
-     *         the <a href="http://java.sun.com/docs/books/vmspec/">Java
-     *         Virtual Machine Specification</a>.  The behaviour on a
+     *         <cite>The Java&trade; Virtual Machine Specification</cite>.
+     *         The behaviour on a
      *         <tt>null</tt> argument depends on the <a
      *         href="../util/Formatter.html#syntax">conversion</a>.
      *
@@ -939,8 +939,8 @@
      *         extra arguments are ignored.  The number of arguments is
      *         variable and may be zero.  The maximum number of arguments is
      *         limited by the maximum dimension of a Java array as defined by
-     *         the <a href="http://java.sun.com/docs/books/vmspec/">Java
-     *         Virtual Machine Specification</a>.  The behaviour on a
+     *         <cite>The Java&trade; Virtual Machine Specification</cite>.
+     *         The behaviour on a
      *         <tt>null</tt> argument depends on the <a
      *         href="../util/Formatter.html#syntax">conversion</a>.
      *
@@ -996,8 +996,8 @@
      *         extra arguments are ignored.  The number of arguments is
      *         variable and may be zero.  The maximum number of arguments is
      *         limited by the maximum dimension of a Java array as defined by
-     *         the <a href="http://java.sun.com/docs/books/vmspec/">Java
-     *         Virtual Machine Specification</a>.  The behaviour on a
+     *         <cite>The Java&trade; Virtual Machine Specification</cite>.
+     *         The behaviour on a
      *         <tt>null</tt> argument depends on the <a
      *         href="../util/Formatter.html#syntax">conversion</a>.
      *
--- a/jdk/src/share/classes/java/io/PrintWriter.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/io/PrintWriter.java	Wed Apr 20 09:31:11 2011 -0700
@@ -779,8 +779,8 @@
      *         extra arguments are ignored.  The number of arguments is
      *         variable and may be zero.  The maximum number of arguments is
      *         limited by the maximum dimension of a Java array as defined by
-     *         the <a href="http://java.sun.com/docs/books/vmspec/">Java
-     *         Virtual Machine Specification</a>.  The behaviour on a
+     *         <cite>The Java&trade; Virtual Machine Specification</cite>.
+     *         The behaviour on a
      *         <tt>null</tt> argument depends on the <a
      *         href="../util/Formatter.html#syntax">conversion</a>.
      *
@@ -830,8 +830,8 @@
      *         extra arguments are ignored.  The number of arguments is
      *         variable and may be zero.  The maximum number of arguments is
      *         limited by the maximum dimension of a Java array as defined by
-     *         the <a href="http://java.sun.com/docs/books/vmspec/">Java
-     *         Virtual Machine Specification</a>.  The behaviour on a
+     *         <cite>The Java&trade; Virtual Machine Specification</cite>.
+     *         The behaviour on a
      *         <tt>null</tt> argument depends on the <a
      *         href="../util/Formatter.html#syntax">conversion</a>.
      *
@@ -874,8 +874,8 @@
      *         extra arguments are ignored.  The number of arguments is
      *         variable and may be zero.  The maximum number of arguments is
      *         limited by the maximum dimension of a Java array as defined by
-     *         the <a href="http://java.sun.com/docs/books/vmspec/">Java
-     *         Virtual Machine Specification</a>.  The behaviour on a
+     *         <cite>The Java&trade; Virtual Machine Specification</cite>.
+     *         The behaviour on a
      *         <tt>null</tt> argument depends on the <a
      *         href="../util/Formatter.html#syntax">conversion</a>.
      *
@@ -934,8 +934,8 @@
      *         extra arguments are ignored.  The number of arguments is
      *         variable and may be zero.  The maximum number of arguments is
      *         limited by the maximum dimension of a Java array as defined by
-     *         the <a href="http://java.sun.com/docs/books/vmspec/">Java
-     *         Virtual Machine Specification</a>.  The behaviour on a
+     *         <cite>The Java&trade; Virtual Machine Specification</cite>.
+     *         The behaviour on a
      *         <tt>null</tt> argument depends on the <a
      *         href="../util/Formatter.html#syntax">conversion</a>.
      *
--- a/jdk/src/share/classes/java/io/PushbackInputStream.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/io/PushbackInputStream.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/io/PushbackReader.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/io/PushbackReader.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/lang/ApplicationShutdownHooks.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/ApplicationShutdownHooks.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/lang/AssertionError.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/AssertionError.java	Wed Apr 20 09:31:11 2011 -0700
@@ -34,11 +34,9 @@
  *     new AssertionError(<i>expression</i>)
  * </pre>
  * has as its detail message the <i>string conversion</i> of
- * <i>expression</i> (as defined in <a
- * href="http://java.sun.com/docs/books/jls/second_edition/html/j.title.doc.html">
- * <i>The Java Language Specification, Second Edition</i></a>,
- * <a href="http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#40220">
- * Section  15.18.1.1</a>), regardless of the type of <i>expression</i>.
+ * <i>expression</i> (as defined in section 15.18.1.1 of
+ * <cite>The Java&trade; Language Specification</cite>),
+ * regardless of the type of <i>expression</i>.
  *
  * @since   1.4
  */
@@ -63,8 +61,8 @@
     /**
      * Constructs an AssertionError with its detail message derived
      * from the specified object, which is converted to a string as
-     * defined in <i>The Java Language Specification, Second
-     * Edition</i>, Section 15.18.1.1.
+     * defined in section 15.18.1.1 of
+     * <cite>The Java&trade; Language Specification</cite>.
      *<p>
      * If the specified object is an instance of {@code Throwable}, it
      * becomes the <i>cause</i> of the newly constructed assertion error.
@@ -81,8 +79,8 @@
     /**
      * Constructs an AssertionError with its detail message derived
      * from the specified <code>boolean</code>, which is converted to
-     * a string as defined in <i>The Java Language Specification,
-     * Second Edition</i>, Section 15.18.1.1.
+     * a string as defined in section 15.18.1.1 of
+     * <cite>The Java&trade; Language Specification</cite>.
      *
      * @param detailMessage value to be used in constructing detail message
      */
@@ -93,8 +91,8 @@
     /**
      * Constructs an AssertionError with its detail message derived
      * from the specified <code>char</code>, which is converted to a
-     * string as defined in <i>The Java Language Specification, Second
-     * Edition</i>, Section 15.18.1.1.
+     * string as defined in section 15.18.1.1 of
+     * <cite>The Java&trade; Language Specification</cite>.
      *
      * @param detailMessage value to be used in constructing detail message
      */
@@ -105,8 +103,8 @@
     /**
      * Constructs an AssertionError with its detail message derived
      * from the specified <code>int</code>, which is converted to a
-     * string as defined in <i>The Java Language Specification, Second
-     * Edition</i>, Section 15.18.1.1.
+     * string as defined in section 15.18.1.1 of
+     * <cite>The Java&trade; Language Specification</cite>.
      *
      * @param detailMessage value to be used in constructing detail message
      */
@@ -117,8 +115,8 @@
     /**
      * Constructs an AssertionError with its detail message derived
      * from the specified <code>long</code>, which is converted to a
-     * string as defined in <i>The Java Language Specification, Second
-     * Edition</i>, Section 15.18.1.1.
+     * string as defined in section 15.18.1.1 of
+     * <cite>The Java&trade; Language Specification</cite>.
      *
      * @param detailMessage value to be used in constructing detail message
      */
@@ -129,8 +127,8 @@
     /**
      * Constructs an AssertionError with its detail message derived
      * from the specified <code>float</code>, which is converted to a
-     * string as defined in <i>The Java Language Specification, Second
-     * Edition</i>, Section 15.18.1.1.
+     * string as defined in section 15.18.1.1 of
+     * <cite>The Java&trade; Language Specification</cite>.
      *
      * @param detailMessage value to be used in constructing detail message
      */
@@ -141,8 +139,8 @@
     /**
      * Constructs an AssertionError with its detail message derived
      * from the specified <code>double</code>, which is converted to a
-     * string as defined in <i>The Java Language Specification, Second
-     * Edition</i>, Section 15.18.1.1.
+     * string as defined in section 15.18.1.1 of
+     * <cite>The Java&trade; Language Specification</cite>.
      *
      * @param detailMessage value to be used in constructing detail message
      */
--- a/jdk/src/share/classes/java/lang/Byte.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/Byte.java	Wed Apr 20 09:31:11 2011 -0700
@@ -251,9 +251,9 @@
      * </blockquote>
      *
      * <i>DecimalNumeral</i>, <i>HexDigits</i>, and <i>OctalDigits</i>
-     * are defined in <a href="http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#48282">&sect;3.10.1</a>
-     * of the <a href="http://java.sun.com/docs/books/jls/html/">Java
-     * Language Specification</a>.
+     * are as defined in section 3.10.1 of
+     * <cite>The Java&trade; Language Specification</cite>,
+     * except that underscores are not accepted between digits.
      *
      * <p>The sequence of characters following an optional
      * sign and/or radix specifier ("{@code 0x}", "{@code 0X}",
--- a/jdk/src/share/classes/java/lang/CharSequence.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/CharSequence.java	Wed Apr 20 09:31:11 2011 -0700
@@ -66,7 +66,7 @@
      * indexing. </p>
      *
      * <p>If the <code>char</code> value specified by the index is a
-     * <a href="Character.html#unicode">surrogate</a>, the surrogate
+     * <a href="{@docRoot}/java/lang/Character.html#unicode">surrogate</a>, the surrogate
      * value is returned.
      *
      * @param   index   the index of the <code>char</code> value to be returned
--- a/jdk/src/share/classes/java/lang/Character.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/Character.java	Wed Apr 20 09:31:11 2011 -0700
@@ -31,10 +31,10 @@
 import java.util.Locale;
 
 /**
- * The <code>Character</code> class wraps a value of the primitive
- * type <code>char</code> in an object. An object of type
- * <code>Character</code> contains a single field whose type is
- * <code>char</code>.
+ * The {@code Character} class wraps a value of the primitive
+ * type {@code char} in an object. An object of type
+ * {@code Character} contains a single field whose type is
+ * {@code char}.
  * <p>
  * In addition, this class provides several methods for determining
  * a character's category (lowercase letter, digit, etc.) and for converting
@@ -42,7 +42,7 @@
  * <p>
  * Character information is based on the Unicode Standard, version 6.0.0.
  * <p>
- * The methods and data of class <code>Character</code> are defined by
+ * The methods and data of class {@code Character} are defined by
  * the information in the <i>UnicodeData</i> file that is part of the
  * Unicode Character Database maintained by the Unicode
  * Consortium. This file specifies various properties including name
@@ -56,8 +56,8 @@
  *
  * <h4><a name="unicode">Unicode Character Representations</a></h4>
  *
- * <p>The <code>char</code> data type (and therefore the value that a
- * <code>Character</code> object encapsulates) are based on the
+ * <p>The {@code char} data type (and therefore the value that a
+ * {@code Character} object encapsulates) are based on the
  * original Unicode specification, which defined characters as
  * fixed-width 16-bit entities. The Unicode standard has since been
  * changed to allow for characters whose representation requires more
@@ -72,43 +72,43 @@
  * sometimes referred to as the <em>Basic Multilingual Plane (BMP)</em>.
  * <a name="supplementary">Characters</a> whose code points are greater
  * than U+FFFF are called <em>supplementary character</em>s.  The Java
- * platform uses the UTF-16 representation in <code>char</code> arrays and
- * in the <code>String</code> and <code>StringBuffer</code> classes. In
+ * platform uses the UTF-16 representation in {@code char} arrays and
+ * in the {@code String} and {@code StringBuffer} classes. In
  * this representation, supplementary characters are represented as a pair
- * of <code>char</code> values, the first from the <em>high-surrogates</em>
+ * of {@code char} values, the first from the <em>high-surrogates</em>
  * range, (&#92;uD800-&#92;uDBFF), the second from the
  * <em>low-surrogates</em> range (&#92;uDC00-&#92;uDFFF).
  *
- * <p>A <code>char</code> value, therefore, represents Basic
+ * <p>A {@code char} value, therefore, represents Basic
  * Multilingual Plane (BMP) code points, including the surrogate
  * code points, or code units of the UTF-16 encoding. An
- * <code>int</code> value represents all Unicode code points,
+ * {@code int} value represents all Unicode code points,
  * including supplementary code points. The lower (least significant)
- * 21 bits of <code>int</code> are used to represent Unicode code
+ * 21 bits of {@code int} are used to represent Unicode code
  * points and the upper (most significant) 11 bits must be zero.
  * Unless otherwise specified, the behavior with respect to
- * supplementary characters and surrogate <code>char</code> values is
+ * supplementary characters and surrogate {@code char} values is
  * as follows:
  *
  * <ul>
- * <li>The methods that only accept a <code>char</code> value cannot support
- * supplementary characters. They treat <code>char</code> values from the
+ * <li>The methods that only accept a {@code char} value cannot support
+ * supplementary characters. They treat {@code char} values from the
  * surrogate ranges as undefined characters. For example,
- * <code>Character.isLetter('&#92;uD840')</code> returns <code>false</code>, even though
+ * {@code Character.isLetter('\u005CuD840')} returns {@code false}, even though
  * this specific value if followed by any low-surrogate value in a string
  * would represent a letter.
  *
- * <li>The methods that accept an <code>int</code> value support all
+ * <li>The methods that accept an {@code int} value support all
  * Unicode characters, including supplementary characters. For
- * example, <code>Character.isLetter(0x2F81A)</code> returns
- * <code>true</code> because the code point value represents a letter
+ * example, {@code Character.isLetter(0x2F81A)} returns
+ * {@code true} because the code point value represents a letter
  * (a CJK ideograph).
  * </ul>
  *
  * <p>In the Java SE API documentation, <em>Unicode code point</em> is
  * used for character values in the range between U+0000 and U+10FFFF,
  * and <em>Unicode code unit</em> is used for 16-bit
- * <code>char</code> values that are code units of the <em>UTF-16</em>
+ * {@code char} values that are code units of the <em>UTF-16</em>
  * encoding. For more information on Unicode terminology, refer to the
  * <a href="http://www.unicode.org/glossary/">Unicode Glossary</a>.
  *
@@ -125,9 +125,8 @@
      * The minimum radix available for conversion to and from strings.
      * The constant value of this field is the smallest value permitted
      * for the radix argument in radix-conversion methods such as the
-     * <code>digit</code> method, the <code>forDigit</code>
-     * method, and the <code>toString</code> method of class
-     * <code>Integer</code>.
+     * {@code digit} method, the {@code forDigit} method, and the
+     * {@code toString} method of class {@code Integer}.
      *
      * @see     Character#digit(char, int)
      * @see     Character#forDigit(int, int)
@@ -140,9 +139,8 @@
      * The maximum radix available for conversion to and from strings.
      * The constant value of this field is the largest value permitted
      * for the radix argument in radix-conversion methods such as the
-     * <code>digit</code> method, the <code>forDigit</code>
-     * method, and the <code>toString</code> method of class
-     * <code>Integer</code>.
+     * {@code digit} method, the {@code forDigit} method, and the
+     * {@code toString} method of class {@code Integer}.
      *
      * @see     Character#digit(char, int)
      * @see     Character#forDigit(int, int)
@@ -153,7 +151,7 @@
 
     /**
      * The constant value of this field is the smallest value of type
-     * <code>char</code>, <code>'&#92;u0000'</code>.
+     * {@code char}, {@code '\u005Cu0000'}.
      *
      * @since   1.0.2
      */
@@ -161,15 +159,15 @@
 
     /**
      * The constant value of this field is the largest value of type
-     * <code>char</code>, <code>'&#92;uFFFF'</code>.
+     * {@code char}, {@code '\u005CuFFFF'}.
      *
      * @since   1.0.2
      */
     public static final char MAX_VALUE = '\uFFFF';
 
     /**
-     * The <code>Class</code> instance representing the primitive type
-     * <code>char</code>.
+     * The {@code Class} instance representing the primitive type
+     * {@code char}.
      *
      * @since   1.1
      */
@@ -371,7 +369,7 @@
 
 
     /**
-     * Undefined bidirectional character type. Undefined <code>char</code>
+     * Undefined bidirectional character type. Undefined {@code char}
      * values have undefined directionality in the Unicode specification.
      * @since 1.4
      */
@@ -495,7 +493,7 @@
      * The minimum value of a
      * <a href="http://www.unicode.org/glossary/#high_surrogate_code_unit">
      * Unicode high-surrogate code unit</a>
-     * in the UTF-16 encoding, constant <code>'&#92;uD800'</code>.
+     * in the UTF-16 encoding, constant {@code '\u005CuD800'}.
      * A high-surrogate is also known as a <i>leading-surrogate</i>.
      *
      * @since 1.5
@@ -506,7 +504,7 @@
      * The maximum value of a
      * <a href="http://www.unicode.org/glossary/#high_surrogate_code_unit">
      * Unicode high-surrogate code unit</a>
-     * in the UTF-16 encoding, constant <code>'&#92;uDBFF'</code>.
+     * in the UTF-16 encoding, constant {@code '\u005CuDBFF'}.
      * A high-surrogate is also known as a <i>leading-surrogate</i>.
      *
      * @since 1.5
@@ -517,7 +515,7 @@
      * The minimum value of a
      * <a href="http://www.unicode.org/glossary/#low_surrogate_code_unit">
      * Unicode low-surrogate code unit</a>
-     * in the UTF-16 encoding, constant <code>'&#92;uDC00'</code>.
+     * in the UTF-16 encoding, constant {@code '\u005CuDC00'}.
      * A low-surrogate is also known as a <i>trailing-surrogate</i>.
      *
      * @since 1.5
@@ -528,7 +526,7 @@
      * The maximum value of a
      * <a href="http://www.unicode.org/glossary/#low_surrogate_code_unit">
      * Unicode low-surrogate code unit</a>
-     * in the UTF-16 encoding, constant <code>'&#92;uDFFF'</code>.
+     * in the UTF-16 encoding, constant {@code '\u005CuDFFF'}.
      * A low-surrogate is also known as a <i>trailing-surrogate</i>.
      *
      * @since 1.5
@@ -537,7 +535,7 @@
 
     /**
      * The minimum value of a Unicode surrogate code unit in the
-     * UTF-16 encoding, constant <code>'&#92;uD800'</code>.
+     * UTF-16 encoding, constant {@code '\u005CuD800'}.
      *
      * @since 1.5
      */
@@ -545,7 +543,7 @@
 
     /**
      * The maximum value of a Unicode surrogate code unit in the
-     * UTF-16 encoding, constant <code>'&#92;uDFFF'</code>.
+     * UTF-16 encoding, constant {@code '\u005CuDFFF'}.
      *
      * @since 1.5
      */
@@ -582,7 +580,7 @@
     /**
      * Instances of this class represent particular subsets of the Unicode
      * character set.  The only family of subsets defined in the
-     * <code>Character</code> class is {@link Character.UnicodeBlock}.
+     * {@code Character} class is {@link Character.UnicodeBlock}.
      * Other portions of the Java API may define other subsets for their
      * own purposes.
      *
@@ -593,10 +591,10 @@
         private String name;
 
         /**
-         * Constructs a new <code>Subset</code> instance.
+         * Constructs a new {@code Subset} instance.
          *
          * @param  name  The name of this subset
-         * @exception NullPointerException if name is <code>null</code>
+         * @exception NullPointerException if name is {@code null}
          */
         protected Subset(String name) {
             if (name == null) {
@@ -606,10 +604,10 @@
         }
 
         /**
-         * Compares two <code>Subset</code> objects for equality.
-         * This method returns <code>true</code> if and only if
-         * <code>this</code> and the argument refer to the same
-         * object; since this method is <code>final</code>, this
+         * Compares two {@code Subset} objects for equality.
+         * This method returns {@code true} if and only if
+         * {@code this} and the argument refer to the same
+         * object; since this method is {@code final}, this
          * guarantee holds for all subclasses.
          */
         public final boolean equals(Object obj) {
@@ -618,9 +616,9 @@
 
         /**
          * Returns the standard hash code as defined by the
-         * <code>{@link Object#hashCode}</code> method.  This method
-         * is <code>final</code> in order to ensure that the
-         * <code>equals</code> and <code>hashCode</code> methods will
+         * {@link Object#hashCode} method.  This method
+         * is {@code final} in order to ensure that the
+         * {@code equals} and {@code hashCode} methods will
          * be consistent in all subclasses.
          */
         public final int hashCode() {
@@ -2960,7 +2958,7 @@
 
         /**
          * Returns the object representing the Unicode block containing the
-         * given character, or <code>null</code> if the character is not a
+         * given character, or {@code null} if the character is not a
          * member of a defined block.
          *
          * <p><b>Note:</b> This method cannot handle
@@ -2969,9 +2967,9 @@
          * supplementary characters, use the {@link #of(int)} method.
          *
          * @param   c  The character in question
-         * @return  The <code>UnicodeBlock</code> instance representing the
+         * @return  The {@code UnicodeBlock} instance representing the
          *          Unicode block of which this character is a member, or
-         *          <code>null</code> if the character is not a member of any
+         *          {@code null} if the character is not a member of any
          *          Unicode block
          */
         public static UnicodeBlock of(char c) {
@@ -2981,16 +2979,16 @@
         /**
          * Returns the object representing the Unicode block
          * containing the given character (Unicode code point), or
-         * <code>null</code> if the character is not a member of a
+         * {@code null} if the character is not a member of a
          * defined block.
          *
          * @param   codePoint the character (Unicode code point) in question.
-         * @return  The <code>UnicodeBlock</code> instance representing the
+         * @return  The {@code UnicodeBlock} instance representing the
          *          Unicode block of which this character is a member, or
-         *          <code>null</code> if the character is not a member of any
+         *          {@code null} if the character is not a member of any
          *          Unicode block
          * @exception IllegalArgumentException if the specified
-         * <code>codePoint</code> is an invalid Unicode code point.
+         * {@code codePoint} is an invalid Unicode code point.
          * @see Character#isValidCodePoint(int)
          * @since   1.5
          */
@@ -3044,12 +3042,12 @@
          * If the Unicode Standard changes block names, both the previous and
          * current names will be accepted.
          *
-         * @param blockName A <code>UnicodeBlock</code> name.
-         * @return The <code>UnicodeBlock</code> instance identified
-         *         by <code>blockName</code>
-         * @throws IllegalArgumentException if <code>blockName</code> is an
+         * @param blockName A {@code UnicodeBlock} name.
+         * @return The {@code UnicodeBlock} instance identified
+         *         by {@code blockName}
+         * @throws IllegalArgumentException if {@code blockName} is an
          *         invalid name
-         * @throws NullPointerException if <code>blockName</code> is null
+         * @throws NullPointerException if {@code blockName} is null
          * @since 1.5
          */
         public static final UnicodeBlock forName(String blockName) {
@@ -4283,11 +4281,11 @@
          * the given character (Unicode code point) is assigned to.
          *
          * @param   codePoint the character (Unicode code point) in question.
-         * @return  The <code>UnicodeScript</code> constant representing the
+         * @return  The {@code UnicodeScript} constant representing the
          *          Unicode script of which this character is assigned to.
          *
          * @exception IllegalArgumentException if the specified
-         * <code>codePoint</code> is an invalid Unicode code point.
+         * {@code codePoint} is an invalid Unicode code point.
          * @see Character#isValidCodePoint(int)
          *
          */
@@ -4318,12 +4316,12 @@
          * case-insensitive string comparisons for script name validation.
          * <p>
          *
-         * @param scriptName A <code>UnicodeScript</code> name.
-         * @return The <code>UnicodeScript</code> constant identified
-         *         by <code>scriptName</code>
-         * @throws IllegalArgumentException if <code>scriptName</code> is an
+         * @param scriptName A {@code UnicodeScript} name.
+         * @return The {@code UnicodeScript} constant identified
+         *         by {@code scriptName}
+         * @throws IllegalArgumentException if {@code scriptName} is an
          *         invalid name
-         * @throws NullPointerException if <code>scriptName</code> is null
+         * @throws NullPointerException if {@code scriptName} is null
          */
         public static final UnicodeScript forName(String scriptName) {
             scriptName = scriptName.toUpperCase(Locale.ENGLISH);
@@ -4336,7 +4334,7 @@
     }
 
     /**
-     * The value of the <code>Character</code>.
+     * The value of the {@code Character}.
      *
      * @serial
      */
@@ -4346,11 +4344,11 @@
     private static final long serialVersionUID = 3786198910865385080L;
 
     /**
-     * Constructs a newly allocated <code>Character</code> object that
-     * represents the specified <code>char</code> value.
+     * Constructs a newly allocated {@code Character} object that
+     * represents the specified {@code char} value.
      *
      * @param  value   the value to be represented by the
-     *                  <code>Character</code> object.
+     *                  {@code Character} object.
      */
     public Character(char value) {
         this.value = value;
@@ -4377,7 +4375,7 @@
      * frequently requested values.
      *
      * This method will always cache values in the range {@code
-     * '\u005Cu0000'} to {@code '\u005Cu007f'}, inclusive, and may
+     * '\u005Cu0000'} to {@code '\u005Cu007F'}, inclusive, and may
      * cache other values outside of this range.
      *
      * @param  c a char value.
@@ -4392,8 +4390,8 @@
     }
 
     /**
-     * Returns the value of this <code>Character</code> object.
-     * @return  the primitive <code>char</code> value represented by
+     * Returns the value of this {@code Character} object.
+     * @return  the primitive {@code char} value represented by
      *          this object.
      */
     public char charValue() {
@@ -4412,13 +4410,13 @@
 
     /**
      * Compares this object against the specified object.
-     * The result is <code>true</code> if and only if the argument is not
-     * <code>null</code> and is a <code>Character</code> object that
-     * represents the same <code>char</code> value as this object.
+     * The result is {@code true} if and only if the argument is not
+     * {@code null} and is a {@code Character} object that
+     * represents the same {@code char} value as this object.
      *
      * @param   obj   the object to compare with.
-     * @return  <code>true</code> if the objects are the same;
-     *          <code>false</code> otherwise.
+     * @return  {@code true} if the objects are the same;
+     *          {@code false} otherwise.
      */
     public boolean equals(Object obj) {
         if (obj instanceof Character) {
@@ -4428,11 +4426,11 @@
     }
 
     /**
-     * Returns a <code>String</code> object representing this
-     * <code>Character</code>'s value.  The result is a string of
+     * Returns a {@code String} object representing this
+     * {@code Character}'s value.  The result is a string of
      * length 1 whose sole component is the primitive
-     * <code>char</code> value represented by this
-     * <code>Character</code> object.
+     * {@code char} value represented by this
+     * {@code Character} object.
      *
      * @return  a string representation of this object.
      */
@@ -4442,12 +4440,12 @@
     }
 
     /**
-     * Returns a <code>String</code> object representing the
-     * specified <code>char</code>.  The result is a string of length
-     * 1 consisting solely of the specified <code>char</code>.
-     *
-     * @param c the <code>char</code> to be converted
-     * @return the string representation of the specified <code>char</code>
+     * Returns a {@code String} object representing the
+     * specified {@code char}.  The result is a string of length
+     * 1 consisting solely of the specified {@code char}.
+     *
+     * @param c the {@code char} to be converted
+     * @return the string representation of the specified {@code char}
      * @since 1.4
      */
     public static String toString(char c) {
@@ -4581,7 +4579,7 @@
     }
 
     /**
-     * Determines whether the specified pair of <code>char</code>
+     * Determines whether the specified pair of {@code char}
      * values is a valid
      * <a href="http://www.unicode.org/glossary/#surrogate_pair">
      * Unicode surrogate pair</a>.
@@ -4593,9 +4591,9 @@
      *
      * @param  high the high-surrogate code value to be tested
      * @param  low the low-surrogate code value to be tested
-     * @return <code>true</code> if the specified high and
+     * @return {@code true} if the specified high and
      * low-surrogate code values represent a valid surrogate pair;
-     * <code>false</code> otherwise.
+     * {@code false} otherwise.
      * @since  1.5
      */
     public static boolean isSurrogatePair(char high, char low) {
@@ -4603,7 +4601,7 @@
     }
 
     /**
-     * Determines the number of <code>char</code> values needed to
+     * Determines the number of {@code char} values needed to
      * represent the specified character (Unicode code point). If the
      * specified character is equal to or greater than 0x10000, then
      * the method returns 2. Otherwise, the method returns 1.
@@ -4646,23 +4644,23 @@
 
     /**
      * Returns the code point at the given index of the
-     * <code>CharSequence</code>. If the <code>char</code> value at
-     * the given index in the <code>CharSequence</code> is in the
+     * {@code CharSequence}. If the {@code char} value at
+     * the given index in the {@code CharSequence} is in the
      * high-surrogate range, the following index is less than the
-     * length of the <code>CharSequence</code>, and the
-     * <code>char</code> value at the following index is in the
+     * length of the {@code CharSequence}, and the
+     * {@code char} value at the following index is in the
      * low-surrogate range, then the supplementary code point
      * corresponding to this surrogate pair is returned. Otherwise,
-     * the <code>char</code> value at the given index is returned.
-     *
-     * @param seq a sequence of <code>char</code> values (Unicode code
+     * the {@code char} value at the given index is returned.
+     *
+     * @param seq a sequence of {@code char} values (Unicode code
      * units)
-     * @param index the index to the <code>char</code> values (Unicode
-     * code units) in <code>seq</code> to be converted
+     * @param index the index to the {@code char} values (Unicode
+     * code units) in {@code seq} to be converted
      * @return the Unicode code point at the given index
-     * @exception NullPointerException if <code>seq</code> is null.
+     * @exception NullPointerException if {@code seq} is null.
      * @exception IndexOutOfBoundsException if the value
-     * <code>index</code> is negative or not less than
+     * {@code index} is negative or not less than
      * {@link CharSequence#length() seq.length()}.
      * @since  1.5
      */
@@ -4681,23 +4679,23 @@
 
     /**
      * Returns the code point at the given index of the
-     * <code>char</code> array. If the <code>char</code> value at
-     * the given index in the <code>char</code> array is in the
+     * {@code char} array. If the {@code char} value at
+     * the given index in the {@code char} array is in the
      * high-surrogate range, the following index is less than the
-     * length of the <code>char</code> array, and the
-     * <code>char</code> value at the following index is in the
+     * length of the {@code char} array, and the
+     * {@code char} value at the following index is in the
      * low-surrogate range, then the supplementary code point
      * corresponding to this surrogate pair is returned. Otherwise,
-     * the <code>char</code> value at the given index is returned.
-     *
-     * @param a the <code>char</code> array
-     * @param index the index to the <code>char</code> values (Unicode
-     * code units) in the <code>char</code> array to be converted
+     * the {@code char} value at the given index is returned.
+     *
+     * @param a the {@code char} array
+     * @param index the index to the {@code char} values (Unicode
+     * code units) in the {@code char} array to be converted
      * @return the Unicode code point at the given index
-     * @exception NullPointerException if <code>a</code> is null.
+     * @exception NullPointerException if {@code a} is null.
      * @exception IndexOutOfBoundsException if the value
-     * <code>index</code> is negative or not less than
-     * the length of the <code>char</code> array.
+     * {@code index} is negative or not less than
+     * the length of the {@code char} array.
      * @since  1.5
      */
     public static int codePointAt(char[] a, int index) {
@@ -4706,27 +4704,27 @@
 
     /**
      * Returns the code point at the given index of the
-     * <code>char</code> array, where only array elements with
-     * <code>index</code> less than <code>limit</code> can be used. If
-     * the <code>char</code> value at the given index in the
-     * <code>char</code> array is in the high-surrogate range, the
-     * following index is less than the <code>limit</code>, and the
-     * <code>char</code> value at the following index is in the
+     * {@code char} array, where only array elements with
+     * {@code index} less than {@code limit} can be used. If
+     * the {@code char} value at the given index in the
+     * {@code char} array is in the high-surrogate range, the
+     * following index is less than the {@code limit}, and the
+     * {@code char} value at the following index is in the
      * low-surrogate range, then the supplementary code point
      * corresponding to this surrogate pair is returned. Otherwise,
-     * the <code>char</code> value at the given index is returned.
-     *
-     * @param a the <code>char</code> array
-     * @param index the index to the <code>char</code> values (Unicode
-     * code units) in the <code>char</code> array to be converted
-     * @param limit the index after the last array element that can be used in the
-     * <code>char</code> array
+     * the {@code char} value at the given index is returned.
+     *
+     * @param a the {@code char} array
+     * @param index the index to the {@code char} values (Unicode
+     * code units) in the {@code char} array to be converted
+     * @param limit the index after the last array element that
+     * can be used in the {@code char} array
      * @return the Unicode code point at the given index
-     * @exception NullPointerException if <code>a</code> is null.
-     * @exception IndexOutOfBoundsException if the <code>index</code>
-     * argument is negative or not less than the <code>limit</code>
-     * argument, or if the <code>limit</code> argument is negative or
-     * greater than the length of the <code>char</code> array.
+     * @exception NullPointerException if {@code a} is null.
+     * @exception IndexOutOfBoundsException if the {@code index}
+     * argument is negative or not less than the {@code limit}
+     * argument, or if the {@code limit} argument is negative or
+     * greater than the length of the {@code char} array.
      * @since  1.5
      */
     public static int codePointAt(char[] a, int index, int limit) {
@@ -4752,21 +4750,21 @@
 
     /**
      * Returns the code point preceding the given index of the
-     * <code>CharSequence</code>. If the <code>char</code> value at
-     * <code>(index - 1)</code> in the <code>CharSequence</code> is in
-     * the low-surrogate range, <code>(index - 2)</code> is not
-     * negative, and the <code>char</code> value at <code>(index -
-     * 2)</code> in the <code>CharSequence</code> is in the
+     * {@code CharSequence}. If the {@code char} value at
+     * {@code (index - 1)} in the {@code CharSequence} is in
+     * the low-surrogate range, {@code (index - 2)} is not
+     * negative, and the {@code char} value at {@code (index - 2)}
+     * in the {@code CharSequence} is in the
      * high-surrogate range, then the supplementary code point
      * corresponding to this surrogate pair is returned. Otherwise,
-     * the <code>char</code> value at <code>(index - 1)</code> is
+     * the {@code char} value at {@code (index - 1)} is
      * returned.
      *
-     * @param seq the <code>CharSequence</code> instance
+     * @param seq the {@code CharSequence} instance
      * @param index the index following the code point that should be returned
      * @return the Unicode code point value before the given index.
-     * @exception NullPointerException if <code>seq</code> is null.
-     * @exception IndexOutOfBoundsException if the <code>index</code>
+     * @exception NullPointerException if {@code seq} is null.
+     * @exception IndexOutOfBoundsException if the {@code index}
      * argument is less than 1 or greater than {@link
      * CharSequence#length() seq.length()}.
      * @since  1.5
@@ -4786,23 +4784,23 @@
 
     /**
      * Returns the code point preceding the given index of the
-     * <code>char</code> array. If the <code>char</code> value at
-     * <code>(index - 1)</code> in the <code>char</code> array is in
-     * the low-surrogate range, <code>(index - 2)</code> is not
-     * negative, and the <code>char</code> value at <code>(index -
-     * 2)</code> in the <code>char</code> array is in the
+     * {@code char} array. If the {@code char} value at
+     * {@code (index - 1)} in the {@code char} array is in
+     * the low-surrogate range, {@code (index - 2)} is not
+     * negative, and the {@code char} value at {@code (index - 2)}
+     * in the {@code char} array is in the
      * high-surrogate range, then the supplementary code point
      * corresponding to this surrogate pair is returned. Otherwise,
-     * the <code>char</code> value at <code>(index - 1)</code> is
+     * the {@code char} value at {@code (index - 1)} is
      * returned.
      *
-     * @param a the <code>char</code> array
+     * @param a the {@code char} array
      * @param index the index following the code point that should be returned
      * @return the Unicode code point value before the given index.
-     * @exception NullPointerException if <code>a</code> is null.
-     * @exception IndexOutOfBoundsException if the <code>index</code>
+     * @exception NullPointerException if {@code a} is null.
+     * @exception IndexOutOfBoundsException if the {@code index}
      * argument is less than 1 or greater than the length of the
-     * <code>char</code> array
+     * {@code char} array
      * @since  1.5
      */
     public static int codePointBefore(char[] a, int index) {
@@ -4811,29 +4809,29 @@
 
     /**
      * Returns the code point preceding the given index of the
-     * <code>char</code> array, where only array elements with
-     * <code>index</code> greater than or equal to <code>start</code>
-     * can be used. If the <code>char</code> value at <code>(index -
-     * 1)</code> in the <code>char</code> array is in the
-     * low-surrogate range, <code>(index - 2)</code> is not less than
-     * <code>start</code>, and the <code>char</code> value at
-     * <code>(index - 2)</code> in the <code>char</code> array is in
+     * {@code char} array, where only array elements with
+     * {@code index} greater than or equal to {@code start}
+     * can be used. If the {@code char} value at {@code (index - 1)}
+     * in the {@code char} array is in the
+     * low-surrogate range, {@code (index - 2)} is not less than
+     * {@code start}, and the {@code char} value at
+     * {@code (index - 2)} in the {@code char} array is in
      * the high-surrogate range, then the supplementary code point
      * corresponding to this surrogate pair is returned. Otherwise,
-     * the <code>char</code> value at <code>(index - 1)</code> is
+     * the {@code char} value at {@code (index - 1)} is
      * returned.
      *
-     * @param a the <code>char</code> array
+     * @param a the {@code char} array
      * @param index the index following the code point that should be returned
      * @param start the index of the first array element in the
-     * <code>char</code> array
+     * {@code char} array
      * @return the Unicode code point value before the given index.
-     * @exception NullPointerException if <code>a</code> is null.
-     * @exception IndexOutOfBoundsException if the <code>index</code>
-     * argument is not greater than the <code>start</code> argument or
-     * is greater than the length of the <code>char</code> array, or
-     * if the <code>start</code> argument is negative or not less than
-     * the length of the <code>char</code> array.
+     * @exception NullPointerException if {@code a} is null.
+     * @exception IndexOutOfBoundsException if the {@code index}
+     * argument is not greater than the {@code start} argument or
+     * is greater than the length of the {@code char} array, or
+     * if the {@code start} argument is negative or not less than
+     * the length of the {@code char} array.
      * @since  1.5
      */
     public static int codePointBefore(char[] a, int index, int start) {
@@ -4918,31 +4916,31 @@
      * Converts the specified character (Unicode code point) to its
      * UTF-16 representation. If the specified code point is a BMP
      * (Basic Multilingual Plane or Plane 0) value, the same value is
-     * stored in <code>dst[dstIndex]</code>, and 1 is returned. If the
+     * stored in {@code dst[dstIndex]}, and 1 is returned. If the
      * specified code point is a supplementary character, its
-     * surrogate values are stored in <code>dst[dstIndex]</code>
-     * (high-surrogate) and <code>dst[dstIndex+1]</code>
+     * surrogate values are stored in {@code dst[dstIndex]}
+     * (high-surrogate) and {@code dst[dstIndex+1]}
      * (low-surrogate), and 2 is returned.
      *
      * @param  codePoint the character (Unicode code point) to be converted.
-     * @param  dst an array of <code>char</code> in which the
-     * <code>codePoint</code>'s UTF-16 value is stored.
-     * @param dstIndex the start index into the <code>dst</code>
+     * @param  dst an array of {@code char} in which the
+     * {@code codePoint}'s UTF-16 value is stored.
+     * @param dstIndex the start index into the {@code dst}
      * array where the converted value is stored.
      * @return 1 if the code point is a BMP code point, 2 if the
      * code point is a supplementary code point.
      * @exception IllegalArgumentException if the specified
-     * <code>codePoint</code> is not a valid Unicode code point.
-     * @exception NullPointerException if the specified <code>dst</code> is null.
-     * @exception IndexOutOfBoundsException if <code>dstIndex</code>
-     * is negative or not less than <code>dst.length</code>, or if
-     * <code>dst</code> at <code>dstIndex</code> doesn't have enough
-     * array element(s) to store the resulting <code>char</code>
-     * value(s). (If <code>dstIndex</code> is equal to
-     * <code>dst.length-1</code> and the specified
-     * <code>codePoint</code> is a supplementary character, the
+     * {@code codePoint} is not a valid Unicode code point.
+     * @exception NullPointerException if the specified {@code dst} is null.
+     * @exception IndexOutOfBoundsException if {@code dstIndex}
+     * is negative or not less than {@code dst.length}, or if
+     * {@code dst} at {@code dstIndex} doesn't have enough
+     * array element(s) to store the resulting {@code char}
+     * value(s). (If {@code dstIndex} is equal to
+     * {@code dst.length-1} and the specified
+     * {@code codePoint} is a supplementary character, the
      * high-surrogate value is not stored in
-     * <code>dst[dstIndex]</code>.)
+     * {@code dst[dstIndex]}.)
      * @since  1.5
      */
     public static int toChars(int codePoint, char[] dst, int dstIndex) {
@@ -4959,18 +4957,18 @@
 
     /**
      * Converts the specified character (Unicode code point) to its
-     * UTF-16 representation stored in a <code>char</code> array. If
+     * UTF-16 representation stored in a {@code char} array. If
      * the specified code point is a BMP (Basic Multilingual Plane or
-     * Plane 0) value, the resulting <code>char</code> array has
-     * the same value as <code>codePoint</code>. If the specified code
+     * Plane 0) value, the resulting {@code char} array has
+     * the same value as {@code codePoint}. If the specified code
      * point is a supplementary code point, the resulting
-     * <code>char</code> array has the corresponding surrogate pair.
+     * {@code char} array has the corresponding surrogate pair.
      *
      * @param  codePoint a Unicode code point
-     * @return a <code>char</code> array having
-     *         <code>codePoint</code>'s UTF-16 representation.
+     * @return a {@code char} array having
+     *         {@code codePoint}'s UTF-16 representation.
      * @exception IllegalArgumentException if the specified
-     * <code>codePoint</code> is not a valid Unicode code point.
+     * {@code codePoint} is not a valid Unicode code point.
      * @since  1.5
      */
     public static char[] toChars(int codePoint) {
@@ -4994,24 +4992,24 @@
     /**
      * Returns the number of Unicode code points in the text range of
      * the specified char sequence. The text range begins at the
-     * specified <code>beginIndex</code> and extends to the
-     * <code>char</code> at index <code>endIndex - 1</code>. Thus the
-     * length (in <code>char</code>s) of the text range is
-     * <code>endIndex-beginIndex</code>. Unpaired surrogates within
+     * specified {@code beginIndex} and extends to the
+     * {@code char} at index {@code endIndex - 1}. Thus the
+     * length (in {@code char}s) of the text range is
+     * {@code endIndex-beginIndex}. Unpaired surrogates within
      * the text range count as one code point each.
      *
      * @param seq the char sequence
-     * @param beginIndex the index to the first <code>char</code> of
+     * @param beginIndex the index to the first {@code char} of
      * the text range.
-     * @param endIndex the index after the last <code>char</code> of
+     * @param endIndex the index after the last {@code char} of
      * the text range.
      * @return the number of Unicode code points in the specified text
      * range
-     * @exception NullPointerException if <code>seq</code> is null.
+     * @exception NullPointerException if {@code seq} is null.
      * @exception IndexOutOfBoundsException if the
-     * <code>beginIndex</code> is negative, or <code>endIndex</code>
+     * {@code beginIndex} is negative, or {@code endIndex}
      * is larger than the length of the given sequence, or
-     * <code>beginIndex</code> is larger than <code>endIndex</code>.
+     * {@code beginIndex} is larger than {@code endIndex}.
      * @since  1.5
      */
     public static int codePointCount(CharSequence seq, int beginIndex, int endIndex) {
@@ -5032,21 +5030,21 @@
 
     /**
      * Returns the number of Unicode code points in a subarray of the
-     * <code>char</code> array argument. The <code>offset</code>
-     * argument is the index of the first <code>char</code> of the
-     * subarray and the <code>count</code> argument specifies the
-     * length of the subarray in <code>char</code>s. Unpaired
+     * {@code char} array argument. The {@code offset}
+     * argument is the index of the first {@code char} of the
+     * subarray and the {@code count} argument specifies the
+     * length of the subarray in {@code char}s. Unpaired
      * surrogates within the subarray count as one code point each.
      *
-     * @param a the <code>char</code> array
-     * @param offset the index of the first <code>char</code> in the
-     * given <code>char</code> array
-     * @param count the length of the subarray in <code>char</code>s
+     * @param a the {@code char} array
+     * @param offset the index of the first {@code char} in the
+     * given {@code char} array
+     * @param count the length of the subarray in {@code char}s
      * @return the number of Unicode code points in the specified subarray
-     * @exception NullPointerException if <code>a</code> is null.
-     * @exception IndexOutOfBoundsException if <code>offset</code> or
-     * <code>count</code> is negative, or if <code>offset +
-     * count</code> is larger than the length of the given array.
+     * @exception NullPointerException if {@code a} is null.
+     * @exception IndexOutOfBoundsException if {@code offset} or
+     * {@code count} is negative, or if {@code offset +
+     * count} is larger than the length of the given array.
      * @since  1.5
      */
     public static int codePointCount(char[] a, int offset, int count) {
@@ -5071,24 +5069,24 @@
 
     /**
      * Returns the index within the given char sequence that is offset
-     * from the given <code>index</code> by <code>codePointOffset</code>
+     * from the given {@code index} by {@code codePointOffset}
      * code points. Unpaired surrogates within the text range given by
-     * <code>index</code> and <code>codePointOffset</code> count as
+     * {@code index} and {@code codePointOffset} count as
      * one code point each.
      *
      * @param seq the char sequence
      * @param index the index to be offset
      * @param codePointOffset the offset in code points
      * @return the index within the char sequence
-     * @exception NullPointerException if <code>seq</code> is null.
-     * @exception IndexOutOfBoundsException if <code>index</code>
+     * @exception NullPointerException if {@code seq} is null.
+     * @exception IndexOutOfBoundsException if {@code index}
      *   is negative or larger then the length of the char sequence,
-     *   or if <code>codePointOffset</code> is positive and the
-     *   subsequence starting with <code>index</code> has fewer than
-     *   <code>codePointOffset</code> code points, or if
-     *   <code>codePointOffset</code> is negative and the subsequence
-     *   before <code>index</code> has fewer than the absolute value
-     *   of <code>codePointOffset</code> code points.
+     *   or if {@code codePointOffset} is positive and the
+     *   subsequence starting with {@code index} has fewer than
+     *   {@code codePointOffset} code points, or if
+     *   {@code codePointOffset} is negative and the subsequence
+     *   before {@code index} has fewer than the absolute value
+     *   of {@code codePointOffset} code points.
      * @since 1.5
      */
     public static int offsetByCodePoints(CharSequence seq, int index,
@@ -5126,36 +5124,36 @@
     }
 
     /**
-     * Returns the index within the given <code>char</code> subarray
-     * that is offset from the given <code>index</code> by
-     * <code>codePointOffset</code> code points. The
-     * <code>start</code> and <code>count</code> arguments specify a
-     * subarray of the <code>char</code> array. Unpaired surrogates
-     * within the text range given by <code>index</code> and
-     * <code>codePointOffset</code> count as one code point each.
-     *
-     * @param a the <code>char</code> array
-     * @param start the index of the first <code>char</code> of the
+     * Returns the index within the given {@code char} subarray
+     * that is offset from the given {@code index} by
+     * {@code codePointOffset} code points. The
+     * {@code start} and {@code count} arguments specify a
+     * subarray of the {@code char} array. Unpaired surrogates
+     * within the text range given by {@code index} and
+     * {@code codePointOffset} count as one code point each.
+     *
+     * @param a the {@code char} array
+     * @param start the index of the first {@code char} of the
      * subarray
-     * @param count the length of the subarray in <code>char</code>s
+     * @param count the length of the subarray in {@code char}s
      * @param index the index to be offset
      * @param codePointOffset the offset in code points
      * @return the index within the subarray
-     * @exception NullPointerException if <code>a</code> is null.
+     * @exception NullPointerException if {@code a} is null.
      * @exception IndexOutOfBoundsException
-     *   if <code>start</code> or <code>count</code> is negative,
-     *   or if <code>start + count</code> is larger than the length of
+     *   if {@code start} or {@code count} is negative,
+     *   or if {@code start + count} is larger than the length of
      *   the given array,
-     *   or if <code>index</code> is less than <code>start</code> or
-     *   larger then <code>start + count</code>,
-     *   or if <code>codePointOffset</code> is positive and the text range
-     *   starting with <code>index</code> and ending with <code>start
-     *   + count - 1</code> has fewer than <code>codePointOffset</code> code
+     *   or if {@code index} is less than {@code start} or
+     *   larger then {@code start + count},
+     *   or if {@code codePointOffset} is positive and the text range
+     *   starting with {@code index} and ending with {@code start + count - 1}
+     *   has fewer than {@code codePointOffset} code
      *   points,
-     *   or if <code>codePointOffset</code> is negative and the text range
-     *   starting with <code>start</code> and ending with <code>index
-     *   - 1</code> has fewer than the absolute value of
-     *   <code>codePointOffset</code> code points.
+     *   or if {@code codePointOffset} is negative and the text range
+     *   starting with {@code start} and ending with {@code index - 1}
+     *   has fewer than the absolute value of
+     *   {@code codePointOffset} code points.
      * @since 1.5
      */
     public static int offsetByCodePoints(char[] a, int start, int count,
@@ -5201,8 +5199,8 @@
      * Determines if the specified character is a lowercase character.
      * <p>
      * A character is lowercase if its general category type, provided
-     * by <code>Character.getType(ch)</code>, is
-     * <code>LOWERCASE_LETTER</code>.
+     * by {@code Character.getType(ch)}, is
+     * {@code LOWERCASE_LETTER}.
      * <p>
      * The following are examples of lowercase characters:
      * <p><blockquote><pre>
@@ -5220,8 +5218,8 @@
      * the {@link #isLowerCase(int)} method.
      *
      * @param   ch   the character to be tested.
-     * @return  <code>true</code> if the character is lowercase;
-     *          <code>false</code> otherwise.
+     * @return  {@code true} if the character is lowercase;
+     *          {@code false} otherwise.
      * @see     Character#isLowerCase(char)
      * @see     Character#isTitleCase(char)
      * @see     Character#toLowerCase(char)
@@ -5237,7 +5235,7 @@
      * <p>
      * A character is lowercase if its general category type, provided
      * by {@link Character#getType getType(codePoint)}, is
-     * <code>LOWERCASE_LETTER</code>.
+     * {@code LOWERCASE_LETTER}.
      * <p>
      * The following are examples of lowercase characters:
      * <p><blockquote><pre>
@@ -5250,8 +5248,8 @@
      * <p> Many other Unicode characters are lowercase too.
      *
      * @param   codePoint the character (Unicode code point) to be tested.
-     * @return  <code>true</code> if the character is lowercase;
-     *          <code>false</code> otherwise.
+     * @return  {@code true} if the character is lowercase;
+     *          {@code false} otherwise.
      * @see     Character#isLowerCase(int)
      * @see     Character#isTitleCase(int)
      * @see     Character#toLowerCase(int)
@@ -5266,7 +5264,7 @@
      * Determines if the specified character is an uppercase character.
      * <p>
      * A character is uppercase if its general category type, provided by
-     * <code>Character.getType(ch)</code>, is <code>UPPERCASE_LETTER</code>.
+     * {@code Character.getType(ch)}, is {@code UPPERCASE_LETTER}.
      * <p>
      * The following are examples of uppercase characters:
      * <p><blockquote><pre>
@@ -5284,8 +5282,8 @@
      * the {@link #isUpperCase(int)} method.
      *
      * @param   ch   the character to be tested.
-     * @return  <code>true</code> if the character is uppercase;
-     *          <code>false</code> otherwise.
+     * @return  {@code true} if the character is uppercase;
+     *          {@code false} otherwise.
      * @see     Character#isLowerCase(char)
      * @see     Character#isTitleCase(char)
      * @see     Character#toUpperCase(char)
@@ -5300,7 +5298,7 @@
      * Determines if the specified character (Unicode code point) is an uppercase character.
      * <p>
      * A character is uppercase if its general category type, provided by
-     * {@link Character#getType(int) getType(codePoint)}, is <code>UPPERCASE_LETTER</code>.
+     * {@link Character#getType(int) getType(codePoint)}, is {@code UPPERCASE_LETTER}.
      * <p>
      * The following are examples of uppercase characters:
      * <p><blockquote><pre>
@@ -5313,8 +5311,8 @@
      * <p> Many other Unicode characters are uppercase too.<p>
      *
      * @param   codePoint the character (Unicode code point) to be tested.
-     * @return  <code>true</code> if the character is uppercase;
-     *          <code>false</code> otherwise.
+     * @return  {@code true} if the character is uppercase;
+     *          {@code false} otherwise.
      * @see     Character#isLowerCase(int)
      * @see     Character#isTitleCase(int)
      * @see     Character#toUpperCase(int)
@@ -5329,8 +5327,8 @@
      * Determines if the specified character is a titlecase character.
      * <p>
      * A character is a titlecase character if its general
-     * category type, provided by <code>Character.getType(ch)</code>,
-     * is <code>TITLECASE_LETTER</code>.
+     * category type, provided by {@code Character.getType(ch)},
+     * is {@code TITLECASE_LETTER}.
      * <p>
      * Some characters look like pairs of Latin letters. For example, there
      * is an uppercase letter that looks like "LJ" and has a corresponding
@@ -5339,12 +5337,12 @@
      * with initial capitals, as for a book title.
      * <p>
      * These are some of the Unicode characters for which this method returns
-     * <code>true</code>:
+     * {@code true}:
      * <ul>
-     * <li><code>LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON</code>
-     * <li><code>LATIN CAPITAL LETTER L WITH SMALL LETTER J</code>
-     * <li><code>LATIN CAPITAL LETTER N WITH SMALL LETTER J</code>
-     * <li><code>LATIN CAPITAL LETTER D WITH SMALL LETTER Z</code>
+     * <li>{@code LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON}
+     * <li>{@code LATIN CAPITAL LETTER L WITH SMALL LETTER J}
+     * <li>{@code LATIN CAPITAL LETTER N WITH SMALL LETTER J}
+     * <li>{@code LATIN CAPITAL LETTER D WITH SMALL LETTER Z}
      * </ul>
      * <p> Many other Unicode characters are titlecase too.<p>
      *
@@ -5354,8 +5352,8 @@
      * the {@link #isTitleCase(int)} method.
      *
      * @param   ch   the character to be tested.
-     * @return  <code>true</code> if the character is titlecase;
-     *          <code>false</code> otherwise.
+     * @return  {@code true} if the character is titlecase;
+     *          {@code false} otherwise.
      * @see     Character#isLowerCase(char)
      * @see     Character#isUpperCase(char)
      * @see     Character#toTitleCase(char)
@@ -5371,7 +5369,7 @@
      * <p>
      * A character is a titlecase character if its general
      * category type, provided by {@link Character#getType(int) getType(codePoint)},
-     * is <code>TITLECASE_LETTER</code>.
+     * is {@code TITLECASE_LETTER}.
      * <p>
      * Some characters look like pairs of Latin letters. For example, there
      * is an uppercase letter that looks like "LJ" and has a corresponding
@@ -5380,18 +5378,18 @@
      * with initial capitals, as for a book title.
      * <p>
      * These are some of the Unicode characters for which this method returns
-     * <code>true</code>:
+     * {@code true}:
      * <ul>
-     * <li><code>LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON</code>
-     * <li><code>LATIN CAPITAL LETTER L WITH SMALL LETTER J</code>
-     * <li><code>LATIN CAPITAL LETTER N WITH SMALL LETTER J</code>
-     * <li><code>LATIN CAPITAL LETTER D WITH SMALL LETTER Z</code>
+     * <li>{@code LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON}
+     * <li>{@code LATIN CAPITAL LETTER L WITH SMALL LETTER J}
+     * <li>{@code LATIN CAPITAL LETTER N WITH SMALL LETTER J}
+     * <li>{@code LATIN CAPITAL LETTER D WITH SMALL LETTER Z}
      * </ul>
      * <p> Many other Unicode characters are titlecase too.<p>
      *
      * @param   codePoint the character (Unicode code point) to be tested.
-     * @return  <code>true</code> if the character is titlecase;
-     *          <code>false</code> otherwise.
+     * @return  {@code true} if the character is titlecase;
+     *          {@code false} otherwise.
      * @see     Character#isLowerCase(int)
      * @see     Character#isUpperCase(int)
      * @see     Character#toTitleCase(int)
@@ -5406,20 +5404,20 @@
      * Determines if the specified character is a digit.
      * <p>
      * A character is a digit if its general category type, provided
-     * by <code>Character.getType(ch)</code>, is
-     * <code>DECIMAL_DIGIT_NUMBER</code>.
+     * by {@code Character.getType(ch)}, is
+     * {@code DECIMAL_DIGIT_NUMBER}.
      * <p>
      * Some Unicode character ranges that contain digits:
      * <ul>
-     * <li><code>'&#92;u0030'</code> through <code>'&#92;u0039'</code>,
-     *     ISO-LATIN-1 digits (<code>'0'</code> through <code>'9'</code>)
-     * <li><code>'&#92;u0660'</code> through <code>'&#92;u0669'</code>,
+     * <li>{@code '\u005Cu0030'} through {@code '\u005Cu0039'},
+     *     ISO-LATIN-1 digits ({@code '0'} through {@code '9'})
+     * <li>{@code '\u005Cu0660'} through {@code '\u005Cu0669'},
      *     Arabic-Indic digits
-     * <li><code>'&#92;u06F0'</code> through <code>'&#92;u06F9'</code>,
+     * <li>{@code '\u005Cu06F0'} through {@code '\u005Cu06F9'},
      *     Extended Arabic-Indic digits
-     * <li><code>'&#92;u0966'</code> through <code>'&#92;u096F'</code>,
+     * <li>{@code '\u005Cu0966'} through {@code '\u005Cu096F'},
      *     Devanagari digits
-     * <li><code>'&#92;uFF10'</code> through <code>'&#92;uFF19'</code>,
+     * <li>{@code '\u005CuFF10'} through {@code '\u005CuFF19'},
      *     Fullwidth digits
      * </ul>
      *
@@ -5431,8 +5429,8 @@
      * the {@link #isDigit(int)} method.
      *
      * @param   ch   the character to be tested.
-     * @return  <code>true</code> if the character is a digit;
-     *          <code>false</code> otherwise.
+     * @return  {@code true} if the character is a digit;
+     *          {@code false} otherwise.
      * @see     Character#digit(char, int)
      * @see     Character#forDigit(int, int)
      * @see     Character#getType(char)
@@ -5446,27 +5444,27 @@
      * <p>
      * A character is a digit if its general category type, provided
      * by {@link Character#getType(int) getType(codePoint)}, is
-     * <code>DECIMAL_DIGIT_NUMBER</code>.
+     * {@code DECIMAL_DIGIT_NUMBER}.
      * <p>
      * Some Unicode character ranges that contain digits:
      * <ul>
-     * <li><code>'&#92;u0030'</code> through <code>'&#92;u0039'</code>,
-     *     ISO-LATIN-1 digits (<code>'0'</code> through <code>'9'</code>)
-     * <li><code>'&#92;u0660'</code> through <code>'&#92;u0669'</code>,
+     * <li>{@code '\u005Cu0030'} through {@code '\u005Cu0039'},
+     *     ISO-LATIN-1 digits ({@code '0'} through {@code '9'})
+     * <li>{@code '\u005Cu0660'} through {@code '\u005Cu0669'},
      *     Arabic-Indic digits
-     * <li><code>'&#92;u06F0'</code> through <code>'&#92;u06F9'</code>,
+     * <li>{@code '\u005Cu06F0'} through {@code '\u005Cu06F9'},
      *     Extended Arabic-Indic digits
-     * <li><code>'&#92;u0966'</code> through <code>'&#92;u096F'</code>,
+     * <li>{@code '\u005Cu0966'} through {@code '\u005Cu096F'},
      *     Devanagari digits
-     * <li><code>'&#92;uFF10'</code> through <code>'&#92;uFF19'</code>,
+     * <li>{@code '\u005CuFF10'} through {@code '\u005CuFF19'},
      *     Fullwidth digits
      * </ul>
      *
      * Many other character ranges contain digits as well.
      *
      * @param   codePoint the character (Unicode code point) to be tested.
-     * @return  <code>true</code> if the character is a digit;
-     *          <code>false</code> otherwise.
+     * @return  {@code true} if the character is a digit;
+     *          {@code false} otherwise.
      * @see     Character#forDigit(int, int)
      * @see     Character#getType(int)
      * @since   1.5
@@ -5490,8 +5488,8 @@
      * the {@link #isDefined(int)} method.
      *
      * @param   ch   the character to be tested
-     * @return  <code>true</code> if the character has a defined meaning
-     *          in Unicode; <code>false</code> otherwise.
+     * @return  {@code true} if the character has a defined meaning
+     *          in Unicode; {@code false} otherwise.
      * @see     Character#isDigit(char)
      * @see     Character#isLetter(char)
      * @see     Character#isLetterOrDigit(char)
@@ -5514,8 +5512,8 @@
      * </ul>
      *
      * @param   codePoint the character (Unicode code point) to be tested.
-     * @return  <code>true</code> if the character has a defined meaning
-     *          in Unicode; <code>false</code> otherwise.
+     * @return  {@code true} if the character has a defined meaning
+     *          in Unicode; {@code false} otherwise.
      * @see     Character#isDigit(int)
      * @see     Character#isLetter(int)
      * @see     Character#isLetterOrDigit(int)
@@ -5532,14 +5530,14 @@
      * Determines if the specified character is a letter.
      * <p>
      * A character is considered to be a letter if its general
-     * category type, provided by <code>Character.getType(ch)</code>,
+     * category type, provided by {@code Character.getType(ch)},
      * is any of the following:
      * <ul>
-     * <li> <code>UPPERCASE_LETTER</code>
-     * <li> <code>LOWERCASE_LETTER</code>
-     * <li> <code>TITLECASE_LETTER</code>
-     * <li> <code>MODIFIER_LETTER</code>
-     * <li> <code>OTHER_LETTER</code>
+     * <li> {@code UPPERCASE_LETTER}
+     * <li> {@code LOWERCASE_LETTER}
+     * <li> {@code TITLECASE_LETTER}
+     * <li> {@code MODIFIER_LETTER}
+     * <li> {@code OTHER_LETTER}
      * </ul>
      *
      * Not all letters have case. Many characters are
@@ -5551,8 +5549,8 @@
      * the {@link #isLetter(int)} method.
      *
      * @param   ch   the character to be tested.
-     * @return  <code>true</code> if the character is a letter;
-     *          <code>false</code> otherwise.
+     * @return  {@code true} if the character is a letter;
+     *          {@code false} otherwise.
      * @see     Character#isDigit(char)
      * @see     Character#isJavaIdentifierStart(char)
      * @see     Character#isJavaLetter(char)
@@ -5574,19 +5572,19 @@
      * category type, provided by {@link Character#getType(int) getType(codePoint)},
      * is any of the following:
      * <ul>
-     * <li> <code>UPPERCASE_LETTER</code>
-     * <li> <code>LOWERCASE_LETTER</code>
-     * <li> <code>TITLECASE_LETTER</code>
-     * <li> <code>MODIFIER_LETTER</code>
-     * <li> <code>OTHER_LETTER</code>
+     * <li> {@code UPPERCASE_LETTER}
+     * <li> {@code LOWERCASE_LETTER}
+     * <li> {@code TITLECASE_LETTER}
+     * <li> {@code MODIFIER_LETTER}
+     * <li> {@code OTHER_LETTER}
      * </ul>
      *
      * Not all letters have case. Many characters are
      * letters but are neither uppercase nor lowercase nor titlecase.
      *
      * @param   codePoint the character (Unicode code point) to be tested.
-     * @return  <code>true</code> if the character is a letter;
-     *          <code>false</code> otherwise.
+     * @return  {@code true} if the character is a letter;
+     *          {@code false} otherwise.
      * @see     Character#isDigit(int)
      * @see     Character#isJavaIdentifierStart(int)
      * @see     Character#isLetterOrDigit(int)
@@ -5609,9 +5607,9 @@
      * Determines if the specified character is a letter or digit.
      * <p>
      * A character is considered to be a letter or digit if either
-     * <code>Character.isLetter(char ch)</code> or
-     * <code>Character.isDigit(char ch)</code> returns
-     * <code>true</code> for the character.
+     * {@code Character.isLetter(char ch)} or
+     * {@code Character.isDigit(char ch)} returns
+     * {@code true} for the character.
      *
      * <p><b>Note:</b> This method cannot handle <a
      * href="#supplementary"> supplementary characters</a>. To support
@@ -5619,8 +5617,8 @@
      * the {@link #isLetterOrDigit(int)} method.
      *
      * @param   ch   the character to be tested.
-     * @return  <code>true</code> if the character is a letter or digit;
-     *          <code>false</code> otherwise.
+     * @return  {@code true} if the character is a letter or digit;
+     *          {@code false} otherwise.
      * @see     Character#isDigit(char)
      * @see     Character#isJavaIdentifierPart(char)
      * @see     Character#isJavaLetter(char)
@@ -5639,11 +5637,11 @@
      * A character is considered to be a letter or digit if either
      * {@link #isLetter(int) isLetter(codePoint)} or
      * {@link #isDigit(int) isDigit(codePoint)} returns
-     * <code>true</code> for the character.
+     * {@code true} for the character.
      *
      * @param   codePoint the character (Unicode code point) to be tested.
-     * @return  <code>true</code> if the character is a letter or digit;
-     *          <code>false</code> otherwise.
+     * @return  {@code true} if the character is a letter or digit;
+     *          {@code false} otherwise.
      * @see     Character#isDigit(int)
      * @see     Character#isJavaIdentifierPart(int)
      * @see     Character#isLetter(int)
@@ -5667,15 +5665,15 @@
      * A character may start a Java identifier if and only if
      * one of the following is true:
      * <ul>
-     * <li> {@link #isLetter(char) isLetter(ch)} returns <code>true</code>
-     * <li> {@link #getType(char) getType(ch)} returns <code>LETTER_NUMBER</code>
-     * <li> ch is a currency symbol (such as "$")
-     * <li> ch is a connecting punctuation character (such as "_").
+     * <li> {@link #isLetter(char) isLetter(ch)} returns {@code true}
+     * <li> {@link #getType(char) getType(ch)} returns {@code LETTER_NUMBER}
+     * <li> {@code ch} is a currency symbol (such as {@code '$'})
+     * <li> {@code ch} is a connecting punctuation character (such as {@code '_'}).
      * </ul>
      *
      * @param   ch the character to be tested.
-     * @return  <code>true</code> if the character may start a Java
-     *          identifier; <code>false</code> otherwise.
+     * @return  {@code true} if the character may start a Java
+     *          identifier; {@code false} otherwise.
      * @see     Character#isJavaLetterOrDigit(char)
      * @see     Character#isJavaIdentifierStart(char)
      * @see     Character#isJavaIdentifierPart(char)
@@ -5698,19 +5696,19 @@
      * of the following are true:
      * <ul>
      * <li>  it is a letter
-     * <li>  it is a currency symbol (such as <code>'$'</code>)
-     * <li>  it is a connecting punctuation character (such as <code>'_'</code>)
+     * <li>  it is a currency symbol (such as {@code '$'})
+     * <li>  it is a connecting punctuation character (such as {@code '_'})
      * <li>  it is a digit
      * <li>  it is a numeric letter (such as a Roman numeral character)
      * <li>  it is a combining mark
      * <li>  it is a non-spacing mark
-     * <li> <code>isIdentifierIgnorable</code> returns
-     * <code>true</code> for the character.
+     * <li> {@code isIdentifierIgnorable} returns
+     * {@code true} for the character.
      * </ul>
      *
      * @param   ch the character to be tested.
-     * @return  <code>true</code> if the character may be part of a
-     *          Java identifier; <code>false</code> otherwise.
+     * @return  {@code true} if the character may be part of a
+     *          Java identifier; {@code false} otherwise.
      * @see     Character#isJavaLetter(char)
      * @see     Character#isJavaIdentifierStart(char)
      * @see     Character#isJavaIdentifierPart(char)
@@ -5733,10 +5731,10 @@
      * A character may start a Java identifier if and only if
      * one of the following conditions is true:
      * <ul>
-     * <li> {@link #isLetter(char) isLetter(ch)} returns <code>true</code>
-     * <li> {@link #getType(char) getType(ch)} returns <code>LETTER_NUMBER</code>
-     * <li> ch is a currency symbol (such as "$")
-     * <li> ch is a connecting punctuation character (such as "_").
+     * <li> {@link #isLetter(char) isLetter(ch)} returns {@code true}
+     * <li> {@link #getType(char) getType(ch)} returns {@code LETTER_NUMBER}
+     * <li> {@code ch} is a currency symbol (such as {@code '$'})
+     * <li> {@code ch} is a connecting punctuation character (such as {@code '_'}).
      * </ul>
      *
      * <p><b>Note:</b> This method cannot handle <a
@@ -5745,8 +5743,8 @@
      * the {@link #isJavaIdentifierStart(int)} method.
      *
      * @param   ch the character to be tested.
-     * @return  <code>true</code> if the character may start a Java identifier;
-     *          <code>false</code> otherwise.
+     * @return  {@code true} if the character may start a Java identifier;
+     *          {@code false} otherwise.
      * @see     Character#isJavaIdentifierPart(char)
      * @see     Character#isLetter(char)
      * @see     Character#isUnicodeIdentifierStart(char)
@@ -5765,17 +5763,17 @@
      * one of the following conditions is true:
      * <ul>
      * <li> {@link #isLetter(int) isLetter(codePoint)}
-     *      returns <code>true</code>
+     *      returns {@code true}
      * <li> {@link #getType(int) getType(codePoint)}
-     *      returns <code>LETTER_NUMBER</code>
-     * <li> the referenced character is a currency symbol (such as "$")
+     *      returns {@code LETTER_NUMBER}
+     * <li> the referenced character is a currency symbol (such as {@code '$'})
      * <li> the referenced character is a connecting punctuation character
-     *      (such as "_").
+     *      (such as {@code '_'}).
      * </ul>
      *
      * @param   codePoint the character (Unicode code point) to be tested.
-     * @return  <code>true</code> if the character may start a Java identifier;
-     *          <code>false</code> otherwise.
+     * @return  {@code true} if the character may start a Java identifier;
+     *          {@code false} otherwise.
      * @see     Character#isJavaIdentifierPart(int)
      * @see     Character#isLetter(int)
      * @see     Character#isUnicodeIdentifierStart(int)
@@ -5794,14 +5792,14 @@
      * are true:
      * <ul>
      * <li>  it is a letter
-     * <li>  it is a currency symbol (such as <code>'$'</code>)
-     * <li>  it is a connecting punctuation character (such as <code>'_'</code>)
+     * <li>  it is a currency symbol (such as {@code '$'})
+     * <li>  it is a connecting punctuation character (such as {@code '_'})
      * <li>  it is a digit
      * <li>  it is a numeric letter (such as a Roman numeral character)
      * <li>  it is a combining mark
      * <li>  it is a non-spacing mark
-     * <li> <code>isIdentifierIgnorable</code> returns
-     * <code>true</code> for the character
+     * <li> {@code isIdentifierIgnorable} returns
+     * {@code true} for the character
      * </ul>
      *
      * <p><b>Note:</b> This method cannot handle <a
@@ -5810,8 +5808,8 @@
      * the {@link #isJavaIdentifierPart(int)} method.
      *
      * @param   ch      the character to be tested.
-     * @return <code>true</code> if the character may be part of a
-     *          Java identifier; <code>false</code> otherwise.
+     * @return {@code true} if the character may be part of a
+     *          Java identifier; {@code false} otherwise.
      * @see     Character#isIdentifierIgnorable(char)
      * @see     Character#isJavaIdentifierStart(char)
      * @see     Character#isLetterOrDigit(char)
@@ -5831,20 +5829,20 @@
      * are true:
      * <ul>
      * <li>  it is a letter
-     * <li>  it is a currency symbol (such as <code>'$'</code>)
-     * <li>  it is a connecting punctuation character (such as <code>'_'</code>)
+     * <li>  it is a currency symbol (such as {@code '$'})
+     * <li>  it is a connecting punctuation character (such as {@code '_'})
      * <li>  it is a digit
      * <li>  it is a numeric letter (such as a Roman numeral character)
      * <li>  it is a combining mark
      * <li>  it is a non-spacing mark
      * <li> {@link #isIdentifierIgnorable(int)
-     * isIdentifierIgnorable(codePoint)} returns <code>true</code> for
+     * isIdentifierIgnorable(codePoint)} returns {@code true} for
      * the character
      * </ul>
      *
      * @param   codePoint the character (Unicode code point) to be tested.
-     * @return <code>true</code> if the character may be part of a
-     *          Java identifier; <code>false</code> otherwise.
+     * @return {@code true} if the character may be part of a
+     *          Java identifier; {@code false} otherwise.
      * @see     Character#isIdentifierIgnorable(int)
      * @see     Character#isJavaIdentifierStart(int)
      * @see     Character#isLetterOrDigit(int)
@@ -5863,9 +5861,9 @@
      * A character may start a Unicode identifier if and only if
      * one of the following conditions is true:
      * <ul>
-     * <li> {@link #isLetter(char) isLetter(ch)} returns <code>true</code>
+     * <li> {@link #isLetter(char) isLetter(ch)} returns {@code true}
      * <li> {@link #getType(char) getType(ch)} returns
-     *      <code>LETTER_NUMBER</code>.
+     *      {@code LETTER_NUMBER}.
      * </ul>
      *
      * <p><b>Note:</b> This method cannot handle <a
@@ -5874,8 +5872,8 @@
      * the {@link #isUnicodeIdentifierStart(int)} method.
      *
      * @param   ch      the character to be tested.
-     * @return  <code>true</code> if the character may start a Unicode
-     *          identifier; <code>false</code> otherwise.
+     * @return  {@code true} if the character may start a Unicode
+     *          identifier; {@code false} otherwise.
      * @see     Character#isJavaIdentifierStart(char)
      * @see     Character#isLetter(char)
      * @see     Character#isUnicodeIdentifierPart(char)
@@ -5893,13 +5891,13 @@
      * one of the following conditions is true:
      * <ul>
      * <li> {@link #isLetter(int) isLetter(codePoint)}
-     *      returns <code>true</code>
+     *      returns {@code true}
      * <li> {@link #getType(int) getType(codePoint)}
-     *      returns <code>LETTER_NUMBER</code>.
+     *      returns {@code LETTER_NUMBER}.
      * </ul>
      * @param   codePoint the character (Unicode code point) to be tested.
-     * @return  <code>true</code> if the character may start a Unicode
-     *          identifier; <code>false</code> otherwise.
+     * @return  {@code true} if the character may start a Unicode
+     *          identifier; {@code false} otherwise.
      * @see     Character#isJavaIdentifierStart(int)
      * @see     Character#isLetter(int)
      * @see     Character#isUnicodeIdentifierPart(int)
@@ -5917,13 +5915,13 @@
      * one of the following statements is true:
      * <ul>
      * <li>  it is a letter
-     * <li>  it is a connecting punctuation character (such as <code>'_'</code>)
+     * <li>  it is a connecting punctuation character (such as {@code '_'})
      * <li>  it is a digit
      * <li>  it is a numeric letter (such as a Roman numeral character)
      * <li>  it is a combining mark
      * <li>  it is a non-spacing mark
-     * <li> <code>isIdentifierIgnorable</code> returns
-     * <code>true</code> for this character.
+     * <li> {@code isIdentifierIgnorable} returns
+     * {@code true} for this character.
      * </ul>
      *
      * <p><b>Note:</b> This method cannot handle <a
@@ -5932,8 +5930,8 @@
      * the {@link #isUnicodeIdentifierPart(int)} method.
      *
      * @param   ch      the character to be tested.
-     * @return  <code>true</code> if the character may be part of a
-     *          Unicode identifier; <code>false</code> otherwise.
+     * @return  {@code true} if the character may be part of a
+     *          Unicode identifier; {@code false} otherwise.
      * @see     Character#isIdentifierIgnorable(char)
      * @see     Character#isJavaIdentifierPart(char)
      * @see     Character#isLetterOrDigit(char)
@@ -5952,17 +5950,17 @@
      * one of the following statements is true:
      * <ul>
      * <li>  it is a letter
-     * <li>  it is a connecting punctuation character (such as <code>'_'</code>)
+     * <li>  it is a connecting punctuation character (such as {@code '_'})
      * <li>  it is a digit
      * <li>  it is a numeric letter (such as a Roman numeral character)
      * <li>  it is a combining mark
      * <li>  it is a non-spacing mark
-     * <li> <code>isIdentifierIgnorable</code> returns
-     * <code>true</code> for this character.
+     * <li> {@code isIdentifierIgnorable} returns
+     * {@code true} for this character.
      * </ul>
      * @param   codePoint the character (Unicode code point) to be tested.
-     * @return  <code>true</code> if the character may be part of a
-     *          Unicode identifier; <code>false</code> otherwise.
+     * @return  {@code true} if the character may be part of a
+     *          Unicode identifier; {@code false} otherwise.
      * @see     Character#isIdentifierIgnorable(int)
      * @see     Character#isJavaIdentifierPart(int)
      * @see     Character#isLetterOrDigit(int)
@@ -5982,12 +5980,12 @@
      * <ul>
      * <li>ISO control characters that are not whitespace
      * <ul>
-     * <li><code>'&#92;u0000'</code> through <code>'&#92;u0008'</code>
-     * <li><code>'&#92;u000E'</code> through <code>'&#92;u001B'</code>
-     * <li><code>'&#92;u007F'</code> through <code>'&#92;u009F'</code>
+     * <li>{@code '\u005Cu0000'} through {@code '\u005Cu0008'}
+     * <li>{@code '\u005Cu000E'} through {@code '\u005Cu001B'}
+     * <li>{@code '\u005Cu007F'} through {@code '\u005Cu009F'}
      * </ul>
      *
-     * <li>all characters that have the <code>FORMAT</code> general
+     * <li>all characters that have the {@code FORMAT} general
      * category value
      * </ul>
      *
@@ -5997,9 +5995,9 @@
      * the {@link #isIdentifierIgnorable(int)} method.
      *
      * @param   ch      the character to be tested.
-     * @return  <code>true</code> if the character is an ignorable control
+     * @return  {@code true} if the character is an ignorable control
      *          character that may be part of a Java or Unicode identifier;
-     *           <code>false</code> otherwise.
+     *           {@code false} otherwise.
      * @see     Character#isJavaIdentifierPart(char)
      * @see     Character#isUnicodeIdentifierPart(char)
      * @since   1.1
@@ -6017,19 +6015,19 @@
      * <ul>
      * <li>ISO control characters that are not whitespace
      * <ul>
-     * <li><code>'&#92;u0000'</code> through <code>'&#92;u0008'</code>
-     * <li><code>'&#92;u000E'</code> through <code>'&#92;u001B'</code>
-     * <li><code>'&#92;u007F'</code> through <code>'&#92;u009F'</code>
+     * <li>{@code '\u005Cu0000'} through {@code '\u005Cu0008'}
+     * <li>{@code '\u005Cu000E'} through {@code '\u005Cu001B'}
+     * <li>{@code '\u005Cu007F'} through {@code '\u005Cu009F'}
      * </ul>
      *
-     * <li>all characters that have the <code>FORMAT</code> general
+     * <li>all characters that have the {@code FORMAT} general
      * category value
      * </ul>
      *
      * @param   codePoint the character (Unicode code point) to be tested.
-     * @return  <code>true</code> if the character is an ignorable control
+     * @return  {@code true} if the character is an ignorable control
      *          character that may be part of a Java or Unicode identifier;
-     *          <code>false</code> otherwise.
+     *          {@code false} otherwise.
      * @see     Character#isJavaIdentifierPart(int)
      * @see     Character#isUnicodeIdentifierPart(int)
      * @since   1.5
@@ -6043,16 +6041,16 @@
      * mapping information from the UnicodeData file.
      * <p>
      * Note that
-     * <code>Character.isLowerCase(Character.toLowerCase(ch))</code>
-     * does not always return <code>true</code> for some ranges of
+     * {@code Character.isLowerCase(Character.toLowerCase(ch))}
+     * does not always return {@code true} for some ranges of
      * characters, particularly those that are symbols or ideographs.
      *
      * <p>In general, {@link String#toLowerCase()} should be used to map
-     * characters to lowercase. <code>String</code> case mapping methods
-     * have several benefits over <code>Character</code> case mapping methods.
-     * <code>String</code> case mapping methods can perform locale-sensitive
+     * characters to lowercase. {@code String} case mapping methods
+     * have several benefits over {@code Character} case mapping methods.
+     * {@code String} case mapping methods can perform locale-sensitive
      * mappings, context-sensitive mappings, and 1:M character mappings, whereas
-     * the <code>Character</code> case mapping methods cannot.
+     * the {@code Character} case mapping methods cannot.
      *
      * <p><b>Note:</b> This method cannot handle <a
      * href="#supplementary"> supplementary characters</a>. To support
@@ -6075,16 +6073,16 @@
      * file.
      *
      * <p> Note that
-     * <code>Character.isLowerCase(Character.toLowerCase(codePoint))</code>
-     * does not always return <code>true</code> for some ranges of
+     * {@code Character.isLowerCase(Character.toLowerCase(codePoint))}
+     * does not always return {@code true} for some ranges of
      * characters, particularly those that are symbols or ideographs.
      *
      * <p>In general, {@link String#toLowerCase()} should be used to map
-     * characters to lowercase. <code>String</code> case mapping methods
-     * have several benefits over <code>Character</code> case mapping methods.
-     * <code>String</code> case mapping methods can perform locale-sensitive
+     * characters to lowercase. {@code String} case mapping methods
+     * have several benefits over {@code Character} case mapping methods.
+     * {@code String} case mapping methods can perform locale-sensitive
      * mappings, context-sensitive mappings, and 1:M character mappings, whereas
-     * the <code>Character</code> case mapping methods cannot.
+     * the {@code Character} case mapping methods cannot.
      *
      * @param   codePoint   the character (Unicode code point) to be converted.
      * @return  the lowercase equivalent of the character (Unicode code
@@ -6103,16 +6101,16 @@
      * information from the UnicodeData file.
      * <p>
      * Note that
-     * <code>Character.isUpperCase(Character.toUpperCase(ch))</code>
-     * does not always return <code>true</code> for some ranges of
+     * {@code Character.isUpperCase(Character.toUpperCase(ch))}
+     * does not always return {@code true} for some ranges of
      * characters, particularly those that are symbols or ideographs.
      *
      * <p>In general, {@link String#toUpperCase()} should be used to map
-     * characters to uppercase. <code>String</code> case mapping methods
-     * have several benefits over <code>Character</code> case mapping methods.
-     * <code>String</code> case mapping methods can perform locale-sensitive
+     * characters to uppercase. {@code String} case mapping methods
+     * have several benefits over {@code Character} case mapping methods.
+     * {@code String} case mapping methods can perform locale-sensitive
      * mappings, context-sensitive mappings, and 1:M character mappings, whereas
-     * the <code>Character</code> case mapping methods cannot.
+     * the {@code Character} case mapping methods cannot.
      *
      * <p><b>Note:</b> This method cannot handle <a
      * href="#supplementary"> supplementary characters</a>. To support
@@ -6135,16 +6133,16 @@
      * file.
      *
      * <p>Note that
-     * <code>Character.isUpperCase(Character.toUpperCase(codePoint))</code>
-     * does not always return <code>true</code> for some ranges of
+     * {@code Character.isUpperCase(Character.toUpperCase(codePoint))}
+     * does not always return {@code true} for some ranges of
      * characters, particularly those that are symbols or ideographs.
      *
      * <p>In general, {@link String#toUpperCase()} should be used to map
-     * characters to uppercase. <code>String</code> case mapping methods
-     * have several benefits over <code>Character</code> case mapping methods.
-     * <code>String</code> case mapping methods can perform locale-sensitive
+     * characters to uppercase. {@code String} case mapping methods
+     * have several benefits over {@code Character} case mapping methods.
+     * {@code String} case mapping methods can perform locale-sensitive
      * mappings, context-sensitive mappings, and 1:M character mappings, whereas
-     * the <code>Character</code> case mapping methods cannot.
+     * the {@code Character} case mapping methods cannot.
      *
      * @param   codePoint   the character (Unicode code point) to be converted.
      * @return  the uppercase equivalent of the character, if any;
@@ -6164,13 +6162,13 @@
      * explicit titlecase mapping and is not itself a titlecase char
      * according to UnicodeData, then the uppercase mapping is
      * returned as an equivalent titlecase mapping. If the
-     * <code>char</code> argument is already a titlecase
-     * <code>char</code>, the same <code>char</code> value will be
+     * {@code char} argument is already a titlecase
+     * {@code char}, the same {@code char} value will be
      * returned.
      * <p>
      * Note that
-     * <code>Character.isTitleCase(Character.toTitleCase(ch))</code>
-     * does not always return <code>true</code> for some ranges of
+     * {@code Character.isTitleCase(Character.toTitleCase(ch))}
+     * does not always return {@code true} for some ranges of
      * characters.
      *
      * <p><b>Note:</b> This method cannot handle <a
@@ -6201,8 +6199,8 @@
      * returned.
      *
      * <p>Note that
-     * <code>Character.isTitleCase(Character.toTitleCase(codePoint))</code>
-     * does not always return <code>true</code> for some ranges of
+     * {@code Character.isTitleCase(Character.toTitleCase(codePoint))}
+     * does not always return {@code true} for some ranges of
      * characters.
      *
      * @param   codePoint   the character (Unicode code point) to be converted.
@@ -6218,28 +6216,40 @@
     }
 
     /**
-     * Returns the numeric value of the character <code>ch</code> in the
+     * Returns the numeric value of the character {@code ch} in the
      * specified radix.
      * <p>
-     * If the radix is not in the range <code>MIN_RADIX</code>&nbsp;&lt;=
-     * <code>radix</code>&nbsp;&lt;= <code>MAX_RADIX</code> or if the
-     * value of <code>ch</code> is not a valid digit in the specified
-     * radix, <code>-1</code> is returned. A character is a valid digit
+     * If the radix is not in the range {@code MIN_RADIX} &le;
+     * {@code radix} &le; {@code MAX_RADIX} or if the
+     * value of {@code ch} is not a valid digit in the specified
+     * radix, {@code -1} is returned. A character is a valid digit
      * if at least one of the following is true:
      * <ul>
-     * <li>The method <code>isDigit</code> is <code>true</code> of the character
+     * <li>The method {@code isDigit} is {@code true} of the character
      *     and the Unicode decimal digit value of the character (or its
      *     single-character decomposition) is less than the specified radix.
      *     In this case the decimal digit value is returned.
      * <li>The character is one of the uppercase Latin letters
-     *     <code>'A'</code> through <code>'Z'</code> and its code is less than
-     *     <code>radix&nbsp;+ 'A'&nbsp;-&nbsp;10</code>.
-     *     In this case, <code>ch&nbsp;- 'A'&nbsp;+&nbsp;10</code>
+     *     {@code 'A'} through {@code 'Z'} and its code is less than
+     *     {@code radix + 'A' - 10}.
+     *     In this case, {@code ch - 'A' + 10}
      *     is returned.
      * <li>The character is one of the lowercase Latin letters
-     *     <code>'a'</code> through <code>'z'</code> and its code is less than
-     *     <code>radix&nbsp;+ 'a'&nbsp;-&nbsp;10</code>.
-     *     In this case, <code>ch&nbsp;- 'a'&nbsp;+&nbsp;10</code>
+     *     {@code 'a'} through {@code 'z'} and its code is less than
+     *     {@code radix + 'a' - 10}.
+     *     In this case, {@code ch - 'a' + 10}
+     *     is returned.
+     * <li>The character is one of the fullwidth uppercase Latin letters A
+     *     ({@code '\u005CuFF21'}) through Z ({@code '\u005CuFF3A'})
+     *     and its code is less than
+     *     {@code radix + '\u005CuFF21' - 10}.
+     *     In this case, {@code ch - '\u005CuFF21' + 10}
+     *     is returned.
+     * <li>The character is one of the fullwidth lowercase Latin letters a
+     *     ({@code '\u005CuFF41'}) through z ({@code '\u005CuFF5A'})
+     *     and its code is less than
+     *     {@code radix + '\u005CuFF41' - 10}.
+     *     In this case, {@code ch - '\u005CuFF41' + 10}
      *     is returned.
      * </ul>
      *
@@ -6263,25 +6273,39 @@
      * Returns the numeric value of the specified character (Unicode
      * code point) in the specified radix.
      *
-     * <p>If the radix is not in the range <code>MIN_RADIX</code>&nbsp;&lt;=
-     * <code>radix</code>&nbsp;&lt;= <code>MAX_RADIX</code> or if the
+     * <p>If the radix is not in the range {@code MIN_RADIX} &le;
+     * {@code radix} &le; {@code MAX_RADIX} or if the
      * character is not a valid digit in the specified
-     * radix, <code>-1</code> is returned. A character is a valid digit
+     * radix, {@code -1} is returned. A character is a valid digit
      * if at least one of the following is true:
      * <ul>
-     * <li>The method {@link #isDigit(int) isDigit(codePoint)} is <code>true</code> of the character
+     * <li>The method {@link #isDigit(int) isDigit(codePoint)} is {@code true} of the character
      *     and the Unicode decimal digit value of the character (or its
      *     single-character decomposition) is less than the specified radix.
      *     In this case the decimal digit value is returned.
      * <li>The character is one of the uppercase Latin letters
-     *     <code>'A'</code> through <code>'Z'</code> and its code is less than
-     *     <code>radix&nbsp;+ 'A'&nbsp;-&nbsp;10</code>.
-     *     In this case, <code>ch&nbsp;- 'A'&nbsp;+&nbsp;10</code>
+     *     {@code 'A'} through {@code 'Z'} and its code is less than
+     *     {@code radix + 'A' - 10}.
+     *     In this case, {@code codePoint - 'A' + 10}
      *     is returned.
      * <li>The character is one of the lowercase Latin letters
-     *     <code>'a'</code> through <code>'z'</code> and its code is less than
-     *     <code>radix&nbsp;+ 'a'&nbsp;-&nbsp;10</code>.
-     *     In this case, <code>ch&nbsp;- 'a'&nbsp;+&nbsp;10</code>
+     *     {@code 'a'} through {@code 'z'} and its code is less than
+     *     {@code radix + 'a' - 10}.
+     *     In this case, {@code codePoint - 'a' + 10}
+     *     is returned.
+     * <li>The character is one of the fullwidth uppercase Latin letters A
+     *     ({@code '\u005CuFF21'}) through Z ({@code '\u005CuFF3A'})
+     *     and its code is less than
+     *     {@code radix + '\u005CuFF21' - 10}.
+     *     In this case,
+     *     {@code codePoint - '\u005CuFF21' + 10}
+     *     is returned.
+     * <li>The character is one of the fullwidth lowercase Latin letters a
+     *     ({@code '\u005CuFF41'}) through z ({@code '\u005CuFF5A'})
+     *     and its code is less than
+     *     {@code radix + '\u005CuFF41'- 10}.
+     *     In this case,
+     *     {@code codePoint - '\u005CuFF41' + 10}
      *     is returned.
      * </ul>
      *
@@ -6298,19 +6322,19 @@
     }
 
     /**
-     * Returns the <code>int</code> value that the specified Unicode
+     * Returns the {@code int} value that the specified Unicode
      * character represents. For example, the character
-     * <code>'&#92;u216C'</code> (the roman numeral fifty) will return
+     * {@code '\u005Cu216C'} (the roman numeral fifty) will return
      * an int with a value of 50.
      * <p>
-     * The letters A-Z in their uppercase (<code>'&#92;u0041'</code> through
-     * <code>'&#92;u005A'</code>), lowercase
-     * (<code>'&#92;u0061'</code> through <code>'&#92;u007A'</code>), and
-     * full width variant (<code>'&#92;uFF21'</code> through
-     * <code>'&#92;uFF3A'</code> and <code>'&#92;uFF41'</code> through
-     * <code>'&#92;uFF5A'</code>) forms have numeric values from 10
+     * The letters A-Z in their uppercase ({@code '\u005Cu0041'} through
+     * {@code '\u005Cu005A'}), lowercase
+     * ({@code '\u005Cu0061'} through {@code '\u005Cu007A'}), and
+     * full width variant ({@code '\u005CuFF21'} through
+     * {@code '\u005CuFF3A'} and {@code '\u005CuFF41'} through
+     * {@code '\u005CuFF5A'}) forms have numeric values from 10
      * through 35. This is independent of the Unicode specification,
-     * which does not assign numeric values to these <code>char</code>
+     * which does not assign numeric values to these {@code char}
      * values.
      * <p>
      * If the character does not have a numeric value, then -1 is returned.
@@ -6324,7 +6348,7 @@
      * the {@link #getNumericValue(int)} method.
      *
      * @param   ch      the character to be converted.
-     * @return  the numeric value of the character, as a nonnegative <code>int</code>
+     * @return  the numeric value of the character, as a nonnegative {@code int}
      *           value; -2 if the character has a numeric value that is not a
      *          nonnegative integer; -1 if the character has no numeric value.
      * @see     Character#forDigit(int, int)
@@ -6336,19 +6360,19 @@
     }
 
     /**
-     * Returns the <code>int</code> value that the specified
+     * Returns the {@code int} value that the specified
      * character (Unicode code point) represents. For example, the character
-     * <code>'&#92;u216C'</code> (the Roman numeral fifty) will return
-     * an <code>int</code> with a value of 50.
+     * {@code '\u005Cu216C'} (the Roman numeral fifty) will return
+     * an {@code int} with a value of 50.
      * <p>
-     * The letters A-Z in their uppercase (<code>'&#92;u0041'</code> through
-     * <code>'&#92;u005A'</code>), lowercase
-     * (<code>'&#92;u0061'</code> through <code>'&#92;u007A'</code>), and
-     * full width variant (<code>'&#92;uFF21'</code> through
-     * <code>'&#92;uFF3A'</code> and <code>'&#92;uFF41'</code> through
-     * <code>'&#92;uFF5A'</code>) forms have numeric values from 10
+     * The letters A-Z in their uppercase ({@code '\u005Cu0041'} through
+     * {@code '\u005Cu005A'}), lowercase
+     * ({@code '\u005Cu0061'} through {@code '\u005Cu007A'}), and
+     * full width variant ({@code '\u005CuFF21'} through
+     * {@code '\u005CuFF3A'} and {@code '\u005CuFF41'} through
+     * {@code '\u005CuFF5A'}) forms have numeric values from 10
      * through 35. This is independent of the Unicode specification,
-     * which does not assign numeric values to these <code>char</code>
+     * which does not assign numeric values to these {@code char}
      * values.
      * <p>
      * If the character does not have a numeric value, then -1 is returned.
@@ -6357,7 +6381,7 @@
      * is returned.
      *
      * @param   codePoint the character (Unicode code point) to be converted.
-     * @return  the numeric value of the character, as a nonnegative <code>int</code>
+     * @return  the numeric value of the character, as a nonnegative {@code int}
      *          value; -2 if the character has a numeric value that is not a
      *          nonnegative integer; -1 if the character has no numeric value.
      * @see     Character#forDigit(int, int)
@@ -6370,24 +6394,24 @@
 
     /**
      * Determines if the specified character is ISO-LATIN-1 white space.
-     * This method returns <code>true</code> for the following five
+     * This method returns {@code true} for the following five
      * characters only:
      * <table>
-     * <tr><td><code>'\t'</code></td>            <td><code>U+0009</code></td>
-     *     <td><code>HORIZONTAL TABULATION</code></td></tr>
-     * <tr><td><code>'\n'</code></td>            <td><code>U+000A</code></td>
-     *     <td><code>NEW LINE</code></td></tr>
-     * <tr><td><code>'\f'</code></td>            <td><code>U+000C</code></td>
-     *     <td><code>FORM FEED</code></td></tr>
-     * <tr><td><code>'\r'</code></td>            <td><code>U+000D</code></td>
-     *     <td><code>CARRIAGE RETURN</code></td></tr>
-     * <tr><td><code>'&nbsp;'</code></td>  <td><code>U+0020</code></td>
-     *     <td><code>SPACE</code></td></tr>
+     * <tr><td>{@code '\t'}</td>            <td>{@code U+0009}</td>
+     *     <td>{@code HORIZONTAL TABULATION}</td></tr>
+     * <tr><td>{@code '\n'}</td>            <td>{@code U+000A}</td>
+     *     <td>{@code NEW LINE}</td></tr>
+     * <tr><td>{@code '\f'}</td>            <td>{@code U+000C}</td>
+     *     <td>{@code FORM FEED}</td></tr>
+     * <tr><td>{@code '\r'}</td>            <td>{@code U+000D}</td>
+     *     <td>{@code CARRIAGE RETURN}</td></tr>
+     * <tr><td>{@code '&nbsp;'}</td>  <td>{@code U+0020}</td>
+     *     <td>{@code SPACE}</td></tr>
      * </table>
      *
      * @param      ch   the character to be tested.
-     * @return     <code>true</code> if the character is ISO-LATIN-1 white
-     *             space; <code>false</code> otherwise.
+     * @return     {@code true} if the character is ISO-LATIN-1 white
+     *             space; {@code false} otherwise.
      * @see        Character#isSpaceChar(char)
      * @see        Character#isWhitespace(char)
      * @deprecated Replaced by isWhitespace(char).
@@ -6410,9 +6434,9 @@
      * method returns true if the character's general category type is any of
      * the following:
      * <ul>
-     * <li> <code>SPACE_SEPARATOR</code>
-     * <li> <code>LINE_SEPARATOR</code>
-     * <li> <code>PARAGRAPH_SEPARATOR</code>
+     * <li> {@code SPACE_SEPARATOR}
+     * <li> {@code LINE_SEPARATOR}
+     * <li> {@code PARAGRAPH_SEPARATOR}
      * </ul>
      *
      * <p><b>Note:</b> This method cannot handle <a
@@ -6421,8 +6445,8 @@
      * the {@link #isSpaceChar(int)} method.
      *
      * @param   ch      the character to be tested.
-     * @return  <code>true</code> if the character is a space character;
-     *          <code>false</code> otherwise.
+     * @return  {@code true} if the character is a space character;
+     *          {@code false} otherwise.
      * @see     Character#isWhitespace(char)
      * @since   1.1
      */
@@ -6444,8 +6468,8 @@
      * </ul>
      *
      * @param   codePoint the character (Unicode code point) to be tested.
-     * @return  <code>true</code> if the character is a space character;
-     *          <code>false</code> otherwise.
+     * @return  {@code true} if the character is a space character;
+     *          {@code false} otherwise.
      * @see     Character#isWhitespace(int)
      * @since   1.5
      */
@@ -6461,19 +6485,19 @@
      * A character is a Java whitespace character if and only if it satisfies
      * one of the following criteria:
      * <ul>
-     * <li> It is a Unicode space character (<code>SPACE_SEPARATOR</code>,
-     *      <code>LINE_SEPARATOR</code>, or <code>PARAGRAPH_SEPARATOR</code>)
-     *      but is not also a non-breaking space (<code>'&#92;u00A0'</code>,
-     *      <code>'&#92;u2007'</code>, <code>'&#92;u202F'</code>).
-     * <li> It is <code>'&#92;t'</code>, U+0009 HORIZONTAL TABULATION.
-     * <li> It is <code>'&#92;n'</code>, U+000A LINE FEED.
-     * <li> It is <code>'&#92;u000B'</code>, U+000B VERTICAL TABULATION.
-     * <li> It is <code>'&#92;f'</code>, U+000C FORM FEED.
-     * <li> It is <code>'&#92;r'</code>, U+000D CARRIAGE RETURN.
-     * <li> It is <code>'&#92;u001C'</code>, U+001C FILE SEPARATOR.
-     * <li> It is <code>'&#92;u001D'</code>, U+001D GROUP SEPARATOR.
-     * <li> It is <code>'&#92;u001E'</code>, U+001E RECORD SEPARATOR.
-     * <li> It is <code>'&#92;u001F'</code>, U+001F UNIT SEPARATOR.
+     * <li> It is a Unicode space character ({@code SPACE_SEPARATOR},
+     *      {@code LINE_SEPARATOR}, or {@code PARAGRAPH_SEPARATOR})
+     *      but is not also a non-breaking space ({@code '\u005Cu00A0'},
+     *      {@code '\u005Cu2007'}, {@code '\u005Cu202F'}).
+     * <li> It is {@code '\u005Ct'}, U+0009 HORIZONTAL TABULATION.
+     * <li> It is {@code '\u005Cn'}, U+000A LINE FEED.
+     * <li> It is {@code '\u005Cu000B'}, U+000B VERTICAL TABULATION.
+     * <li> It is {@code '\u005Cf'}, U+000C FORM FEED.
+     * <li> It is {@code '\u005Cr'}, U+000D CARRIAGE RETURN.
+     * <li> It is {@code '\u005Cu001C'}, U+001C FILE SEPARATOR.
+     * <li> It is {@code '\u005Cu001D'}, U+001D GROUP SEPARATOR.
+     * <li> It is {@code '\u005Cu001E'}, U+001E RECORD SEPARATOR.
+     * <li> It is {@code '\u005Cu001F'}, U+001F UNIT SEPARATOR.
      * </ul>
      *
      * <p><b>Note:</b> This method cannot handle <a
@@ -6482,8 +6506,8 @@
      * the {@link #isWhitespace(int)} method.
      *
      * @param   ch the character to be tested.
-     * @return  <code>true</code> if the character is a Java whitespace
-     *          character; <code>false</code> otherwise.
+     * @return  {@code true} if the character is a Java whitespace
+     *          character; {@code false} otherwise.
      * @see     Character#isSpaceChar(char)
      * @since   1.1
      */
@@ -6499,23 +6523,23 @@
      * <ul>
      * <li> It is a Unicode space character ({@link #SPACE_SEPARATOR},
      *      {@link #LINE_SEPARATOR}, or {@link #PARAGRAPH_SEPARATOR})
-     *      but is not also a non-breaking space (<code>'&#92;u00A0'</code>,
-     *      <code>'&#92;u2007'</code>, <code>'&#92;u202F'</code>).
-     * <li> It is <code>'&#92;t'</code>, U+0009 HORIZONTAL TABULATION.
-     * <li> It is <code>'&#92;n'</code>, U+000A LINE FEED.
-     * <li> It is <code>'&#92;u000B'</code>, U+000B VERTICAL TABULATION.
-     * <li> It is <code>'&#92;f'</code>, U+000C FORM FEED.
-     * <li> It is <code>'&#92;r'</code>, U+000D CARRIAGE RETURN.
-     * <li> It is <code>'&#92;u001C'</code>, U+001C FILE SEPARATOR.
-     * <li> It is <code>'&#92;u001D'</code>, U+001D GROUP SEPARATOR.
-     * <li> It is <code>'&#92;u001E'</code>, U+001E RECORD SEPARATOR.
-     * <li> It is <code>'&#92;u001F'</code>, U+001F UNIT SEPARATOR.
+     *      but is not also a non-breaking space ({@code '\u005Cu00A0'},
+     *      {@code '\u005Cu2007'}, {@code '\u005Cu202F'}).
+     * <li> It is {@code '\u005Ct'}, U+0009 HORIZONTAL TABULATION.
+     * <li> It is {@code '\u005Cn'}, U+000A LINE FEED.
+     * <li> It is {@code '\u005Cu000B'}, U+000B VERTICAL TABULATION.
+     * <li> It is {@code '\u005Cf'}, U+000C FORM FEED.
+     * <li> It is {@code '\u005Cr'}, U+000D CARRIAGE RETURN.
+     * <li> It is {@code '\u005Cu001C'}, U+001C FILE SEPARATOR.
+     * <li> It is {@code '\u005Cu001D'}, U+001D GROUP SEPARATOR.
+     * <li> It is {@code '\u005Cu001E'}, U+001E RECORD SEPARATOR.
+     * <li> It is {@code '\u005Cu001F'}, U+001F UNIT SEPARATOR.
      * </ul>
      * <p>
      *
      * @param   codePoint the character (Unicode code point) to be tested.
-     * @return  <code>true</code> if the character is a Java whitespace
-     *          character; <code>false</code> otherwise.
+     * @return  {@code true} if the character is a Java whitespace
+     *          character; {@code false} otherwise.
      * @see     Character#isSpaceChar(int)
      * @since   1.5
      */
@@ -6526,9 +6550,9 @@
     /**
      * Determines if the specified character is an ISO control
      * character.  A character is considered to be an ISO control
-     * character if its code is in the range <code>'&#92;u0000'</code>
-     * through <code>'&#92;u001F'</code> or in the range
-     * <code>'&#92;u007F'</code> through <code>'&#92;u009F'</code>.
+     * character if its code is in the range {@code '\u005Cu0000'}
+     * through {@code '\u005Cu001F'} or in the range
+     * {@code '\u005Cu007F'} through {@code '\u005Cu009F'}.
      *
      * <p><b>Note:</b> This method cannot handle <a
      * href="#supplementary"> supplementary characters</a>. To support
@@ -6536,8 +6560,8 @@
      * the {@link #isISOControl(int)} method.
      *
      * @param   ch      the character to be tested.
-     * @return  <code>true</code> if the character is an ISO control character;
-     *          <code>false</code> otherwise.
+     * @return  {@code true} if the character is an ISO control character;
+     *          {@code false} otherwise.
      *
      * @see     Character#isSpaceChar(char)
      * @see     Character#isWhitespace(char)
@@ -6550,13 +6574,13 @@
     /**
      * Determines if the referenced character (Unicode code point) is an ISO control
      * character.  A character is considered to be an ISO control
-     * character if its code is in the range <code>'&#92;u0000'</code>
-     * through <code>'&#92;u001F'</code> or in the range
-     * <code>'&#92;u007F'</code> through <code>'&#92;u009F'</code>.
+     * character if its code is in the range {@code '\u005Cu0000'}
+     * through {@code '\u005Cu001F'} or in the range
+     * {@code '\u005Cu007F'} through {@code '\u005Cu009F'}.
      *
      * @param   codePoint the character (Unicode code point) to be tested.
-     * @return  <code>true</code> if the character is an ISO control character;
-     *          <code>false</code> otherwise.
+     * @return  {@code true} if the character is an ISO control character;
+     *          {@code false} otherwise.
      * @see     Character#isSpaceChar(int)
      * @see     Character#isWhitespace(int)
      * @since   1.5
@@ -6578,7 +6602,7 @@
      * the {@link #getType(int)} method.
      *
      * @param   ch      the character to be tested.
-     * @return  a value of type <code>int</code> representing the
+     * @return  a value of type {@code int} representing the
      *          character's general category.
      * @see     Character#COMBINING_SPACING_MARK
      * @see     Character#CONNECTOR_PUNCTUATION
@@ -6620,7 +6644,7 @@
      * Returns a value indicating a character's general category.
      *
      * @param   codePoint the character (Unicode code point) to be tested.
-     * @return  a value of type <code>int</code> representing the
+     * @return  a value of type {@code int} representing the
      *          character's general category.
      * @see     Character#COMBINING_SPACING_MARK COMBINING_SPACING_MARK
      * @see     Character#CONNECTOR_PUNCTUATION CONNECTOR_PUNCTUATION
@@ -6660,23 +6684,23 @@
 
     /**
      * Determines the character representation for a specific digit in
-     * the specified radix. If the value of <code>radix</code> is not a
-     * valid radix, or the value of <code>digit</code> is not a valid
+     * the specified radix. If the value of {@code radix} is not a
+     * valid radix, or the value of {@code digit} is not a valid
      * digit in the specified radix, the null character
-     * (<code>'&#92;u0000'</code>) is returned.
+     * ({@code '\u005Cu0000'}) is returned.
      * <p>
-     * The <code>radix</code> argument is valid if it is greater than or
-     * equal to <code>MIN_RADIX</code> and less than or equal to
-     * <code>MAX_RADIX</code>. The <code>digit</code> argument is valid if
-     * <code>0&nbsp;&lt;=digit&nbsp;&lt;&nbsp;radix</code>.
+     * The {@code radix} argument is valid if it is greater than or
+     * equal to {@code MIN_RADIX} and less than or equal to
+     * {@code MAX_RADIX}. The {@code digit} argument is valid if
+     * {@code 0 <= digit < radix}.
      * <p>
      * If the digit is less than 10, then
-     * <code>'0'&nbsp;+ digit</code> is returned. Otherwise, the value
-     * <code>'a'&nbsp;+ digit&nbsp;-&nbsp;10</code> is returned.
+     * {@code '0' + digit} is returned. Otherwise, the value
+     * {@code 'a' + digit - 10} is returned.
      *
      * @param   digit   the number to convert to a character.
      * @param   radix   the radix.
-     * @return  the <code>char</code> representation of the specified digit
+     * @return  the {@code char} representation of the specified digit
      *          in the specified radix.
      * @see     Character#MIN_RADIX
      * @see     Character#MAX_RADIX
@@ -6699,16 +6723,16 @@
      * Returns the Unicode directionality property for the given
      * character.  Character directionality is used to calculate the
      * visual ordering of text. The directionality value of undefined
-     * <code>char</code> values is <code>DIRECTIONALITY_UNDEFINED</code>.
+     * {@code char} values is {@code DIRECTIONALITY_UNDEFINED}.
      *
      * <p><b>Note:</b> This method cannot handle <a
      * href="#supplementary"> supplementary characters</a>. To support
      * all Unicode characters, including supplementary characters, use
      * the {@link #getDirectionality(int)} method.
      *
-     * @param  ch <code>char</code> for which the directionality property
+     * @param  ch {@code char} for which the directionality property
      *            is requested.
-     * @return the directionality property of the <code>char</code> value.
+     * @return the directionality property of the {@code char} value.
      *
      * @see Character#DIRECTIONALITY_UNDEFINED
      * @see Character#DIRECTIONALITY_LEFT_TO_RIGHT
@@ -6777,7 +6801,7 @@
      * Determines whether the character is mirrored according to the
      * Unicode specification.  Mirrored characters should have their
      * glyphs horizontally mirrored when displayed in text that is
-     * right-to-left.  For example, <code>'&#92;u0028'</code> LEFT
+     * right-to-left.  For example, {@code '\u005Cu0028'} LEFT
      * PARENTHESIS is semantically defined to be an <i>opening
      * parenthesis</i>.  This will appear as a "(" in text that is
      * left-to-right but as a ")" in text that is right-to-left.
@@ -6787,9 +6811,9 @@
      * all Unicode characters, including supplementary characters, use
      * the {@link #isMirrored(int)} method.
      *
-     * @param  ch <code>char</code> for which the mirrored property is requested
-     * @return <code>true</code> if the char is mirrored, <code>false</code>
-     *         if the <code>char</code> is not mirrored or is not defined.
+     * @param  ch {@code char} for which the mirrored property is requested
+     * @return {@code true} if the char is mirrored, {@code false}
+     *         if the {@code char} is not mirrored or is not defined.
      * @since 1.4
      */
     public static boolean isMirrored(char ch) {
@@ -6801,13 +6825,13 @@
      * is mirrored according to the Unicode specification.  Mirrored
      * characters should have their glyphs horizontally mirrored when
      * displayed in text that is right-to-left.  For example,
-     * <code>'&#92;u0028'</code> LEFT PARENTHESIS is semantically
+     * {@code '\u005Cu0028'} LEFT PARENTHESIS is semantically
      * defined to be an <i>opening parenthesis</i>.  This will appear
      * as a "(" in text that is left-to-right but as a ")" in text
      * that is right-to-left.
      *
      * @param   codePoint the character (Unicode code point) to be tested.
-     * @return  <code>true</code> if the character is mirrored, <code>false</code>
+     * @return  {@code true} if the character is mirrored, {@code false}
      *          if the character is not mirrored or is not defined.
      * @since   1.5
      */
@@ -6816,16 +6840,16 @@
     }
 
     /**
-     * Compares two <code>Character</code> objects numerically.
-     *
-     * @param   anotherCharacter   the <code>Character</code> to be compared.
-
-     * @return  the value <code>0</code> if the argument <code>Character</code>
-     *          is equal to this <code>Character</code>; a value less than
-     *          <code>0</code> if this <code>Character</code> is numerically less
-     *          than the <code>Character</code> argument; and a value greater than
-     *          <code>0</code> if this <code>Character</code> is numerically greater
-     *          than the <code>Character</code> argument (unsigned comparison).
+     * Compares two {@code Character} objects numerically.
+     *
+     * @param   anotherCharacter   the {@code Character} to be compared.
+
+     * @return  the value {@code 0} if the argument {@code Character}
+     *          is equal to this {@code Character}; a value less than
+     *          {@code 0} if this {@code Character} is numerically less
+     *          than the {@code Character} argument; and a value greater than
+     *          {@code 0} if this {@code Character} is numerically greater
+     *          than the {@code Character} argument (unsigned comparison).
      *          Note that this is strictly a numerical comparison; it is not
      *          locale-dependent.
      * @since   1.2
@@ -6859,8 +6883,8 @@
      *
      * @param   codePoint   the character (Unicode code point) to be converted.
      * @return  either the uppercase equivalent of the character, if
-     *          any, or an error flag (<code>Character.ERROR</code>)
-     *          that indicates that a 1:M <code>char</code> mapping exists.
+     *          any, or an error flag ({@code Character.ERROR})
+     *          that indicates that a 1:M {@code char} mapping exists.
      * @see     Character#isLowerCase(char)
      * @see     Character#isUpperCase(char)
      * @see     Character#toLowerCase(char)
@@ -6876,11 +6900,11 @@
      * Converts the character (Unicode code point) argument to uppercase using case
      * mapping information from the SpecialCasing file in the Unicode
      * specification. If a character has no explicit uppercase
-     * mapping, then the <code>char</code> itself is returned in the
-     * <code>char[]</code>.
+     * mapping, then the {@code char} itself is returned in the
+     * {@code char[]}.
      *
      * @param   codePoint   the character (Unicode code point) to be converted.
-     * @return a <code>char[]</code> with the uppercased character.
+     * @return a {@code char[]} with the uppercased character.
      * @since 1.4
      */
     static char[] toUpperCaseCharArray(int codePoint) {
@@ -6911,7 +6935,7 @@
 
     /**
      * Returns the Unicode name of the specified character
-     * <code>codePoint</code>, or null if the code point is
+     * {@code codePoint}, or null if the code point is
      * {@link #UNASSIGNED unassigned}.
      * <p>
      * Note: if the specified character is not assigned a name by
@@ -6919,14 +6943,12 @@
      * Database maintained by the Unicode Consortium), the returned
      * name is the same as the result of expression
      *
-     * <blockquote><code>
-     *     Character.UnicodeBlock.of(codePoint)
-     *                           .toString()
-     *                           .replace('_', ' ')
+     * <blockquote>{@code
+     *     Character.UnicodeBlock.of(codePoint).toString().replace('_', ' ')
      *     + " "
      *     + Integer.toHexString(codePoint).toUpperCase(Locale.ENGLISH);
      *
-     * </code></blockquote>
+     * }</blockquote>
      *
      * @param  codePoint the character (Unicode code point)
      *
@@ -6934,7 +6956,7 @@
      *         the code point is unassigned.
      *
      * @exception IllegalArgumentException if the specified
-     *            <code>codePoint</code> is not a valid Unicode
+     *            {@code codePoint} is not a valid Unicode
      *            code point.
      *
      * @since 1.7
--- a/jdk/src/share/classes/java/lang/Class.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/Class.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1994, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2010, Oracle and/or its affiliates. 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
@@ -95,8 +95,8 @@
  * </pre></blockquote>
  *
  * <p> It is also possible to get the {@code Class} object for a named
- * type (or for void) using a class literal
- * (JLS Section <A HREF="http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#251530">15.8.2</A>).
+ * type (or for void) using a class literal.  See Section 15.8.2 of
+ * <cite>The Java&trade; Language Specification</cite>.
  * For example:
  *
  * <p> <blockquote>
@@ -521,7 +521,8 @@
      *
      * <p> If this class object represents a reference type that is not an
      * array type then the binary name of the class is returned, as specified
-     * by the Java Language Specification, Second Edition.
+     * by
+     * <cite>The Java&trade; Language Specification</cite>.
      *
      * <p> If this class object represents a primitive type or void, then the
      * name returned is a {@code String} equal to the Java language
@@ -630,8 +631,8 @@
      *     the type variables declared by this generic declaration
      * @throws java.lang.reflect.GenericSignatureFormatError if the generic
      *     signature of this generic declaration does not conform to
-     *     the format specified in the Java Virtual Machine Specification,
-     *     3rd edition
+     *     the format specified in
+     *     <cite>The Java&trade; Virtual Machine Specification</cite>
      * @since 1.5
      */
     public TypeVariable<Class<T>>[] getTypeParameters() {
@@ -675,8 +676,8 @@
      * returned.
      *
      * @throws java.lang.reflect.GenericSignatureFormatError if the generic
-     *     class signature does not conform to the format specified in the
-     *     Java Virtual Machine Specification, 3rd edition
+     *     class signature does not conform to the format specified in
+     *     <cite>The Java&trade; Virtual Machine Specification</cite>
      * @throws TypeNotPresentException if the generic superclass
      *     refers to a non-existent type declaration
      * @throws java.lang.reflect.MalformedParameterizedTypeException if the
@@ -798,7 +799,8 @@
      *
      * @throws java.lang.reflect.GenericSignatureFormatError
      *     if the generic class signature does not conform to the format
-     *     specified in the Java Virtual Machine Specification, 3rd edition
+     *     specified in
+     *     <cite>The Java&trade; Virtual Machine Specification</cite>
      * @throws TypeNotPresentException if any of the generic
      *     superinterfaces refers to a non-existent type declaration
      * @throws java.lang.reflect.MalformedParameterizedTypeException
--- a/jdk/src/share/classes/java/lang/ClassLoader.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/ClassLoader.java	Wed Apr 20 09:31:11 2011 -0700
@@ -160,8 +160,8 @@
  * <h4> <a name="name">Binary names</a> </h4>
  *
  * <p> Any class name provided as a {@link String} parameter to methods in
- * <tt>ClassLoader</tt> must be a binary name as defined by the <a
- * href="http://java.sun.com/docs/books/jls/">Java Language Specification</a>.
+ * <tt>ClassLoader</tt> must be a binary name as defined by
+ * <cite>The Java&trade; Language Specification</cite>.
  *
  * <p> Examples of valid class names include:
  * <blockquote><pre>
@@ -531,9 +531,8 @@
      * @param  b
      *         The bytes that make up the class data.  The bytes in positions
      *         <tt>off</tt> through <tt>off+len-1</tt> should have the format
-     *         of a valid class file as defined by the <a
-     *         href="http://java.sun.com/docs/books/vmspec/">Java Virtual
-     *         Machine Specification</a>.
+     *         of a valid class file as defined by
+     *         <cite>The Java&trade; Virtual Machine Specification</cite>.
      *
      * @param  off
      *         The start offset in <tt>b</tt> of the class data
@@ -597,9 +596,8 @@
      * @param  b
      *         The bytes that make up the class data.  The bytes in positions
      *         <tt>off</tt> through <tt>off+len-1</tt> should have the format
-     *         of a valid class file as defined by the <a
-     *         href="http://java.sun.com/docs/books/vmspec/">Java Virtual
-     *         Machine Specification</a>.
+     *         of a valid class file as defined by
+     *         <cite>The Java&trade; Virtual Machine Specification</cite>.
      *
      * @param  off
      *         The start offset in <tt>b</tt> of the class data
@@ -748,9 +746,8 @@
      * @param  b
      *         The bytes that make up the class data. The bytes in positions
      *         <tt>off</tt> through <tt>off+len-1</tt> should have the format
-     *         of a valid class file as defined by the <a
-     *         href="http://java.sun.com/docs/books/vmspec/">Java Virtual
-     *         Machine Specification</a>.
+     *         of a valid class file as defined by
+     *         <cite>The Java&trade; Virtual Machine Specification</cite>.
      *
      * @param  off
      *         The start offset in <tt>b</tt> of the class data
@@ -838,8 +835,7 @@
      *         The bytes that make up the class data. The bytes from positions
      *         <tt>b.position()</tt> through <tt>b.position() + b.limit() -1
      *         </tt> should have the format of a valid class file as defined by
-     *         the <a href="http://java.sun.com/docs/books/vmspec/">Java Virtual
-     *         Machine Specification</a>.
+     *         <cite>The Java&trade; Virtual Machine Specification</cite>.
      *
      * @param  protectionDomain
      *         The ProtectionDomain of the class, or <tt>null</tt>.
@@ -998,9 +994,8 @@
      * Links the specified class.  This (misleadingly named) method may be
      * used by a class loader to link a class.  If the class <tt>c</tt> has
      * already been linked, then this method simply returns. Otherwise, the
-     * class is linked as described in the "Execution" chapter of the <a
-     * href="http://java.sun.com/docs/books/jls/">Java Language
-     * Specification</a>.
+     * class is linked as described in the "Execution" chapter of
+     * <cite>The Java&trade; Language Specification</cite>.
      * </p>
      *
      * @param  c
@@ -2034,8 +2029,8 @@
      *         The name of the package whose package default assertion status
      *         is to be set. A <tt>null</tt> value indicates the unnamed
      *         package that is "current"
-     *         (<a href="http://java.sun.com/docs/books/jls/">Java Language
-     *         Specification</a>, section 7.4.2).
+     *         (see section 7.4.2 of
+     *         <cite>The Java&trade; Language Specification</cite>.)
      *
      * @param  enabled
      *         <tt>true</tt> if classes loaded by this classloader and
--- a/jdk/src/share/classes/java/lang/Double.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/Double.java	Wed Apr 20 09:31:11 2011 -0700
@@ -392,9 +392,10 @@
      * where <i>Sign</i>, <i>FloatingPointLiteral</i>,
      * <i>HexNumeral</i>, <i>HexDigits</i>, <i>SignedInteger</i> and
      * <i>FloatTypeSuffix</i> are as defined in the lexical structure
-     * sections of the <a
-     * href="http://java.sun.com/docs/books/jls/html/">Java Language
-     * Specification</a>. If {@code s} does not have the form of
+     * sections of
+     * <cite>The Java&trade; Language Specification</cite>,
+     * except that underscores are not accepted between digits.
+     * If {@code s} does not have the form of
      * a <i>FloatValue</i>, then a {@code NumberFormatException}
      * is thrown. Otherwise, {@code s} is regarded as
      * representing an exact decimal value in the usual
@@ -464,8 +465,8 @@
      *       // Since this method allows integer-only strings as input
      *       // in addition to strings of floating-point literals, the
      *       // two sub-patterns below are simplifications of the grammar
-     *       // productions from the Java Language Specification, 2nd
-     *       // edition, section 3.10.2.
+     *       // productions from section 3.10.2 of
+     *       // <cite>The Java&trade; Language Specification</cite>.
      *
      *       // Digits ._opt Digits_opt ExponentPart_opt FloatTypeSuffix_opt
      *       "((("+Digits+"(\\.)?("+Digits+"?)("+Exp+")?)|"+
--- a/jdk/src/share/classes/java/lang/Enum.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/Enum.java	Wed Apr 20 09:31:11 2011 -0700
@@ -36,9 +36,8 @@
  *
  * More information about enums, including descriptions of the
  * implicitly declared methods synthesized by the compiler, can be
- * found in <i>The Java&trade; Language Specification, Third
- * Edition</i>, <a
- * href="http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.9">&sect;8.9</a>.
+ * found in section 8.9 of
+ * <cite>The Java&trade; Language Specification</cite>.
  *
  * <p> Note that when using an enumeration type as the type of a set
  * or as the type of the keys in a map, specialized and efficient
--- a/jdk/src/share/classes/java/lang/Error.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/Error.java	Wed Apr 20 09:31:11 2011 -0700
@@ -43,7 +43,7 @@
  *
  * @author  Frank Yellin
  * @see     java.lang.ThreadDeath
- * @jls3 11.2 Compile-Time Checking of Exceptions
+ * @jls 11.2 Compile-Time Checking of Exceptions
  * @since   JDK1.0
  */
 public class Error extends Throwable {
--- a/jdk/src/share/classes/java/lang/Exception.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/Exception.java	Wed Apr 20 09:31:11 2011 -0700
@@ -39,7 +39,7 @@
  *
  * @author  Frank Yellin
  * @see     java.lang.Error
- * @jls3 11.2 Compile-Time Checking of Exceptions
+ * @jls 11.2 Compile-Time Checking of Exceptions
  * @since   JDK1.0
  */
 public class Exception extends Throwable {
--- a/jdk/src/share/classes/java/lang/Float.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/Float.java	Wed Apr 20 09:31:11 2011 -0700
@@ -353,9 +353,10 @@
      * where <i>Sign</i>, <i>FloatingPointLiteral</i>,
      * <i>HexNumeral</i>, <i>HexDigits</i>, <i>SignedInteger</i> and
      * <i>FloatTypeSuffix</i> are as defined in the lexical structure
-     * sections of the <a
-     * href="http://java.sun.com/docs/books/jls/html/">Java Language
-     * Specification</a>. If {@code s} does not have the form of
+     * sections of
+     * <cite>The Java&trade; Language Specification</cite>,
+     * except that underscores are not accepted between digits.
+     * If {@code s} does not have the form of
      * a <i>FloatValue</i>, then a {@code NumberFormatException}
      * is thrown. Otherwise, {@code s} is regarded as
      * representing an exact decimal value in the usual
--- a/jdk/src/share/classes/java/lang/Integer.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/Integer.java	Wed Apr 20 09:31:11 2011 -0700
@@ -918,9 +918,9 @@
      * </blockquote>
      *
      * <i>DecimalNumeral</i>, <i>HexDigits</i>, and <i>OctalDigits</i>
-     * are defined in <a href="http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#48282">&sect;3.10.1</a>
-     * of the <a href="http://java.sun.com/docs/books/jls/html/">Java
-     * Language Specification</a>.
+     * are as defined in section 3.10.1 of
+     * <cite>The Java&trade; Language Specification</cite>,
+     * except that underscores are not accepted between digits.
      *
      * <p>The sequence of characters following an optional
      * sign and/or radix specifier ("{@code 0x}", "{@code 0X}",
--- a/jdk/src/share/classes/java/lang/Long.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/Long.java	Wed Apr 20 09:31:11 2011 -0700
@@ -598,9 +598,9 @@
      * </blockquote>
      *
      * <i>DecimalNumeral</i>, <i>HexDigits</i>, and <i>OctalDigits</i>
-     * are defined in <a href="http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#48282">&sect;3.10.1</a>
-     * of the <a href="http://java.sun.com/docs/books/jls/html/">Java
-     * Language Specification</a>.
+     * are as defined in section 3.10.1 of
+     * <cite>The Java&trade; Language Specification</cite>,
+     * except that underscores are not accepted between digits.
      *
      * <p>The sequence of characters following an optional
      * sign and/or radix specifier ("{@code 0x}", "{@code 0X}",
--- a/jdk/src/share/classes/java/lang/Math.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/Math.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2011, Oracle and/or its affiliates. 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
@@ -627,11 +627,9 @@
     }
 
     /**
-     * Returns the closest {@code int} to the argument. The
-     * result is rounded to an integer by adding 1/2, taking the
-     * floor of the result, and casting the result to type {@code int}.
-     * In other words, the result is equal to the value of the expression:
-     * <p>{@code (int)Math.floor(a + 0.5f)}
+     * Returns the closest {@code int} to the argument, with ties
+     * rounding up.
+     *
      * <p>
      * Special cases:
      * <ul><li>If the argument is NaN, the result is 0.
@@ -649,17 +647,17 @@
      * @see     java.lang.Integer#MIN_VALUE
      */
     public static int round(float a) {
-        return (int)floor(a + 0.5f);
+        if (a != 0x1.fffffep-2f) // greatest float value less than 0.5
+            return (int)floor(a + 0.5f);
+        else
+            return 0;
     }
 
     /**
-     * Returns the closest {@code long} to the argument. The result
-     * is rounded to an integer by adding 1/2, taking the floor of the
-     * result, and casting the result to type {@code long}. In other
-     * words, the result is equal to the value of the expression:
-     * <p>{@code (long)Math.floor(a + 0.5d)}
-     * <p>
-     * Special cases:
+     * Returns the closest {@code long} to the argument, with ties
+     * rounding up.
+     *
+     * <p>Special cases:
      * <ul><li>If the argument is NaN, the result is 0.
      * <li>If the argument is negative infinity or any value less than or
      * equal to the value of {@code Long.MIN_VALUE}, the result is
@@ -676,7 +674,10 @@
      * @see     java.lang.Long#MIN_VALUE
      */
     public static long round(double a) {
-        return (long)floor(a + 0.5d);
+        if (a != 0x1.fffffffffffffp-2) // greatest double value less than 0.5
+            return (long)floor(a + 0.5d);
+        else
+            return 0;
     }
 
     private static Random randomNumberGenerator;
--- a/jdk/src/share/classes/java/lang/Object.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/Object.java	Wed Apr 20 09:31:11 2011 -0700
@@ -58,9 +58,8 @@
      *
      * @return The {@code Class} object that represents the runtime
      *         class of this object.
-     * @see    <a href="http://java.sun.com/docs/books/jls/">The Java
-     *         Language Specification, Third Edition (15.8.2 Class
-     *         Literals)</a>
+     * @see    Class Literals, section 15.8.2 of
+     *         <cite>The Java&trade; Language Specification</cite>.
      */
     public final native Class<?> getClass();
 
--- a/jdk/src/share/classes/java/lang/Override.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/Override.java	Wed Apr 20 09:31:11 2011 -0700
@@ -43,7 +43,7 @@
  *
  * @author  Peter von der Ah&eacute;
  * @author  Joshua Bloch
- * @jls3 9.6.1.4 Override
+ * @jls 9.6.1.4 Override
  * @since 1.5
  */
 @Target(ElementType.METHOD)
--- a/jdk/src/share/classes/java/lang/Package.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/Package.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -109,10 +109,9 @@
     /**
      * Return the name of this package.
      *
-     * @return  The fully-qualified name of this package as defined in the
-     *          <em>Java Language Specification, Third Edition</em>
-     *          <a href="http://java.sun.com/docs/books/jls/third_edition/html/names.html#6.5.3">
-     *          &sect;6.5.3</a>, for example, {@code java.lang}
+     * @return  The fully-qualified name of this package as defined in section 6.5.3 of
+     *          <cite>The Java&trade; Language Specification</cite>,
+     *          for example, {@code java.lang}
      */
     public String getName() {
         return pkgName;
--- a/jdk/src/share/classes/java/lang/ProcessBuilder.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/ProcessBuilder.java	Wed Apr 20 09:31:11 2011 -0700
@@ -938,6 +938,11 @@
      * but at the very least the command must be a non-empty list of
      * non-null strings.
      *
+     * <p>A minimal set of system dependent environment variables may
+     * be required to start a process on some operating systems.
+     * As a result, the subprocess may inherit additional environment variable
+     * settings beyond those in the process builder's {@link #environment()}.
+     *
      * <p>If there is a security manager, its
      * {@link SecurityManager#checkExec checkExec}
      * method is called with the first component of this object's
--- a/jdk/src/share/classes/java/lang/Runtime.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/Runtime.java	Wed Apr 20 09:31:11 2011 -0700
@@ -544,6 +544,11 @@
      * <p>If <tt>envp</tt> is <tt>null</tt>, the subprocess inherits the
      * environment settings of the current process.
      *
+     * <p>A minimal set of system dependent environment variables may
+     * be required to start a process on some operating systems.
+     * As a result, the subprocess may inherit additional environment variable
+     * settings beyond those in the specified environment.
+     *
      * <p>{@link ProcessBuilder#start()} is now the preferred way to
      * start a process with a modified environment.
      *
--- a/jdk/src/share/classes/java/lang/RuntimeException.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/RuntimeException.java	Wed Apr 20 09:31:11 2011 -0700
@@ -37,7 +37,7 @@
  * propagate outside the method or constructor boundary.
  *
  * @author  Frank Yellin
- * @jls3 11.2 Compile-Time Checking of Exceptions
+ * @jls 11.2 Compile-Time Checking of Exceptions
  * @since   JDK1.0
  */
 public class RuntimeException extends Exception {
--- a/jdk/src/share/classes/java/lang/SafeVarargs.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/SafeVarargs.java	Wed Apr 20 09:31:11 2011 -0700
@@ -70,8 +70,8 @@
  *
  * </ul>
  *
- * @jls3 4.7 Reifiable Types
- * @jls3 8.4.1 Formal Parameters
+ * @jls 4.7 Reifiable Types
+ * @jls 8.4.1 Formal Parameters
  */
 @Documented
 @Retention(RetentionPolicy.RUNTIME)
--- a/jdk/src/share/classes/java/lang/Short.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/Short.java	Wed Apr 20 09:31:11 2011 -0700
@@ -256,9 +256,9 @@
      * </blockquote>
      *
      * <i>DecimalNumeral</i>, <i>HexDigits</i>, and <i>OctalDigits</i>
-     * are defined in <a href="http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#48282">&sect;3.10.1</a>
-     * of the <a href="http://java.sun.com/docs/books/jls/html/">Java
-     * Language Specification</a>.
+     * are as defined in section 3.10.1 of
+     * <cite>The Java&trade; Language Specification</cite>,
+     * except that underscores are not accepted between digits.
      *
      * <p>The sequence of characters following an optional
      * sign and/or radix specifier ("{@code 0x}", "{@code 0X}",
--- a/jdk/src/share/classes/java/lang/StackTraceElement.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/StackTraceElement.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/lang/StrictMath.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/StrictMath.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
@@ -613,11 +613,8 @@
     public static native double pow(double a, double b);
 
     /**
-     * Returns the closest {@code int} to the argument. The
-     * result is rounded to an integer by adding 1/2, taking the
-     * floor of the result, and casting the result to type {@code int}.
-     * In other words, the result is equal to the value of the expression:
-     * <p>{@code (int)Math.floor(a + 0.5f)}
+     * Returns the closest {@code int} to the argument, with ties
+     * rounding up.
      *
      * <p>Special cases:
      * <ul><li>If the argument is NaN, the result is 0.
@@ -635,15 +632,12 @@
      * @see     java.lang.Integer#MIN_VALUE
      */
     public static int round(float a) {
-        return (int)floor(a + 0.5f);
+        return Math.round(a);
     }
 
     /**
-     * Returns the closest {@code long} to the argument. The result
-     * is rounded to an integer by adding 1/2, taking the floor of the
-     * result, and casting the result to type {@code long}. In other
-     * words, the result is equal to the value of the expression:
-     * <p>{@code (long)Math.floor(a + 0.5d)}
+     * Returns the closest {@code long} to the argument, with ties
+     * rounding up.
      *
      * <p>Special cases:
      * <ul><li>If the argument is NaN, the result is 0.
@@ -662,7 +656,7 @@
      * @see     java.lang.Long#MIN_VALUE
      */
     public static long round(double a) {
-        return (long)floor(a + 0.5d);
+        return Math.round(a);
     }
 
     private static Random randomNumberGenerator;
--- a/jdk/src/share/classes/java/lang/String.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/String.java	Wed Apr 20 09:31:11 2011 -0700
@@ -2819,8 +2819,8 @@
      *         extra arguments are ignored.  The number of arguments is
      *         variable and may be zero.  The maximum number of arguments is
      *         limited by the maximum dimension of a Java array as defined by
-     *         the <a href="http://java.sun.com/docs/books/vmspec/">Java
-     *         Virtual Machine Specification</a>.  The behaviour on a
+     *         <cite>The Java&trade; Virtual Machine Specification</cite>.
+     *         The behaviour on a
      *         <tt>null</tt> argument depends on the <a
      *         href="../util/Formatter.html#syntax">conversion</a>.
      *
@@ -2863,8 +2863,8 @@
      *         extra arguments are ignored.  The number of arguments is
      *         variable and may be zero.  The maximum number of arguments is
      *         limited by the maximum dimension of a Java array as defined by
-     *         the <a href="http://java.sun.com/docs/books/vmspec/">Java
-     *         Virtual Machine Specification</a>.  The behaviour on a
+     *         <cite>The Java&trade; Virtual Machine Specification</cite>.
+     *         The behaviour on a
      *         <tt>null</tt> argument depends on the <a
      *         href="../util/Formatter.html#syntax">conversion</a>.
      *
@@ -3066,9 +3066,8 @@
      * if and only if <code>s.equals(t)</code> is <code>true</code>.
      * <p>
      * All literal strings and string-valued constant expressions are
-     * interned. String literals are defined in &sect;3.10.5 of the
-     * <a href="http://java.sun.com/docs/books/jls/html/">Java Language
-     * Specification</a>
+     * interned. String literals are defined in section 3.10.5 of the
+     * <cite>The Java&trade; Language Specification</cite>.
      *
      * @return  a string that has the same contents as this string, but is
      *          guaranteed to be from a pool of unique strings.
--- a/jdk/src/share/classes/java/lang/StringCoding.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/StringCoding.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/lang/System.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/System.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/lang/Thread.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/Thread.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/lang/ThreadGroup.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/ThreadGroup.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/lang/Throwable.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/Throwable.java	Wed Apr 20 09:31:11 2011 -0700
@@ -108,7 +108,7 @@
  * @author  unascribed
  * @author  Josh Bloch (Added exception chaining and programmatic access to
  *          stack trace in 1.4.)
- * @jls3 11.2 Compile-Time Checking of Exceptions
+ * @jls 11.2 Compile-Time Checking of Exceptions
  * @since JDK1.0
  */
 public class Throwable implements Serializable {
--- a/jdk/src/share/classes/java/lang/annotation/Annotation.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/annotation/Annotation.java	Wed Apr 20 09:31:11 2011 -0700
@@ -31,9 +31,8 @@
  * an annotation type.  Also note that this interface does not itself
  * define an annotation type.
  *
- * More information about annotation types can be found in <i>The
- * Java&trade; Language Specification, Third Edition</i>, <a
- * href="http://java.sun.com/docs/books/jls/third_edition/html/interfaces.html#9.6">&sect;9.6</a>.
+ * More information about annotation types can be found in section 9.6 of
+ * <cite>The Java&trade; Language Specification</cite>.
  *
  * @author  Josh Bloch
  * @since   1.5
--- a/jdk/src/share/classes/java/lang/instrument/ClassFileTransformer.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/instrument/ClassFileTransformer.java	Wed Apr 20 09:31:11 2011 -0700
@@ -36,9 +36,9 @@
  * to transform class files.
  * The transformation occurs before the class is defined by the JVM.
  * <P>
- * Note the term <i>class file</i> is used as defined in the chapter
- * <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#80959">The class File Format</a>
- * of <i>The Java Virtual Machine Specification</i>, to mean a sequence
+ * Note the term <i>class file</i> is used as defined in section 3.1 of
+ * <cite>The Java&trade; Virtual Machine Specification</cite>,
+ * to mean a sequence
  * of bytes in class file format, whether or not they reside in a file.
  *
  * @see     java.lang.instrument.Instrumentation
--- a/jdk/src/share/classes/java/lang/instrument/Instrumentation.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/instrument/Instrumentation.java	Wed Apr 20 09:31:11 2011 -0700
@@ -434,8 +434,9 @@
      * avoiding these types of issues, is to use a unique package name for the
      * instrumentation classes.
      *
-     * <p> The <a href="http://java.sun.com/docs/books/vmspec/">Java Virtual Machine
-     * Specification</a> specifies that a subsequent attempt to resolve a symbolic
+     * <p>
+     * <cite>The Java&trade; Virtual Machine Specification</cite>
+     * specifies that a subsequent attempt to resolve a symbolic
      * reference that the Java virtual machine has previously unsuccessfully attempted
      * to resolve always fails with the same error that was thrown as a result of the
      * initial resolution attempt. Consequently, if the JAR file contains an entry
@@ -487,8 +488,9 @@
      * getName()} method on the <code>jarfile</code> and this is provided as the
      * parameter to the <code>appendToClassPathForInstrumentation</code> method.
      *
-     * <p> The <a href="http://java.sun.com/docs/books/vmspec/">Java Virtual Machine
-     * Specification</a> specifies that a subsequent attempt to resolve a symbolic
+     * <p>
+     * <cite>The Java&trade; Virtual Machine Specification</cite>
+     * specifies that a subsequent attempt to resolve a symbolic
      * reference that the Java virtual machine has previously unsuccessfully attempted
      * to resolve always fails with the same error that was thrown as a result of the
      * initial resolution attempt. Consequently, if the JAR file contains an entry
--- a/jdk/src/share/classes/java/lang/invoke/package-info.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/invoke/package-info.java	Wed Apr 20 09:31:11 2011 -0700
@@ -194,8 +194,8 @@
  * Method handle constants for subtags {@code REF_getStatic}, {@code REF_putStatic}, and {@code REF_invokeStatic}
  * may force class initialization on their first invocation, just like the corresponding bytecodes.
  * <p>
- * The rules of section 5.4.3 of the
- * <a href="http://java.sun.com/docs/books/jvms/second_edition/html/ConstantPool.doc.html#73492">JVM Specification</a>
+ * The rules of section 5.4.3 of
+ * <cite>The Java&trade; Virtual Machine Specification</cite>
  * apply to the resolution of {@code CONSTANT_MethodType}, {@code CONSTANT_MethodHandle},
  * and {@code CONSTANT_InvokeDynamic} constants,
  * by the execution of {@code invokedynamic} and {@code ldc} instructions.
--- a/jdk/src/share/classes/java/lang/management/ManagementFactory.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/management/ManagementFactory.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/lang/management/PlatformComponent.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/management/PlatformComponent.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/lang/reflect/Constructor.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/reflect/Constructor.java	Wed Apr 20 09:31:11 2011 -0700
@@ -186,8 +186,8 @@
      *     the type variables declared by this generic declaration
      * @throws GenericSignatureFormatError if the generic
      *     signature of this generic declaration does not conform to
-     *     the format specified in the Java Virtual Machine Specification,
-     *     3rd edition
+     *     the format specified in
+     *     <cite>The Java&trade; Virtual Machine Specification</cite>
      * @since 1.5
      */
     public TypeVariable<Constructor<T>>[] getTypeParameters() {
@@ -229,7 +229,8 @@
      *     parameter types of the underlying method, in declaration order
      * @throws GenericSignatureFormatError
      *     if the generic method signature does not conform to the format
-     *     specified in the Java Virtual Machine Specification, 3rd edition
+     *     specified in
+     *     <cite>The Java&trade; Virtual Machine Specification</cite>
      * @throws TypeNotPresentException if any of the parameter
      *     types of the underlying method refers to a non-existent type
      *     declaration
@@ -273,7 +274,8 @@
      *     thrown by the underlying method
      * @throws GenericSignatureFormatError
      *     if the generic method signature does not conform to the format
-     *     specified in the Java Virtual Machine Specification, 3rd edition
+     *     specified in
+     *     <cite>The Java&trade; Virtual Machine Specification</cite>
      * @throws TypeNotPresentException if the underlying method's
      *     {@code throws} clause refers to a non-existent type declaration
      * @throws MalformedParameterizedTypeException if
@@ -468,8 +470,8 @@
      *
      * <p>If the constructor's declaring class is an inner class in a
      * non-static context, the first argument to the constructor needs
-     * to be the enclosing instance; see <i>The Java Language
-     * Specification</i>, section 15.9.3.
+     * to be the enclosing instance; see section 15.9.3 of
+     * <cite>The Java&trade; Language Specification</cite>.
      *
      * <p>If the required access and argument checks succeed and the
      * instantiation will proceed, the constructor's declaring class
@@ -541,7 +543,8 @@
      * constructor; returns {@code false} otherwise.
      *
      * @return true if and only if this constructor is a synthetic
-     * constructor as defined by the Java Language Specification.
+     * constructor as defined by
+     * <cite>The Java&trade; Language Specification</cite>.
      * @since 1.5
      */
     public boolean isSynthetic() {
--- a/jdk/src/share/classes/java/lang/reflect/Field.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/reflect/Field.java	Wed Apr 20 09:31:11 2011 -0700
@@ -221,8 +221,8 @@
      * @return a {@code Type} object that represents the declared type for
      *     the field represented by this {@code Field} object
      * @throws GenericSignatureFormatError if the generic field
-     *     signature does not conform to the format specified in the Java
-     *     Virtual Machine Specification, 3rd edition
+     *     signature does not conform to the format specified in
+     *     <cite>The Java&trade; Virtual Machine Specification</cite>
      * @throws TypeNotPresentException if the generic type
      *     signature of the underlying field refers to a non-existent
      *     type declaration
--- a/jdk/src/share/classes/java/lang/reflect/GenericDeclaration.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/reflect/GenericDeclaration.java	Wed Apr 20 09:31:11 2011 -0700
@@ -42,8 +42,8 @@
      *     the type variables declared by this generic declaration
      * @throws GenericSignatureFormatError if the generic
      *     signature of this generic declaration does not conform to
-     *     the format specified in the Java Virtual Machine Specification,
-     *     3rd edition
+     *     the format specified in
+     *     <cite>The Java&trade; Virtual Machine Specification</cite>
      */
     public TypeVariable<?>[] getTypeParameters();
 }
--- a/jdk/src/share/classes/java/lang/reflect/Method.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/reflect/Method.java	Wed Apr 20 09:31:11 2011 -0700
@@ -194,8 +194,8 @@
      *     the type variables declared by this generic declaration
      * @throws GenericSignatureFormatError if the generic
      *     signature of this generic declaration does not conform to
-     *     the format specified in the Java Virtual Machine Specification,
-     *     3rd edition
+     *     the format specified in
+     *     <cite>The Java&trade; Virtual Machine Specification</cite>
      * @since 1.5
      */
     public TypeVariable<Method>[] getTypeParameters() {
@@ -230,7 +230,8 @@
      *     type of the underlying  method
      * @throws GenericSignatureFormatError
      *     if the generic method signature does not conform to the format
-     *     specified in the Java Virtual Machine Specification, 3rd edition
+     *     specified in
+     *     <cite>The Java&trade; Virtual Machine Specification</cite>
      * @throws TypeNotPresentException if the underlying method's
      *     return type refers to a non-existent type declaration
      * @throws MalformedParameterizedTypeException if the
@@ -275,7 +276,8 @@
      *     parameter types of the underlying method, in declaration order
      * @throws GenericSignatureFormatError
      *     if the generic method signature does not conform to the format
-     *     specified in the Java Virtual Machine Specification, 3rd edition
+     *     specified in
+     *     <cite>The Java&trade; Virtual Machine Specification</cite>
      * @throws TypeNotPresentException if any of the parameter
      *     types of the underlying method refers to a non-existent type
      *     declaration
@@ -319,7 +321,8 @@
      *     thrown by the underlying method
      * @throws GenericSignatureFormatError
      *     if the generic method signature does not conform to the format
-     *     specified in the Java Virtual Machine Specification, 3rd edition
+     *     specified in
+     *     <cite>The Java&trade; Virtual Machine Specification</cite>
      * @throws TypeNotPresentException if the underlying method's
      *     {@code throws} clause refers to a non-existent type declaration
      * @throws MalformedParameterizedTypeException if
--- a/jdk/src/share/classes/java/lang/reflect/Modifier.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/reflect/Modifier.java	Wed Apr 20 09:31:11 2011 -0700
@@ -34,14 +34,8 @@
  * constants to decode class and member access modifiers.  The sets of
  * modifiers are represented as integers with distinct bit positions
  * representing different modifiers.  The values for the constants
- * representing the modifiers are taken from <a
- * href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html"><i>The
- * Java</i><sup><small>TM</small></sup> <i>Virtual Machine Specification, Second
- * edition</i></a> tables
- * <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#75734">4.1</a>,
- * <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#88358">4.4</a>,
- * <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#75568">4.5</a>, and
- * <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#88478">4.7</a>.
+ * representing the modifiers are taken from the tables in sections 4.1, 4.4, 4.5, and 4.7 of
+ * <cite>The Java&trade; Virtual Machine Specification</cite>.
  *
  * @see Class#getModifiers()
  * @see Member#getModifiers()
@@ -214,14 +208,8 @@
      *    public final synchronized strictfp
      * </pre></blockquote>
      * The modifier names are returned in an order consistent with the
-     * suggested modifier orderings given in <a
-     * href="http://java.sun.com/docs/books/jls/second_edition/html/j.title.doc.html"><em>The
-     * Java Language Specification, Second Edition</em></a> sections
-     * <a href="http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#21613">&sect;8.1.1</a>,
-     * <a href="http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#78091">&sect;8.3.1</a>,
-     * <a href="http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#78188">&sect;8.4.3</a>,
-     * <a href="http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#42018">&sect;8.8.3</a>, and
-     * <a href="http://java.sun.com/docs/books/jls/second_edition/html/interfaces.doc.html#235947">&sect;9.1.1</a>.
+     * suggested modifier orderings given in sections 8.1.1, 8.3.1, 8.4.3, 8.8.3, and 9.1.1 of
+     * <cite>The Java&trade; Language Specification</cite>.
      * The full modifier ordering used by this method is:
      * <blockquote> {@code
      * public protected private abstract static final transient
@@ -269,9 +257,8 @@
     }
 
     /*
-     * Access modifier flag constants from <em>The Java Virtual
-     * Machine Specification, Second Edition</em>, tables 4.1, 4.4,
-     * 4.5, and 4.7.
+     * Access modifier flag constants from tables 4.1, 4.4, 4.5, and 4.7 of
+     * <cite>The Java&trade; Virtual Machine Specification</cite>
      */
 
     /**
@@ -403,7 +390,7 @@
      * @return an {@code int} value OR-ing together the source language
      * modifiers that can be applied to a class.
      *
-     * @jls3 8.1.1 Class Modifiers
+     * @jls 8.1.1 Class Modifiers
      * @since 1.7
      */
     public static int classModifiers() {
@@ -416,7 +403,7 @@
      * @return an {@code int} value OR-ing together the source language
      * modifiers that can be applied to an inteface.
      *
-     * @jls3 9.1.1 Interface Modifiers
+     * @jls 9.1.1 Interface Modifiers
      * @since 1.7
      */
     public static int interfaceModifiers() {
@@ -429,7 +416,7 @@
      * @return an {@code int} value OR-ing together the source language
      * modifiers that can be applied to a constructor.
      *
-     * @jls3 8.8.3 Constructor Modifiers
+     * @jls 8.8.3 Constructor Modifiers
      * @since 1.7
      */
     public static int constructorModifiers() {
@@ -442,7 +429,7 @@
      * @return an {@code int} value OR-ing together the source language
      * modifiers that can be applied to a method.
      *
-     * @jls3 8.4.3 Method Modifiers
+     * @jls 8.4.3 Method Modifiers
      * @since 1.7
      */
     public static int methodModifiers() {
@@ -456,7 +443,7 @@
      * @return an {@code int} value OR-ing together the source language
      * modifiers that can be applied to a field.
      *
-     * @jls3 8.3.1 Field Modifiers
+     * @jls 8.3.1 Field Modifiers
      * @since 1.7
      */
     public static int fieldModifiers() {
--- a/jdk/src/share/classes/java/lang/reflect/Proxy.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/reflect/Proxy.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/lang/reflect/ReflectAccess.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/lang/reflect/ReflectAccess.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/math/BigDecimal.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/math/BigDecimal.java	Wed Apr 20 09:31:11 2011 -0700
@@ -2905,12 +2905,11 @@
 
     /**
      * Converts this {@code BigDecimal} to a {@code BigInteger}.
-     * This conversion is analogous to a <a
-     * href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#25363"><i>narrowing
-     * primitive conversion</i></a> from {@code double} to
-     * {@code long} as defined in the <a
-     * href="http://java.sun.com/docs/books/jls/html/">Java Language
-     * Specification</a>: any fractional part of this
+     * This conversion is analogous to the
+     * <i>narrowing primitive conversion</i> from {@code double} to
+     * {@code long} as defined in section 5.1.3 of
+     * <cite>The Java&trade; Language Specification</cite>:
+     * any fractional part of this
      * {@code BigDecimal} will be discarded.  Note that this
      * conversion can lose information about the precision of the
      * {@code BigDecimal} value.
@@ -2942,13 +2941,12 @@
     }
 
     /**
-     * Converts this {@code BigDecimal} to a {@code long}.  This
-     * conversion is analogous to a <a
-     * href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#25363"><i>narrowing
-     * primitive conversion</i></a> from {@code double} to
-     * {@code short} as defined in the <a
-     * href="http://java.sun.com/docs/books/jls/html/">Java Language
-     * Specification</a>: any fractional part of this
+     * Converts this {@code BigDecimal} to a {@code long}.
+     * This conversion is analogous to the
+     * <i>narrowing primitive conversion</i> from {@code double} to
+     * {@code short} as defined in section 5.1.3 of
+     * <cite>The Java&trade; Language Specification</cite>:
+     * any fractional part of this
      * {@code BigDecimal} will be discarded, and if the resulting
      * "{@code BigInteger}" is too big to fit in a
      * {@code long}, only the low-order 64 bits are returned.
@@ -3011,13 +3009,12 @@
     }
 
     /**
-     * Converts this {@code BigDecimal} to an {@code int}.  This
-     * conversion is analogous to a <a
-     * href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#25363"><i>narrowing
-     * primitive conversion</i></a> from {@code double} to
-     * {@code short} as defined in the <a
-     * href="http://java.sun.com/docs/books/jls/html/">Java Language
-     * Specification</a>: any fractional part of this
+     * Converts this {@code BigDecimal} to an {@code int}.
+     * This conversion is analogous to the
+     * <i>narrowing primitive conversion</i> from {@code double} to
+     * {@code short} as defined in section 5.1.3 of
+     * <cite>The Java&trade; Language Specification</cite>:
+     * any fractional part of this
      * {@code BigDecimal} will be discarded, and if the resulting
      * "{@code BigInteger}" is too big to fit in an
      * {@code int}, only the low-order 32 bits are returned.
@@ -3095,12 +3092,11 @@
 
     /**
      * Converts this {@code BigDecimal} to a {@code float}.
-     * This conversion is similar to the <a
-     * href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#25363"><i>narrowing
-     * primitive conversion</i></a> from {@code double} to
-     * {@code float} defined in the <a
-     * href="http://java.sun.com/docs/books/jls/html/">Java Language
-     * Specification</a>: if this {@code BigDecimal} has too great a
+     * This conversion is similar to the
+     * <i>narrowing primitive conversion</i> from {@code double} to
+     * {@code float} as defined in section 5.1.3 of
+     * <cite>The Java&trade; Language Specification</cite>:
+     * if this {@code BigDecimal} has too great a
      * magnitude to represent as a {@code float}, it will be
      * converted to {@link Float#NEGATIVE_INFINITY} or {@link
      * Float#POSITIVE_INFINITY} as appropriate.  Note that even when
@@ -3119,12 +3115,11 @@
 
     /**
      * Converts this {@code BigDecimal} to a {@code double}.
-     * This conversion is similar to the <a
-     * href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#25363"><i>narrowing
-     * primitive conversion</i></a> from {@code double} to
-     * {@code float} as defined in the <a
-     * href="http://java.sun.com/docs/books/jls/html/">Java Language
-     * Specification</a>: if this {@code BigDecimal} has too great a
+     * This conversion is similar to the
+     * <i>narrowing primitive conversion</i> from {@code double} to
+     * {@code float} as defined in section 5.1.3 of
+     * <cite>The Java&trade; Language Specification</cite>:
+     * if this {@code BigDecimal} has too great a
      * magnitude represent as a {@code double}, it will be
      * converted to {@link Double#NEGATIVE_INFINITY} or {@link
      * Double#POSITIVE_INFINITY} as appropriate.  Note that even when
--- a/jdk/src/share/classes/java/math/BigInteger.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/math/BigInteger.java	Wed Apr 20 09:31:11 2011 -0700
@@ -2719,12 +2719,11 @@
 
     /**
      * Converts this BigInteger to an {@code int}.  This
-     * conversion is analogous to a <a
-     * href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#25363"><i>narrowing
-     * primitive conversion</i></a> from {@code long} to
-     * {@code int} as defined in the <a
-     * href="http://java.sun.com/docs/books/jls/html/">Java Language
-     * Specification</a>: if this BigInteger is too big to fit in an
+     * conversion is analogous to a
+     * <i>narrowing primitive conversion</i> from {@code long} to
+     * {@code int} as defined in section 5.1.3 of
+     * <cite>The Java&trade; Language Specification</cite>:
+     * if this BigInteger is too big to fit in an
      * {@code int}, only the low-order 32 bits are returned.
      * Note that this conversion can lose information about the
      * overall magnitude of the BigInteger value as well as return a
@@ -2740,12 +2739,11 @@
 
     /**
      * Converts this BigInteger to a {@code long}.  This
-     * conversion is analogous to a <a
-     * href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#25363"><i>narrowing
-     * primitive conversion</i></a> from {@code long} to
-     * {@code int} as defined in the <a
-     * href="http://java.sun.com/docs/books/jls/html/">Java Language
-     * Specification</a>: if this BigInteger is too big to fit in a
+     * conversion is analogous to a
+     * <i>narrowing primitive conversion</i> from {@code long} to
+     * {@code int} as defined in section 5.1.3 of
+     * <cite>The Java&trade; Language Specification</cite>:
+     * if this BigInteger is too big to fit in a
      * {@code long}, only the low-order 64 bits are returned.
      * Note that this conversion can lose information about the
      * overall magnitude of the BigInteger value as well as return a
@@ -2763,12 +2761,11 @@
 
     /**
      * Converts this BigInteger to a {@code float}.  This
-     * conversion is similar to the <a
-     * href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#25363"><i>narrowing
-     * primitive conversion</i></a> from {@code double} to
-     * {@code float} defined in the <a
-     * href="http://java.sun.com/docs/books/jls/html/">Java Language
-     * Specification</a>: if this BigInteger has too great a magnitude
+     * conversion is similar to the
+     * <i>narrowing primitive conversion</i> from {@code double} to
+     * {@code float} as defined in section 5.1.3 of
+     * <cite>The Java&trade; Language Specification</cite>:
+     * if this BigInteger has too great a magnitude
      * to represent as a {@code float}, it will be converted to
      * {@link Float#NEGATIVE_INFINITY} or {@link
      * Float#POSITIVE_INFINITY} as appropriate.  Note that even when
@@ -2784,12 +2781,11 @@
 
     /**
      * Converts this BigInteger to a {@code double}.  This
-     * conversion is similar to the <a
-     * href="http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#25363"><i>narrowing
-     * primitive conversion</i></a> from {@code double} to
-     * {@code float} defined in the <a
-     * href="http://java.sun.com/docs/books/jls/html/">Java Language
-     * Specification</a>: if this BigInteger has too great a magnitude
+     * conversion is similar to the
+     * <i>narrowing primitive conversion</i> from {@code double} to
+     * {@code float} as defined in section 5.1.3 of
+     * <cite>The Java&trade; Language Specification</cite>:
+     * if this BigInteger has too great a magnitude
      * to represent as a {@code double}, it will be converted to
      * {@link Double#NEGATIVE_INFINITY} or {@link
      * Double#POSITIVE_INFINITY} as appropriate.  Note that even when
--- a/jdk/src/share/classes/java/net/AbstractPlainDatagramSocketImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/net/AbstractPlainDatagramSocketImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/net/AbstractPlainSocketImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/net/AbstractPlainSocketImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/net/HttpURLConnection.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/net/HttpURLConnection.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/net/InetAddress.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/net/InetAddress.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/net/NetPermission.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/net/NetPermission.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/net/NetworkInterface.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/net/NetworkInterface.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/net/URI.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/net/URI.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/net/URLClassLoader.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/net/URLClassLoader.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/net/doc-files/net-properties.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/net/doc-files/net-properties.html	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/net/package.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/net/package.html	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/channels/AsynchronousFileChannel.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/channels/AsynchronousFileChannel.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/channels/FileChannel.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/channels/FileChannel.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/channels/SeekableByteChannel.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/channels/SeekableByteChannel.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/channels/SocketChannel.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/channels/SocketChannel.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/AccessMode.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/AccessMode.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/CopyOption.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/CopyOption.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/DirectoryIteratorException.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/DirectoryIteratorException.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/DirectoryStream.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/DirectoryStream.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/FileStore.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/FileStore.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/FileSystem.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/FileSystem.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
@@ -391,6 +391,13 @@
      *   character is used to separate the subpatterns. Groups cannot be nested.
      *   </p></li>
      *
+     *   <li><p> Leading period<tt>&#47;</tt>dot characters in file name are
+     *   treated as regular characters in match operations. For example,
+     *   the {@code "*"} glob pattern matches file name {@code ".login"}.
+     *   The {@link Files#isHidden} method may be used to test whether a file
+     *   is considered hidden.
+     *   </p></li>
+     *
      *   <li><p> All other characters match themselves in an implementation
      *   dependent manner. This includes characters representing any {@link
      *   FileSystem#getSeparator name-separators}. </p></li>
--- a/jdk/src/share/classes/java/nio/file/FileSystems.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/FileSystems.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/FileTreeWalker.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/FileTreeWalker.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/FileVisitor.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/FileVisitor.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/Files.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/Files.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/LinkOption.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/LinkOption.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/LinkPermission.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/LinkPermission.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/OpenOption.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/OpenOption.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/Path.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/Path.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/PathMatcher.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/PathMatcher.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/Paths.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/Paths.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/SecureDirectoryStream.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/SecureDirectoryStream.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/SimpleFileVisitor.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/SimpleFileVisitor.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/TempFileHelper.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/TempFileHelper.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/WatchEvent.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/WatchEvent.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/WatchKey.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/WatchKey.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/WatchService.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/WatchService.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/attribute/AclEntry.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/attribute/AclEntry.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/attribute/AclFileAttributeView.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/attribute/AclFileAttributeView.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/attribute/BasicFileAttributeView.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/attribute/BasicFileAttributeView.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/attribute/BasicFileAttributes.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/attribute/BasicFileAttributes.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/attribute/DosFileAttributeView.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/attribute/DosFileAttributeView.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/attribute/DosFileAttributes.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/attribute/DosFileAttributes.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/attribute/FileAttribute.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/attribute/FileAttribute.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/attribute/FileAttributeView.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/attribute/FileAttributeView.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/attribute/FileOwnerAttributeView.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/attribute/FileOwnerAttributeView.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/attribute/FileTime.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/attribute/FileTime.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/attribute/PosixFileAttributeView.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/attribute/PosixFileAttributeView.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/attribute/PosixFileAttributes.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/attribute/PosixFileAttributes.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/attribute/PosixFilePermission.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/attribute/PosixFilePermission.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/attribute/PosixFilePermissions.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/attribute/PosixFilePermissions.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/attribute/UserDefinedFileAttributeView.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/attribute/UserDefinedFileAttributeView.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/attribute/package-info.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/attribute/package-info.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/package-info.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/package-info.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/spi/FileSystemProvider.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/spi/FileSystemProvider.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/nio/file/spi/FileTypeDetector.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/nio/file/spi/FileTypeDetector.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/AccessControlContext.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/AccessControlContext.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/AlgorithmParameterGenerator.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/AlgorithmParameterGenerator.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/AlgorithmParameters.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/AlgorithmParameters.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/BasicPermission.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/BasicPermission.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/KeyFactory.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/KeyFactory.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/KeyPairGenerator.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/KeyPairGenerator.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/KeyStore.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/KeyStore.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/MessageDigest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/MessageDigest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/Permissions.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/Permissions.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/Policy.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/Policy.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/ProtectionDomain.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/ProtectionDomain.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/Provider.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/Provider.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/SecureClassLoader.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/SecureClassLoader.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -118,10 +118,8 @@
      *                  and without a trailing ".class" suffix.
      * @param      b    the bytes that make up the class data. The bytes in
      *             positions <code>off</code> through <code>off+len-1</code>
-     *             should have the format of a valid class file as defined
-     *             by the
-     *             <a href="http://java.sun.com/docs/books/vmspec/">Java
-     *             Virtual Machine Specification</a>.
+     *             should have the format of a valid class file as defined by
+     *             <cite>The Java&trade; Virtual Machine Specification</cite>.
      * @param      off  the start offset in <code>b</code> of the class data
      * @param      len  the length of the class data
      * @param      cs   the associated CodeSource, or <code>null</code> if none
@@ -157,9 +155,8 @@
      *                  and without a trailing ".class" suffix.
      * @param      b    the bytes that make up the class data.  The bytes from positions
      *                  <tt>b.position()</tt> through <tt>b.position() + b.limit() -1</tt>
-     *                  should have the format of a valid class file as defined by the
-     *                  <a href="http://java.sun.com/docs/books/vmspec/">Java Virtual
-     *                  Machine Specification</a>.
+     *                  should have the format of a valid class file as defined by
+     *                  <cite>The Java&trade; Virtual Machine Specification</cite>.
      * @param      cs   the associated CodeSource, or <code>null</code> if none
      * @return the <code>Class</code> object created from the data,
      *         and optional CodeSource.
--- a/jdk/src/share/classes/java/security/SecureRandom.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/SecureRandom.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/Security.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/Security.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/Signature.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/Signature.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/UnresolvedPermission.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/UnresolvedPermission.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/UnresolvedPermissionCollection.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/UnresolvedPermissionCollection.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/cert/CertPath.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/cert/CertPath.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/cert/CertPathBuilder.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/cert/CertPathBuilder.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/cert/CertPathValidator.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/cert/CertPathValidator.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/cert/CertStore.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/cert/CertStore.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/cert/Certificate.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/cert/Certificate.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/cert/CertificateFactory.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/cert/CertificateFactory.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/cert/CertificateFactorySpi.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/cert/CertificateFactorySpi.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/cert/package.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/cert/package.html	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/security/package.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/security/package.html	Wed Apr 20 09:31:11 2011 -0700
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--
-Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/sql/ResultSet.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/sql/ResultSet.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
@@ -137,7 +137,7 @@
  * to retrieve the next result from a sequence of multiple results.
  *
  * <P>The number, types and properties of a <code>ResultSet</code>
- * object's columns are provided by the <code>ResulSetMetaData</code>
+ * object's columns are provided by the <code>ResultSetMetaData</code>
  * object returned by the <code>ResultSet.getMetaData</code> method.
  *
  * @see Statement#executeQuery
@@ -422,7 +422,7 @@
      * of this <code>ResultSet</code> object as
      * a stream of ASCII characters. The value can then be read in chunks from the
      * stream. This method is particularly
-     * suitable for retrieving large <char>LONGVARCHAR</char> values.
+     * suitable for retrieving large <code>LONGVARCHAR</code> values.
      * The JDBC driver will
      * do any necessary conversion from the database format into ASCII.
      *
--- a/jdk/src/share/classes/java/sql/SQLPermission.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/sql/SQLPermission.java	Wed Apr 20 09:31:11 2011 -0700
@@ -116,11 +116,11 @@
 
     /**
      * Creates a new <code>SQLPermission</code> object with the specified name.
-     * The name is the symbolic name of the <code>SQLPermission</code>; currently,
-     * the only name allowed is "setLog".
+     * The name is the symbolic name of the <code>SQLPermission</code>.
      *
      * @param name the name of this <code>SQLPermission</code> object, which must
-         *             be <code>setLog</code>
+     * be either {@code  setLog}, {@code callAbort}, {@code setSyncFactory},
+     *  or {@code setNetworkTimeout}
      * @throws NullPointerException if <code>name</code> is <code>null</code>.
      * @throws IllegalArgumentException if <code>name</code> is empty.
 
@@ -134,10 +134,11 @@
      * Creates a new <code>SQLPermission</code> object with the specified name.
      * The name is the symbolic name of the <code>SQLPermission</code>; the
      * actions <code>String</code> is currently unused and should be
-         * <code>null</code>.
+     * <code>null</code>.
      *
      * @param name the name of this <code>SQLPermission</code> object, which must
-     *             be <code>setLog</code>
+     * be either {@code  setLog}, {@code callAbort}, {@code setSyncFactory},
+     *  or {@code setNetworkTimeout}
      * @param actions should be <code>null</code>
      * @throws NullPointerException if <code>name</code> is <code>null</code>.
      * @throws IllegalArgumentException if <code>name</code> is empty.
--- a/jdk/src/share/classes/java/sql/Timestamp.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/sql/Timestamp.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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,7 +54,7 @@
  * As a result, the <code>Timestamp.equals(Object)</code>
  * method is not symmetric with respect to the
  * <code>java.util.Date.equals(Object)</code>
- * method.  Also, the <code>hashcode</code> method uses the underlying
+ * method.  Also, the <code>hashCode</code> method uses the underlying
  * <code>java.util.Date</code>
  * implementation and therefore does not include nanos in its computation.
  * <P>
@@ -515,6 +515,18 @@
       }
     }
 
+    /**
+     * {@inheritDoc}
+     *
+     * The {@code hashCode} method uses the underlying {@code java.util.Date}
+     * implementation and therefore does not include nanos in its computation.
+     *
+     */
+    @Override
+    public int hashCode() {
+        return super.hashCode();
+    }
+
     static final long serialVersionUID = 2745179027874758501L;
 
 }
--- a/jdk/src/share/classes/java/text/SimpleDateFormat.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/text/SimpleDateFormat.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/Arrays.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/Arrays.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/Collections.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/Collections.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/Currency.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/Currency.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/DualPivotQuicksort.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/DualPivotQuicksort.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/EnumMap.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/EnumMap.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/EnumSet.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/EnumSet.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/Formatter.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/Formatter.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1818,9 +1818,9 @@
  * </pre></blockquote>
  *
  * <p> The maximum number of arguments is limited by the maximum dimension of a
- * Java array as defined by the <a
- * href="http://java.sun.com/docs/books/vmspec/">Java Virtual Machine
- * Specification</a>.  If the argument index is does not correspond to an
+ * Java array as defined by
+ * <cite>The Java&trade; Virtual Machine Specification</cite>.
+ * If the argument index is does not correspond to an
  * available argument, then a {@link MissingFormatArgumentException} is thrown.
  *
  * <p> If there are more arguments than format specifiers, the extra arguments
@@ -2403,8 +2403,7 @@
      *         string.  If there are more arguments than format specifiers, the
      *         extra arguments are ignored.  The maximum number of arguments is
      *         limited by the maximum dimension of a Java array as defined by
-     *         the <a href="http://java.sun.com/docs/books/vmspec/">Java
-     *         Virtual Machine Specification</a>.
+     *         <cite>The Java&trade; Virtual Machine Specification</cite>.
      *
      * @throws  IllegalFormatException
      *          If a format string contains an illegal syntax, a format
@@ -2443,8 +2442,7 @@
      *         string.  If there are more arguments than format specifiers, the
      *         extra arguments are ignored.  The maximum number of arguments is
      *         limited by the maximum dimension of a Java array as defined by
-     *         the <a href="http://java.sun.com/docs/books/vmspec/">Java
-     *         Virtual Machine Specification</a>
+     *         <cite>The Java&trade; Virtual Machine Specification</cite>.
      *
      * @throws  IllegalFormatException
      *          If a format string contains an illegal syntax, a format
--- a/jdk/src/share/classes/java/util/HashMap.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/HashMap.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/HashSet.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/HashSet.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/Hashtable.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/Hashtable.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/JumboEnumSet.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/JumboEnumSet.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/LinkedHashMap.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/LinkedHashMap.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/LinkedList.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/LinkedList.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/ListIterator.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/ListIterator.java	Wed Apr 20 09:31:11 2011 -0700
@@ -173,9 +173,9 @@
 
     /**
      * Inserts the specified element into the list (optional operation).
-     * The element is inserted immediately before the next element that
-     * would be returned by {@link #next}, if any, and after the next
-     * element that would be returned by {@link #previous}, if any.  (If the
+     * The element is inserted immediately before the element that
+     * would be returned by {@link #next}, if any, and after the element
+     * that would be returned by {@link #previous}, if any.  (If the
      * list contains no elements, the new element becomes the sole element
      * on the list.)  The new element is inserted before the implicit
      * cursor: a subsequent call to {@code next} would be unaffected, and a
--- a/jdk/src/share/classes/java/util/Locale.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/Locale.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/Objects.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/Objects.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/Properties.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/Properties.java	Wed Apr 20 09:31:11 2011 -0700
@@ -68,8 +68,9 @@
  * methods work the same way as the load(Reader)/store(Writer, String) pair, except
  * the input/output stream is encoded in ISO 8859-1 character encoding.
  * Characters that cannot be directly represented in this encoding can be written using
- * <a href="http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.3">Unicode escapes</a>
- * ; only a single 'u' character is allowed in an escape
+ * Unicode escapes as defined in section 3.3 of
+ * <cite>The Java&trade; Language Specification</cite>;
+ * only a single 'u' character is allowed in an escape
  * sequence. The native2ascii tool can be used to convert property files to and
  * from other character encodings.
  *
@@ -272,11 +273,8 @@
      * <a name="unicodeescapes"></a>
      * Characters in keys and elements can be represented in escape
      * sequences similar to those used for character and string literals
-     * (see <a
-     * href="http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.3">&sect;3.3</a>
-     * and <a
-     * href="http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10.6">&sect;3.10.6</a>
-     * of the <i>Java Language Specification</i>).
+     * (see sections 3.3 and 3.10.6 of
+     * <cite>The Java&trade; Language Specification</cite>).
      *
      * The differences from the character escape sequences and Unicode
      * escapes used for characters and strings are:
@@ -326,8 +324,9 @@
      * {@link #load(java.io.Reader) load(Reader)} and is assumed to use
      * the ISO 8859-1 character encoding; that is each byte is one Latin1
      * character. Characters not in Latin1, and certain special characters,
-     * are represented in keys and elements using
-     * <a href="http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.3">Unicode escapes</a>.
+     * are represented in keys and elements using Unicode escapes as defined in
+     * section 3.3 of
+     * <cite>The Java&trade; Language Specification</cite>.
      * <p>
      * The specified stream remains open after this method returns.
      *
--- a/jdk/src/share/classes/java/util/PropertyResourceBundle.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/PropertyResourceBundle.java	Wed Apr 20 09:31:11 2011 -0700
@@ -104,8 +104,9 @@
  * from an InputStream or a Reader, which represents a property file.
  * Constructing a PropertyResourceBundle instance from an InputStream requires
  * that the input stream be encoded in ISO-8859-1.  In that case, characters
- * that cannot be represented in ISO-8859-1 encoding must be represented by
- * <a href="http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.3">Unicode Escapes</a>,
+ * that cannot be represented in ISO-8859-1 encoding must be represented by Unicode Escapes
+ * as defined in section 3.3 of
+ * <cite>The Java&trade; Language Specification</cite>
  * whereas the other constructor which takes a Reader does not have that limitation.
  *
  * @see ResourceBundle
--- a/jdk/src/share/classes/java/util/RegularEnumSet.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/RegularEnumSet.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/ServiceLoader.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/ServiceLoader.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/TreeMap.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/TreeMap.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/UUID.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/UUID.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/Vector.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/Vector.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/WeakHashMap.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/WeakHashMap.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/concurrent/ConcurrentHashMap.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/concurrent/ConcurrentHashMap.java	Wed Apr 20 09:31:11 2011 -0700
@@ -105,7 +105,25 @@
 
     /*
      * The basic strategy is to subdivide the table among Segments,
-     * each of which itself is a concurrently readable hash table.
+     * each of which itself is a concurrently readable hash table.  To
+     * reduce footprint, all but one segments are constructed only
+     * when first needed (see ensureSegment). To maintain visibility
+     * in the presence of lazy construction, accesses to segments as
+     * well as elements of segment's table must use volatile access,
+     * which is done via Unsafe within methods segmentAt etc
+     * below. These provide the functionality of AtomicReferenceArrays
+     * but reduce the levels of indirection. Additionally,
+     * volatile-writes of table elements and entry "next" fields
+     * within locked operations use the cheaper "lazySet" forms of
+     * writes (via putOrderedObject) because these writes are always
+     * followed by lock releases that maintain sequential consistency
+     * of table updates.
+     *
+     * Historical note: The previous version of this class relied
+     * heavily on "final" fields, which avoided some volatile reads at
+     * the expense of a large initial footprint.  Some remnants of
+     * that design (including forced construction of segment 0) exist
+     * to ensure serialization compatibility.
      */
 
     /* ---------------- Constants -------------- */
@@ -137,8 +155,15 @@
     static final int MAXIMUM_CAPACITY = 1 << 30;
 
     /**
+     * The minimum capacity for per-segment tables.  Must be a power
+     * of two, at least two to avoid immediate resizing on next use
+     * after lazy construction.
+     */
+    static final int MIN_SEGMENT_TABLE_CAPACITY = 2;
+
+    /**
      * The maximum number of segments to allow; used to bound
-     * constructor arguments.
+     * constructor arguments. Must be power of two less than 1 << 24.
      */
     static final int MAX_SEGMENTS = 1 << 16; // slightly conservative
 
@@ -164,7 +189,7 @@
     final int segmentShift;
 
     /**
-     * The segments, each of which is a specialized hash table
+     * The segments, each of which is a specialized hash table.
      */
     final Segment<K,V>[] segments;
 
@@ -172,7 +197,65 @@
     transient Set<Map.Entry<K,V>> entrySet;
     transient Collection<V> values;
 
-    /* ---------------- Small Utilities -------------- */
+    /**
+     * ConcurrentHashMap list entry. Note that this is never exported
+     * out as a user-visible Map.Entry.
+     */
+    static final class HashEntry<K,V> {
+        final int hash;
+        final K key;
+        volatile V value;
+        volatile HashEntry<K,V> next;
+
+        HashEntry(int hash, K key, V value, HashEntry<K,V> next) {
+            this.hash = hash;
+            this.key = key;
+            this.value = value;
+            this.next = next;
+        }
+
+        /**
+         * Sets next field with volatile write semantics.  (See above
+         * about use of putOrderedObject.)
+         */
+        final void setNext(HashEntry<K,V> n) {
+            UNSAFE.putOrderedObject(this, nextOffset, n);
+        }
+
+        // Unsafe mechanics
+        static final sun.misc.Unsafe UNSAFE;
+        static final long nextOffset;
+        static {
+            try {
+                UNSAFE = sun.misc.Unsafe.getUnsafe();
+                Class k = HashEntry.class;
+                nextOffset = UNSAFE.objectFieldOffset
+                    (k.getDeclaredField("next"));
+            } catch (Exception e) {
+                throw new Error(e);
+            }
+        }
+    }
+
+    /**
+     * Gets the ith element of given table (if nonnull) with volatile
+     * read semantics.
+     */
+    @SuppressWarnings("unchecked")
+    static final <K,V> HashEntry<K,V> entryAt(HashEntry<K,V>[] tab, int i) {
+        return (tab == null) ? null :
+            (HashEntry<K,V>) UNSAFE.getObjectVolatile
+            (tab, ((long)i << TSHIFT) + TBASE);
+    }
+
+    /**
+     * Sets the ith element of given table, with volatile write
+     * semantics. (See above about use of putOrderedObject.)
+     */
+    static final <K,V> void setEntryAt(HashEntry<K,V>[] tab, int i,
+                                       HashEntry<K,V> e) {
+        UNSAFE.putOrderedObject(tab, ((long)i << TSHIFT) + TBASE, e);
+    }
 
     /**
      * Applies a supplemental hash function to a given hashCode, which
@@ -193,104 +276,67 @@
     }
 
     /**
-     * Returns the segment that should be used for key with given hash
-     * @param hash the hash code for the key
-     * @return the segment
-     */
-    final Segment<K,V> segmentFor(int hash) {
-        return segments[(hash >>> segmentShift) & segmentMask];
-    }
-
-    /* ---------------- Inner Classes -------------- */
-
-    /**
-     * ConcurrentHashMap list entry. Note that this is never exported
-     * out as a user-visible Map.Entry.
-     *
-     * Because the value field is volatile, not final, it is legal wrt
-     * the Java Memory Model for an unsynchronized reader to see null
-     * instead of initial value when read via a data race.  Although a
-     * reordering leading to this is not likely to ever actually
-     * occur, the Segment.readValueUnderLock method is used as a
-     * backup in case a null (pre-initialized) value is ever seen in
-     * an unsynchronized access method.
-     */
-    static final class HashEntry<K,V> {
-        final K key;
-        final int hash;
-        volatile V value;
-        final HashEntry<K,V> next;
-
-        HashEntry(K key, int hash, HashEntry<K,V> next, V value) {
-            this.key = key;
-            this.hash = hash;
-            this.next = next;
-            this.value = value;
-        }
-
-        @SuppressWarnings("unchecked")
-        static final <K,V> HashEntry<K,V>[] newArray(int i) {
-            return new HashEntry[i];
-        }
-    }
-
-    /**
      * Segments are specialized versions of hash tables.  This
      * subclasses from ReentrantLock opportunistically, just to
      * simplify some locking and avoid separate construction.
      */
     static final class Segment<K,V> extends ReentrantLock implements Serializable {
         /*
-         * Segments maintain a table of entry lists that are ALWAYS
-         * kept in a consistent state, so can be read without locking.
-         * Next fields of nodes are immutable (final).  All list
-         * additions are performed at the front of each bin. This
-         * makes it easy to check changes, and also fast to traverse.
-         * When nodes would otherwise be changed, new nodes are
-         * created to replace them. This works well for hash tables
-         * since the bin lists tend to be short. (The average length
-         * is less than two for the default load factor threshold.)
+         * Segments maintain a table of entry lists that are always
+         * kept in a consistent state, so can be read (via volatile
+         * reads of segments and tables) without locking.  This
+         * requires replicating nodes when necessary during table
+         * resizing, so the old lists can be traversed by readers
+         * still using old version of table.
          *
-         * Read operations can thus proceed without locking, but rely
-         * on selected uses of volatiles to ensure that completed
-         * write operations performed by other threads are
-         * noticed. For most purposes, the "count" field, tracking the
-         * number of elements, serves as that volatile variable
-         * ensuring visibility.  This is convenient because this field
-         * needs to be read in many read operations anyway:
-         *
-         *   - All (unsynchronized) read operations must first read the
-         *     "count" field, and should not look at table entries if
-         *     it is 0.
-         *
-         *   - All (synchronized) write operations should write to
-         *     the "count" field after structurally changing any bin.
-         *     The operations must not take any action that could even
-         *     momentarily cause a concurrent read operation to see
-         *     inconsistent data. This is made easier by the nature of
-         *     the read operations in Map. For example, no operation
-         *     can reveal that the table has grown but the threshold
-         *     has not yet been updated, so there are no atomicity
-         *     requirements for this with respect to reads.
-         *
-         * As a guide, all critical volatile reads and writes to the
-         * count field are marked in code comments.
+         * This class defines only mutative methods requiring locking.
+         * Except as noted, the methods of this class perform the
+         * per-segment versions of ConcurrentHashMap methods.  (Other
+         * methods are integrated directly into ConcurrentHashMap
+         * methods.) These mutative methods use a form of controlled
+         * spinning on contention via methods scanAndLock and
+         * scanAndLockForPut. These intersperse tryLocks with
+         * traversals to locate nodes.  The main benefit is to absorb
+         * cache misses (which are very common for hash tables) while
+         * obtaining locks so that traversal is faster once
+         * acquired. We do not actually use the found nodes since they
+         * must be re-acquired under lock anyway to ensure sequential
+         * consistency of updates (and in any case may be undetectably
+         * stale), but they will normally be much faster to re-locate.
+         * Also, scanAndLockForPut speculatively creates a fresh node
+         * to use in put if no node is found.
          */
 
         private static final long serialVersionUID = 2249069246763182397L;
 
         /**
-         * The number of elements in this segment's region.
+         * The maximum number of times to tryLock in a prescan before
+         * possibly blocking on acquire in preparation for a locked
+         * segment operation. On multiprocessors, using a bounded
+         * number of retries maintains cache acquired while locating
+         * nodes.
          */
-        transient volatile int count;
+        static final int MAX_SCAN_RETRIES =
+            Runtime.getRuntime().availableProcessors() > 1 ? 64 : 1;
 
         /**
-         * Number of updates that alter the size of the table. This is
-         * used during bulk-read methods to make sure they see a
-         * consistent snapshot: If modCounts change during a traversal
-         * of segments computing size or checking containsValue, then
-         * we might have an inconsistent view of state so (usually)
-         * must retry.
+         * The per-segment table. Elements are accessed via
+         * entryAt/setEntryAt providing volatile semantics.
+         */
+        transient volatile HashEntry<K,V>[] table;
+
+        /**
+         * The number of elements. Accessed only either within locks
+         * or among other volatile reads that maintain visibility.
+         */
+        transient int count;
+
+        /**
+         * The total number of mutative operations in this segment.
+         * Even though this may overflows 32 bits, it provides
+         * sufficient accuracy for stability checks in CHM isEmpty()
+         * and size() methods.  Accessed only either within locks or
+         * among other volatile reads that maintain visibility.
          */
         transient int modCount;
 
@@ -302,11 +348,6 @@
         transient int threshold;
 
         /**
-         * The per-segment table.
-         */
-        transient volatile HashEntry<K,V>[] table;
-
-        /**
          * The load factor for the hash table.  Even though this value
          * is same for all segments, it is replicated to avoid needing
          * links to outer object.
@@ -314,202 +355,94 @@
          */
         final float loadFactor;
 
-        Segment(int initialCapacity, float lf) {
-            loadFactor = lf;
-            setTable(HashEntry.<K,V>newArray(initialCapacity));
-        }
-
-        @SuppressWarnings("unchecked")
-        static final <K,V> Segment<K,V>[] newArray(int i) {
-            return new Segment[i];
-        }
-
-        /**
-         * Sets table to new HashEntry array.
-         * Call only while holding lock or in constructor.
-         */
-        void setTable(HashEntry<K,V>[] newTable) {
-            threshold = (int)(newTable.length * loadFactor);
-            table = newTable;
+        Segment(float lf, int threshold, HashEntry<K,V>[] tab) {
+            this.loadFactor = lf;
+            this.threshold = threshold;
+            this.table = tab;
         }
 
-        /**
-         * Returns properly casted first entry of bin for given hash.
-         */
-        HashEntry<K,V> getFirst(int hash) {
-            HashEntry<K,V>[] tab = table;
-            return tab[hash & (tab.length - 1)];
-        }
-
-        /**
-         * Reads value field of an entry under lock. Called if value
-         * field ever appears to be null. This is possible only if a
-         * compiler happens to reorder a HashEntry initialization with
-         * its table assignment, which is legal under memory model
-         * but is not known to ever occur.
-         */
-        V readValueUnderLock(HashEntry<K,V> e) {
-            lock();
+        final V put(K key, int hash, V value, boolean onlyIfAbsent) {
+            HashEntry<K,V> node = tryLock() ? null :
+                scanAndLockForPut(key, hash, value);
+            V oldValue;
             try {
-                return e.value;
+                HashEntry<K,V>[] tab = table;
+                int index = (tab.length - 1) & hash;
+                HashEntry<K,V> first = entryAt(tab, index);
+                for (HashEntry<K,V> e = first;;) {
+                    if (e != null) {
+                        K k;
+                        if ((k = e.key) == key ||
+                            (e.hash == hash && key.equals(k))) {
+                            oldValue = e.value;
+                            if (!onlyIfAbsent) {
+                                e.value = value;
+                                ++modCount;
+                            }
+                            break;
+                        }
+                        e = e.next;
+                    }
+                    else {
+                        if (node != null)
+                            node.setNext(first);
+                        else
+                            node = new HashEntry<K,V>(hash, key, value, first);
+                        int c = count + 1;
+                        if (c > threshold && first != null &&
+                            tab.length < MAXIMUM_CAPACITY)
+                            rehash(node);
+                        else
+                            setEntryAt(tab, index, node);
+                        ++modCount;
+                        count = c;
+                        oldValue = null;
+                        break;
+                    }
+                }
             } finally {
                 unlock();
             }
-        }
-
-        /* Specialized implementations of map methods */
-
-        V get(Object key, int hash) {
-            if (count != 0) { // read-volatile
-                HashEntry<K,V> e = getFirst(hash);
-                while (e != null) {
-                    if (e.hash == hash && key.equals(e.key)) {
-                        V v = e.value;
-                        if (v != null)
-                            return v;
-                        return readValueUnderLock(e); // recheck
-                    }
-                    e = e.next;
-                }
-            }
-            return null;
-        }
-
-        boolean containsKey(Object key, int hash) {
-            if (count != 0) { // read-volatile
-                HashEntry<K,V> e = getFirst(hash);
-                while (e != null) {
-                    if (e.hash == hash && key.equals(e.key))
-                        return true;
-                    e = e.next;
-                }
-            }
-            return false;
-        }
-
-        boolean containsValue(Object value) {
-            if (count != 0) { // read-volatile
-                HashEntry<K,V>[] tab = table;
-                int len = tab.length;
-                for (int i = 0 ; i < len; i++) {
-                    for (HashEntry<K,V> e = tab[i]; e != null; e = e.next) {
-                        V v = e.value;
-                        if (v == null) // recheck
-                            v = readValueUnderLock(e);
-                        if (value.equals(v))
-                            return true;
-                    }
-                }
-            }
-            return false;
-        }
-
-        boolean replace(K key, int hash, V oldValue, V newValue) {
-            lock();
-            try {
-                HashEntry<K,V> e = getFirst(hash);
-                while (e != null && (e.hash != hash || !key.equals(e.key)))
-                    e = e.next;
-
-                boolean replaced = false;
-                if (e != null && oldValue.equals(e.value)) {
-                    replaced = true;
-                    e.value = newValue;
-                }
-                return replaced;
-            } finally {
-                unlock();
-            }
+            return oldValue;
         }
 
-        V replace(K key, int hash, V newValue) {
-            lock();
-            try {
-                HashEntry<K,V> e = getFirst(hash);
-                while (e != null && (e.hash != hash || !key.equals(e.key)))
-                    e = e.next;
-
-                V oldValue = null;
-                if (e != null) {
-                    oldValue = e.value;
-                    e.value = newValue;
-                }
-                return oldValue;
-            } finally {
-                unlock();
-            }
-        }
-
-
-        V put(K key, int hash, V value, boolean onlyIfAbsent) {
-            lock();
-            try {
-                int c = count;
-                if (c++ > threshold) // ensure capacity
-                    rehash();
-                HashEntry<K,V>[] tab = table;
-                int index = hash & (tab.length - 1);
-                HashEntry<K,V> first = tab[index];
-                HashEntry<K,V> e = first;
-                while (e != null && (e.hash != hash || !key.equals(e.key)))
-                    e = e.next;
-
-                V oldValue;
-                if (e != null) {
-                    oldValue = e.value;
-                    if (!onlyIfAbsent)
-                        e.value = value;
-                }
-                else {
-                    oldValue = null;
-                    ++modCount;
-                    tab[index] = new HashEntry<K,V>(key, hash, first, value);
-                    count = c; // write-volatile
-                }
-                return oldValue;
-            } finally {
-                unlock();
-            }
-        }
-
-        void rehash() {
+        /**
+         * Doubles size of table and repacks entries, also adding the
+         * given node to new table
+         */
+        @SuppressWarnings("unchecked")
+        private void rehash(HashEntry<K,V> node) {
+            /*
+             * Reclassify nodes in each list to new table.  Because we
+             * are using power-of-two expansion, the elements from
+             * each bin must either stay at same index, or move with a
+             * power of two offset. We eliminate unnecessary node
+             * creation by catching cases where old nodes can be
+             * reused because their next fields won't change.
+             * Statistically, at the default threshold, only about
+             * one-sixth of them need cloning when a table
+             * doubles. The nodes they replace will be garbage
+             * collectable as soon as they are no longer referenced by
+             * any reader thread that may be in the midst of
+             * concurrently traversing table. Entry accesses use plain
+             * array indexing because they are followed by volatile
+             * table write.
+             */
             HashEntry<K,V>[] oldTable = table;
             int oldCapacity = oldTable.length;
-            if (oldCapacity >= MAXIMUM_CAPACITY)
-                return;
-
-            /*
-             * Reclassify nodes in each list to new Map.  Because we are
-             * using power-of-two expansion, the elements from each bin
-             * must either stay at same index, or move with a power of two
-             * offset. We eliminate unnecessary node creation by catching
-             * cases where old nodes can be reused because their next
-             * fields won't change. Statistically, at the default
-             * threshold, only about one-sixth of them need cloning when
-             * a table doubles. The nodes they replace will be garbage
-             * collectable as soon as they are no longer referenced by any
-             * reader thread that may be in the midst of traversing table
-             * right now.
-             */
-
-            HashEntry<K,V>[] newTable = HashEntry.newArray(oldCapacity<<1);
-            threshold = (int)(newTable.length * loadFactor);
-            int sizeMask = newTable.length - 1;
+            int newCapacity = oldCapacity << 1;
+            threshold = (int)(newCapacity * loadFactor);
+            HashEntry<K,V>[] newTable =
+                (HashEntry<K,V>[]) new HashEntry[newCapacity];
+            int sizeMask = newCapacity - 1;
             for (int i = 0; i < oldCapacity ; i++) {
-                // We need to guarantee that any existing reads of old Map can
-                //  proceed. So we cannot yet null out each bin.
                 HashEntry<K,V> e = oldTable[i];
-
                 if (e != null) {
                     HashEntry<K,V> next = e.next;
                     int idx = e.hash & sizeMask;
-
-                    //  Single node on list
-                    if (next == null)
+                    if (next == null)   //  Single node on list
                         newTable[idx] = e;
-
-                    else {
-                        // Reuse trailing consecutive sequence at same slot
+                    else { // Reuse consecutive sequence at same slot
                         HashEntry<K,V> lastRun = e;
                         int lastIdx = idx;
                         for (HashEntry<K,V> last = next;
@@ -522,74 +455,259 @@
                             }
                         }
                         newTable[lastIdx] = lastRun;
-
-                        // Clone all remaining nodes
+                        // Clone remaining nodes
                         for (HashEntry<K,V> p = e; p != lastRun; p = p.next) {
-                            int k = p.hash & sizeMask;
+                            V v = p.value;
+                            int h = p.hash;
+                            int k = h & sizeMask;
                             HashEntry<K,V> n = newTable[k];
-                            newTable[k] = new HashEntry<K,V>(p.key, p.hash,
-                                                             n, p.value);
+                            newTable[k] = new HashEntry<K,V>(h, p.key, v, n);
                         }
                     }
                 }
             }
+            int nodeIndex = node.hash & sizeMask; // add the new node
+            node.setNext(newTable[nodeIndex]);
+            newTable[nodeIndex] = node;
             table = newTable;
         }
 
         /**
+         * Scans for a node containing given key while trying to
+         * acquire lock, creating and returning one if not found. Upon
+         * return, guarantees that lock is held. UNlike in most
+         * methods, calls to method equals are not screened: Since
+         * traversal speed doesn't matter, we might as well help warm
+         * up the associated code and accesses as well.
+         *
+         * @return a new node if key not found, else null
+         */
+        private HashEntry<K,V> scanAndLockForPut(K key, int hash, V value) {
+            HashEntry<K,V> first = entryForHash(this, hash);
+            HashEntry<K,V> e = first;
+            HashEntry<K,V> node = null;
+            int retries = -1; // negative while locating node
+            while (!tryLock()) {
+                HashEntry<K,V> f; // to recheck first below
+                if (retries < 0) {
+                    if (e == null) {
+                        if (node == null) // speculatively create node
+                            node = new HashEntry<K,V>(hash, key, value, null);
+                        retries = 0;
+                    }
+                    else if (key.equals(e.key))
+                        retries = 0;
+                    else
+                        e = e.next;
+                }
+                else if (++retries > MAX_SCAN_RETRIES) {
+                    lock();
+                    break;
+                }
+                else if ((retries & 1) == 0 &&
+                         (f = entryForHash(this, hash)) != first) {
+                    e = first = f; // re-traverse if entry changed
+                    retries = -1;
+                }
+            }
+            return node;
+        }
+
+        /**
+         * Scans for a node containing the given key while trying to
+         * acquire lock for a remove or replace operation. Upon
+         * return, guarantees that lock is held.  Note that we must
+         * lock even if the key is not found, to ensure sequential
+         * consistency of updates.
+         */
+        private void scanAndLock(Object key, int hash) {
+            // similar to but simpler than scanAndLockForPut
+            HashEntry<K,V> first = entryForHash(this, hash);
+            HashEntry<K,V> e = first;
+            int retries = -1;
+            while (!tryLock()) {
+                HashEntry<K,V> f;
+                if (retries < 0) {
+                    if (e == null || key.equals(e.key))
+                        retries = 0;
+                    else
+                        e = e.next;
+                }
+                else if (++retries > MAX_SCAN_RETRIES) {
+                    lock();
+                    break;
+                }
+                else if ((retries & 1) == 0 &&
+                         (f = entryForHash(this, hash)) != first) {
+                    e = first = f;
+                    retries = -1;
+                }
+            }
+        }
+
+        /**
          * Remove; match on key only if value null, else match both.
          */
-        V remove(Object key, int hash, Object value) {
+        final V remove(Object key, int hash, Object value) {
+            if (!tryLock())
+                scanAndLock(key, hash);
+            V oldValue = null;
+            try {
+                HashEntry<K,V>[] tab = table;
+                int index = (tab.length - 1) & hash;
+                HashEntry<K,V> e = entryAt(tab, index);
+                HashEntry<K,V> pred = null;
+                while (e != null) {
+                    K k;
+                    HashEntry<K,V> next = e.next;
+                    if ((k = e.key) == key ||
+                        (e.hash == hash && key.equals(k))) {
+                        V v = e.value;
+                        if (value == null || value == v || value.equals(v)) {
+                            if (pred == null)
+                                setEntryAt(tab, index, next);
+                            else
+                                pred.setNext(next);
+                            ++modCount;
+                            --count;
+                            oldValue = v;
+                        }
+                        break;
+                    }
+                    pred = e;
+                    e = next;
+                }
+            } finally {
+                unlock();
+            }
+            return oldValue;
+        }
+
+        final boolean replace(K key, int hash, V oldValue, V newValue) {
+            if (!tryLock())
+                scanAndLock(key, hash);
+            boolean replaced = false;
+            try {
+                HashEntry<K,V> e;
+                for (e = entryForHash(this, hash); e != null; e = e.next) {
+                    K k;
+                    if ((k = e.key) == key ||
+                        (e.hash == hash && key.equals(k))) {
+                        if (oldValue.equals(e.value)) {
+                            e.value = newValue;
+                            ++modCount;
+                            replaced = true;
+                        }
+                        break;
+                    }
+                }
+            } finally {
+                unlock();
+            }
+            return replaced;
+        }
+
+        final V replace(K key, int hash, V value) {
+            if (!tryLock())
+                scanAndLock(key, hash);
+            V oldValue = null;
+            try {
+                HashEntry<K,V> e;
+                for (e = entryForHash(this, hash); e != null; e = e.next) {
+                    K k;
+                    if ((k = e.key) == key ||
+                        (e.hash == hash && key.equals(k))) {
+                        oldValue = e.value;
+                        e.value = value;
+                        ++modCount;
+                        break;
+                    }
+                }
+            } finally {
+                unlock();
+            }
+            return oldValue;
+        }
+
+        final void clear() {
             lock();
             try {
-                int c = count - 1;
                 HashEntry<K,V>[] tab = table;
-                int index = hash & (tab.length - 1);
-                HashEntry<K,V> first = tab[index];
-                HashEntry<K,V> e = first;
-                while (e != null && (e.hash != hash || !key.equals(e.key)))
-                    e = e.next;
-
-                V oldValue = null;
-                if (e != null) {
-                    V v = e.value;
-                    if (value == null || value.equals(v)) {
-                        oldValue = v;
-                        // All entries following removed node can stay
-                        // in list, but all preceding ones need to be
-                        // cloned.
-                        ++modCount;
-                        HashEntry<K,V> newFirst = e.next;
-                        for (HashEntry<K,V> p = first; p != e; p = p.next)
-                            newFirst = new HashEntry<K,V>(p.key, p.hash,
-                                                          newFirst, p.value);
-                        tab[index] = newFirst;
-                        count = c; // write-volatile
-                    }
-                }
-                return oldValue;
+                for (int i = 0; i < tab.length ; i++)
+                    setEntryAt(tab, i, null);
+                ++modCount;
+                count = 0;
             } finally {
                 unlock();
             }
         }
+    }
 
-        void clear() {
-            if (count != 0) {
-                lock();
-                try {
-                    HashEntry<K,V>[] tab = table;
-                    for (int i = 0; i < tab.length ; i++)
-                        tab[i] = null;
-                    ++modCount;
-                    count = 0; // write-volatile
-                } finally {
-                    unlock();
+    // Accessing segments
+
+    /**
+     * Gets the jth element of given segment array (if nonnull) with
+     * volatile element access semantics via Unsafe.
+     */
+    @SuppressWarnings("unchecked")
+    static final <K,V> Segment<K,V> segmentAt(Segment<K,V>[] ss, int j) {
+        long u = (j << SSHIFT) + SBASE;
+        return ss == null ? null :
+            (Segment<K,V>) UNSAFE.getObjectVolatile(ss, u);
+    }
+
+    /**
+     * Returns the segment for the given index, creating it and
+     * recording in segment table (via CAS) if not already present.
+     *
+     * @param k the index
+     * @return the segment
+     */
+    @SuppressWarnings("unchecked")
+    private Segment<K,V> ensureSegment(int k) {
+        final Segment<K,V>[] ss = this.segments;
+        long u = (k << SSHIFT) + SBASE; // raw offset
+        Segment<K,V> seg;
+        if ((seg = (Segment<K,V>)UNSAFE.getObjectVolatile(ss, u)) == null) {
+            Segment<K,V> proto = ss[0]; // use segment 0 as prototype
+            int cap = proto.table.length;
+            float lf = proto.loadFactor;
+            int threshold = (int)(cap * lf);
+            HashEntry<K,V>[] tab = (HashEntry<K,V>[])new HashEntry[cap];
+            if ((seg = (Segment<K,V>)UNSAFE.getObjectVolatile(ss, u))
+                == null) { // recheck
+                Segment<K,V> s = new Segment<K,V>(lf, threshold, tab);
+                while ((seg = (Segment<K,V>)UNSAFE.getObjectVolatile(ss, u))
+                       == null) {
+                    if (UNSAFE.compareAndSwapObject(ss, u, null, seg = s))
+                        break;
                 }
             }
         }
+        return seg;
     }
 
+    // Hash-based segment and entry accesses
 
+    /**
+     * Get the segment for the given hash
+     */
+    @SuppressWarnings("unchecked")
+    private Segment<K,V> segmentForHash(int h) {
+        long u = (((h >>> segmentShift) & segmentMask) << SSHIFT) + SBASE;
+        return (Segment<K,V>) UNSAFE.getObjectVolatile(segments, u);
+    }
+
+    /**
+     * Gets the table entry for the given segment and hash
+     */
+    @SuppressWarnings("unchecked")
+    static final <K,V> HashEntry<K,V> entryForHash(Segment<K,V> seg, int h) {
+        HashEntry<K,V>[] tab;
+        return (seg == null || (tab = seg.table) == null) ? null :
+            (HashEntry<K,V>) UNSAFE.getObjectVolatile
+            (tab, ((long)(((tab.length - 1) & h)) << TSHIFT) + TBASE);
+    }
 
     /* ---------------- Public operations -------------- */
 
@@ -609,14 +727,13 @@
      * negative or the load factor or concurrencyLevel are
      * nonpositive.
      */
+    @SuppressWarnings("unchecked")
     public ConcurrentHashMap(int initialCapacity,
                              float loadFactor, int concurrencyLevel) {
         if (!(loadFactor > 0) || initialCapacity < 0 || concurrencyLevel <= 0)
             throw new IllegalArgumentException();
-
         if (concurrencyLevel > MAX_SEGMENTS)
             concurrencyLevel = MAX_SEGMENTS;
-
         // Find power-of-two sizes best matching arguments
         int sshift = 0;
         int ssize = 1;
@@ -624,21 +741,23 @@
             ++sshift;
             ssize <<= 1;
         }
-        segmentShift = 32 - sshift;
-        segmentMask = ssize - 1;
-        this.segments = Segment.newArray(ssize);
-
+        this.segmentShift = 32 - sshift;
+        this.segmentMask = ssize - 1;
         if (initialCapacity > MAXIMUM_CAPACITY)
             initialCapacity = MAXIMUM_CAPACITY;
         int c = initialCapacity / ssize;
         if (c * ssize < initialCapacity)
             ++c;
-        int cap = 1;
+        int cap = MIN_SEGMENT_TABLE_CAPACITY;
         while (cap < c)
             cap <<= 1;
-
-        for (int i = 0; i < this.segments.length; ++i)
-            this.segments[i] = new Segment<K,V>(cap, loadFactor);
+        // create segments and segments[0]
+        Segment<K,V> s0 =
+            new Segment<K,V>(loadFactor, (int)(cap * loadFactor),
+                             (HashEntry<K,V>[])new HashEntry[cap]);
+        Segment<K,V>[] ss = (Segment<K,V>[])new Segment[ssize];
+        UNSAFE.putOrderedObject(ss, SBASE, s0); // ordered write of segments[0]
+        this.segments = ss;
     }
 
     /**
@@ -701,33 +820,36 @@
      * @return <tt>true</tt> if this map contains no key-value mappings
      */
     public boolean isEmpty() {
-        final Segment<K,V>[] segments = this.segments;
         /*
-         * We keep track of per-segment modCounts to avoid ABA
-         * problems in which an element in one segment was added and
-         * in another removed during traversal, in which case the
-         * table was never actually empty at any point. Note the
-         * similar use of modCounts in the size() and containsValue()
-         * methods, which are the only other methods also susceptible
-         * to ABA problems.
+         * Sum per-segment modCounts to avoid mis-reporting when
+         * elements are concurrently added and removed in one segment
+         * while checking another, in which case the table was never
+         * actually empty at any point. (The sum ensures accuracy up
+         * through at least 1<<31 per-segment modifications before
+         * recheck.)  Methods size() and containsValue() use similar
+         * constructions for stability checks.
          */
-        int[] mc = new int[segments.length];
-        int mcsum = 0;
-        for (int i = 0; i < segments.length; ++i) {
-            if (segments[i].count != 0)
-                return false;
-            else
-                mcsum += mc[i] = segments[i].modCount;
+        long sum = 0L;
+        final Segment<K,V>[] segments = this.segments;
+        for (int j = 0; j < segments.length; ++j) {
+            Segment<K,V> seg = segmentAt(segments, j);
+            if (seg != null) {
+                if (seg.count != 0)
+                    return false;
+                sum += seg.modCount;
+            }
         }
-        // If mcsum happens to be zero, then we know we got a snapshot
-        // before any modifications at all were made.  This is
-        // probably common enough to bother tracking.
-        if (mcsum != 0) {
-            for (int i = 0; i < segments.length; ++i) {
-                if (segments[i].count != 0 ||
-                    mc[i] != segments[i].modCount)
-                    return false;
+        if (sum != 0L) { // recheck unless no modifications
+            for (int j = 0; j < segments.length; ++j) {
+                Segment<K,V> seg = segmentAt(segments, j);
+                if (seg != null) {
+                    if (seg.count != 0)
+                        return false;
+                    sum -= seg.modCount;
+                }
             }
+            if (sum != 0L)
+                return false;
         }
         return true;
     }
@@ -740,45 +862,43 @@
      * @return the number of key-value mappings in this map
      */
     public int size() {
-        final Segment<K,V>[] segments = this.segments;
-        long sum = 0;
-        long check = 0;
-        int[] mc = new int[segments.length];
         // Try a few times to get accurate count. On failure due to
         // continuous async changes in table, resort to locking.
-        for (int k = 0; k < RETRIES_BEFORE_LOCK; ++k) {
-            check = 0;
-            sum = 0;
-            int mcsum = 0;
-            for (int i = 0; i < segments.length; ++i) {
-                sum += segments[i].count;
-                mcsum += mc[i] = segments[i].modCount;
-            }
-            if (mcsum != 0) {
-                for (int i = 0; i < segments.length; ++i) {
-                    check += segments[i].count;
-                    if (mc[i] != segments[i].modCount) {
-                        check = -1; // force retry
-                        break;
+        final Segment<K,V>[] segments = this.segments;
+        int size;
+        boolean overflow; // true if size overflows 32 bits
+        long sum;         // sum of modCounts
+        long last = 0L;   // previous sum
+        int retries = -1; // first iteration isn't retry
+        try {
+            for (;;) {
+                if (retries++ == RETRIES_BEFORE_LOCK) {
+                    for (int j = 0; j < segments.length; ++j)
+                        ensureSegment(j).lock(); // force creation
+                }
+                sum = 0L;
+                size = 0;
+                overflow = false;
+                for (int j = 0; j < segments.length; ++j) {
+                    Segment<K,V> seg = segmentAt(segments, j);
+                    if (seg != null) {
+                        sum += seg.modCount;
+                        int c = seg.count;
+                        if (c < 0 || (size += c) < 0)
+                            overflow = true;
                     }
                 }
+                if (sum == last)
+                    break;
+                last = sum;
             }
-            if (check == sum)
-                break;
+        } finally {
+            if (retries > RETRIES_BEFORE_LOCK) {
+                for (int j = 0; j < segments.length; ++j)
+                    segmentAt(segments, j).unlock();
+            }
         }
-        if (check != sum) { // Resort to locking all segments
-            sum = 0;
-            for (int i = 0; i < segments.length; ++i)
-                segments[i].lock();
-            for (int i = 0; i < segments.length; ++i)
-                sum += segments[i].count;
-            for (int i = 0; i < segments.length; ++i)
-                segments[i].unlock();
-        }
-        if (sum > Integer.MAX_VALUE)
-            return Integer.MAX_VALUE;
-        else
-            return (int)sum;
+        return overflow ? Integer.MAX_VALUE : size;
     }
 
     /**
@@ -794,7 +914,13 @@
      */
     public V get(Object key) {
         int hash = hash(key.hashCode());
-        return segmentFor(hash).get(key, hash);
+        for (HashEntry<K,V> e = entryForHash(segmentForHash(hash), hash);
+             e != null; e = e.next) {
+            K k;
+            if ((k = e.key) == key || (e.hash == hash && key.equals(k)))
+                return e.value;
+        }
+        return null;
     }
 
     /**
@@ -808,7 +934,13 @@
      */
     public boolean containsKey(Object key) {
         int hash = hash(key.hashCode());
-        return segmentFor(hash).containsKey(key, hash);
+        for (HashEntry<K,V> e = entryForHash(segmentForHash(hash), hash);
+             e != null; e = e.next) {
+            K k;
+            if ((k = e.key) == key || (e.hash == hash && key.equals(k)))
+                return true;
+        }
+        return false;
     }
 
     /**
@@ -823,51 +955,47 @@
      * @throws NullPointerException if the specified value is null
      */
     public boolean containsValue(Object value) {
+        // Same idea as size()
         if (value == null)
             throw new NullPointerException();
-
-        // See explanation of modCount use above
-
         final Segment<K,V>[] segments = this.segments;
-        int[] mc = new int[segments.length];
-
-        // Try a few times without locking
-        for (int k = 0; k < RETRIES_BEFORE_LOCK; ++k) {
-            int sum = 0;
-            int mcsum = 0;
-            for (int i = 0; i < segments.length; ++i) {
-                int c = segments[i].count;
-                mcsum += mc[i] = segments[i].modCount;
-                if (segments[i].containsValue(value))
-                    return true;
-            }
-            boolean cleanSweep = true;
-            if (mcsum != 0) {
-                for (int i = 0; i < segments.length; ++i) {
-                    int c = segments[i].count;
-                    if (mc[i] != segments[i].modCount) {
-                        cleanSweep = false;
-                        break;
+        boolean found = false;
+        long last = 0;
+        int retries = -1;
+        try {
+            outer: for (;;) {
+                if (retries++ == RETRIES_BEFORE_LOCK) {
+                    for (int j = 0; j < segments.length; ++j)
+                        ensureSegment(j).lock(); // force creation
+                }
+                long hashSum = 0L;
+                int sum = 0;
+                for (int j = 0; j < segments.length; ++j) {
+                    HashEntry<K,V>[] tab;
+                    Segment<K,V> seg = segmentAt(segments, j);
+                    if (seg != null && (tab = seg.table) != null) {
+                        for (int i = 0 ; i < tab.length; i++) {
+                            HashEntry<K,V> e;
+                            for (e = entryAt(tab, i); e != null; e = e.next) {
+                                V v = e.value;
+                                if (v != null && value.equals(v)) {
+                                    found = true;
+                                    break outer;
+                                }
+                            }
+                        }
+                        sum += seg.modCount;
                     }
                 }
-            }
-            if (cleanSweep)
-                return false;
-        }
-        // Resort to locking all segments
-        for (int i = 0; i < segments.length; ++i)
-            segments[i].lock();
-        boolean found = false;
-        try {
-            for (int i = 0; i < segments.length; ++i) {
-                if (segments[i].containsValue(value)) {
-                    found = true;
+                if (retries > 0 && sum == last)
                     break;
-                }
+                last = sum;
             }
         } finally {
-            for (int i = 0; i < segments.length; ++i)
-                segments[i].unlock();
+            if (retries > RETRIES_BEFORE_LOCK) {
+                for (int j = 0; j < segments.length; ++j)
+                    segmentAt(segments, j).unlock();
+            }
         }
         return found;
     }
@@ -908,7 +1036,11 @@
         if (value == null)
             throw new NullPointerException();
         int hash = hash(key.hashCode());
-        return segmentFor(hash).put(key, hash, value, false);
+        int j = (hash >>> segmentShift) & segmentMask;
+        Segment<K,V> s = segmentAt(segments, j);
+        if (s == null)
+            s = ensureSegment(j);
+        return s.put(key, hash, value, false);
     }
 
     /**
@@ -922,7 +1054,11 @@
         if (value == null)
             throw new NullPointerException();
         int hash = hash(key.hashCode());
-        return segmentFor(hash).put(key, hash, value, true);
+        int j = (hash >>> segmentShift) & segmentMask;
+        Segment<K,V> s = segmentAt(segments, j);
+        if (s == null)
+            s = ensureSegment(j);
+        return s.put(key, hash, value, true);
     }
 
     /**
@@ -948,7 +1084,8 @@
      */
     public V remove(Object key) {
         int hash = hash(key.hashCode());
-        return segmentFor(hash).remove(key, hash, null);
+        Segment<K,V> s = segmentForHash(hash);
+        return s == null ? null : s.remove(key, hash, null);
     }
 
     /**
@@ -958,9 +1095,9 @@
      */
     public boolean remove(Object key, Object value) {
         int hash = hash(key.hashCode());
-        if (value == null)
-            return false;
-        return segmentFor(hash).remove(key, hash, value) != null;
+        Segment<K,V> s;
+        return value != null && (s = segmentForHash(hash)) != null &&
+            s.remove(key, hash, value) != null;
     }
 
     /**
@@ -969,10 +1106,11 @@
      * @throws NullPointerException if any of the arguments are null
      */
     public boolean replace(K key, V oldValue, V newValue) {
+        int hash = hash(key.hashCode());
         if (oldValue == null || newValue == null)
             throw new NullPointerException();
-        int hash = hash(key.hashCode());
-        return segmentFor(hash).replace(key, hash, oldValue, newValue);
+        Segment<K,V> s = segmentForHash(hash);
+        return s != null && s.replace(key, hash, oldValue, newValue);
     }
 
     /**
@@ -983,18 +1121,23 @@
      * @throws NullPointerException if the specified key or value is null
      */
     public V replace(K key, V value) {
+        int hash = hash(key.hashCode());
         if (value == null)
             throw new NullPointerException();
-        int hash = hash(key.hashCode());
-        return segmentFor(hash).replace(key, hash, value);
+        Segment<K,V> s = segmentForHash(hash);
+        return s == null ? null : s.replace(key, hash, value);
     }
 
     /**
      * Removes all of the mappings from this map.
      */
     public void clear() {
-        for (int i = 0; i < segments.length; ++i)
-            segments[i].clear();
+        final Segment<K,V>[] segments = this.segments;
+        for (int j = 0; j < segments.length; ++j) {
+            Segment<K,V> s = segmentAt(segments, j);
+            if (s != null)
+                s.clear();
+        }
     }
 
     /**
@@ -1095,42 +1238,41 @@
             advance();
         }
 
-        public boolean hasMoreElements() { return hasNext(); }
-
+        /**
+         * Set nextEntry to first node of next non-empty table
+         * (in backwards order, to simplify checks).
+         */
         final void advance() {
-            if (nextEntry != null && (nextEntry = nextEntry.next) != null)
-                return;
-
-            while (nextTableIndex >= 0) {
-                if ( (nextEntry = currentTable[nextTableIndex--]) != null)
-                    return;
-            }
-
-            while (nextSegmentIndex >= 0) {
-                Segment<K,V> seg = segments[nextSegmentIndex--];
-                if (seg.count != 0) {
-                    currentTable = seg.table;
-                    for (int j = currentTable.length - 1; j >= 0; --j) {
-                        if ( (nextEntry = currentTable[j]) != null) {
-                            nextTableIndex = j - 1;
-                            return;
-                        }
-                    }
+            for (;;) {
+                if (nextTableIndex >= 0) {
+                    if ((nextEntry = entryAt(currentTable,
+                                             nextTableIndex--)) != null)
+                        break;
                 }
+                else if (nextSegmentIndex >= 0) {
+                    Segment<K,V> seg = segmentAt(segments, nextSegmentIndex--);
+                    if (seg != null && (currentTable = seg.table) != null)
+                        nextTableIndex = currentTable.length - 1;
+                }
+                else
+                    break;
             }
         }
 
-        public boolean hasNext() { return nextEntry != null; }
-
-        HashEntry<K,V> nextEntry() {
-            if (nextEntry == null)
+        final HashEntry<K,V> nextEntry() {
+            HashEntry<K,V> e = nextEntry;
+            if (e == null)
                 throw new NoSuchElementException();
-            lastReturned = nextEntry;
-            advance();
-            return lastReturned;
+            lastReturned = e; // cannot assign until after null check
+            if ((nextEntry = e.next) == null)
+                advance();
+            return e;
         }
 
-        public void remove() {
+        public final boolean hasNext() { return nextEntry != null; }
+        public final boolean hasMoreElements() { return nextEntry != null; }
+
+        public final void remove() {
             if (lastReturned == null)
                 throw new IllegalStateException();
             ConcurrentHashMap.this.remove(lastReturned.key);
@@ -1142,16 +1284,16 @@
         extends HashIterator
         implements Iterator<K>, Enumeration<K>
     {
-        public K next()        { return super.nextEntry().key; }
-        public K nextElement() { return super.nextEntry().key; }
+        public final K next()        { return super.nextEntry().key; }
+        public final K nextElement() { return super.nextEntry().key; }
     }
 
     final class ValueIterator
         extends HashIterator
         implements Iterator<V>, Enumeration<V>
     {
-        public V next()        { return super.nextEntry().value; }
-        public V nextElement() { return super.nextEntry().value; }
+        public final V next()        { return super.nextEntry().value; }
+        public final V nextElement() { return super.nextEntry().value; }
     }
 
     /**
@@ -1271,15 +1413,20 @@
      * The key-value mappings are emitted in no particular order.
      */
     private void writeObject(java.io.ObjectOutputStream s) throws IOException {
+        // force all segments for serialization compatibility
+        for (int k = 0; k < segments.length; ++k)
+            ensureSegment(k);
         s.defaultWriteObject();
 
+        final Segment<K,V>[] segments = this.segments;
         for (int k = 0; k < segments.length; ++k) {
-            Segment<K,V> seg = segments[k];
+            Segment<K,V> seg = segmentAt(segments, k);
             seg.lock();
             try {
                 HashEntry<K,V>[] tab = seg.table;
                 for (int i = 0; i < tab.length; ++i) {
-                    for (HashEntry<K,V> e = tab[i]; e != null; e = e.next) {
+                    HashEntry<K,V> e;
+                    for (e = entryAt(tab, i); e != null; e = e.next) {
                         s.writeObject(e.key);
                         s.writeObject(e.value);
                     }
@@ -1297,13 +1444,20 @@
      * stream (i.e., deserialize it).
      * @param s the stream
      */
+    @SuppressWarnings("unchecked")
     private void readObject(java.io.ObjectInputStream s)
         throws IOException, ClassNotFoundException {
         s.defaultReadObject();
 
-        // Initialize each segment to be minimally sized, and let grow.
-        for (int i = 0; i < segments.length; ++i) {
-            segments[i].setTable(new HashEntry[1]);
+        // Re-initialize segments to be minimally sized, and let grow.
+        int cap = MIN_SEGMENT_TABLE_CAPACITY;
+        final Segment<K,V>[] segments = this.segments;
+        for (int k = 0; k < segments.length; ++k) {
+            Segment<K,V> seg = segments[k];
+            if (seg != null) {
+                seg.threshold = (int)(cap * seg.loadFactor);
+                seg.table = (HashEntry<K,V>[]) new HashEntry[cap];
+            }
         }
 
         // Read the keys and values, and put the mappings in the table
@@ -1315,4 +1469,31 @@
             put(key, value);
         }
     }
+
+    // Unsafe mechanics
+    private static final sun.misc.Unsafe UNSAFE;
+    private static final long SBASE;
+    private static final int SSHIFT;
+    private static final long TBASE;
+    private static final int TSHIFT;
+
+    static {
+        int ss, ts;
+        try {
+            UNSAFE = sun.misc.Unsafe.getUnsafe();
+            Class tc = HashEntry[].class;
+            Class sc = Segment[].class;
+            TBASE = UNSAFE.arrayBaseOffset(tc);
+            SBASE = UNSAFE.arrayBaseOffset(sc);
+            ts = UNSAFE.arrayIndexScale(tc);
+            ss = UNSAFE.arrayIndexScale(sc);
+        } catch (Exception e) {
+            throw new Error(e);
+        }
+        if ((ss & (ss-1)) != 0 || (ts & (ts-1)) != 0)
+            throw new Error("data type scale not a power of two");
+        SSHIFT = 31 - Integer.numberOfLeadingZeros(ss);
+        TSHIFT = 31 - Integer.numberOfLeadingZeros(ts);
+    }
+
 }
--- a/jdk/src/share/classes/java/util/concurrent/CopyOnWriteArrayList.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/concurrent/CopyOnWriteArrayList.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/concurrent/ForkJoinPool.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/concurrent/ForkJoinPool.java	Wed Apr 20 09:31:11 2011 -0700
@@ -824,7 +824,8 @@
             else if (w.eventCount != v)
                 return true;                      // update next time
         }
-        if ((int)c != 0 && parallelism + (int)(nc >> AC_SHIFT) == 0 &&
+        if ((!shutdown || !tryTerminate(false)) &&
+            (int)c != 0 && parallelism + (int)(nc >> AC_SHIFT) == 0 &&
             blockedCount == 0 && quiescerCount == 0)
             idleAwaitWork(w, nc, c, v);           // quiescent
         for (boolean rescanned = false;;) {
@@ -1024,8 +1025,8 @@
         do {} while (!UNSAFE.compareAndSwapLong(this, ctlOffset,  // no mask
                                                 c = ctl, c + AC_UNIT));
         int b;
-        do {} while(!UNSAFE.compareAndSwapInt(this, blockedCountOffset,
-                                              b = blockedCount, b - 1));
+        do {} while (!UNSAFE.compareAndSwapInt(this, blockedCountOffset,
+                                               b = blockedCount, b - 1));
     }
 
     /**
@@ -1177,7 +1178,7 @@
                         ws[k] = w;
                         nextWorkerIndex = k + 1;
                         int m = g & SMASK;
-                        g = k > m? ((m << 1) + 1) & SMASK : g + (SG_UNIT<<1);
+                        g = (k > m) ? ((m << 1) + 1) & SMASK : g + (SG_UNIT<<1);
                     }
                 } finally {
                     scanGuard = g;
@@ -1360,8 +1361,8 @@
      */
     final void addQuiescerCount(int delta) {
         int c;
-        do {} while(!UNSAFE.compareAndSwapInt(this, quiescerCountOffset,
-                                              c = quiescerCount, c + delta));
+        do {} while (!UNSAFE.compareAndSwapInt(this, quiescerCountOffset,
+                                               c = quiescerCount, c + delta));
     }
 
     /**
@@ -1714,7 +1715,7 @@
      */
     public int getRunningThreadCount() {
         int r = parallelism + (int)(ctl >> AC_SHIFT);
-        return r <= 0? 0 : r; // suppress momentarily negative values
+        return (r <= 0) ? 0 : r; // suppress momentarily negative values
     }
 
     /**
@@ -1726,7 +1727,7 @@
      */
     public int getActiveThreadCount() {
         int r = parallelism + (int)(ctl >> AC_SHIFT) + blockedCount;
-        return r <= 0? 0 : r; // suppress momentarily negative values
+        return (r <= 0) ? 0 : r; // suppress momentarily negative values
     }
 
     /**
@@ -1881,9 +1882,9 @@
         int ac = rc + blockedCount;
         String level;
         if ((c & STOP_BIT) != 0)
-            level = (tc == 0)? "Terminated" : "Terminating";
+            level = (tc == 0) ? "Terminated" : "Terminating";
         else
-            level = shutdown? "Shutting down" : "Running";
+            level = shutdown ? "Shutting down" : "Running";
         return super.toString() +
             "[" + level +
             ", parallelism = " + pc +
--- a/jdk/src/share/classes/java/util/concurrent/ForkJoinWorkerThread.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/concurrent/ForkJoinWorkerThread.java	Wed Apr 20 09:31:11 2011 -0700
@@ -361,7 +361,7 @@
     protected void onStart() {
         queue = new ForkJoinTask<?>[INITIAL_QUEUE_CAPACITY];
         int r = pool.workerSeedGenerator.nextInt();
-        seed = (r == 0)? 1 : r; //  must be nonzero
+        seed = (r == 0) ? 1 : r; //  must be nonzero
     }
 
     /**
@@ -724,7 +724,7 @@
                         Thread.yield();        // for politeness
                 }
                 else
-                    retries = helpJoinTask(joinMe)? MAX_HELP : retries - 1;
+                    retries = helpJoinTask(joinMe) ? MAX_HELP : retries - 1;
             }
             else {
                 retries = MAX_HELP;           // restart if not done
@@ -955,7 +955,7 @@
                     p.addActiveCount(1);
                 }
                 if ((t = (v != this) ? v.deqTask() :
-                     locallyFifo? locallyDeqTask() : popTask()) != null) {
+                     locallyFifo ? locallyDeqTask() : popTask()) != null) {
                     currentSteal = t;
                     t.doExec();
                     currentSteal = ps;
--- a/jdk/src/share/classes/java/util/concurrent/atomic/package-info.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/concurrent/atomic/package-info.java	Wed Apr 20 09:31:11 2011 -0700
@@ -80,9 +80,8 @@
  * </pre>
  *
  * <p>The memory effects for accesses and updates of atomics generally
- * follow the rules for volatiles, as stated in
- * <a href="http://java.sun.com/docs/books/jls/"> The Java Language
- * Specification, Third Edition (17.4 Memory Model)</a>:
+ * follow the rules for volatiles, as stated in section 17.4 of
+ * <cite>The Java&trade; Language Specification</cite>.
  *
  * <ul>
  *
--- a/jdk/src/share/classes/java/util/concurrent/locks/Lock.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/concurrent/locks/Lock.java	Wed Apr 20 09:31:11 2011 -0700
@@ -120,8 +120,8 @@
  *
  * <p>All {@code Lock} implementations <em>must</em> enforce the same
  * memory synchronization semantics as provided by the built-in monitor
- * lock, as described in <a href="http://java.sun.com/docs/books/jls/">
- * The Java Language Specification, Third Edition (17.4 Memory Model)</a>:
+ * lock, as described in section 17.4 of
+ * <cite>The Java&trade; Language Specification</cite>:
  * <ul>
  * <li>A successful {@code lock} operation has the same memory
  * synchronization effects as a successful <em>Lock</em> action.
--- a/jdk/src/share/classes/java/util/concurrent/package-info.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/concurrent/package-info.java	Wed Apr 20 09:31:11 2011 -0700
@@ -218,8 +218,9 @@
  *
  * <h2><a name="MemoryVisibility">Memory Consistency Properties</a></h2>
  *
- * <a href="http://java.sun.com/docs/books/jls/third_edition/html/memory.html">
- * Chapter 17 of the Java Language Specification</a> defines the
+ * Chapter 17 of
+ * <cite>The Java&trade; Language Specification</cite>
+ * defines the
  * <i>happens-before</i> relation on memory operations such as reads and
  * writes of shared variables.  The results of a write by one thread are
  * guaranteed to be visible to a read by another thread only if the write
--- a/jdk/src/share/classes/java/util/jar/Pack200.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/jar/Pack200.java	Wed Apr 20 09:31:11 2011 -0700
@@ -181,8 +181,8 @@
      * The class files will not contain identical bytes, since the unpacker
      * is free to change minor class file features such as constant pool order.
      * However, the class files will be semantically identical,
-     * as specified in the Java Virtual Machine Specification
-     * <a href="http://java.sun.com/docs/books/vmspec/html/ClassFile.doc.html">http://java.sun.com/docs/books/vmspec/html/ClassFile.doc.html</a>.
+     * as specified in
+     * <cite>The Java&trade; Virtual Machine Specification</cite>.
      * <p>
      * By default, the packer does not change the order of JAR elements.
      * Also, the modification time and deflation hint of each
--- a/jdk/src/share/classes/java/util/logging/FileHandler.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/logging/FileHandler.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, Oracle and/or its affiliates. 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
@@ -409,22 +409,25 @@
                     // Try the next file.
                     continue;
                 }
+                boolean available;
                 try {
-                    FileLock fl = fc.tryLock();
-                    if (fl == null) {
-                        // We failed to get the lock.  Try next file.
-                        continue;
-                    }
+                    available = fc.tryLock() != null;
                     // We got the lock OK.
                 } catch (IOException ix) {
                     // We got an IOException while trying to get the lock.
                     // This normally indicates that locking is not supported
                     // on the target directory.  We have to proceed without
                     // getting a lock.   Drop through.
+                    available = true;
                 }
-                // We got the lock.  Remember it.
-                locks.put(lockFileName, lockFileName);
-                break;
+                if (available) {
+                    // We got the lock.  Remember it.
+                    locks.put(lockFileName, lockFileName);
+                    break;
+                }
+
+                // We failed to get the lock.  Try next file.
+                fc.close();
             }
         }
 
--- a/jdk/src/share/classes/java/util/logging/Level.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/logging/Level.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/logging/Logger.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/logging/Logger.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/logging/Logging.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/logging/Logging.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/prefs/AbstractPreferences.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/prefs/AbstractPreferences.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/regex/Pattern.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/regex/Pattern.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
@@ -369,13 +369,10 @@
  * part of an unescaped construct.
  *
  * <p> Backslashes within string literals in Java source code are interpreted
- * as required by the <a
- * href="http://java.sun.com/docs/books/jls">Java Language
- * Specification</a> as either <a
- * href="http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#100850">Unicode
- * escapes</a> or other <a
- * href="http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#101089">character
- * escapes</a>.  It is therefore necessary to double backslashes in string
+ * as required by
+ * <cite>The Java&trade; Language Specification</cite>
+ * as either Unicode escapes (section 3.3) or other character escapes (section 3.10.6)
+ * It is therefore necessary to double backslashes in string
  * literals that represent regular expressions to protect them from
  * interpretation by the Java bytecode compiler.  The string literal
  * <tt>"&#92;b"</tt>, for example, matches a single backspace character when
@@ -525,9 +522,9 @@
  * Canonical Equivalents.
  *
  * <p> Unicode escape sequences such as <tt>&#92;u2014</tt> in Java source code
- * are processed as described in <a
- * href="http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#100850">\u00A73.3</a>
- * of the Java Language Specification.  Such escape sequences are also
+ * are processed as described in section 3.3 of
+ * <cite>The Java&trade; Language Specification</cite>.
+ * Such escape sequences are also
  * implemented directly by the regular-expression parser so that Unicode
  * escapes can be used in expressions that are read from files or from the
  * keyboard.  Thus the strings <tt>"&#92;u2014"</tt> and <tt>"\\u2014"</tt>,
--- a/jdk/src/share/classes/java/util/spi/LocaleNameProvider.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/spi/LocaleNameProvider.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/zip/Inflater.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/zip/Inflater.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/zip/ZipEntry.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/zip/ZipEntry.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/zip/ZipFile.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/zip/ZipFile.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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,11 +31,13 @@
 import java.io.EOFException;
 import java.io.File;
 import java.nio.charset.Charset;
-import java.util.Vector;
+import java.util.ArrayDeque;
+import java.util.Deque;
 import java.util.Enumeration;
-import java.util.Set;
-import java.util.HashSet;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.NoSuchElementException;
+import java.util.WeakHashMap;
 import java.security.AccessController;
 import sun.security.action.GetPropertyAction;
 import static java.util.zip.ZipConstants64.*;
@@ -54,7 +56,7 @@
     private long jzfile;  // address of jzfile data
     private String name;  // zip file name
     private int total;    // total number of entries
-    private boolean closeRequested;
+    private volatile boolean closeRequested = false;
 
     private static final int STORED = ZipEntry.STORED;
     private static final int DEFLATED = ZipEntry.DEFLATED;
@@ -314,8 +316,9 @@
     // freeEntry releases the C jzentry struct.
     private static native void freeEntry(long jzfile, long jzentry);
 
-    // the outstanding inputstreams that need to be closed.
-    private Set<InputStream> streams = new HashSet<>();
+    // the outstanding inputstreams that need to be closed,
+    // mapped to the inflater objects they use.
+    private final Map<InputStream, Inflater> streams = new WeakHashMap<>();
 
     /**
      * Returns an input stream for reading the contents of the specified
@@ -351,51 +354,21 @@
 
             switch (getEntryMethod(jzentry)) {
             case STORED:
-                streams.add(in);
+                synchronized (streams) {
+                    streams.put(in, null);
+                }
                 return in;
             case DEFLATED:
-                final ZipFileInputStream zfin = in;
                 // MORE: Compute good size for inflater stream:
                 long size = getEntrySize(jzentry) + 2; // Inflater likes a bit of slack
                 if (size > 65536) size = 8192;
                 if (size <= 0) size = 4096;
-                InputStream is = new InflaterInputStream(zfin, getInflater(), (int)size) {
-                    private boolean isClosed = false;
-
-                    public void close() throws IOException {
-                        if (!isClosed) {
-                            super.close();
-                            releaseInflater(inf);
-                            isClosed = true;
-                        }
-                    }
-                    // Override fill() method to provide an extra "dummy" byte
-                    // at the end of the input stream. This is required when
-                    // using the "nowrap" Inflater option.
-                    protected void fill() throws IOException {
-                        if (eof) {
-                            throw new EOFException(
-                                "Unexpected end of ZLIB input stream");
-                        }
-                        len = this.in.read(buf, 0, buf.length);
-                        if (len == -1) {
-                            buf[0] = 0;
-                            len = 1;
-                            eof = true;
-                        }
-                        inf.setInput(buf, 0, len);
-                    }
-                    private boolean eof;
-
-                    public int available() throws IOException {
-                        if (isClosed)
-                            return 0;
-                        long avail = zfin.size() - inf.getBytesWritten();
-                        return avail > (long) Integer.MAX_VALUE ?
-                            Integer.MAX_VALUE : (int) avail;
-                    }
-                };
-                streams.add(is);
+                Inflater inf = getInflater();
+                InputStream is =
+                    new ZipFileInflaterInputStream(in, inf, (int)size);
+                synchronized (streams) {
+                    streams.put(is, inf);
+                }
                 return is;
             default:
                 throw new ZipException("invalid compression method");
@@ -403,36 +376,91 @@
         }
     }
 
+    private class ZipFileInflaterInputStream extends InflaterInputStream {
+        private volatile boolean closeRequested = false;
+        private boolean eof = false;
+        private final ZipFileInputStream zfin;
+
+        ZipFileInflaterInputStream(ZipFileInputStream zfin, Inflater inf,
+                int size) {
+            super(zfin, inf, size);
+            this.zfin = zfin;
+        }
+
+        public void close() throws IOException {
+            if (closeRequested)
+                return;
+            closeRequested = true;
+
+            super.close();
+            Inflater inf;
+            synchronized (streams) {
+                inf = streams.remove(this);
+            }
+            if (inf != null) {
+                releaseInflater(inf);
+            }
+        }
+
+        // Override fill() method to provide an extra "dummy" byte
+        // at the end of the input stream. This is required when
+        // using the "nowrap" Inflater option.
+        protected void fill() throws IOException {
+            if (eof) {
+                throw new EOFException("Unexpected end of ZLIB input stream");
+            }
+            len = in.read(buf, 0, buf.length);
+            if (len == -1) {
+                buf[0] = 0;
+                len = 1;
+                eof = true;
+            }
+            inf.setInput(buf, 0, len);
+        }
+
+        public int available() throws IOException {
+            if (closeRequested)
+                return 0;
+            long avail = zfin.size() - inf.getBytesWritten();
+            return (avail > (long) Integer.MAX_VALUE ?
+                    Integer.MAX_VALUE : (int) avail);
+        }
+
+        protected void finalize() throws Throwable {
+            close();
+        }
+    }
+
     /*
      * Gets an inflater from the list of available inflaters or allocates
      * a new one.
      */
     private Inflater getInflater() {
-        synchronized (inflaters) {
-            int size = inflaters.size();
-            if (size > 0) {
-                Inflater inf = (Inflater)inflaters.remove(size - 1);
-                return inf;
-            } else {
-                return new Inflater(true);
+        Inflater inf;
+        synchronized (inflaterCache) {
+            while (null != (inf = inflaterCache.poll())) {
+                if (false == inf.ended()) {
+                    return inf;
+                }
             }
         }
+        return new Inflater(true);
     }
 
     /*
      * Releases the specified inflater to the list of available inflaters.
      */
     private void releaseInflater(Inflater inf) {
-        synchronized (inflaters) {
-            if (inf.ended())
-                return;
+        if (false == inf.ended()) {
             inf.reset();
-            inflaters.add(inf);
+            synchronized (inflaterCache) {
+                inflaterCache.add(inf);
+            }
         }
     }
 
     // List of available Inflater objects for decompression
-    private Vector inflaters = new Vector();
+    private Deque<Inflater> inflaterCache = new ArrayDeque<>();
 
     /**
      * Returns the path name of the ZIP file.
@@ -540,14 +568,32 @@
      * @throws IOException if an I/O error has occurred
      */
     public void close() throws IOException {
-        synchronized (this) {
-            closeRequested = true;
+        if (closeRequested)
+            return;
+        closeRequested = true;
 
-            if (streams.size() !=0) {
-                Set<InputStream> copy = streams;
-                streams = new HashSet<>();
-                for (InputStream is: copy)
-                    is.close();
+        synchronized (this) {
+            // Close streams, release their inflaters
+            synchronized (streams) {
+                if (false == streams.isEmpty()) {
+                    Map<InputStream, Inflater> copy = new HashMap<>(streams);
+                    streams.clear();
+                    for (Map.Entry<InputStream, Inflater> e : copy.entrySet()) {
+                        e.getKey().close();
+                        Inflater inf = e.getValue();
+                        if (inf != null) {
+                            inf.end();
+                        }
+                    }
+                }
+            }
+
+            // Release cached inflaters
+            Inflater inf;
+            synchronized (inflaterCache) {
+                while (null != (inf = inflaterCache.poll())) {
+                    inf.end();
+                }
             }
 
             if (jzfile != 0) {
@@ -556,23 +602,13 @@
                 jzfile = 0;
 
                 close(zf);
-
-                // Release inflaters
-                synchronized (inflaters) {
-                    int size = inflaters.size();
-                    for (int i = 0; i < size; i++) {
-                        Inflater inf = (Inflater)inflaters.get(i);
-                        inf.end();
-                    }
-                }
             }
         }
     }
 
-
     /**
-     * Ensures that the <code>close</code> method of this ZIP file is
-     * called when there are no more references to it.
+     * Ensures that the system resources held by this ZipFile object are
+     * released when there are no more references to it.
      *
      * <p>
      * Since the time when GC would invoke this method is undetermined,
@@ -611,6 +647,7 @@
      * (possibly compressed) zip file entry.
      */
    private class ZipFileInputStream extends InputStream {
+        private volatile boolean closeRequested = false;
         protected long jzentry; // address of jzentry data
         private   long pos;     // current position within entry data
         protected long rem;     // number of remaining bytes within entry
@@ -678,15 +715,25 @@
         }
 
         public void close() {
+            if (closeRequested)
+                return;
+            closeRequested = true;
+
             rem = 0;
             synchronized (ZipFile.this) {
                 if (jzentry != 0 && ZipFile.this.jzfile != 0) {
                     freeEntry(ZipFile.this.jzfile, jzentry);
                     jzentry = 0;
                 }
+            }
+            synchronized (streams) {
                 streams.remove(this);
             }
         }
+
+        protected void finalize() {
+            close();
+        }
     }
 
 
--- a/jdk/src/share/classes/java/util/zip/ZipOutputStream.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/zip/ZipOutputStream.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/java/util/zip/package.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/java/util/zip/package.html	Wed Apr 20 09:31:11 2011 -0700
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--
-Copyright (c) 1998, 2002, Oracle and/or its affiliates. All rights reserved.
+Copyright (c) 1998, 2010, Oracle and/or its affiliates. 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/crypto/AEADBadTagException.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.crypto;
+
+/**
+ * This exception is thrown when a {@link Cipher} operating in
+ * an AEAD mode (such as GCM/CCM) is unable to verify the supplied
+ * authentication tag.
+ *
+ * @since 1.7
+ */
+public class AEADBadTagException extends BadPaddingException {
+
+    private static final long serialVersionUID = -488059093241685509L;
+
+    /**
+     * Constructs a AEADBadTagException with no detail message.
+     */
+    public AEADBadTagException() {
+        super();
+    }
+
+    /**
+     * Constructs a AEADBadTagException with the specified
+     * detail message.
+     *
+     * @param msg the detail message.
+     */
+    public AEADBadTagException(String msg) {
+        super(msg);
+    }
+}
--- a/jdk/src/share/classes/javax/crypto/Cipher.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/crypto/Cipher.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -88,8 +88,35 @@
  * example, the SunJCE provider uses a default of 64 bits for DES.)
  * Thus, block ciphers can be turned into byte-oriented stream ciphers by
  * using an 8 bit mode such as CFB8 or OFB8.
+ * <p>
+ * Modes such as Authenticated Encryption with Associated Data (AEAD)
+ * provide authenticity assurances for both confidential data and
+ * Additional Associated Data (AAD) that is not encrypted.  (Please see
+ * <a href="http://www.ietf.org/rfc/rfc5116.txt"> RFC 5116 </a> for more
+ * information on AEAD and AEAD algorithms such as GCM/CCM.) Both
+ * confidential and AAD data can be used when calculating the
+ * authentication tag (similar to a {@link Mac}).  This tag is appended
+ * to the ciphertext during encryption, and is verified on decryption.
+ * <p>
+ * AEAD modes such as GCM/CCM perform all AAD authenticity calculations
+ * before starting the ciphertext authenticity calculations.  To avoid
+ * implementations having to internally buffer ciphertext, all AAD data
+ * must be supplied to GCM/CCM implementations (via the {@code
+ * updateAAD} methods) <b>before</b> the ciphertext is processed (via
+ * the {@code update} and {@code doFinal} methods).
  *
- * <p> Every implementation of the Java platform is required to support
+ * <pre>
+ *     GCMParameterSpec s = new GCMParameterSpec(...);
+ *     cipher.init(..., s);
+ *
+ *     // If the GCMParameterSpec is needed again
+ *     cipher.getParameters().getParameterSpec(GCMParameterSpec.class));
+ *
+ *     cipher.updateAAD(...);  // AAD
+ *     cipher.update(...);     // Multi-part update
+ *     cipher.doFinal(...);    // conclusion of operation
+ * </pre>
+ * Every implementation of the Java platform is required to support
  * the following standard <code>Cipher</code> transformations with the keysizes
  * in parentheses:
  * <ul>
@@ -894,7 +921,7 @@
      * <code>inputLen</code> (in bytes).
      *
      * <p>This call takes into account any unprocessed (buffered) data from a
-     * previous <code>update</code> call, and padding.
+     * previous <code>update</code> call, padding, and AEAD tagging.
      *
      * <p>The actual output length of the next <code>update</code> or
      * <code>doFinal</code> call may be smaller than the length returned by
@@ -1090,6 +1117,11 @@
      * {@link #getParameters() getParameters} or
      * {@link #getIV() getIV} (if the parameter is an IV).
      *
+     * <p>If this cipher requires algorithm parameters that cannot be
+     * derived from the input parameters, and there are no reasonable
+     * provider-specific default values, initialization will
+     * necessarily fail.
+     *
      * <p>If this cipher (including its underlying feedback or padding scheme)
      * requires any random bytes (e.g., for parameter generation), it will get
      * them using the {@link SecureRandom <code>SecureRandom</code>}
@@ -1110,8 +1142,8 @@
      * @param key the key
      *
      * @exception InvalidKeyException if the given key is inappropriate for
-     * initializing this cipher, or if this cipher is being initialized for
-     * decryption and requires algorithm parameters that cannot be
+     * initializing this cipher, or requires
+     * algorithm parameters that cannot be
      * determined from the given key, or if the given key has a keysize that
      * exceeds the maximum allowable keysize (as determined from the
      * configured jurisdiction policy files).
@@ -1138,6 +1170,11 @@
      * {@link #getParameters() getParameters} or
      * {@link #getIV() getIV} (if the parameter is an IV).
      *
+     * <p>If this cipher requires algorithm parameters that cannot be
+     * derived from the input parameters, and there are no reasonable
+     * provider-specific default values, initialization will
+     * necessarily fail.
+     *
      * <p>If this cipher (including its underlying feedback or padding scheme)
      * requires any random bytes (e.g., for parameter generation), it will get
      * them from <code>random</code>.
@@ -1155,8 +1192,8 @@
      * @param random the source of randomness
      *
      * @exception InvalidKeyException if the given key is inappropriate for
-     * initializing this cipher, or if this cipher is being initialized for
-     * decryption and requires algorithm parameters that cannot be
+     * initializing this cipher, or requires
+     * algorithm parameters that cannot be
      * determined from the given key, or if the given key has a keysize that
      * exceeds the maximum allowable keysize (as determined from the
      * configured jurisdiction policy files).
@@ -1202,6 +1239,11 @@
      * {@link #getParameters() getParameters} or
      * {@link #getIV() getIV} (if the parameter is an IV).
      *
+     * <p>If this cipher requires algorithm parameters that cannot be
+     * derived from the input parameters, and there are no reasonable
+     * provider-specific default values, initialization will
+     * necessarily fail.
+     *
      * <p>If this cipher (including its underlying feedback or padding scheme)
      * requires any random bytes (e.g., for parameter generation), it will get
      * them using the {@link SecureRandom <code>SecureRandom</code>}
@@ -1227,7 +1269,7 @@
      * keysize (as determined from the configured jurisdiction policy files).
      * @exception InvalidAlgorithmParameterException if the given algorithm
      * parameters are inappropriate for this cipher,
-     * or this cipher is being initialized for decryption and requires
+     * or this cipher requires
      * algorithm parameters and <code>params</code> is null, or the given
      * algorithm parameters imply a cryptographic strength that would exceed
      * the legal limits (as determined from the configured jurisdiction
@@ -1258,6 +1300,11 @@
      * {@link #getParameters() getParameters} or
      * {@link #getIV() getIV} (if the parameter is an IV).
      *
+     * <p>If this cipher requires algorithm parameters that cannot be
+     * derived from the input parameters, and there are no reasonable
+     * provider-specific default values, initialization will
+     * necessarily fail.
+     *
      * <p>If this cipher (including its underlying feedback or padding scheme)
      * requires any random bytes (e.g., for parameter generation), it will get
      * them from <code>random</code>.
@@ -1280,7 +1327,7 @@
      * keysize (as determined from the configured jurisdiction policy files).
      * @exception InvalidAlgorithmParameterException if the given algorithm
      * parameters are inappropriate for this cipher,
-     * or this cipher is being initialized for decryption and requires
+     * or this cipher requires
      * algorithm parameters and <code>params</code> is null, or the given
      * algorithm parameters imply a cryptographic strength that would exceed
      * the legal limits (as determined from the configured jurisdiction
@@ -1323,6 +1370,11 @@
      * {@link #getParameters() getParameters} or
      * {@link #getIV() getIV} (if the parameter is an IV).
      *
+     * <p>If this cipher requires algorithm parameters that cannot be
+     * derived from the input parameters, and there are no reasonable
+     * provider-specific default values, initialization will
+     * necessarily fail.
+     *
      * <p>If this cipher (including its underlying feedback or padding scheme)
      * requires any random bytes (e.g., for parameter generation), it will get
      * them using the {@link SecureRandom <code>SecureRandom</code>}
@@ -1348,7 +1400,7 @@
      * keysize (as determined from the configured jurisdiction policy files).
      * @exception InvalidAlgorithmParameterException if the given algorithm
      * parameters are inappropriate for this cipher,
-     * or this cipher is being initialized for decryption and requires
+     * or this cipher requires
      * algorithm parameters and <code>params</code> is null, or the given
      * algorithm parameters imply a cryptographic strength that would exceed
      * the legal limits (as determined from the configured jurisdiction
@@ -1379,6 +1431,11 @@
      * {@link #getParameters() getParameters} or
      * {@link #getIV() getIV} (if the parameter is an IV).
      *
+     * <p>If this cipher requires algorithm parameters that cannot be
+     * derived from the input parameters, and there are no reasonable
+     * provider-specific default values, initialization will
+     * necessarily fail.
+     *
      * <p>If this cipher (including its underlying feedback or padding scheme)
      * requires any random bytes (e.g., for parameter generation), it will get
      * them from <code>random</code>.
@@ -1401,7 +1458,7 @@
      * keysize (as determined from the configured jurisdiction policy files).
      * @exception InvalidAlgorithmParameterException if the given algorithm
      * parameters are inappropriate for this cipher,
-     * or this cipher is being initialized for decryption and requires
+     * or this cipher requires
      * algorithm parameters and <code>params</code> is null, or the given
      * algorithm parameters imply a cryptographic strength that would exceed
      * the legal limits (as determined from the configured jurisdiction
@@ -1444,7 +1501,7 @@
      * derived from the public key in the given certificate, the underlying
      * cipher
      * implementation is supposed to generate the required parameters itself
-     * (using provider-specific default or ramdom values) if it is being
+     * (using provider-specific default or random values) if it is being
      * initialized for encryption or key wrapping, and raise an <code>
      * InvalidKeyException</code> if it is being initialized for decryption or
      * key unwrapping.
@@ -1452,6 +1509,11 @@
      * {@link #getParameters() getParameters} or
      * {@link #getIV() getIV} (if the parameter is an IV).
      *
+     * <p>If this cipher requires algorithm parameters that cannot be
+     * derived from the input parameters, and there are no reasonable
+     * provider-specific default values, initialization will
+     * necessarily fail.
+     *
      * <p>If this cipher (including its underlying feedback or padding scheme)
      * requires any random bytes (e.g., for parameter generation), it will get
      * them using the
@@ -1474,8 +1536,7 @@
      *
      * @exception InvalidKeyException if the public key in the given
      * certificate is inappropriate for initializing this cipher, or this
-     * cipher is being initialized for decryption or unwrapping keys and
-     * requires algorithm parameters that cannot be determined from the
+     * cipher requires algorithm parameters that cannot be determined from the
      * public key in the given certificate, or the keysize of the public key
      * in the given certificate has a keysize that exceeds the maximum
      * allowable keysize (as determined by the configured jurisdiction policy
@@ -1518,6 +1579,11 @@
      * {@link #getParameters() getParameters} or
      * {@link #getIV() getIV} (if the parameter is an IV).
      *
+     * <p>If this cipher requires algorithm parameters that cannot be
+     * derived from the input parameters, and there are no reasonable
+     * provider-specific default values, initialization will
+     * necessarily fail.
+     *
      * <p>If this cipher (including its underlying feedback or padding scheme)
      * requires any random bytes (e.g., for parameter generation), it will get
      * them from <code>random</code>.
@@ -1536,7 +1602,7 @@
      *
      * @exception InvalidKeyException if the public key in the given
      * certificate is inappropriate for initializing this cipher, or this
-     * cipher is being initialized for decryption or unwrapping keys and
+     * cipher
      * requires algorithm parameters that cannot be determined from the
      * public key in the given certificate, or the keysize of the public key
      * in the given certificate has a keysize that exceeds the maximum
@@ -1865,6 +1931,9 @@
      * <p>Input data that may have been buffered during a previous
      * <code>update</code> operation is processed, with padding (if requested)
      * being applied.
+     * If an AEAD mode such as GCM/CCM is being used, the authentication
+     * tag is appended in the case of encryption, or verified in the
+     * case of decryption.
      * The result is stored in a new buffer.
      *
      * <p>Upon finishing, this method resets this cipher object to the state
@@ -1888,6 +1957,9 @@
      * @exception BadPaddingException if this cipher is in decryption mode,
      * and (un)padding has been requested, but the decrypted data is not
      * bounded by the appropriate padding bytes
+     * @exception AEADBadTagException if this cipher is decrypting in an
+     * AEAD mode (such as GCM/CCM), and the received authentication tag
+     * does not match the calculated value
      */
     public final byte[] doFinal()
             throws IllegalBlockSizeException, BadPaddingException {
@@ -1904,6 +1976,9 @@
      * <p>Input data that may have been buffered during a previous
      * <code>update</code> operation is processed, with padding (if requested)
      * being applied.
+     * If an AEAD mode such as GCM/CCM is being used, the authentication
+     * tag is appended in the case of encryption, or verified in the
+     * case of decryption.
      * The result is stored in the <code>output</code> buffer, starting at
      * <code>outputOffset</code> inclusive.
      *
@@ -1940,6 +2015,9 @@
      * @exception BadPaddingException if this cipher is in decryption mode,
      * and (un)padding has been requested, but the decrypted data is not
      * bounded by the appropriate padding bytes
+     * @exception AEADBadTagException if this cipher is decrypting in an
+     * AEAD mode (such as GCM/CCM), and the received authentication tag
+     * does not match the calculated value
      */
     public final int doFinal(byte[] output, int outputOffset)
             throws IllegalBlockSizeException, ShortBufferException,
@@ -1963,6 +2041,9 @@
      * <p>The bytes in the <code>input</code> buffer, and any input bytes that
      * may have been buffered during a previous <code>update</code> operation,
      * are processed, with padding (if requested) being applied.
+     * If an AEAD mode such as GCM/CCM is being used, the authentication
+     * tag is appended in the case of encryption, or verified in the
+     * case of decryption.
      * The result is stored in a new buffer.
      *
      * <p>Upon finishing, this method resets this cipher object to the state
@@ -1988,6 +2069,9 @@
      * @exception BadPaddingException if this cipher is in decryption mode,
      * and (un)padding has been requested, but the decrypted data is not
      * bounded by the appropriate padding bytes
+     * @exception AEADBadTagException if this cipher is decrypting in an
+     * AEAD mode (such as GCM/CCM), and the received authentication tag
+     * does not match the calculated value
      */
     public final byte[] doFinal(byte[] input)
             throws IllegalBlockSizeException, BadPaddingException {
@@ -2011,6 +2095,9 @@
      * buffer, starting at <code>inputOffset</code> inclusive, and any input
      * bytes that may have been buffered during a previous <code>update</code>
      * operation, are processed, with padding (if requested) being applied.
+     * If an AEAD mode such as GCM/CCM is being used, the authentication
+     * tag is appended in the case of encryption, or verified in the
+     * case of decryption.
      * The result is stored in a new buffer.
      *
      * <p>Upon finishing, this method resets this cipher object to the state
@@ -2039,6 +2126,9 @@
      * @exception BadPaddingException if this cipher is in decryption mode,
      * and (un)padding has been requested, but the decrypted data is not
      * bounded by the appropriate padding bytes
+     * @exception AEADBadTagException if this cipher is decrypting in an
+     * AEAD mode (such as GCM/CCM), and the received authentication tag
+     * does not match the calculated value
      */
     public final byte[] doFinal(byte[] input, int inputOffset, int inputLen)
             throws IllegalBlockSizeException, BadPaddingException {
@@ -2063,6 +2153,9 @@
      * buffer, starting at <code>inputOffset</code> inclusive, and any input
      * bytes that may have been buffered during a previous <code>update</code>
      * operation, are processed, with padding (if requested) being applied.
+     * If an AEAD mode such as GCM/CCM is being used, the authentication
+     * tag is appended in the case of encryption, or verified in the
+     * case of decryption.
      * The result is stored in the <code>output</code> buffer.
      *
      * <p>If the <code>output</code> buffer is too small to hold the result,
@@ -2105,6 +2198,9 @@
      * @exception BadPaddingException if this cipher is in decryption mode,
      * and (un)padding has been requested, but the decrypted data is not
      * bounded by the appropriate padding bytes
+     * @exception AEADBadTagException if this cipher is decrypting in an
+     * AEAD mode (such as GCM/CCM), and the received authentication tag
+     * does not match the calculated value
      */
     public final int doFinal(byte[] input, int inputOffset, int inputLen,
                              byte[] output)
@@ -2133,6 +2229,9 @@
      * bytes that may have been buffered during a previous
      * <code>update</code> operation, are processed, with padding
      * (if requested) being applied.
+     * If an AEAD mode such as GCM/CCM is being used, the authentication
+     * tag is appended in the case of encryption, or verified in the
+     * case of decryption.
      * The result is stored in the <code>output</code> buffer, starting at
      * <code>outputOffset</code> inclusive.
      *
@@ -2178,6 +2277,9 @@
      * @exception BadPaddingException if this cipher is in decryption mode,
      * and (un)padding has been requested, but the decrypted data is not
      * bounded by the appropriate padding bytes
+     * @exception AEADBadTagException if this cipher is decrypting in an
+     * AEAD mode (such as GCM/CCM), and the received authentication tag
+     * does not match the calculated value
      */
     public final int doFinal(byte[] input, int inputOffset, int inputLen,
                              byte[] output, int outputOffset)
@@ -2203,8 +2305,11 @@
      * depending on how this cipher was initialized.
      *
      * <p>All <code>input.remaining()</code> bytes starting at
-     * <code>input.position()</code> are processed. The result is stored
-     * in the output buffer.
+     * <code>input.position()</code> are processed.
+     * If an AEAD mode such as GCM/CCM is being used, the authentication
+     * tag is appended in the case of encryption, or verified in the
+     * case of decryption.
+     * The result is stored in the output buffer.
      * Upon return, the input buffer's position will be equal
      * to its limit; its limit will not have changed. The output buffer's
      * position will have advanced by n, where n is the value returned
@@ -2250,6 +2355,10 @@
      * @exception BadPaddingException if this cipher is in decryption mode,
      * and (un)padding has been requested, but the decrypted data is not
      * bounded by the appropriate padding bytes
+     * @exception AEADBadTagException if this cipher is decrypting in an
+     * AEAD mode (such as GCM/CCM), and the received authentication tag
+     * does not match the calculated value
+     *
      * @since 1.5
      */
     public final int doFinal(ByteBuffer input, ByteBuffer output)
@@ -2441,4 +2550,128 @@
         CryptoPermission cp = getConfiguredPermission(transformation);
         return cp.getAlgorithmParameterSpec();
     }
+
+    /**
+     * Continues a multi-part update of the Additional Authentication
+     * Data (AAD).
+     * <p>
+     * Calls to this method provide AAD to the cipher when operating in
+     * modes such as AEAD (GCM/CCM).  If this cipher is operating in
+     * either GCM or CCM mode, all AAD must be supplied before beginning
+     * operations on the ciphertext (via the {@code update} and {@code
+     * doFinal} methods).
+     *
+     * @param src the buffer containing the Additional Authentication Data
+     *
+     * @throws IllegalArgumentException if the {@code src}
+     * byte array is null
+     * @throws IllegalStateException if this cipher is in a wrong state
+     * (e.g., has not been initialized), does not accept AAD, or if
+     * operating in either GCM or CCM mode and one of the {@code update}
+     * methods has already been called for the active
+     * encryption/decryption operation
+     * @throws UnsupportedOperationException if the corresponding method
+     * in the {@code CipherSpi} has not been overridden by an
+     * implementation
+     *
+     * @since 1.7
+     */
+    public final void updateAAD(byte[] src) {
+        if (src == null) {
+            throw new IllegalArgumentException("src buffer is null");
+        }
+
+        updateAAD(src, 0, src.length);
+    }
+
+    /**
+     * Continues a multi-part update of the Additional Authentication
+     * Data (AAD), using a subset of the provided buffer.
+     * <p>
+     * Calls to this method provide AAD to the cipher when operating in
+     * modes such as AEAD (GCM/CCM).  If this cipher is operating in
+     * either GCM or CCM mode, all AAD must be supplied before beginning
+     * operations on the ciphertext (via the {@code update} and {@code
+     * doFinal} methods).
+     *
+     * @param src the buffer containing the AAD
+     * @param offset the offset in {@code src} where the AAD input starts
+     * @param len the number of AAD bytes
+     *
+     * @throws IllegalArgumentException if the {@code src}
+     * byte array is null, or the {@code offset} or {@code length}
+     * is less than 0, or the sum of the {@code offset} and
+     * {@code len} is greater than the length of the
+     * {@code src} byte array
+     * @throws IllegalStateException if this cipher is in a wrong state
+     * (e.g., has not been initialized), does not accept AAD, or if
+     * operating in either GCM or CCM mode and one of the {@code update}
+     * methods has already been called for the active
+     * encryption/decryption operation
+     * @throws UnsupportedOperationException if the corresponding method
+     * in the {@code CipherSpi} has not been overridden by an
+     * implementation
+     *
+     * @since 1.7
+     */
+    public final void updateAAD(byte[] src, int offset, int len) {
+        checkCipherState();
+
+        // Input sanity check
+        if ((src == null) || (offset < 0) || (len < 0)
+                || ((len + offset) > src.length)) {
+            throw new IllegalArgumentException("Bad arguments");
+        }
+
+        chooseFirstProvider();
+        if (len == 0) {
+            return;
+        }
+        spi.engineUpdateAAD(src, offset, len);
+    }
+
+    /**
+     * Continues a multi-part update of the Additional Authentication
+     * Data (AAD).
+     * <p>
+     * Calls to this method provide AAD to the cipher when operating in
+     * modes such as AEAD (GCM/CCM).  If this cipher is operating in
+     * either GCM or CCM mode, all AAD must be supplied before beginning
+     * operations on the ciphertext (via the {@code update} and {@code
+     * doFinal} methods).
+     * <p>
+     * All {@code src.remaining()} bytes starting at
+     * {@code src.position()} are processed.
+     * Upon return, the input buffer's position will be equal
+     * to its limit; its limit will not have changed.
+     *
+     * @param src the buffer containing the AAD
+     *
+     * @throws IllegalArgumentException if the {@code src ByteBuffer}
+     * is null
+     * @throws IllegalStateException if this cipher is in a wrong state
+     * (e.g., has not been initialized), does not accept AAD, or if
+     * operating in either GCM or CCM mode and one of the {@code update}
+     * methods has already been called for the active
+     * encryption/decryption operation
+     * @throws UnsupportedOperationException if the corresponding method
+     * in the {@code CipherSpi} has not been overridden by an
+     * implementation
+     *
+     * @since 1.7
+     */
+    public final void updateAAD(ByteBuffer src) {
+        checkCipherState();
+
+        // Input sanity check
+        if (src == null) {
+            throw new IllegalArgumentException("src ByteBuffer is null");
+        }
+
+        chooseFirstProvider();
+        if (src.remaining() == 0) {
+            return;
+        }
+        spi.engineUpdateAAD(src);
+    }
 }
--- a/jdk/src/share/classes/javax/crypto/CipherSpi.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/crypto/CipherSpi.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -266,7 +266,7 @@
      * <code>inputLen</code> (in bytes).
      *
      * <p>This call takes into account any unprocessed (buffered) data from a
-     * previous <code>update</code> call, and padding.
+     * previous <code>update</code> call, padding, and AEAD tagging.
      *
      * <p>The actual output length of the next <code>update</code> or
      * <code>doFinal</code> call may be smaller than the length returned by
@@ -322,6 +322,11 @@
      * {@link #engineGetParameters() engineGetParameters} or
      * {@link #engineGetIV() engineGetIV} (if the parameter is an IV).
      *
+     * <p>If this cipher requires algorithm parameters that cannot be
+     * derived from the input parameters, and there are no reasonable
+     * provider-specific default values, initialization will
+     * necessarily fail.
+     *
      * <p>If this cipher (including its underlying feedback or padding scheme)
      * requires any random bytes (e.g., for parameter generation), it will get
      * them from <code>random</code>.
@@ -339,8 +344,8 @@
      * @param random the source of randomness
      *
      * @exception InvalidKeyException if the given key is inappropriate for
-     * initializing this cipher, or if this cipher is being initialized for
-     * decryption and requires algorithm parameters that cannot be
+     * initializing this cipher, or requires
+     * algorithm parameters that cannot be
      * determined from the given key.
      */
     protected abstract void engineInit(int opmode, Key key,
@@ -366,6 +371,11 @@
      * {@link #engineGetParameters() engineGetParameters} or
      * {@link #engineGetIV() engineGetIV} (if the parameter is an IV).
      *
+     * <p>If this cipher requires algorithm parameters that cannot be
+     * derived from the input parameters, and there are no reasonable
+     * provider-specific default values, initialization will
+     * necessarily fail.
+     *
      * <p>If this cipher (including its underlying feedback or padding scheme)
      * requires any random bytes (e.g., for parameter generation), it will get
      * them from <code>random</code>.
@@ -387,7 +397,7 @@
      * initializing this cipher
      * @exception InvalidAlgorithmParameterException if the given algorithm
      * parameters are inappropriate for this cipher,
-     * or if this cipher is being initialized for decryption and requires
+     * or if this cipher requires
      * algorithm parameters and <code>params</code> is null.
      */
     protected abstract void engineInit(int opmode, Key key,
@@ -414,6 +424,11 @@
      * {@link #engineGetParameters() engineGetParameters} or
      * {@link #engineGetIV() engineGetIV} (if the parameter is an IV).
      *
+     * <p>If this cipher requires algorithm parameters that cannot be
+     * derived from the input parameters, and there are no reasonable
+     * provider-specific default values, initialization will
+     * necessarily fail.
+     *
      * <p>If this cipher (including its underlying feedback or padding scheme)
      * requires any random bytes (e.g., for parameter generation), it will get
      * them from <code>random</code>.
@@ -435,7 +450,7 @@
      * initializing this cipher
      * @exception InvalidAlgorithmParameterException if the given algorithm
      * parameters are inappropriate for this cipher,
-     * or if this cipher is being initialized for decryption and requires
+     * or if this cipher requires
      * algorithm parameters and <code>params</code> is null.
      */
     protected abstract void engineInit(int opmode, Key key,
@@ -548,6 +563,9 @@
      * buffer, starting at <code>inputOffset</code> inclusive, and any input
      * bytes that may have been buffered during a previous <code>update</code>
      * operation, are processed, with padding (if requested) being applied.
+     * If an AEAD mode such as GCM/CCM is being used, the authentication
+     * tag is appended in the case of encryption, or verified in the
+     * case of decryption.
      * The result is stored in a new buffer.
      *
      * <p>Upon finishing, this method resets this cipher object to the state
@@ -575,6 +593,9 @@
      * @exception BadPaddingException if this cipher is in decryption mode,
      * and (un)padding has been requested, but the decrypted data is not
      * bounded by the appropriate padding bytes
+     * @exception AEADBadTagException if this cipher is decrypting in an
+     * AEAD mode (such as GCM/CCM), and the received authentication tag
+     * does not match the calculated value
      */
     protected abstract byte[] engineDoFinal(byte[] input, int inputOffset,
                                             int inputLen)
@@ -590,6 +611,9 @@
      * buffer, starting at <code>inputOffset</code> inclusive, and any input
      * bytes that may have been buffered during a previous <code>update</code>
      * operation, are processed, with padding (if requested) being applied.
+     * If an AEAD mode such as GCM/CCM is being used, the authentication
+     * tag is appended in the case of encryption, or verified in the
+     * case of decryption.
      * The result is stored in the <code>output</code> buffer, starting at
      * <code>outputOffset</code> inclusive.
      *
@@ -626,6 +650,9 @@
      * @exception BadPaddingException if this cipher is in decryption mode,
      * and (un)padding has been requested, but the decrypted data is not
      * bounded by the appropriate padding bytes
+     * @exception AEADBadTagException if this cipher is decrypting in an
+     * AEAD mode (such as GCM/CCM), and the received authentication tag
+     * does not match the calculated value
      */
     protected abstract int engineDoFinal(byte[] input, int inputOffset,
                                          int inputLen, byte[] output,
@@ -640,8 +667,11 @@
      * initialized.
      *
      * <p>All <code>input.remaining()</code> bytes starting at
-     * <code>input.position()</code> are processed. The result is stored
-     * in the output buffer.
+     * <code>input.position()</code> are processed.
+     * If an AEAD mode such as GCM/CCM is being used, the authentication
+     * tag is appended in the case of encryption, or verified in the
+     * case of decryption.
+     * The result is stored in the output buffer.
      * Upon return, the input buffer's position will be equal
      * to its limit; its limit will not have changed. The output buffer's
      * position will have advanced by n, where n is the value returned
@@ -678,6 +708,9 @@
      * @exception BadPaddingException if this cipher is in decryption mode,
      * and (un)padding has been requested, but the decrypted data is not
      * bounded by the appropriate padding bytes
+     * @exception AEADBadTagException if this cipher is decrypting in an
+     * AEAD mode (such as GCM/CCM), and the received authentication tag
+     * does not match the calculated value
      *
      * @throws NullPointerException if either parameter is <CODE>null</CODE>
      * @since 1.5
@@ -892,4 +925,67 @@
     {
         throw new UnsupportedOperationException();
     }
+
+    /**
+     * Continues a multi-part update of the Additional Authentication
+     * Data (AAD), using a subset of the provided buffer.
+     * <p>
+     * Calls to this method provide AAD to the cipher when operating in
+     * modes such as AEAD (GCM/CCM).  If this cipher is operating in
+     * either GCM or CCM mode, all AAD must be supplied before beginning
+     * operations on the ciphertext (via the {@code update} and {@code
+     * doFinal} methods).
+     *
+     * @param src the buffer containing the AAD
+     * @param offset the offset in {@code src} where the AAD input starts
+     * @param len the number of AAD bytes
+     *
+     * @throws IllegalStateException if this cipher is in a wrong state
+     * (e.g., has not been initialized), does not accept AAD, or if
+     * operating in either GCM or CCM mode and one of the {@code update}
+     * methods has already been called for the active
+     * encryption/decryption operation
+     * @throws UnsupportedOperationException if this method
+     * has not been overridden by an implementation
+     *
+     * @since 1.7
+     */
+    protected void engineUpdateAAD(byte[] src, int offset, int len) {
+        throw new UnsupportedOperationException(
+            "The underlying Cipher implementation "
+            +  "does not support this method");
+    }
+
+    /**
+     * Continues a multi-part update of the Additional Authentication
+     * Data (AAD).
+     * <p>
+     * Calls to this method provide AAD to the cipher when operating in
+     * modes such as AEAD (GCM/CCM).  If this cipher is operating in
+     * either GCM or CCM mode, all AAD must be supplied before beginning
+     * operations on the ciphertext (via the {@code update} and {@code
+     * doFinal} methods).
+     * <p>
+     * All {@code src.remaining()} bytes starting at
+     * {@code src.position()} are processed.
+     * Upon return, the input buffer's position will be equal
+     * to its limit; its limit will not have changed.
+     *
+     * @param src the buffer containing the AAD
+     *
+     * @throws IllegalStateException if this cipher is in a wrong state
+     * (e.g., has not been initialized), does not accept AAD, or if
+     * operating in either GCM or CCM mode and one of the {@code update}
+     * methods has already been called for the active
+     * encryption/decryption operation
+     * @throws UnsupportedOperationException if this method
+     * has not been overridden by an implementation
+     *
+     * @since 1.7
+     */
+    protected void engineUpdateAAD(ByteBuffer src) {
+        throw new UnsupportedOperationException(
+            "The underlying Cipher implementation "
+            +  "does not support this method");
+    }
 }
--- a/jdk/src/share/classes/javax/crypto/ExemptionMechanism.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/crypto/ExemptionMechanism.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/crypto/KeyAgreement.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/crypto/KeyAgreement.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/crypto/KeyGenerator.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/crypto/KeyGenerator.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/crypto/Mac.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/crypto/Mac.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/crypto/package.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/crypto/package.html	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 <!--
-Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/crypto/spec/GCMParameterSpec.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,149 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.crypto.spec;
+
+import java.security.spec.AlgorithmParameterSpec;
+
+/**
+ * Specifies the set of parameters required by a {@link
+ * javax.crypto.Cipher} using the Galois/Counter Mode (GCM) mode.
+ * <p>
+ * Simple block cipher modes (such as CBC) generally require only an
+ * initialization vector (such as {@code IvParameterSpec}),
+ * but GCM needs these parameters:
+ * <ul>
+ * <li>{@code IV}: Initialization Vector (IV) </li>
+ * <li>{@code tLen}: length (in bits) of authentication tag T</li>
+ * </ul>
+ * <p>
+ * In addition to the parameters described here, other GCM inputs/output
+ * (Additional Authenticated Data (AAD), Keys, block ciphers,
+ * plain/ciphertext and authentication tags) are handled in the {@code
+ * Cipher} class.
+  <p>
+ * Please see <a href="http://www.ietf.org/rfc/rfc5116.txt"> RFC 5116
+ * </a> for more information on the Authenticated Encryption with
+ * Associated Data (AEAD) algorithm, and <a href=
+ * "http://csrc.nist.gov/publications/nistpubs/800-38D/SP-800-38D.pdf">
+ * NIST Special Publication 800-38D</a>, "NIST Recommendation for Block
+ * Cipher Modes of Operation:  Galois/Counter Mode (GCM) and GMAC."
+ * <p>
+ * The GCM specification states that {@code tLen} may only have the
+ * values {128, 120, 112, 104, 96}, or {64, 32} for certain
+ * applications.  Other values can be specified for this class, but not
+ * all CSP implementations will support them.
+ *
+ * @see javax.crypto.Cipher
+ *
+ * @since 1.7
+ */
+public class GCMParameterSpec implements AlgorithmParameterSpec {
+
+    // Initialization Vector.  Could use IvParameterSpec, but that
+    // would add extra copies.
+    private byte[] iv;
+
+    // Required Tag length (in bits).
+    private int tLen;
+
+    /**
+     * Constructs a GCMParameterSpec using the specified authentication
+     * tag bit-length and IV buffer.
+     *
+     * @param tLen the authentication tag length (in bits)
+     * @param src the IV source buffer.  The contents of the buffer are
+     * copied to protect against subsequent modification.
+     *
+     * @throws IllegalArgumentException if {@code tLen} is negative,
+     * or {@code src} is null.
+     */
+    public GCMParameterSpec(int tLen, byte[] src) {
+        if (src == null) {
+            throw new IllegalArgumentException("src array is null");
+        }
+
+        init(tLen, src, 0, src.length);
+    }
+
+    /**
+     * Constructs a GCMParameterSpec object using the specified
+     * authentication tag bit-length and a subset of the specified
+     * buffer as the IV.
+     *
+     * @param tLen the authentication tag length (in bits)
+     * @param src the IV source buffer.  The contents of the
+     * buffer are copied to protect against subsequent modification.
+     * @param offset the offset in {@code src} where the IV starts
+     * @param len the number of IV bytes
+     *
+     * @throws IllegalArgumentException if {@code tLen} is negative,
+     * {@code src} is null, {@code len} or {@code offset} is negative,
+     * or the sum of {@code offset} and {@code len} is greater than the
+     * length of the {@code src} byte array.
+     */
+    public GCMParameterSpec(int tLen, byte[] src, int offset, int len) {
+        init(tLen, src, offset, len);
+    }
+
+    /*
+     * Check input parameters.
+     */
+    private void init(int tLen, byte[] src, int offset, int len) {
+        if (tLen < 0) {
+            throw new IllegalArgumentException(
+                "Length argument is negative");
+        }
+        this.tLen = tLen;
+
+        // Input sanity check
+        if ((src == null) ||(len < 0) || (offset < 0)
+                || ((len + offset) > src.length)) {
+            throw new IllegalArgumentException("Invalid buffer arguments");
+        }
+
+        iv = new byte[len];
+        System.arraycopy(src, offset, iv, 0, len);
+    }
+
+    /**
+     * Returns the authentication tag length.
+     *
+     * @return the authentication tag length (in bits)
+     */
+    public int getTLen() {
+        return tLen;
+    }
+
+    /**
+     * Returns the Initialization Vector (IV).
+     *
+     * @return the IV.  Creates a new array each time this method
+     * is called.
+     */
+    public byte[] getIV() {
+        return iv.clone();
+    }
+}
--- a/jdk/src/share/classes/javax/imageio/metadata/IIOMetadataNode.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/imageio/metadata/IIOMetadataNode.java	Wed Apr 20 09:31:11 2011 -0700
@@ -724,7 +724,7 @@
     /**
      * Equivalent to <code>getNodeName</code>.
      *
-     * @return the node name, as a <code>String</code
+     * @return the node name, as a <code>String</code>
      */
     public String getTagName() {
         return nodeName;
--- a/jdk/src/share/classes/javax/management/remote/package.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/management/remote/package.html	Wed Apr 20 09:31:11 2011 -0700
@@ -154,11 +154,8 @@
       </pre>
 
       <p>The formal grammar for connection ids that follow this
-	convention is as follows (using the <a
-	href="http://java.sun.com/docs/books/jls/second_edition/html/grammars.doc.html#90767">grammar
-	notation</a> from <em>The Java Language Specification, Second
-	Edition</em>):</p>
-
+         convention is as follows (using the grammar notation from section 2.4 of 
+         <em>The Java&trade; Language Specification</em>):</p>
       <pre>
 <em>ConnectionId:</em>
     <em>Protocol</em> : <em>ClientAddress<sub>opt</sub></em> Space <em>ClientId<sub>opt</sub></em> Space <em>ArbitraryText</em>
--- a/jdk/src/share/classes/javax/net/ssl/SSLContext.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/net/ssl/SSLContext.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/net/ssl/package.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/net/ssl/package.html	Wed Apr 20 09:31:11 2011 -0700
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--
-Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/print/attribute/standard/DialogTypeSelection.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/print/attribute/standard/DialogTypeSelection.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/script/CompiledScript.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/script/CompiledScript.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/script/ScriptEngineFactory.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/script/ScriptEngineFactory.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/security/auth/PrivateCredentialPermission.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/security/auth/PrivateCredentialPermission.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/security/auth/SubjectDomainCombiner.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/security/auth/SubjectDomainCombiner.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/security/auth/kerberos/DelegationPermission.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/security/auth/kerberos/DelegationPermission.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/security/auth/kerberos/JavaxSecurityAuthKerberosAccessImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.security.auth.kerberos;
+
+import sun.misc.JavaxSecurityAuthKerberosAccess;
+import sun.security.krb5.EncryptionKey;
+import sun.security.krb5.PrincipalName;
+
+class JavaxSecurityAuthKerberosAccessImpl
+        implements JavaxSecurityAuthKerberosAccess {
+    public EncryptionKey[] keyTabGetEncryptionKeys(
+            KeyTab ktab, PrincipalName principal) {
+        return ktab.getEncryptionKeys(principal);
+    }
+}
--- a/jdk/src/share/classes/javax/security/auth/kerberos/KerberosKey.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/security/auth/kerberos/KerberosKey.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
@@ -35,14 +35,16 @@
  * principal.<p>
  *
  * All Kerberos JAAS login modules that obtain a principal's password and
- * generate the secret key from it should use this class. Where available,
- * the login module might even read this secret key directly from a
- * Kerberos "keytab". Sometimes, such as when authenticating a server in
+ * generate the secret key from it should use this class.
+ * Sometimes, such as when authenticating a server in
  * the absence of user-to-user authentication, the login module will store
  * an instance of this class in the private credential set of a
  * {@link javax.security.auth.Subject Subject} during the commit phase of the
  * authentication process.<p>
  *
+ * A Kerberos service using a keytab to read secret keys should use
+ * the {@link KeyTab} class, where latest keys can be read when needed.<p>
+ *
  * It might be necessary for the application to be granted a
  * {@link javax.security.auth.PrivateCredentialPermission
  * PrivateCredentialPermission} if it needs to access the KerberosKey
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/security/auth/kerberos/KeyTab.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,230 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.security.auth.kerberos;
+
+import java.io.File;
+import java.util.Objects;
+import sun.misc.SharedSecrets;
+import sun.security.krb5.EncryptionKey;
+import sun.security.krb5.PrincipalName;
+import sun.security.krb5.RealmException;
+
+/**
+ * This class encapsulates a keytab file.
+ * <p>
+ * A Kerberos JAAS login module that obtains long term secret keys from a
+ * keytab file should use this class. The login module will store
+ * an instance of this class in the private credential set of a
+ * {@link javax.security.auth.Subject Subject} during the commit phase of the
+ * authentication process.
+ * <p>
+ * It might be necessary for the application to be granted a
+ * {@link javax.security.auth.PrivateCredentialPermission
+ * PrivateCredentialPermission} if it needs to access the KeyTab
+ * instance from a Subject. This permission is not needed when the
+ * application depends on the default JGSS Kerberos mechanism to access the
+ * KeyTab. In that case, however, the application will need an appropriate
+ * {@link javax.security.auth.kerberos.ServicePermission ServicePermission}.
+ * <p>
+ * The keytab file format is described at
+ * <a href="http://www.ioplex.com/utilities/keytab.txt">
+ * http://www.ioplex.com/utilities/keytab.txt</a>.
+ *
+ * @since 1.7
+ */
+public final class KeyTab {
+
+    /*
+     * Impl notes:
+     *
+     * This class is only a name, a permanent link to the keytab source
+     * (can be missing). Itself has no content. In order to read content,
+     * take a snapshot and read from it.
+     *
+     * The snapshot is of type sun.security.krb5.internal.ktab.KeyTab, which
+     * contains the content of the keytab file when the snapshot is taken.
+     * Itself has no refresh function and mostly an immutable class (except
+     * for the create/add/save methods only used by the ktab command).
+     */
+
+    // Source, null if using the default one. Note that the default name
+    // is maintained in snapshot, this field is never "resolved".
+    private final File file;
+
+    // Set up JavaxSecurityAuthKerberosAccess in SharedSecrets
+    static {
+        SharedSecrets.setJavaxSecurityAuthKerberosAccess(
+                new JavaxSecurityAuthKerberosAccessImpl());
+    }
+
+    private KeyTab(File file) {
+        this.file = file;
+    }
+
+    /**
+     * Returns a {@code KeyTab} instance from a {@code File} object.
+     * <p>
+     * The result of this method is never null. This method only associates
+     * the returned {@code KeyTab} object with the file and does not read it.
+     * @param file the keytab {@code File} object, must not be null
+     * @return the keytab instance
+     * @throws NullPointerException if the {@code file} argument is null
+     */
+    public static KeyTab getInstance(File file) {
+        if (file == null) {
+            throw new NullPointerException("file must be non null");
+        }
+        return new KeyTab(file);
+    }
+
+    /**
+     * Returns the default {@code KeyTab} instance.
+     * <p>
+     * The result of this method is never null. This method only associates
+     * the returned {@code KeyTab} object with the default keytab file and
+     * does not read it.
+     * @return the default keytab instance.
+     */
+    public static KeyTab getInstance() {
+        return new KeyTab(null);
+    }
+
+    //Takes a snapshot of the keytab content
+    private sun.security.krb5.internal.ktab.KeyTab takeSnapshot() {
+        return sun.security.krb5.internal.ktab.KeyTab.getInstance(file);
+    }
+
+    /**
+     * Returns fresh keys for the given Kerberos principal.
+     * <p>
+     * Implementation of this method should make sure the returned keys match
+     * the latest content of the keytab file. The result is a newly created
+     * copy that can be modified by the caller without modifying the keytab
+     * object. The caller should {@link KerberosKey#destroy() destroy} the
+     * result keys after they are used.
+     * <p>
+     * Please note that the keytab file can be created after the
+     * {@code KeyTab} object is instantiated and its content may change over
+     * time. Therefore, an application should call this method only when it
+     * needs to use the keys. Any previous result from an earlier invocation
+     * could potentially be expired.
+     * <p>
+     * If there is any error (say, I/O error or format error)
+     * during the reading process of the KeyTab file, a saved result should be
+     * returned. If there is no saved result (say, this is the first time this
+     * method is called, or, all previous read attempts failed), an empty array
+     * should be returned. This can make sure the result is not drastically
+     * changed during the (probably slow) update of the keytab file.
+     * <p>
+     * Each time this method is called and the reading of the file succeeds
+     * with no exception (say, I/O error or file format error),
+     * the result should be saved for {@code principal}. The implementation can
+     * also save keys for other principals having keys in the same keytab object
+     * if convenient.
+     * <p>
+     * Any unsupported key read from the keytab is ignored and not included
+     * in the result.
+     *
+     * @param principal the Kerberos principal, must not be null.
+     * @return the keys (never null, may be empty)
+     * @throws NullPointerException if the {@code principal}
+     * argument is null
+     * @throws SecurityException if a security manager exists and the read
+     * access to the keytab file is not permitted
+     */
+    public KerberosKey[] getKeys(KerberosPrincipal principal) {
+        try {
+            EncryptionKey[] keys = takeSnapshot().readServiceKeys(
+                    new PrincipalName(principal.getName()));
+            KerberosKey[] kks = new KerberosKey[keys.length];
+            for (int i=0; i<kks.length; i++) {
+                Integer tmp = keys[i].getKeyVersionNumber();
+                kks[i] = new KerberosKey(
+                        principal,
+                        keys[i].getBytes(),
+                        keys[i].getEType(),
+                        tmp == null ? 0 : tmp.intValue());
+                keys[i].destroy();
+            }
+            return kks;
+        } catch (RealmException re) {
+            return new KerberosKey[0];
+        }
+    }
+
+    EncryptionKey[] getEncryptionKeys(PrincipalName principal) {
+        return takeSnapshot().readServiceKeys(principal);
+    }
+
+    /**
+     * Checks if the keytab file exists. Implementation of this method
+     * should make sure that the result matches the latest status of the
+     * keytab file.
+     * <p>
+     * The caller can use the result to determine if it should fallback to
+     * another mechanism to read the keys.
+     * @return true if the keytab file exists; false otherwise.
+     * @throws SecurityException if a security manager exists and the read
+     * access to the keytab file is not permitted
+     */
+    public boolean exists() {
+        return !takeSnapshot().isMissing();
+    }
+
+    public String toString() {
+        return file == null ? "Default keytab" : file.toString();
+    }
+
+    /**
+     * Returns a hashcode for this KeyTab.
+     *
+     * @return a hashCode() for the <code>KeyTab</code>
+     */
+    public int hashCode() {
+        return Objects.hash(file);
+    }
+
+    /**
+     * Compares the specified Object with this KeyTab for equality.
+     * Returns true if the given object is also a
+     * <code>KeyTab</code> and the two
+     * <code>KeyTab</code> instances are equivalent.
+     *
+     * @param other the Object to compare to
+     * @return true if the specified object is equal to this KeyTab
+     */
+    public boolean equals(Object other) {
+        if (other == this)
+            return true;
+
+        if (! (other instanceof KeyTab)) {
+            return false;
+        }
+
+        KeyTab otherKtab = (KeyTab) other;
+        return Objects.equals(otherKtab.file, file);
+    }
+}
--- a/jdk/src/share/classes/javax/security/auth/kerberos/ServicePermission.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/security/auth/kerberos/ServicePermission.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/security/auth/login/Configuration.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/security/auth/login/Configuration.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/security/auth/login/package.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/security/auth/login/package.html	Wed Apr 20 09:31:11 2011 -0700
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--
-Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/sound/midi/MidiSystem.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/sound/midi/MidiSystem.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/sound/sampled/AudioSystem.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/sound/sampled/AudioSystem.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/sql/rowset/BaseRowSet.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/sql/rowset/BaseRowSet.java	Wed Apr 20 09:31:11 2011 -0700
@@ -296,32 +296,32 @@
 
 public abstract class BaseRowSet implements Serializable, Cloneable {
 
-/**
- * A constant indicating to a <code>RowSetReaderImpl</code> object
- * that a given parameter is a Unicode stream. This
- * <code>RowSetReaderImpl</code> object is provided as an extension of the
- * <code>SyncProvider</code> abstract class defined in the
- * <code>SyncFactory</code> static factory SPI mechanism.
- */
-public static final int UNICODE_STREAM_PARAM = 0;
-
-/**
- * A constant indicating to a <code>RowSetReaderImpl</code> object
- * that a given parameter is a binary stream. A
- * <code>RowSetReaderImpl</code> object is provided as an extension of the
- * <code>SyncProvider</code> abstract class defined in the
- * <code>SyncFactory</code> static factory SPI mechanism.
- */
-public static final int BINARY_STREAM_PARAM = 1;
-
-/**
- * A constant indicating to a <code>RowSetReaderImpl</code> object
- * that a given parameter is an ASCII stream. A
- * <code>RowSetReaderImpl</code> object is provided as an extension of the
- * <code>SyncProvider</code> abstract class defined in the
- * <code>SyncFactory</code> static factory SPI mechanism.
- */
-public static final int ASCII_STREAM_PARAM = 2;
+    /**
+     * A constant indicating to a <code>RowSetReaderImpl</code> object
+     * that a given parameter is a Unicode stream. This
+     * <code>RowSetReaderImpl</code> object is provided as an extension of the
+     * <code>SyncProvider</code> abstract class defined in the
+     * <code>SyncFactory</code> static factory SPI mechanism.
+     */
+    public static final int UNICODE_STREAM_PARAM = 0;
+
+    /**
+     * A constant indicating to a <code>RowSetReaderImpl</code> object
+     * that a given parameter is a binary stream. A
+     * <code>RowSetReaderImpl</code> object is provided as an extension of the
+     * <code>SyncProvider</code> abstract class defined in the
+     * <code>SyncFactory</code> static factory SPI mechanism.
+     */
+    public static final int BINARY_STREAM_PARAM = 1;
+
+    /**
+     * A constant indicating to a <code>RowSetReaderImpl</code> object
+     * that a given parameter is an ASCII stream. A
+     * <code>RowSetReaderImpl</code> object is provided as an extension of the
+     * <code>SyncProvider</code> abstract class defined in the
+     * <code>SyncFactory</code> static factory SPI mechanism.
+     */
+    public static final int ASCII_STREAM_PARAM = 2;
 
     /**
      * The <code>InputStream</code> object that will be
@@ -505,21 +505,21 @@
      * custom mapping of user-defined types.
      * @serial
      */
-    private Map map;
+    private Map<String, Class<?>> map;
 
     /**
      * A <code>Vector</code> object that holds the list of listeners
      * that have registered with this <code>RowSet</code> object.
      * @serial
      */
-    private Vector listeners;
+    private Vector<RowSetListener> listeners;
 
     /**
      * A <code>Vector</code> object that holds the parameters set
      * for this <code>RowSet</code> object's current command.
      * @serial
      */
-    private Hashtable params; // could be transient?
+    private Hashtable<Integer, Object> params; // could be transient?
 
     /**
      * Constructs a new <code>BaseRowSet</code> object initialized with
@@ -529,7 +529,7 @@
      */
     public BaseRowSet() {
         // allocate the listeners collection
-        listeners = new Vector();
+        listeners = new Vector<RowSetListener>();
     }
 
     /**
@@ -542,7 +542,7 @@
      * a <code>RowSet</code> implementation extending this class.
      */
     protected void initParams() {
-        params = new Hashtable();
+        params = new Hashtable<Integer, Object>();
     }
 
     //--------------------------------------------------------------------
--- a/jdk/src/share/classes/javax/sql/rowset/RowSetMetaDataImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/sql/rowset/RowSetMetaDataImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -912,7 +912,12 @@
      * @since 1.6
      */
     public <T> T unwrap(java.lang.Class<T> iface) throws java.sql.SQLException {
-        return (T)this;
+
+        if(isWrapperFor(iface)) {
+            return iface.cast(this);
+        } else {
+            throw new SQLException("unwrap failed for:"+ iface);
+        }
     }
 
     /**
@@ -929,8 +934,9 @@
      * @throws java.sql.SQLException  if an error occurs while determining whether this is a wrapper
      * for an object with the given interface.
      * @since 1.6
-     */    public boolean isWrapperFor(Class<?> interfaces) throws SQLException {
-        return false;
+     */
+    public boolean isWrapperFor(Class<?> interfaces) throws SQLException {
+        return interfaces.isInstance(this);
     }
 
     static final long serialVersionUID = 6893806403181801867L;
--- a/jdk/src/share/classes/javax/sql/rowset/RowSetProvider.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/sql/rowset/RowSetProvider.java	Wed Apr 20 09:31:11 2011 -0700
@@ -204,9 +204,9 @@
      *
      */
     static private ClassLoader getContextClassLoader() throws SecurityException {
-        return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
+        return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
 
-            public Object run() {
+            public ClassLoader run() {
                 ClassLoader cl = null;
 
                 cl = Thread.currentThread().getContextClassLoader();
@@ -284,9 +284,9 @@
     static private String getSystemProperty(final String propName) {
         String property = null;
         try {
-            property = (String) AccessController.doPrivileged(new PrivilegedAction() {
+            property = AccessController.doPrivileged(new PrivilegedAction<String>() {
 
-                public Object run() {
+                public String run() {
                     return System.getProperty(propName);
                 }
             });
--- a/jdk/src/share/classes/javax/sql/rowset/package.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/sql/rowset/package.html	Wed Apr 20 09:31:11 2011 -0700
@@ -302,7 +302,7 @@
 
 <h3><a name="reldocs">5.0 Related Documentation</a></h3>
 <ul>
-<li><a href="http://developer.java.sun.com/developer/Books/JDBCTutorial/chapter5.html">
+<li><a href="http://java.sun.com/developer/Books/JDBCTutorial/chapter5.html">
 JDBC RowSet Tutorial</a>      
 </ul>
 </body>
--- a/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/AbstractButton.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/AbstractButton.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/BorderFactory.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/BorderFactory.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/BufferStrategyPaintManager.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/BufferStrategyPaintManager.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/DefaultDesktopManager.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/DefaultDesktopManager.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/JComponent.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/JComponent.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/JEditorPane.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/JEditorPane.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/JFileChooser.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/JFileChooser.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/JLayer.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/JLayer.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
@@ -476,7 +476,7 @@
      * for this {@code JLayer} and the {@code JLayer}
      * is displayable.
      * <p/>
-     * The following example shows how to correclty use this method
+     * The following example shows how to correctly use this method
      * in the {@code LayerUI} implementations:
      * <pre>
      *    public void installUI(JComponent c) {
@@ -834,7 +834,7 @@
         }
 
         /**
-         * First, implementatation of this method iterates through
+         * First, implementation of this method iterates through
          * glassPane's child components and returns {@code true}
          * if any of them is visible and contains passed x,y point.
          * After that it checks if no mouseListeners is attached to this component
--- a/jdk/src/share/classes/javax/swing/JOptionPane.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/JOptionPane.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/JSlider.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/JSlider.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/JViewport.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/JViewport.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/LookAndFeel.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/LookAndFeel.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/PopupFactory.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/PopupFactory.java	Wed Apr 20 09:31:11 2011 -0700
@@ -203,6 +203,12 @@
                     popupType = HEAVY_WEIGHT_POPUP;
                     break;
                 }
+            } else if (c instanceof Window) {
+                Window w = (Window) c;
+                if (!w.isOpaque() || w.getOpacity() < 1 || w.getShape() != null) {
+                    popupType = HEAVY_WEIGHT_POPUP;
+                    break;
+                }
             }
             c = c.getParent();
         }
--- a/jdk/src/share/classes/javax/swing/RepaintManager.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/RepaintManager.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/SizeSequence.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/SizeSequence.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/SpringLayout.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/SpringLayout.java	Wed Apr 20 09:31:11 2011 -0700
@@ -727,6 +727,9 @@
         * For any other <code>String</code> value passed as the edge,
         * no action is taken. For a <code>null</code> edge, a
         * <code>NullPointerException</code> is thrown.
+        * <p/>
+        * <b>Note:</b> This method can affect {@code x} and {@code y} values
+        * previously set for this {@code Constraints}.
         *
         * @param edgeName the edge to be set
         * @param s the spring controlling the specified edge
--- a/jdk/src/share/classes/javax/swing/SwingUtilities.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/SwingUtilities.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/SwingWorker.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/SwingWorker.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/Timer.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/Timer.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/ToolTipManager.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/ToolTipManager.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/TransferHandler.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/TransferHandler.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/border/BevelBorder.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/border/BevelBorder.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/border/StrokeBorder.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/border/StrokeBorder.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/event/InternalFrameAdapter.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/event/InternalFrameAdapter.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/event/InternalFrameListener.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/event/InternalFrameListener.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/package.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/package.html	Wed Apr 20 09:31:11 2011 -0700
@@ -134,7 +134,7 @@
    target="_top">The Swing Connection</A>
    <LI><A HREF="http://java.sun.com/docs/books/tutorial/" 
    target="_top">The Java Tutorial</A>
-   <LI><A HREF="http://developer.java.sun.com/developer/onlineTraining/" 
+   <LI><A HREF="http://java.sun.com/developer/onlineTraining/" 
    target="_top">Online Training</A> at the Java Developer Connection<font size=-2><sup>SM</sup></font>
    <LI><A HREF="http://java.sun.com/products/jfc/" 
    target="_top">Java Foundation Classes (JFC)</A> home page
--- a/jdk/src/share/classes/javax/swing/plaf/LayerUI.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/LayerUI.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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,9 +25,7 @@
 
 package javax.swing.plaf;
 
-import javax.accessibility.Accessible;
 import javax.swing.*;
-import javax.swing.plaf.ComponentUI;
 import java.awt.*;
 import java.awt.event.*;
 import java.beans.PropertyChangeEvent;
@@ -38,7 +36,7 @@
 /**
  * The base class for all {@link javax.swing.JLayer}'s UI delegates.
  * <p/>
- * {@link #paint(java.awt.Graphics, javax.swing.JComponent)} method performes the
+ * {@link #paint(java.awt.Graphics, javax.swing.JComponent)} method performs the
  * painting of the {@code JLayer}
  * and {@link #eventDispatched(AWTEvent, JLayer)} method is notified
  * about any {@code AWTEvent}s which have been generated by a {@code JLayer}
@@ -165,7 +163,7 @@
      *    l.setLayerEventMask(AWTEvent.COMPONENT_EVENT_MASK);
      * }
      *
-     * public void unistallUI(JComponent c) {
+     * public void uninstallUI(JComponent c) {
      *     super.uninstallUI(c);
      *     JLayer l = (JLayer) c;
      *     l.setLayerEventMask(0);
@@ -197,7 +195,7 @@
      *    l.setLayerEventMask(AWTEvent.FOCUS_EVENT_MASK);
      * }
      *
-     * public void unistallUI(JComponent c) {
+     * public void uninstallUI(JComponent c) {
      *     super.uninstallUI(c);
      *     JLayer l = (JLayer) c;
      *     l.setLayerEventMask(0);
@@ -229,7 +227,7 @@
      *    l.setLayerEventMask(AWTEvent.KEY_EVENT_MASK);
      * }
      *
-     * public void unistallUI(JComponent c) {
+     * public void uninstallUI(JComponent c) {
      *     super.uninstallUI(c);
      *     JLayer l = (JLayer) c;
      *     l.setLayerEventMask(0);
@@ -261,7 +259,7 @@
      *    l.setLayerEventMask(AWTEvent.MOUSE_EVENT_MASK);
      * }
      *
-     * public void unistallUI(JComponent c) {
+     * public void uninstallUI(JComponent c) {
      *     super.uninstallUI(c);
      *     JLayer l = (JLayer) c;
      *     l.setLayerEventMask(0);
@@ -293,7 +291,7 @@
      *    l.setLayerEventMask(AWTEvent.MOUSE_MOTION_EVENT_MASK);
      * }
      *
-     * public void unistallUI(JComponent c) {
+     * public void uninstallUI(JComponent c) {
      *     super.uninstallUI(c);
      *     JLayer l = (JLayer) c;
      *     l.setLayerEventMask(0);
@@ -325,7 +323,7 @@
      *    l.setLayerEventMask(AWTEvent.MOUSE_WHEEL_EVENT_MASK);
      * }
      *
-     * public void unistallUI(JComponent c) {
+     * public void uninstallUI(JComponent c) {
      *     super.uninstallUI(c);
      *     JLayer l = (JLayer) c;
      *     l.setLayerEventMask(0);
@@ -357,7 +355,7 @@
      *    l.setLayerEventMask(AWTEvent.INPUT_METHOD_EVENT_MASK);
      * }
      *
-     * public void unistallUI(JComponent c) {
+     * public void uninstallUI(JComponent c) {
      *     super.uninstallUI(c);
      *     JLayer l = (JLayer) c;
      *     l.setLayerEventMask(0);
@@ -389,7 +387,7 @@
      *    l.setLayerEventMask(AWTEvent.HIERARCHY_EVENT_MASK);
      * }
      *
-     * public void unistallUI(JComponent c) {
+     * public void uninstallUI(JComponent c) {
      *     super.uninstallUI(c);
      *     JLayer l = (JLayer) c;
      *     l.setLayerEventMask(0);
@@ -421,7 +419,7 @@
      *    l.setLayerEventMask(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
      * }
      *
-     * public void unistallUI(JComponent c) {
+     * public void uninstallUI(JComponent c) {
      *     super.uninstallUI(c);
      *     JLayer l = (JLayer) c;
      *     l.setLayerEventMask(0);
@@ -691,7 +689,7 @@
      * Otherwise, the default implementation is used.
      *
      * @param c {@code JLayer} to return preferred size for
-     * @return maximun size for the passed {@code JLayer}
+     * @return maximum size for the passed {@code JLayer}
      */
     public Dimension getMaximumSize(JComponent c) {
         JLayer l = (JLayer) c;
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicSpinnerUI.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicSpinnerUI.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/plaf/nimbus/LoweredBorder.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/LoweredBorder.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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,13 +26,11 @@
 
 import javax.swing.border.Border;
 import javax.swing.JComponent;
-import javax.swing.plaf.UIResource;
 import java.awt.Insets;
 import java.awt.Component;
 import java.awt.Graphics;
 import java.awt.Graphics2D;
 import java.awt.Color;
-import java.awt.Transparency;
 import java.awt.RenderingHints;
 import java.awt.Dimension;
 import java.awt.image.BufferedImage;
@@ -58,7 +56,9 @@
 
     @Override
     protected Object[] getExtendedCacheKeys(JComponent c) {
-        return new Object[] {c.getBackground()};
+        return (c != null)
+                ? new Object[] { c.getBackground() }
+                : null;
     }
 
     /**
@@ -85,6 +85,7 @@
      */
     protected void doPaint(Graphics2D g, JComponent c, int width, int height,
             Object[] extendedCacheKeys) {
+        Color color = (c == null) ? Color.BLACK : c.getBackground();
         BufferedImage img1 = new BufferedImage(IMG_SIZE,IMG_SIZE,
                     BufferedImage.TYPE_INT_ARGB);
         BufferedImage img2 = new BufferedImage(IMG_SIZE,IMG_SIZE,
@@ -93,14 +94,14 @@
         Graphics2D g2 = (Graphics2D)img1.getGraphics();
         g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                 RenderingHints.VALUE_ANTIALIAS_ON);
-        g2.setColor(c.getBackground());
+        g2.setColor(color);
         g2.fillRoundRect(2,0,26,26,RADIUS,RADIUS);
         g2.dispose();
         // draw shadow
         InnerShadowEffect effect = new InnerShadowEffect();
         effect.setDistance(1);
         effect.setSize(3);
-        effect.setColor(getLighter(c.getBackground(),2.1f));
+        effect.setColor(getLighter(color, 2.1f));
         effect.setAngle(90);
         effect.applyEffect(img1,img2,IMG_SIZE,IMG_SIZE);
         // draw outline to img2
@@ -108,7 +109,7 @@
         g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                 RenderingHints.VALUE_ANTIALIAS_ON);
         g2.setClip(0,28,IMG_SIZE,1);
-        g2.setColor(getLighter(c.getBackground(),0.90f));
+        g2.setColor(getLighter(color, 0.90f));
         g2.drawRoundRect(2,1,25,25,RADIUS,RADIUS);
         g2.dispose();
         // draw final image
@@ -150,7 +151,7 @@
      * @param c the component for which this border insets value applies
      */
     public Insets getBorderInsets(Component c) {
-        return INSETS;
+        return (Insets) INSETS.clone();
     }
 
     /**
--- a/jdk/src/share/classes/javax/swing/plaf/nimbus/skin.laf	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/skin.laf	Wed Apr 20 09:31:11 2011 -0700
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!--
- Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 1998, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthGraphicsUtils.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthGraphicsUtils.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTableUI.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTableUI.java	Wed Apr 20 09:31:11 2011 -0700
@@ -786,9 +786,9 @@
                                                 hasFocus, row, column);
 
             setIcon(null);
-            Class columnClass = table.getColumnClass(column);
-            configureValue(value, columnClass);
-
+            if (table != null) {
+                configureValue(value, table.getColumnClass(column));
+            }
             return this;
         }
 
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextPaneUI.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextPaneUI.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/text/AsyncBoxView.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/text/AsyncBoxView.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/text/DefaultCaret.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/text/DefaultCaret.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/text/JTextComponent.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/text/JTextComponent.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/text/Keymap.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/text/Keymap.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/text/TableView.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/text/TableView.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/text/Utilities.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/text/Utilities.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/text/View.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/text/View.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/text/WrappedPlainView.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/text/WrappedPlainView.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/text/html/CSSBorder.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/text/html/CSSBorder.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/text/html/ParagraphView.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/text/html/ParagraphView.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/text/html/StyleSheet.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/text/html/StyleSheet.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/javax/swing/text/html/parser/ParserDelegator.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/javax/swing/text/html/parser/ParserDelegator.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/overview-core.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/overview-core.html	Wed Apr 20 09:31:11 2011 -0700
@@ -3,7 +3,7 @@
 <head>
 <!--
 
-Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/applet/AppletClassLoader.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/applet/AppletClassLoader.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_de.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_de.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
@@ -103,7 +103,6 @@
             {"appletclassloader.fileexception", "{0}-Ausnahme beim Laden von: {1}"},
             {"appletclassloader.filedeath", "{0} abgebrochen beim Laden von: {1}"},
             {"appletclassloader.fileerror", "{0}-Fehler beim Laden von: {1}"},
-            {"appletclassloader.findclass.verbose.findclass", "{0} Klasse {1} suchen"},
             {"appletclassloader.findclass.verbose.openstream", "\u00D6ffnen von Stream zu: {0}, um {1} abzurufen"},
             {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource f\u00FCr Name: {0}"},
             {"appletclassloader.getresource.verbose.found", "Ressource {0} als Systemressource gefunden"},
--- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_es.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_es.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
@@ -103,7 +103,6 @@
             {"appletclassloader.fileexception", "Excepci\u00F3n de {0} al cargar: {1}"},
             {"appletclassloader.filedeath", "{0} interrumpido al cargar: {1}"},
             {"appletclassloader.fileerror", "error de {0} al cargar: {1}"},
-            {"appletclassloader.findclass.verbose.findclass", "{0} encontrar la clase {1}"},
             {"appletclassloader.findclass.verbose.openstream", "Abriendo flujo a: {0} para obtener {1}"},
             {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource para nombre: {0}"},
             {"appletclassloader.getresource.verbose.found", "Recurso encontrado: {0} como un recurso de sistema"},
--- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_fr.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_fr.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
@@ -103,7 +103,6 @@
             {"appletclassloader.fileexception", "Exception {0} lors du chargement de : {1}"},
             {"appletclassloader.filedeath", "Fermeture de {0} lors du chargement de : {1}"},
             {"appletclassloader.fileerror", "Erreur {0} lors du chargement de : {1}"},
-            {"appletclassloader.findclass.verbose.findclass", "{0} : recherche de la classe {1}"},
             {"appletclassloader.findclass.verbose.openstream", "Ouverture du flux de donn\u00E9es dans {0} pour obtenir {1}"},
             {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource pour le nom : {0}"},
             {"appletclassloader.getresource.verbose.found", "Ressource {0} trouv\u00E9e en tant que ressource syst\u00E8me"},
--- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_it.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_it.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
@@ -103,7 +103,6 @@
             {"appletclassloader.fileexception", "Eccezione {0} durante il caricamento di {1}"},
             {"appletclassloader.filedeath", "{0} terminato durante il caricamento di {1}"},
             {"appletclassloader.fileerror", "Errore {0} durante il caricamento di {1}"},
-            {"appletclassloader.findclass.verbose.findclass", "{0} trova classe {1}"},
             {"appletclassloader.findclass.verbose.openstream", "Apertura del flusso per {0} per recuperare {1}"},
             {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource per il nome: {0}"},
             {"appletclassloader.getresource.verbose.found", "\u00C8 stata trovata la risorsa {0} come risorsa di sistema"},
--- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_ja.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_ja.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
@@ -103,7 +103,6 @@
             {"appletclassloader.fileexception", "{1}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B{0}\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F"},
             {"appletclassloader.filedeath", "{1}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B{0}\u304C\u5F37\u5236\u7D42\u4E86\u3057\u307E\u3057\u305F"},
             {"appletclassloader.fileerror", "{1}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B{0}\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F"},
-            {"appletclassloader.findclass.verbose.findclass", "{0}\u306F\u30AF\u30E9\u30B9{1}\u3092\u691C\u51FA\u3057\u307E\u3057\u305F"},
             {"appletclassloader.findclass.verbose.openstream", "{1}\u3092\u53D6\u5F97\u3059\u308B\u305F\u3081\u306E{0}\u3078\u306E\u30B9\u30C8\u30EA\u30FC\u30E0\u3092\u958B\u304D\u307E\u3059"},
             {"appletclassloader.getresource.verbose.forname", "\u540D\u524D{0}\u306EAppletClassLoader.getResource\u3067\u3059"},
             {"appletclassloader.getresource.verbose.found", "\u30EA\u30BD\u30FC\u30B9{0}\u304C\u30B7\u30B9\u30C6\u30E0\u30FB\u30EA\u30BD\u30FC\u30B9\u3068\u3057\u3066\u691C\u51FA\u3055\u308C\u307E\u3057\u305F"},
--- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_ko.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_ko.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
@@ -103,7 +103,6 @@
             {"appletclassloader.fileexception", "\uB85C\uB4DC \uC911 {0} \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {1}"},
             {"appletclassloader.filedeath", "\uB85C\uB4DC \uC911 {0}\uC774(\uAC00) \uC885\uB8CC\uB428: {1}"},
             {"appletclassloader.fileerror", "\uB85C\uB4DC \uC911 {0} \uC624\uB958 \uBC1C\uC0DD: {1}"},
-            {"appletclassloader.findclass.verbose.findclass", "{0}\uC774(\uAC00) {1} \uD074\uB798\uC2A4\uB97C \uCC3E\uC2B5\uB2C8\uB2E4."},
             {"appletclassloader.findclass.verbose.openstream", "{1}\uC744(\uB97C) \uAC00\uC838\uC624\uAE30 \uC704\uD574 {0}\uC5D0 \uB300\uD55C \uC2A4\uD2B8\uB9BC\uC744 \uC5EC\uB294 \uC911"},
             {"appletclassloader.getresource.verbose.forname", "\uC774\uB984\uC5D0 \uB300\uD55C AppletClassLoader.getResource: {0}"},
             {"appletclassloader.getresource.verbose.found", "\uC2DC\uC2A4\uD15C \uB9AC\uC18C\uC2A4\uB85C {0} \uB9AC\uC18C\uC2A4\uB97C \uCC3E\uC558\uC2B5\uB2C8\uB2E4."},
--- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_pt_BR.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_pt_BR.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
@@ -103,7 +103,6 @@
             {"appletclassloader.fileexception", "exce\u00E7\u00E3o de {0} ao carregar: {1}"},
             {"appletclassloader.filedeath", "{0} eliminado ao carregar: {1}"},
             {"appletclassloader.fileerror", "erro de {0} ao carregar: {1}"},
-            {"appletclassloader.findclass.verbose.findclass", "{0} localizar classe {1}"},
             {"appletclassloader.findclass.verbose.openstream", "Fluxo de abertura para: {0} para obter {1}"},
             {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource do nome: {0}"},
             {"appletclassloader.getresource.verbose.found", "Recurso encontrado: {0} como um recurso do sistema"},
--- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_sv.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_sv.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
@@ -73,7 +73,7 @@
             {"appletviewer.parse.warning.embed.requiresheight", "Varning: <embed>-taggen kr\u00E4ver ett h\u00F6jdattribut."},
             {"appletviewer.parse.warning.embed.requireswidth", "Varning: <embed>-taggen kr\u00E4ver ett breddattribut."},
             {"appletviewer.parse.warning.appnotLongersupported", "Varning: <app>-taggen st\u00F6ds inte l\u00E4ngre, anv\u00E4nd <applet> ist\u00E4llet:"},
-            {"appletviewer.usage", "Syntax: URL:er f\u00F6r appletviewer-<alternativ>.\n\nF\u00F6ljande <alternativ> finns:\n  -debug                  Startar appletvisning i Java-fels\u00F6kningen\n  -encoding <kodning>    Anger teckenkodning  som anv\u00E4nds i HTML-filer\n  -J<k\u00F6rningsflagga>        \u00D6verf\u00F6r argument till Java-tolkningen\n\nAlternativet -J \u00E4r inte standard och kan \u00E4ndras utan f\u00F6reg\u00E5ende meddelande."},
+            {"appletviewer.usage", "Syntax: appletviewer <alternativ> url:er \n\nd\u00E4r <alternativ> inkluderar:\n  -debug                  Startar appletvisning i Java-fels\u00F6kningen\n  -encoding <kodning>    Anger teckenkodning  som anv\u00E4nds i HTML-filer\n  -J<k\u00F6rningsflagga>        \u00D6verf\u00F6r argument till Java-tolkningen\n\nAlternativet -J \u00E4r inte standard och kan \u00E4ndras utan f\u00F6reg\u00E5ende meddelande."},
             {"appletviewer.main.err.unsupportedopt", "Alternativ som inte st\u00F6ds: {0}"},
             {"appletviewer.main.err.unrecognizedarg", "Ok\u00E4nt argument: {0}"},
             {"appletviewer.main.err.dupoption", "Duplicerat alternativ: {0}"},
@@ -103,7 +103,6 @@
             {"appletclassloader.fileexception", "{0} undantag vid l\u00E4sning: {1}"},
             {"appletclassloader.filedeath", "{0} avslutad vid l\u00E4sning: {1}"},
             {"appletclassloader.fileerror", "{0} fel vid l\u00E4sning: {1}"},
-            {"appletclassloader.findclass.verbose.findclass", "{0} hittar klass {1}"},
             {"appletclassloader.findclass.verbose.openstream", "\u00D6ppnar str\u00F6m till: {0} f\u00F6r h\u00E4mtning av {1}"},
             {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource f\u00F6r namnet: {0}"},
             {"appletclassloader.getresource.verbose.found", "Hittade resursen: {0} som systemresurs"},
--- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_zh_CN.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_zh_CN.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
@@ -103,7 +103,6 @@
             {"appletclassloader.fileexception", "\u52A0\u8F7D\u65F6\u51FA\u73B0{0}\u5F02\u5E38\u9519\u8BEF: {1}"},
             {"appletclassloader.filedeath", "\u52A0\u8F7D\u65F6\u5DF2\u7EC8\u6B62{0}: {1}"},
             {"appletclassloader.fileerror", "\u52A0\u8F7D\u65F6\u51FA\u73B0{0}\u9519\u8BEF: {1}"},
-            {"appletclassloader.findclass.verbose.findclass", "{0}\u627E\u5230\u7C7B{1}"},
             {"appletclassloader.findclass.verbose.openstream", "\u6253\u5F00\u5230{0}\u7684\u6D41\u4EE5\u83B7\u53D6{1}"},
             {"appletclassloader.getresource.verbose.forname", "\u540D\u79F0\u7684 AppletClassLoader.getResource: {0}"},
             {"appletclassloader.getresource.verbose.found", "\u5DF2\u627E\u5230\u4F5C\u4E3A\u7CFB\u7EDF\u8D44\u6E90\u7684\u8D44\u6E90{0}"},
--- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_zh_TW.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_zh_TW.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
@@ -103,7 +103,6 @@
             {"appletclassloader.fileexception", "\u8F09\u5165\u6642\u767C\u751F {0} \u7570\u5E38\u72C0\u6CC1: {1}"},
             {"appletclassloader.filedeath", "\u8F09\u5165\u6642\u522A\u9664 {0}: {1}"},
             {"appletclassloader.fileerror", "\u8F09\u5165\u6642\u767C\u751F {0} \u932F\u8AA4: {1}"},
-            {"appletclassloader.findclass.verbose.findclass", "{0} \u5C0B\u627E\u985E\u5225 {1}"},
             {"appletclassloader.findclass.verbose.openstream", "\u958B\u555F {0} \u7684\u4E32\u6D41\u4EE5\u53D6\u5F97 {1}"},
             {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource \u7684\u540D\u7A31: {0}"},
             {"appletclassloader.getresource.verbose.found", "\u627E\u5230\u8CC7\u6E90: {0} \u4F5C\u70BA\u7CFB\u7D71\u8CC7\u6E90"},
--- a/jdk/src/share/classes/sun/awt/AWTAccessor.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/awt/AWTAccessor.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/awt/FontConfiguration.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/awt/FontConfiguration.java	Wed Apr 20 09:31:11 2011 -0700
@@ -82,6 +82,10 @@
      * one to ensure proper static initialisation takes place.
      */
     public FontConfiguration(SunFontManager fm) {
+        if (FontUtilities.debugFonts()) {
+            FontUtilities.getLogger()
+                .info("Creating standard Font Configuration");
+        }
         if (FontUtilities.debugFonts() && logger == null) {
             logger = PlatformLogger.getLogger("sun.awt.FontConfiguration");
         }
@@ -111,6 +115,10 @@
                              boolean preferLocaleFonts,
                              boolean preferPropFonts) {
         fontManager = fm;
+        if (FontUtilities.debugFonts()) {
+            FontUtilities.getLogger()
+                .info("Creating alternate Font Configuration");
+        }
         this.preferLocaleFonts = preferLocaleFonts;
         this.preferPropFonts = preferPropFonts;
         /* fontConfig should be initialised by default constructor, and
--- a/jdk/src/share/classes/sun/awt/HeadlessToolkit.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/awt/HeadlessToolkit.java	Wed Apr 20 09:31:11 2011 -0700
@@ -320,8 +320,7 @@
             // Should never happen
             throw new HeadlessException();
         }
-        throw new IllegalArgumentException(
-                "PrintJob not supported in a headless environment");
+        throw new NullPointerException("frame must not be null");
     }
 
     public PrintJob getPrintJob(Frame frame, String doctitle, Properties props)
@@ -330,8 +329,7 @@
             // Should never happen
             throw new HeadlessException();
         }
-        throw new IllegalArgumentException(
-                "PrintJob not supported in a headless environment");
+        throw new NullPointerException("frame must not be null");
     }
 
     /*
--- a/jdk/src/share/classes/sun/awt/SunToolkit.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/awt/SunToolkit.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/awt/image/ImageFetcher.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/awt/image/ImageFetcher.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/awt/image/InputStreamImageSource.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/awt/image/InputStreamImageSource.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/awt/resources/awt_fr.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/awt/resources/awt_fr.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -76,14 +76,14 @@
 AWT.help=Aide
 AWT.windows=Windows
 AWT.context=Menu contextuel
-AWT.backQuote=Apostrophe invers\u00E9e
+AWT.backQuote=Accent grave avec chasse
 AWT.quote=Apostrophe
 AWT.deadGrave=Accent grave
 AWT.deadAcute=Accent aigu
 AWT.deadCircumflex=Accent circonflexe
 AWT.deadTilde=Tilde
 AWT.deadMacron=Macron
-AWT.deadBreve=Demi-cercle
+AWT.deadBreve=Dead Breve
 AWT.deadAboveDot=Point en chef
 AWT.deadDiaeresis=Tr\u00E9ma
 AWT.deadAboveRing=Anneau en chef
--- a/jdk/src/share/classes/sun/dc/DuctusRenderingEngine.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/dc/DuctusRenderingEngine.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/font/FileFont.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/font/FileFont.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/font/FileFontStrike.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/font/FileFontStrike.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/font/Font2D.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/font/Font2D.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/font/FontManagerForSGE.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/font/FontManagerForSGE.java	Wed Apr 20 09:31:11 2011 -0700
@@ -54,4 +54,11 @@
     public Font[] getAllInstalledFonts();
 
     public String[] getInstalledFontFamilyNames(Locale requestedLocale);
+
+    /* Modifies the behaviour of a subsequent call to preferLocaleFonts()
+     * to use Mincho instead of Gothic for dialoginput in JA locales
+     * on windows. Not needed on other platforms.
+     */
+    public void useAlternateFontforJALocales();
+
 }
--- a/jdk/src/share/classes/sun/font/FontScaler.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/font/FontScaler.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/font/FontUtilities.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/font/FontUtilities.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/font/FreetypeFontScaler.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/font/FreetypeFontScaler.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/font/NullFontScaler.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/font/NullFontScaler.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/font/StrikeCache.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/font/StrikeCache.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/font/SunFontManager.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/font/SunFontManager.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
@@ -2874,7 +2874,10 @@
      * on windows. Not needed on other platforms.
      */
     public synchronized void useAlternateFontforJALocales() {
-
+        if (FontUtilities.isLogging()) {
+            FontUtilities.getLogger()
+                .info("Entered useAlternateFontforJALocales().");
+        }
         if (!FontUtilities.isWindows) {
             return;
         }
@@ -2897,7 +2900,9 @@
     }
 
     public synchronized void preferLocaleFonts() {
-
+        if (FontUtilities.isLogging()) {
+            FontUtilities.getLogger().info("Entered preferLocaleFonts().");
+        }
         /* Test if re-ordering will have any effect */
         if (!FontConfiguration.willReorderForStartupLocale()) {
             return;
@@ -2928,7 +2933,10 @@
     }
 
     public synchronized void preferProportionalFonts() {
-
+        if (FontUtilities.isLogging()) {
+            FontUtilities.getLogger()
+                .info("Entered preferProportionalFonts().");
+        }
         /* If no proportional fonts are configured, there's no need
          * to take any action.
          */
@@ -3456,6 +3464,11 @@
         initCompositeFonts(FontConfiguration fontConfig,
                            ConcurrentHashMap<String, Font2D>  altNameCache) {
 
+        if (FontUtilities.isLogging()) {
+            FontUtilities.getLogger()
+                            .info("Initialising composite fonts");
+        }
+
         int numCoreFonts = fontConfig.getNumberCoreFonts();
         String[] fcFonts = fontConfig.getPlatformFontNames();
         for (int f=0; f<fcFonts.length; f++) {
--- a/jdk/src/share/classes/sun/font/TrueTypeFont.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/font/TrueTypeFont.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/font/Type1Font.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/font/Type1Font.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/invoke/package-info.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/invoke/package-info.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/java2d/SunGraphicsEnvironment.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/java2d/SunGraphicsEnvironment.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -185,6 +185,18 @@
         FontManager fm = FontManagerFactory.getInstance();
         return (FontManagerForSGE) fm;
     }
+
+    /* Modifies the behaviour of a subsequent call to preferLocaleFonts()
+     * to use Mincho instead of Gothic for dialoginput in JA locales
+     * on windows. Not needed on other platforms.
+     *
+     * DO NOT MOVE OR RENAME OR OTHERWISE ALTER THIS METHOD.
+     * ITS USED BY SOME NON-JRE INTERNAL CODE.
+     */
+    public static void useAlternateFontforJALocales() {
+        getFontManagerForSGE().useAlternateFontforJALocales();
+    }
+
      /**
      * Returns all fonts available in this environment.
      */
--- a/jdk/src/share/classes/sun/java2d/loops/CompositeType.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/java2d/loops/CompositeType.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/java2d/loops/MaskFill.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/java2d/loops/MaskFill.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/java2d/pipe/AAShapePipe.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/java2d/pipe/AAShapePipe.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/java2d/pipe/AlphaColorPipe.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/java2d/pipe/AlphaColorPipe.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/java2d/pipe/RenderingEngine.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/java2d/pipe/RenderingEngine.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/java2d/pisces/Curve.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/java2d/pisces/Curve.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/java2d/pisces/Dasher.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/java2d/pisces/Dasher.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/java2d/pisces/Helpers.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/java2d/pisces/Helpers.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/java2d/pisces/PiscesCache.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/java2d/pisces/PiscesCache.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/java2d/pisces/PiscesRenderingEngine.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/java2d/pisces/PiscesRenderingEngine.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/java2d/pisces/PiscesTileGenerator.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/java2d/pisces/PiscesTileGenerator.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/java2d/pisces/Renderer.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/java2d/pisces/Renderer.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/java2d/pisces/Stroker.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/java2d/pisces/Stroker.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/java2d/pisces/TransformingPathConsumer2D.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/java2d/pisces/TransformingPathConsumer2D.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/jvmstat/monitor/MonitoredVmUtil.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/jvmstat/monitor/MonitoredVmUtil.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/launcher/LauncherHelper.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/launcher/LauncherHelper.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/launcher/resources/launcher.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/launcher/resources/launcher.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/launcher/resources/launcher_de.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/launcher/resources/launcher_de.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -24,24 +24,25 @@
 #
 
 # 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.header  =   Verwendung: {0} [-options] class [args...]\n\           (zur Ausf\u00FChrung einer Klasse)\n   oder  {0} [-options] -jar jarfile [args...]\n\           (zur Ausf\u00FChrung einer JAR-Datei)\nwobei options Folgendes umfasst:\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.opt.datamodel  =\    -d{0}\t  Verwendet ein {0}-Bit-Datenmodell, sofern verf\u00FCgbar\n
+java.launcher.opt.vmselect   =\    {0}\t  zur Auswahl der "{1}" VM\n
+java.launcher.opt.hotspot    =\    {0}\t  ist ein Synonym f\u00FCr die "{1}" VM  [verworfen]\n
 
-java.launcher.ergo.message1  =\                  Standard-VM ist {0}, 
-java.launcher.ergo.message2  =\                  da Sie auf einem Server-Class-Computer ausf\u00fchren.\n
+java.launcher.ergo.message1  =\                  Die Standard-VM ist {0}
+java.launcher.ergo.message2  =\                  weil die Ausf\u00FChrung auf einem Server-Class-Rechner erfolgt.\n
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.footer     =\    -cp <Pfad zur Klassensuche von Verzeichnissen und Zip-/Jar-Dateien>\n\    -classpath <Pfad zur Klassensuche von Verzeichnissen und Zip-/Jar-Dateien >\n\                  A {0} getrennte Liste von Verzeichnissen, JAR-Archiven,\n\                  und ZIP-Archiven f\u00fcr die Suche nach Klassendateien .\n\    -D<Name>=<Wert>\n\                  Systemeigenschaft festlegen\n\    -verbose[:class|gc|jni]\n\                  ausf\u00fchrliche Ausgabe aktivieren\n\    -version      Produktversion drucken und beenden\n\    -version:<Wert>\n\                  angegebene Version zum Ausf\u00fchren erforderlich \n\    -showversion  Produktversion drucken und fortfahren\n\    -jre-restrict-search | -no-jre-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[:<Paketname>...|:<Klassenname>]\n\    -enableassertions[:<Paketname>...|:<Klassenname>]\n\                  Assertions mit spezifizierter Granularit\u00e4t aktivieren\n\    -da[:<Paketname>...|:<Klassenname>]\n\    -disableassertions[:<Paketname>...|:<Klassenname>]\n\                  Assertions mit spezifizierter Granularit\u00e4t deaktivieren\n\    -esa | --enablesystemassertions\n\                  System-Assertions aktivieren\n\    -dsa | --disablesystemassertions\n\                  System-Assertions deaktivieren\n\    -agentlib:<Name der Bibliothek>[=<Optionen>]\n\                  systemeigene Agent-Bibliothek laden <Name der Bibliothek>, z.B. -agentlib:hprof\n\                  siehe auch, -agentlib:jdwp=help und -agentlib:hprof=help\n\    -agentpath:<Pfadname>[=<Optionen>]\n\                  systemeigene Agent-Bibliothek \u00fcber vollst\u00e4ndigen Pfadnamen laden\n\    -javaagent:<Jar-Pfad>[=<Optionen>]\n\                  Java Programmierungs-Sprachagenten laden, siehe java.lang.instrument\n\    -splash:<Bildpfad>\n\                  Eingangsbildschirm mit spezifiziertem Bild anzeigen\nWeitere Informationen finden Sie unter http://java.sun.com/javase/reference.
+java.launcher.opt.footer     =\    -cp <Class-Suchpfad von Verzeichnissen und ZIP-/JAR-Dateien>\n\    -classpath <Class-Suchpfad von Verzeichnissen und ZIP-/JAR-Dateien>\n\                  Eine durch {0} getrennte Liste mit Verzeichnissen, JAR-Archiven\n\                  und ZIP-Archiven zur Suche nach Klassendateien.\n\    -D<name>=<value>\n\                  Setzt eine Systemeigenschaft\n\    -verbose[:class|gc|jni]\n\                  Aktiviert die Verbose-Ausgabe\n\    -version      Druckt Produktversion und beendet das Programm\n\    -version:<value>\n\                  Erfordert die angegebene Version zur Ausf\u00FChrung\n\    -showversion  Druckt Produktversion und f\u00E4hrt fort\n\    -jre-restrict-search | -no-jre-restrict-search\n\                  Bezieht private JREs des Benutzers in Versionssuche ein bzw. schlie\u00DFt sie aus\n\    -? -help      Druckt diese Hilfemeldung\n\    -X            Druckt Hilfe zu Nicht-Standardoptionen\n\    -ea[:<packagename>...|:<classname>]\n\    -enableassertions[:<packagename>...|:<classname>]\n\                  Aktiviert Assertionen mit angegebener Granularit\u00E4t\n\    -da[:<packagename>...|:<classname>]\n\    -disableassertions[:<packagename>...|:<classname>]\n\                  Deaktiviert Assertionen mit angegebener Granularit\u00E4t\n\    -esa | -enablesystemassertions\n\                  Aktiviert Systemassertionen\n\    -dsa | -disablesystemassertions\n\                  Deaktiviert Systemassertionen\n\    -agentlib:<libname>[=<options>]\n\                  L\u00E4dt native Agent Library <libname>, z.B. -agentlib:hprof\n\                  siehe auch, -agentlib:jdwp=help und -agentlib:hprof=help\n\    -agentpath:<pathname>[=<options>]\n\                  L\u00E4dt native Agent Library nach vollem Pfadnamen\n\    -javaagent:<jarpath>[=<options>]\n\                  L\u00E4dt Java-Programmiersprachen-Agent, siehe java.lang.instrument\n\    -splash:<imagepath>\n\                  Zeigt Startbildschirm mit angegebenem Bild\nWeitere Einzelheiten 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:<Verzeichnisse und Zip-/Jar-Dateien, die durch {0} getrennt sind>\n\                      Suchpfad f\u00fcr Bootstrap-Klassen und Ressourcen einrichten\n\    -Xbootclasspath/a:<Verzeichnisse und Zip-/Jar-Dateien, die durch {0} getrennt sind>\n\                      an das Ende des Bootstrap-Klassenpfads anh\u00e4ngen\n\    -Xbootclasspath/p:<Verzeichnisse und Zip-/Jar-Dateien, die durch {0} getrennt sind>\n\                      an den Beginn des Bootstrap-Klassenpfads anh\u00e4ngen\n\    -Xnoclassgc       Klassen-Speicherbereinigung deaktivieren\n\    -Xincgc           inkrementelle Speicherbereinigung aktivieren\n\    -Xloggc:<Datei>   GC-Status f\u00fcr eine Datei mit Zeitstempeln einrichten\n\    -Xbatch           Hintergrund-Kompilation deaktivieren\n\    -Xms<Gr\u00f6\u00dfe>       anf\u00e4ngliche Java Heap-Gr\u00f6\u00dfe einstellen\n\    -Xmx<Gr\u00f6\u00dfe>       maximale Java Heap-Gr\u00f6\u00dfe einstellen\n\    -Xss<Gr\u00f6\u00dfe>       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.X.usage=\    -Xmixed           Ausf\u00FChrung im gemischten Modus (Standard)\n\    -Xint             Nur Ausf\u00FChrung im interpretierten Modus\n\    -Xbootclasspath:<Verzeichnisse und ZIP-/JAR-Dateien durch {0} getrennt>\n\                      Legt Suchpfad f\u00FCr Bootstrap-Klassen und Ressourcen fest\n\    -Xbootclasspath/a:<Verzeichnisse und ZIP-/JAR-Dateien durch {0} getrennt>\n\                      H\u00E4ngt an das Ende des Bootstrap Classpath an\n\    -Xbootclasspath/p:<Verzeichnisse und ZIP-/JAR-Dateien durch {0} getrennt>\n\                      Stellt Bootstrap Classpath voran\n\    -Xdiag            Zeigt zus\u00E4tzliche Diagnosemeldungen an\n\    -Xnoclassgc       Deaktiviert Klassen-Garbage Collection\n\    -Xincgc           Aktiviert inkrementelle Garbage Collection\n\    -Xloggc:<file>    Loggt GC-Status in einer Datei mit Zeitstempeln\n\    -Xbatch           Deaktiviert Hintergrundkompilierung\n\    -Xms<size>        Legt anf\u00E4ngliche Java Heap-Gr\u00F6\u00DFe fest\n\    -Xmx<size>        Legt maximale Java Heap-Gr\u00F6\u00DFe fest\n\    -Xss<size>        Legt Java-Thread-Stack-Gr\u00F6\u00DFe fest\n\    -Xprof            Gibt CPU-Profiling-Daten aus\n\    -Xfuture          Aktiviert strengste Pr\u00FCfungen, antizipiert zuk\u00FCnftigen Standardwert\n\    -Xrs              Reduziert Verwendung von BS-Signalen durch Java/VM (siehe Dokumentation)\n\    -Xcheck:jni       F\u00FChrt zus\u00E4tzliche Pr\u00FCfungen f\u00FCr JNI-Funktionen durch\n\    -Xshare:off       Kein Versuch, gemeinsame Klassendaten zu verwenden\n\    -Xshare:auto      Verwendet gemeinsame Klassendaten, wenn m\u00F6glich (Standard)\n\    -Xshare:on        Erfordert die Verwendung gemeinsamer Klassendaten, sonst verl\u00E4uft der Vorgang nicht erfolgreich.\n\    -XshowSettings    Zeigt alle Einstellungen und f\u00E4hrt fort\n\    -XshowSettings:all\n\                      Zeigt alle Einstellungen und f\u00E4hrt fort\n\    -XshowSettings:vm Zeigt alle VM-bezogenen Einstellungen und f\u00E4hrt fort\n\    -XshowSettings:properties\n\                      Zeigt alle Eigenschaftseinstellungen und f\u00E4hrt fort\n\    -XshowSettings:locale\n\                      Zeigt alle gebietsschemabezogenen Einstellungen und f\u00E4hrt fort\n\nDie -X-Optionen sind keine Standardoptionen und k\u00F6nnen ohne Vorank\u00FCndigung ge\u00E4ndert werden.\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) 
-
-
+java.launcher.cls.error1=Fehler: Hauptklasse {0} konnte nicht gefunden oder geladen werden
+java.launcher.cls.error2=Fehler: Hauptmethode ist nicht {0} in Klasse {1}. Definieren Sie die Hauptmethode als:\n\   public static void main(String[] args)
+java.launcher.cls.error3=Fehler: Hauptmethode muss einen Wert vom Typ void in Klasse {0} zur\u00FCckgeben. Definieren Sie \ndie Hauptmethode als:\n\   public static void main(String[] args)
+java.launcher.cls.error4=Fehler: Hauptmethode in Klasse {0} nicht gefunden. Definieren Sie die Hauptmethode als:\n\   public static void main(String[] args)
+java.launcher.jar.error1=Fehler: Beim Versuch, Datei {0} zu \u00F6ffnen, ist ein unerwarteter Fehler aufgetreten
+java.launcher.jar.error2=Manifest in {0} nicht gefunden
+java.launcher.jar.error3=kein Hauptmanifestattribut, in {0}
--- a/jdk/src/share/classes/sun/launcher/resources/launcher_es.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/launcher/resources/launcher_es.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -24,24 +24,25 @@
 #
 
 # 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.header  =   Sintaxis: {0} [-options] class [args...]\n\           (para ejecutar una clase)\n   o  {0} [-options] -jar jarfile [args...]\n\           (para ejecutar un archivo jar)\ndonde las opciones incluyen:\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.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 la VM "{1}"\n
+java.launcher.opt.hotspot    =\    {0}\t  es un sin\u00F3nimo de la VM "{1}" [anticuada]\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
+java.launcher.ergo.message1  =\                  La VM por defecto es {0}
+java.launcher.ergo.message2  =\                  porque la ejecuci\u00F3n se est\u00E1 llevando a cabo en una m\u00E1quina de clase de servidor.\n
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.footer     =\    -cp <class search path of directories and zip/jar files>\n\    -classpath <class search path of directories and zip/jar files>\n\                  Una {0} lista de directorios, archivos JAR,\n\                  y archivos ZIP en los que buscar los archivos de clase.\n\    -D<name>=<value>\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:<value>\n\                  solicitar la versi\u00f3n especificada para ejecutar\n\    -showversion  imprimir versi\u00f3n del producto y continuar\n\    -jre-restrict-search | -no-jre-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[:<packagename>...|:<classname>]\n\    -enableassertions[:<packagename>...|:<classname>]\n\                  permitir afirmaciones con granularidad especificada\n\    -da[:<packagename>...|:<classname>]\n\    -disableassertions[:<packagename>...|:<classname>]\n\                  desactivar afirmaciones con granularidad especificada\n\    -esa | -enablesystemassertions\n\                  permitir afirmaciones del sistema\n\    -dsa | -disablesystemassertions\n\                  desactivar afirmaciones del sistema\n\    -agentlib:<libname>[=<options>]\n\                  cargar biblioteca de agente nativo<libname>, por ejemplo -agentlib:hprof\n\                  consulte tambi\u00e9n, -agentlib:jdwp=help y -agentlib:hprof=help\n\    -agentpath:<pathname>[=<options>]\n\                  cargar biblioteca de agente nativo por ruta completa\n\    -javaagent:<jarpath>[=<options>]\n\                  cargar agente del lenguaje de programaci\u00f3n Java, consulte java.lang.instrument\n\    -splash:<imagepath>\n\                  mostrar pantalla de bienvenida con imagen especificada\nConsulte http://java.sun.com/javase/reference para m\u00e1s informaci\u00f3n.
+java.launcher.opt.footer     =\    -cp <ruta de acceso de b\u00FAsqueda de clases de los directorios y los archivos zip/jar>\n\    -classpath <ruta de acceso de b\u00FAsqueda de clases de los directorios y los archivos zip/jar>\n\                  Una lista separada por {0} de directorios, archivos JAR,\n\                  y archivos ZIP para buscar archivos de clase.\n\    -D<nombre>=<valor>\n\                  definir una propiedad del sistema\n\    -verbose[:class|gc|jni]\n\                  activar la salida verbose\n\    -version      imprimir la versi\u00F3n del producto y salir\n\    -version:<valor>\n\                  es necesario que se ejecute la versi\u00F3n especificada\n\    -showversion  imprimir la versi\u00F3n del producto y continuar\n\    -jre-restrict-search | -no-jre-restrict-search\n\                  incluir/excluir JRE privados de usuario en la b\u00FAsqueda de versi\u00F3n\n\    -? -help      imprimir este mensaje de ayuda\n\    -X            imprimir la ayuda sobre las opciones que no sean est\u00E1ndar\n\    -ea[:<nombre_paquete>...|:<nombre_clase>]\n\    -enableassertions[:<nombre_paquete>...|:<nombre_clase>]\n\                  activar afirmaciones con la granularidad especificada\n\    -da[:<nombre_paquete>...|:<nombre_clase>]\n\    -disableassertions[:<nombre_paquete>...|:<nombre_clase>]\n\                  desactivar afirmaciones con la granularidad especificada\n\    -esa | -enablesystemassertions\n\                  activar afirmaciones del sistema\n\    -dsa | -disablesystemassertions\n\                  desactivar afirmaciones del sistema\n\    -agentlib:<nombre_bib>[=<opciones>]\n\                  cargar la biblioteca de agente nativa <nombre_bib>, como -agentlib:hprof\n\                  v\u00E9ase tambi\u00E9n -agentlib:jdwp=help y -agentlib:hprof=help\n\    -agentpath:<nombre_ruta_acceso>[=<opciones>]\n\                  cargar biblioteca de agente nativa con la ruta de acceso completa\n\    -javaagent:<ruta_acceso_jar>[=<opciones>]\n\                  cargar agente de lenguaje de programaci\u00F3n Java, v\u00E9ase java.lang.instrument\n\    -splash:<ruta_acceso_imagen>\n\                  mostrar una pantalla de presentaci\u00F3n con la imagen especificada\nConsulte http://java.sun.com/javase/reference para obtener 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:<directories and zip/jar files separated by {0}>\n\                      definir ruta de b\u00fasqueda para clases y recursos de la rutina de carga\n\    -Xbootclasspath/a:<directories and zip/jar files separated by {0}>\n\                      a\u00f1adir al final de la ruta de clase de la rutina de carga\n\    -Xbootclasspath/p:<directories and zip/jar files separated by {0}>\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:<file>    registrar estado de GC en un archivo con marcas de tiempo\n\    -Xbatch           desactivar recopilaci\u00f3n de fondos\n\    -Xms<size>        definir tama\u00f1o del mont\u00f3n de Java inicial\n\    -Xmx<size>        definir tama\u00f1o m\u00e1ximo del mont\u00f3n de Java\n\    -Xss<size>        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.X.usage=\    -Xmixed           ejecuci\u00F3n de modo mixto (por defecto)\n\    -Xint             s\u00F3lo ejecuci\u00F3n de modo interpretado\n\    -Xbootclasspath:<directorios y archivos zip/jar separados por {0}>\n\                      definir la ruta de acceso de b\u00FAsqueda para los recursos y clases de inicializaci\u00F3n de datos\n\    -Xbootclasspath/a:<directorios y archivos zip/jar separados por {0}>\n\                      agregar al final de la ruta de acceso de la clase de inicializaci\u00F3n de datos\n\    -Xbootclasspath/p:<directorios y archivos zip/jar separados por {0}>\n\                      anteponer a la ruta de acceso de la clase de inicializaci\u00F3n de datos\n\    -Xdiag            mostrar mensajes de diagn\u00F3stico adicionales\n\    -Xnoclassgc       desactivar la recolecci\u00F3n de basura de clases\n\    -Xincgc           activar la recolecci\u00F3n de basura de clases\n\    -Xloggc:<archivo>    registrar el estado de GC en un archivo con registros de hora\n\    -Xbatch           desactivar compilaci\u00F3n en segundo plano\n\    -Xms<tama\u00F1o>        definir tama\u00F1o de pila Java inicial\n\    -Xmx<tama\u00F1o>        definir tama\u00F1o de pila Java m\u00E1ximo\n\    -Xss<tama\u00F1o>        definir tama\u00F1o de la pila del thread de Java\n\    -Xprof            datos de salida de creaci\u00F3n de perfil de CPU\n\    -Xfuture          activar las comprobaciones m\u00E1s estrictas, anticip\u00E1ndose al futuro valor por defecto\n\    -Xrs              reducir el uso de se\u00F1ales de sistema operativo por parte de Java/VM (consulte la documentaci\u00F3n)\n\    -Xcheck:jni       realizar comprobaciones adicionales para las funciones de JNI\n\    -Xshare:off       no intentar usar datos de clase compartidos\n\    -Xshare:auto      usar datos de clase compartidos si es posible (valor por defecto)\n\    -Xshare:on        es obligatorio el uso de datos de clase compartidos, de lo contrario se emitir\u00E1 un fallo.\n\    -XshowSettings    mostrar todos los valores y continuar\n\    -XshowSettings:all\n\                      mostrar todos los valores y continuar\n\    -XshowSettings:vm mostrar todos los valores de la VM y continuar\n\    -XshowSettings:properties\n\                      mostrar todos los valores de las propiedades y continuar\n\    -XshowSettings:locale\n\                      mostrar todos los valores relacionados con la configuraci\u00F3n regional y continuar\n\nLas opciones -X no son est\u00E1ndar, por lo que podr\u00EDan cambiarse 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)
-
-
+java.launcher.cls.error1=Error: no se ha encontrado o cargado 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 del siguiente modo:\n\   public static void main(String[] args)
+java.launcher.cls.error3=Error: el m\u00E9todo principal debe devolver un valor del tipo void en la clase {0}, \ndefina el m\u00E9todo principal del siguiente modo:\n\   public static void main(String[] args)
+java.launcher.cls.error4=Error: no se ha encontrado el m\u00E9todo principal en la clase {0}, defina el m\u00E9todo principal del siguiente modo:\n\   public static void main(String[] args)
+java.launcher.jar.error1=Error: se ha producido un error inesperado al intentar abrir el archivo {0}
+java.launcher.jar.error2=no se ha encontrado el manifiesto en {0}
+java.launcher.jar.error3=no hay ning\u00FAn atributo de manifiesto principal en {0}
--- a/jdk/src/share/classes/sun/launcher/resources/launcher_fr.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/launcher/resources/launcher_fr.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -24,24 +24,25 @@
 #
 
 # 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.header  =   Syntaxe : {0} [-options] class [args...]\n\           (pour l''ex\u00E9cution d''une classe)\n   ou  {0} [-options] -jar jarfile [args...]\n\           (pour l''ex\u00E9cution d''un fichier JAR)\no\u00F9 les options comprennent :\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.opt.datamodel  =\    -d{0}\t  utilisez le mod\u00E8le de donn\u00E9es {0} bits s''il est disponible\n
+java.launcher.opt.vmselect   =\    {0}\t  pour s\u00E9lectionner la machine virtuelle "{1}"\n
+java.launcher.opt.hotspot    =\    {0}\t  est un synonyme pour la machine virtuelle "{1}"  [en phase d''abandon]\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
+java.launcher.ergo.message1  =\                  La machine virtuelle par d\u00E9faut est {0}
+java.launcher.ergo.message2  =\                  car vous ex\u00E9cutez une machine de classe de serveur.\n
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.footer     =\    -cp <chemin de recherche de classe des r\u00e9pertoires et fichiers zip/jar>\n\    -classpath <chemin de recherche de classe des r\u00e9pertoires et fichiers zip/jar>\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<nom>=<valeur>\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:<valeur>\n\                  utiliser la version sp\u00e9cifi\u00e9e pour l''ex\u00e9cution\n\    -showversion  imprimer la version du produit et continuer\n\    -jre-restrict-search | -no-jre-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[:<nom du package>...|:<nom de la classe>]\n\    -enableassertions[:<nom du package>...|:<nom de la classe>]\n\                  activer les assertions avec la granularit\u00e9 sp\u00e9cifi\u00e9e\n\    -da[:<nom du package>...|:<nom de la classe>]\n\    -disableassertions[:<nom du package>...|:<nom de la classe>]\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:<nom de la biblioth\u00e8que>[=<options>]\n\                  charger la biblioth\u00e8que d''agents natifs<nom de la biblioth\u00e8que>, par exemple -agentlib:hprof\n\                  voir \u00e9galement, -agentlib:jdwp=help et -agentlib:hprof=help\n\    -agentpath:<nom du chemin>[=<options>]\n\                  charger la biblioth\u00e8que d''agents natifs en indiquant le chemin complet\n\    -javaagent:<chemin jar>[=<options>]\n\                  charger l''agent de langage de programmation Java, voir java.lang.instrument\n\    -splash:<chemin de l''image>\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.
+java.launcher.opt.footer     =\    -cp <class search path of directories and zip/jar files>\n\    -classpath <class search path of directories and zip/jar files>\n\                  Liste de r\u00E9pertoires, d''archives JAR et\n\                   d''archives ZIP s\u00E9par\u00E9s par des {0}, dans laquelle rechercher les fichiers de classe.\n\    -D<name>=<value>\n\                  d\u00E9finition d''une propri\u00E9t\u00E9 syst\u00E8me\n\    -verbose[:class|gc|jni]\n\                  activation de la sortie en mode verbose\n\    -version      impression de la version du produit et fin de l''op\u00E9ration\n\    -version:<value>\n\                  ex\u00E9cution de la version sp\u00E9cifi\u00E9e obligatoire\n\    -showversion  impression de la version du produit et poursuite de l''op\u00E9ration\n\    -jre-restrict-search | -no-jre-restrict-search\n\                  inclusion/exclusion des environnements JRE priv\u00E9s de l''utilisateur dans la recherche de version\n\    -? -help      impression du message d''aide\n\    -X            impression de l''aide sur les options non standard\n\    -ea[:<packagename>...|:<classname>]\n\    -enableassertions[:<packagename>...|:<classname>]\n\                  activation des assertions avec la granularit\u00E9 sp\u00E9cifi\u00E9e\n\    -da[:<packagename>...|:<classname>]\n\    -disableassertions[:<packagename>...|:<classname>]\n\                  d\u00E9sactivation des assertions avec la granularit\u00E9 sp\u00E9cifi\u00E9e\n\    -esa | -enablesystemassertions\n\                  activation des assertions syst\u00E8me\n\    -dsa | -disablesystemassertions\n\                  d\u00E9sactivation des assertions syst\u00E8me\n\    -agentlib:<libname>[=<options>]\n\                  chargement de la biblioth\u00E8que d''agent natif <libname>, par exemple -agentlib:hprof\n\                  voir \u00E9galement, -agentlib:jdwp=help et -agentlib:hprof=help\n\    -agentpath:<pathname>[=<options>]\n\                  chargement de la biblioth\u00E8que d''agent natif via le chemin d''acc\u00E8s complet\n\    -javaagent:<jarpath>[=<options>]\n\                  chargement de l''agent du langage de programmation Java, voir java.lang.instrument\n\    -splash:<imagepath>\n\                  affichage de l''\u00E9cran d''accueil avec l''image sp\u00E9cifi\u00E9e\nVoir http://java.sun.com/javase/reference pour plus de d\u00E9tails.
 
 # 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:<r\u00e9pertoires et fichiers zip/jar s\u00e9par\u00e9s par {0}>\n\                      d\u00e9finir le chemin de recherche pour les classes et ressources bootstrap\n\    -Xbootclasspath/a:<r\u00e9pertoires et fichiers zip/jar s\u00e9par\u00e9s par {0}>\n\                      ajouter \u00e0 la fin du chemin de la classe bootstrap\n\    -Xbootclasspath/p:<r\u00e9pertoires et fichiers zip/jar s\u00e9par\u00e9s par {0}>\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:<fichier> enregistrer le statut GC dans un fichier horodat\u00e9\n\    -Xbatch           d\u00e9sactiver la compilation d''arri\u00e8re-plans\n\    -Xms<taille>      d\u00e9finir la taille initiale des tas Java\n\    -Xmx<taille>      d\u00e9finir la taille maximale des tas Java\n\    -Xss<taille>      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.X.usage=\    -Xmixed           ex\u00E9cution en mode mixte (valeur par d\u00E9faut)\n\    -Xint             ex\u00E9cution en mode interpr\u00E9t\u00E9 uniquement\n\    -Xbootclasspath:<directories and zip/jar files separated by {0}>\n\                      d\u00E9finition du chemin de recherche pour les ressources et classes bootstrap\n\    -Xbootclasspath/a:<directories and zip/jar files separated by {0}>\n\                      ajout \u00E0 la fin du chemin de classe bootstrap\n\    -Xbootclasspath/p:<directories and zip/jar files separated by {0}>\n\                      ajout au d\u00E9but du chemin de classe bootstrap\n\    -Xdiag            affichage de messages de diagnostic suppl\u00E9mentaires\n\    -Xnoclassgc       d\u00E9sactivation de l''op\u00E9ration de ramasse-miette (garbage collection) de la classe\n\    -Xincgc           activation de l''op\u00E9ration de ramasse-miette (garbage collection) incr\u00E9mentielle\n\    -Xloggc:<file>    journalisation du statut de l''op\u00E9ration de ramasse-miette (garbage collection) dans un fichier avec horodatages\n\    -Xbatch           d\u00E9sactivation de la compilation en arri\u00E8re-plan\n\    -Xms<size>        d\u00E9finition de la taille initiale des portions de m\u00E9moire Java\n\    -Xmx<size>        d\u00E9finition de la taille maximale des portions de m\u00E9moire Java\n\    -Xss<size>        d\u00E9finition de la taille de pile de thread Java\n\    -Xprof            sortie des donn\u00E9es de profilage de l''unit\u00E9 centrale\n\    -Xfuture          activation des contr\u00F4les les plus stricts en vue d''anticiper la future valeur par d\u00E9faut\n\    -Xrs              r\u00E9duction de l''utilisation des signaux OS par Java/la machine virtuelle (voir documentation)\n\    -Xcheck:jni       ex\u00E9cution de contr\u00F4les suppl\u00E9mentaires pour les fonctions JNI\n\    -Xshare:off       aucune tentative d''utilisation des donn\u00E9es de classe partag\u00E9es\n\    -Xshare:auto      utilisation des donn\u00E9es de classe partag\u00E9es si possible (valeur par d\u00E9faut)\n\    -Xshare:on        utilisation des donn\u00E9es de classe partag\u00E9es obligatoire ou \u00E9chec de l''op\u00E9ration\n\    -XshowSettings    affichage de tous les param\u00E8tres et poursuite de l''op\u00E9ration\n\    -XshowSettings:all\n\                      affichage de tous les param\u00E8tres et poursuite de l''op\u00E9ration\n\    -XshowSettings:vm affichage de tous les param\u00E8tres de machine virtuelle et poursuite de l''op\u00E9ration\n\    -XshowSettings:properties\n\                      affichage de tous les param\u00E8tres de propri\u00E9t\u00E9 et poursuite de l''op\u00E9ration\n\    -XshowSettings:locale\n\                      affichage de tous les param\u00E8tres d''environnement local et poursuite de l''op\u00E9ration\n\nLes options -X ne sont pas des options standard et peuvent faire l''objet de modifications 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)
-
-
+java.launcher.cls.error1=Erreur : impossible de trouver ou charger la classe principale {0}
+java.launcher.cls.error2=Erreur : la m\u00E9thode principale n''est pas {0} dans la classe {1}, d\u00E9finissez la m\u00E9thode principale comme suit :\n\   public static void main(String[] args)
+java.launcher.cls.error3=Erreur : la m\u00E9thode principale doit renvoyer une valeur de type void dans la classe {0}, \nd\u00E9finissez la m\u00E9thode principale comme suit :\n\   public static void main(String[] args)
+java.launcher.cls.error4=Erreur : la m\u00E9thode principale est introuvable dans la classe {0}, d\u00E9finissez la m\u00E9thode principale comme suit :\n\   public static void main(String[] args)
+java.launcher.jar.error1=Erreur : une erreur inattendue est survenue lors de la tentative d''ouverture du fichier {0}
+java.launcher.jar.error2=fichier manifeste introuvable dans {0}
+java.launcher.jar.error3=aucun attribut manifest principal dans {0}
--- a/jdk/src/share/classes/sun/launcher/resources/launcher_it.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/launcher/resources/launcher_it.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -24,24 +24,25 @@
 #
 
 # 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.header  =   Uso: {0} [-opzioni] class [argomenti...]\n\           (per eseguire una classe)\n   oppure  {0} [-opzioni] -jar filejar [argomenti...]\n\           (per eseguire un file jar)\ndove le opzioni sono:\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.opt.datamodel  =\    -d{0}\t  usare un modello di dati {0}-bit se disponibile\n
+java.launcher.opt.vmselect   =\    {0}\t  per selezionare la VM "{1}"\n
+java.launcher.opt.hotspot    =\    {0}\t  \u00E8 un sinonimo per la VM "{1}" [non valido]\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
+java.launcher.ergo.message1  =\                  La VM predefinita \u00E8 {0}
+java.launcher.ergo.message2  =\                  perch\u00E9 si utilizza un computer di classe server.\n
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.footer     =\    -cp <percorso di ricerca classe di directory e file zip/jar>\n\    -classpath <percorso di ricerca classe di directory e file zip/jar>\n\                  Elenco separato da {0} di directory, archivi JAR\n\                  e archivi ZIP in cui cercare i file di classe.\n\    -D<nome>=<valore>\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:<valore>\n\                  richiede la versione specificata per l''esecuzione\n\    -showversion  stampa la versione del prodotto e procede\n\    -jre-restrict-search | -no-jre-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[:<nomepacchetto>...|:<nomeclasse>]\n\    -enableassertions[:<nomepacchetto>...|:<nomeclasse>]\n\                  attiva le asserzioni con la granularit\u00e0 specificata\n\    -da[:<nomepacchetto>...|:<nomeclasse>]\n\    -disableassertions[:<nomepacchetto>...|:<nomeclasse>]\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:<nomelibreria>[=<opzioni>]\n\                  carica la libreria agente nativa <nomelibreria>, ad es. -agentlib:hprof\n\                  vedere anche, -agentlib:jdwp=help e -agentlib:hprof=help\n\    -agentpath:<percorso>[=<opzioni>]\n\                  carica la libreria agente nativa in base al percorso completo\n\    -javaagent:<percorsojar>[=<opzioni>]\n\                  carica l''agente del linguaggio di programmazione Java, vedere java.lang.instrument\n\    -splash:<percorsoimmagine>\n\                  mostra la schermata iniziale con l''immagine specificata\nPer ulteriori informazioni, visitare http://java.sun.com/javase/reference.
+java.launcher.opt.footer     =\    -cp <classpath di ricerca di directory e file zip/jar>\n\    -classpath <classpath di ricerca di directory e file zip/jar>\n\                  Una lista separata da {0} di directory, archivi JAR\n\                  e archivi ZIP utilizzata per la ricerca di file di classe.\n\    -D<nome>=<valore>\n\                  imposta una propriet\u00E0 di sistema\n\    -verbose[:class|gc|jni]\n\                  abilita l''output descrittivo\n\    -version      stampa la versione del prodotto ed esce\n\    -version:<valore>\n\                  richiede l''esecuzione della versione specificata\n\    -showversion  stampa la versione del prodotto e continua\n\    -jre-restrict-search | -no-jre-restrict-search\n\                  include/esclude gli ambienti JRE privati dell''utente nella ricerca della versione\n\    -? -help      stampa questo messaggio della Guida\n\    -X            stampa la Guida sulle opzioni non standard\n\    -ea[:<nomepackage>...|:<nomeclasse>]\n\    -enableassertions[:<nomepackage>...|:<nomeclasse>]\n\                  abilita le asserzioni con la granularit\u00E0 specificata\n\    -da[:<nomepackage>...|:<nomeclasse>]\n\    -disableassertions[:<nomepackage>...|:<nomeclasse>]\n\                  disabilita le asserzioni con la granularit\u00E0 specificata\n\    -esa | -enablesystemassertions\n\                  abilita le asserzioni di sistema\n\    -dsa | -disablesystemassertions\n\                  disabilita le asserzioni di sistema\n\    -agentlib:<nomelib>[=<opzioni>]\n\                  carica la libreria agenti nativa <nomelib>, ad esempio -agentlib:hprof\n\                  vedere anche -agentlib:jdwp=help and -agentlib:hprof=help\n\    -agentpath:<nomepercorso>[=<opzioni>]\n\                  carica la libreria agenti nativa con il percorso completo\n\    -javaagent:<percorsojar>[=<opzioni>]\n\                  carica l''agente del linguaggio di programmazione Java. Vedere java.lang.instrument\n\    -splash:<percorsoimmagine>\n\                  mostra la schermata iniziale con l''immagine specificata\nVedere http://java.sun.com/javase/reference per maggiori dettagli.
 
 # 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:<directory e file zip/jar separati da {0}>\n\                      imposta il percorso di ricerca per classi e risorse di bootstrap\n\    -Xbootclasspath/a:<directory e file zip/jar separati da {0}>\n\                      accoda alla fine del percorso della classe di bootstrap\n\    -Xbootclasspath/p:<directory e file zip/jar separati da {0}>\n\                      antepone al percorso della classe di bootsrap\n\    -Xnoclassgc       disattiva Garbage Collection per la classe\n\    -Xincgc           attiva Garbage Collection incrementale\n\    -Xloggc:<file>    registra lo stato GC in un file con timestamp\n\    -Xbatch           disattiva la compilazione in background\n\    -Xms<dimensione>  imposta la dimensione heap Java iniziale\n\    -Xmx<dimensione>  imposta la dimensione heap Java massima\n\    -Xss<dimensione>  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.X.usage=\    -Xmixed           esecuzione in modalit\u00E0 mista (impostazione predefinita)\n\    -Xint             esecuzione solo in modalit\u00E0 convertita\n\    -Xbootclasspath:<directory e file zip/jar separati da {0}>\n\                      imposta il percorso di ricerca per le classi e le risorse di bootstrap\n\    -Xbootclasspath/a:<directory e file zip/jar separati da {0}>\n\                      aggiunge alla fine del classpath di bootstrap\n\    -Xbootclasspath/p:<directory e file zip/jar separati da {0}>\n\                      antepone al classpath di bootstrap\n\    -Xdiag            mostra messaggi di diagnostica aggiuntivi\n\    -Xnoclassgc       disabilita la garbage collection della classe\n\    -Xincgc           abilita la garbage collection incrementale\n\    -Xloggc:<file>    registra lo stato GC in un file di log con indicatori orari\n\    -Xbatch           disabilita la compilazione in background\n\    -Xms<dimensione>        imposta la dimensione heap Java iniziale\n\    -Xmx<dimensione>        imposta la dimensione heap Java massima\n\    -Xss<dimensione>        imposta la dimensione dello stack di thread Java\n\    -Xprof            visualizza i dati di profilo della CPU\n\    -Xfuture          abilita i controlli pi\u00F9 limitativi anticipando le impostazioni predefinite future\n\    -Xrs              riduce l''uso di segnali del sistema operativo da Java/VM (vedere la documentazione)\n\    -Xcheck:jni       esegue controlli aggiuntivi per le funzioni JNI\n\    -Xshare:off       non tenta di utilizzare i dati della classe condivisi\n\    -Xshare:auto      utilizza i dati di classe condivisi se possibile (impostazione predefinita)\n\    -Xshare:on        richiede l''uso dei dati di classe condivisi, altrimenti l''esecuzione non riesce.\n\    -XshowSettings    mostra tutte le impostazioni e continua\n\    -XshowSettings:all\n\                      mostra tutte le impostazioni e continua\n\    -XshowSettings:vm mostra tutte le impostazioni correlate alla VM e continua\n\    -XshowSettings:properties\n\                      mostra tutte le impostazioni delle propriet\u00E0 e continua\n\    -XshowSettings:locale\n\                      mostra tutte le impostazioni correlate alle impostazioni nazionali e continua\n\nLe opzioni -X non sono opzioni standard e sono 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)
-
-
+java.launcher.cls.error1=Errore: impossibile trovare o caricare la classe principale {0}
+java.launcher.cls.error2=Errore: il metodo principale non \u00E8 {0} nella classe {1}. Definire il metodo principale 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 metodo principale come:\n\   public static void main(String[] args)
+java.launcher.cls.error4=Errore: il metodo principale non \u00E8 stato trovato nella classe {0}. Definire il metodo principale come:\n\   public static void main(String[] args)
+java.launcher.jar.error1=Errore: si \u00E8 verificato un errore imprevisto durante il tentativo di aprire il file {0}
+java.launcher.jar.error2=manifest non trovato in {0}
+java.launcher.jar.error3=nessun attributo manifest principale in {0}
--- a/jdk/src/share/classes/sun/launcher/resources/launcher_ja.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/launcher/resources/launcher_ja.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -24,24 +24,25 @@
 #
 
 # 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.header  =   \u4F7F\u7528\u65B9\u6CD5: {0} [-options] class [args...]\n\           (\u30AF\u30E9\u30B9\u3092\u5B9F\u884C\u3059\u308B\u5834\u5408)\n   \u307E\u305F\u306F  {0} [-options] -jar jarfile [args...]\n\           (jar\u30D5\u30A1\u30A4\u30EB\u3092\u5B9F\u884C\u3059\u308B\u5834\u5408)\noptions\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002\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.opt.datamodel  =\    -d{0}\t  \u4F7F\u7528\u53EF\u80FD\u306A\u5834\u5408\u306F{0}\u30D3\u30C3\u30C8\u306E\u30C7\u30FC\u30BF\u30FB\u30E2\u30C7\u30EB\u3092\u4F7F\u7528\u3059\u308B\n
+java.launcher.opt.vmselect   =\    {0}\t  "{1}" VM\u3092\u9078\u629E\u3059\u308B\u5834\u5408\n
+java.launcher.opt.hotspot    =\    {0}\t  \u306F"{1}" VM\u306E\u30B7\u30CE\u30CB\u30E0\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
+java.launcher.ergo.message1  =\                  \u30C7\u30D5\u30A9\u30EB\u30C8VM\u306F{0}\u3067\u3059
+java.launcher.ergo.message2  =\                  \u3053\u308C\u306F\u30B5\u30FC\u30D0\u30FC\u30AF\u30E9\u30B9\u306E\u30DE\u30B7\u30F3\u3067\u5B9F\u884C\u3057\u3066\u3044\u308B\u305F\u3081\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<name>=<value>\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:<value>\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 | -no-jre-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[:<packagename>...|:<classname>]\n\    -enableassertions[:<packagename>...|:<classname>]\n\                  \u6307\u5b9a\u3057\u305f\u7c92\u5ea6\u3067\u30a2\u30b5\u30fc\u30b7\u30e7\u30f3\u3092\u6709\u52b9\u5316\n\    -da[:<packagename>...|:<classname>]\n\    -disableassertions[:<packagename>...|:<classname>]\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:<libname>[=<options>]\n\                  \u30cd\u30a4\u30c6\u30a3\u30d6\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u30e9\u30a4\u30d6\u30e9\u30ea <libname> (\u4f8b: -agentlib:hprof) \u3092\u30ed\u30fc\u30c9\n\                  \u95a2\u9023\u9805\u76ee\u3001 -agentlib:jdwp=help and -agentlib:hprof=help\n\    -agentpath:<pathname>[=<options>]\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:<jarpath>[=<options>]\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:<imagepath>\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
+java.launcher.opt.footer     =\    -cp <class search path of directories and zip/jar files>\n\    -classpath <class search path of directories and zip/jar files>\n\                  \u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3001\n\                  JAR\u30A2\u30FC\u30AB\u30A4\u30D6\u304A\u3088\u3073ZIP\u30A2\u30FC\u30AB\u30A4\u30D6\u306E{0}\u3067\u533A\u5207\u3089\u308C\u305F\u30EA\u30B9\u30C8\u3067\u3059\u3002\n\    -D<name>=<value>\n\                  \u30B7\u30B9\u30C6\u30E0\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u8A2D\u5B9A\u3059\u308B\n\    -verbose[:class|gc|jni]\n\                  \u8A73\u7D30\u306A\u51FA\u529B\u3092\u884C\u3046\n\    -version      \u88FD\u54C1\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u51FA\u529B\u3057\u3066\u7D42\u4E86\u3059\u308B\n\    -version:<value>\n\                  \u6307\u5B9A\u3057\u305F\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u5B9F\u884C\u306B\u5FC5\u9808\u306B\u3059\u308B\n\    -showversion  \u88FD\u54C1\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u51FA\u529B\u3057\u3066\u7D9A\u884C\u3059\u308B\n\    -jre-restrict-search | -no-jre-restrict-search\n\                  \u30E6\u30FC\u30B6\u30FC\u306E\u30D7\u30E9\u30A4\u30D9\u30FC\u30C8JRE\u3092\u30D0\u30FC\u30B8\u30E7\u30F3\u691C\u7D22\u306B\u542B\u3081\u308B/\u9664\u5916\u3059\u308B\n\    -? -help      \u3053\u306E\u30D8\u30EB\u30D7\u30FB\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3059\u308B\n\    -X            \u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u95A2\u3059\u308B\u30D8\u30EB\u30D7\u3092\u51FA\u529B\u3059\u308B\n\    -ea[:<packagename>...|:<classname>]\n\    -enableassertions[:<packagename>...|:<classname>]\n\                  \u6307\u5B9A\u3057\u305F\u7C92\u5EA6\u3067\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B\n\    -da[:<packagename>...|:<classname>]\n\    -disableassertions[:<packagename>...|:<classname>]\n\                  \u6307\u5B9A\u3057\u305F\u7C92\u5EA6\u3067\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u7121\u52B9\u306B\u3059\u308B\n\    -esa | -enablesystemassertions\n\                  \u30B7\u30B9\u30C6\u30E0\u30FB\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B\n\    -dsa | -disablesystemassertions\n\                  \u30B7\u30B9\u30C6\u30E0\u30FB\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u7121\u52B9\u306B\u3059\u308B\n\    -agentlib:<libname>[=<options>]\n\                  \u30CD\u30A4\u30C6\u30A3\u30D6\u30FB\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30FB\u30E9\u30A4\u30D6\u30E9\u30EA<libname>\u3092\u30ED\u30FC\u30C9\u3059\u308B\u3002\u4F8B: -agentlib:hprof\n\                  -agentlib:jdwp=help\u3068-agentlib:hprof=help\u3082\u53C2\u7167\n\    -agentpath:<pathname>[=<options>]\n\                  \u30D5\u30EB\u30D1\u30B9\u540D\u3067\u30CD\u30A4\u30C6\u30A3\u30D6\u30FB\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30FB\u30E9\u30A4\u30D6\u30E9\u30EA\u3092\u30ED\u30FC\u30C9\u3059\u308B\n\    -javaagent:<jarpath>[=<options>]\n\                  Java\u30D7\u30ED\u30B0\u30E9\u30DF\u30F3\u30B0\u8A00\u8A9E\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u3092\u30ED\u30FC\u30C9\u3059\u308B\u3002java.lang.instrument\u3092\u53C2\u7167\n\    -splash:<imagepath>\n\                  \u6307\u5B9A\u3057\u305F\u30A4\u30E1\u30FC\u30B8\u3067\u30B9\u30D7\u30E9\u30C3\u30B7\u30E5\u753B\u9762\u3092\u8868\u793A\u3059\u308B\n\u8A73\u7D30\u306Fhttp://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:<directories and zip/jar files separated by {0}>\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:<directories and zip/jar files separated by {0}>\n\                      \u30d6\u30fc\u30c8\u30b9\u30c8\u30e9\u30c3\u30d7\u30af\u30e9\u30b9\u306e\u30d1\u30b9\u306e\u672b\u5c3e\u306b\u8ffd\u52a0\n\    -Xbootclasspath/p:<directories and zip/jar files separated by {0}>\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:<file>    \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<size>        \u521d\u671f Java \u30d2\u30fc\u30d7\u30b5\u30a4\u30ba\u3092\u8a2d\u5b9a\n\    -Xmx<size>        \u6700\u5927 Java \u30d2\u30fc\u30d7\u30b5\u30a4\u30ba\u3092\u8a2d\u5b9a\n\    -Xss<size>        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.X.usage=\    -Xmixed           \u6DF7\u5408\u30E2\u30FC\u30C9\u306E\u5B9F\u884C(\u30C7\u30D5\u30A9\u30EB\u30C8)\n\    -Xint             \u30A4\u30F3\u30BF\u30D7\u30EA\u30BF\u30FB\u30E2\u30FC\u30C9\u306E\u5B9F\u884C\u306E\u307F\n\    -Xbootclasspath:<directories and zip/jar files separated by {0}>\n\                      \u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u306E\u30AF\u30E9\u30B9\u3068\u30EA\u30BD\u30FC\u30B9\u306E\u691C\u7D22\u30D1\u30B9\u3092\u8A2D\u5B9A\u3059\u308B\n\    -Xbootclasspath/a:<directories and zip/jar files separated by {0}>\n\                      \u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u30FB\u30AF\u30E9\u30B9\u30FB\u30D1\u30B9\u306E\u6700\u5F8C\u306B\u8FFD\u52A0\u3059\u308B\n\    -Xbootclasspath/p:<directories and zip/jar files separated by {0}>\n\                      \u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u30FB\u30AF\u30E9\u30B9\u30FB\u30D1\u30B9\u306E\u524D\u306B\u4ED8\u52A0\u3059\u308B\n\    -Xdiag            \u8FFD\u52A0\u306E\u8A3A\u65AD\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u793A\u3059\u308B\n\    -Xnoclassgc       \u30AF\u30E9\u30B9\u306E\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u7121\u52B9\u306B\u3059\u308B\n\    -Xincgc           \u5897\u5206\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B\n\    -Xloggc:<file>    \u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u304C\u4ED8\u3044\u305F\u30D5\u30A1\u30A4\u30EB\u306BGC\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u30ED\u30B0\u3092\u8A18\u9332\u3059\u308B\n\    -Xbatch           \u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u306E\u30B3\u30F3\u30D1\u30A4\u30EB\u3092\u7121\u52B9\u306B\u3059\u308B\n\    -Xms<size>        Java\u306E\u521D\u671F\u30D2\u30FC\u30D7\u30FB\u30B5\u30A4\u30BA\u3092\u8A2D\u5B9A\u3059\u308B\n\    -Xmx<size>        Java\u306E\u6700\u5C0F\u30D2\u30FC\u30D7\u30FB\u30B5\u30A4\u30BA\u3092\u8A2D\u5B9A\u3059\u308B\n\    -Xss<size>        Java\u306E\u30B9\u30EC\u30C3\u30C9\u30FB\u30B9\u30BF\u30C3\u30AF\u30FB\u30B5\u30A4\u30BA\u3092\u8A2D\u5B9A\u3059\u308B\n\    -Xprof            CPU\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u30FB\u30C7\u30FC\u30BF\u3092\u51FA\u529B\u3059\u308B\n\    -Xfuture          \u5C06\u6765\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u3092\u898B\u8D8A\u3057\u3066\u3001\u6700\u3082\u53B3\u5BC6\u306A\u30C1\u30A7\u30C3\u30AF\u3092\u6709\u52B9\u306B\u3059\u308B\n\    -Xrs              Java/VM\u306B\u3088\u308BOS\u30B7\u30B0\u30CA\u30EB\u306E\u4F7F\u7528\u3092\u524A\u6E1B\u3059\u308B(\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u53C2\u7167)\n\    -Xcheck:jni       JNI\u95A2\u6570\u306B\u5BFE\u3059\u308B\u8FFD\u52A0\u306E\u30C1\u30A7\u30C3\u30AF\u3092\u5B9F\u884C\u3059\u308B\n\    -Xshare:off       \u5171\u6709\u30AF\u30E9\u30B9\u306E\u30C7\u30FC\u30BF\u3092\u4F7F\u7528\u3057\u3088\u3046\u3068\u3057\u306A\u3044\n\    -Xshare:auto      \u53EF\u80FD\u3067\u3042\u308C\u3070\u5171\u6709\u30AF\u30E9\u30B9\u306E\u30C7\u30FC\u30BF\u3092\u4F7F\u7528\u3059\u308B(\u30C7\u30D5\u30A9\u30EB\u30C8)\n\    -Xshare:on        \u5171\u6709\u30AF\u30E9\u30B9\u30FB\u30C7\u30FC\u30BF\u306E\u4F7F\u7528\u3092\u5FC5\u9808\u306B\u3057\u3001\u3067\u304D\u306A\u3051\u308C\u3070\u5931\u6557\u3059\u308B\u3002\n\    -XshowSettings    \u3059\u3079\u3066\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n\    -XshowSettings:all\n\                      \u3059\u3079\u3066\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n\    -XshowSettings:vm \u3059\u3079\u3066\u306EVM\u95A2\u9023\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n\    -XshowSettings:properties\n\                      \u3059\u3079\u3066\u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n\    -XshowSettings:locale\n\                      \u3059\u3079\u3066\u306E\u30ED\u30B1\u30FC\u30EB\u95A2\u9023\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n\n-X\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u975E\u6A19\u6E96\u306A\u306E\u3067\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)
-
-
+java.launcher.cls.error1=\u30A8\u30E9\u30FC: \u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9{0}\u304C\u898B\u3064\u304B\u3089\u306A\u304B\u3063\u305F\u304B\u30ED\u30FC\u30C9\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
+java.launcher.cls.error2=\u30A8\u30E9\u30FC: \u30E1\u30A4\u30F3\u30FB\u30E1\u30BD\u30C3\u30C9\u304C\u30AF\u30E9\u30B9{1}\u306E{0}\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u6B21\u306E\u3088\u3046\u306B\u30E1\u30A4\u30F3\u30FB\u30E1\u30BD\u30C3\u30C9\u3092\u5B9A\u7FA9\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\   public static void main(String[] args)
+java.launcher.cls.error3=\u30A8\u30E9\u30FC: \u30E1\u30A4\u30F3\u30FB\u30E1\u30BD\u30C3\u30C9\u306F\u30AF\u30E9\u30B9{0}\u306Evoid\u578B\u306E\u5024\u3092\u8FD4\u3059\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n\u6B21\u306E\u3088\u3046\u306B\u30E1\u30A4\u30F3\u30FB\u30E1\u30BD\u30C3\u30C9\u3092\u5B9A\u7FA9\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\   public static void main(String[] args)
+java.launcher.cls.error4=\u30A8\u30E9\u30FC: \u30E1\u30A4\u30F3\u30FB\u30E1\u30BD\u30C3\u30C9\u304C\u30AF\u30E9\u30B9{0}\u3067\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\u6B21\u306E\u3088\u3046\u306B\u30E1\u30A4\u30F3\u30FB\u30E1\u30BD\u30C3\u30C9\u3092\u5B9A\u7FA9\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\   public static void main(String[] args)
+java.launcher.jar.error1=\u30A8\u30E9\u30FC: \u30D5\u30A1\u30A4\u30EB{0}\u3092\u958B\u3053\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u3001\u4E88\u671F\u3057\u306A\u3044\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
+java.launcher.jar.error2={0}\u306B\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
+java.launcher.jar.error3={0}\u306B\u30E1\u30A4\u30F3\u30FB\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u5C5E\u6027\u304C\u3042\u308A\u307E\u305B\u3093
--- a/jdk/src/share/classes/sun/launcher/resources/launcher_ko.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/launcher/resources/launcher_ko.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -24,24 +24,25 @@
 #
 
 # 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.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\uC5EC\uAE30\uC11C options\uB294 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4.\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.opt.datamodel  =\    -d{0}\t  \uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uACBD\uC6B0 {0}\uBE44\uD2B8 \uB370\uC774\uD130 \uBAA8\uB378\uC744 \uC0AC\uC6A9\uD569\uB2C8\uB2E4.\n
+java.launcher.opt.vmselect   =\    {0}\t  "{1}" VM\uC744 \uC120\uD0DD\uD569\uB2C8\uB2E4.\n
+java.launcher.opt.hotspot    =\    {0}\t  "{1}" VM\uC758 \uB3D9\uC758\uC5B4\uC785\uB2C8\uB2E4[\uC0AC\uC6A9\uB418\uC9C0 \uC54A\uC74C].\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
+java.launcher.ergo.message1  =\                  \uAE30\uBCF8 VM\uC740 {0}\uC785\uB2C8\uB2E4.
+java.launcher.ergo.message2  =\                  \uC11C\uBC84\uAE09 \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<name>=<value>\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:<value>\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 | -no-jre-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[:<packagename>...|:<classname>]\n\    -enableassertions[:<packagename>...|:<classname>]\n\                  \uc9c0\uc815\ud55c \uc815\ubc00\ub3c4\uc758 \uba85\uc81c \uc0ac\uc6a9\n\    -da[:<packagename>...|:<classname>]\n\    -disableassertions[:<packagename>...|:<classname>]\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:<libname>[=<options>]\n\                  \uc6d0\uc2dc \uc5d0\uc774\uc804\ud2b8 \ub77c\uc774\ube0c\ub7ec\ub9ac <libname> \ub85c\ub4dc, \uc608: -agentlib:hprof\n\                  \ucc38\uc870: -agentlib:jdwp=help \ubc0f -agentlib:hprof=help\n\    -agentpath:<pathname>[=<options>]\n\                  \uc804\uccb4 \uacbd\ub85c \uc774\ub984\uc73c\ub85c \uc6d0\uc2dc \uc5d0\uc774\uc804\ud2b8 \ub77c\uc774\ube0c\ub7ec\ub9ac \ub85c\ub4dc\n\    -javaagent:<jarpath>[=<options>]\n\                  Java \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4 \uc5d0\uc774\uc804\ud2b8 \ub85c\ub4dc, java.lang.instrument \ucc38\uc870\n\    -splash:<imagepath>\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.
+java.launcher.opt.footer     =\    -cp <class search path of directories and zip/jar files>\n\    -classpath <class search path of directories and zip/jar files>\n\                  \uD074\uB798\uC2A4 \uD30C\uC77C\uC744 \uAC80\uC0C9\uD560 {0}(\uC73C)\uB85C \uAD6C\uBD84\uB41C \uB514\uB809\uD1A0\uB9AC,\n\                  JAR \uC544\uCE74\uC774\uBE0C \uBC0F ZIP \uC544\uCE74\uC774\uBE0C \uBAA9\uB85D\uC785\uB2C8\uB2E4.\n\    -D<name>=<value>\n\                  \uC2DC\uC2A4\uD15C \uC18D\uC131\uC744 \uC124\uC815\uD569\uB2C8\uB2E4.\n\    -verbose[:class|gc|jni]\n\                  \uC0C1\uC138 \uC815\uBCF4 \uCD9C\uB825\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\    -version      \uC81C\uD488 \uBC84\uC804\uC744 \uC778\uC1C4\uD55C \uD6C4 \uC885\uB8CC\uD569\uB2C8\uB2E4.\n\    -version:<value>\n\                  \uC2E4\uD589\uD560 \uBC84\uC804\uC744 \uC9C0\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.\n\    -showversion  \uC81C\uD488 \uBC84\uC804\uC744 \uC778\uC1C4\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n\    -jre-restrict-search | -no-jre-restrict-search\n\                  \uBC84\uC804 \uAC80\uC0C9\uC5D0\uC11C \uC0AC\uC6A9\uC790 \uC804\uC6A9 JRE\uB97C \uD3EC\uD568/\uC81C\uC678\uD569\uB2C8\uB2E4.\n\    -? -help      \uC774 \uB3C4\uC6C0\uB9D0 \uBA54\uC2DC\uC9C0\uB97C \uC778\uC1C4\uD569\uB2C8\uB2E4.\n\    -X            \uBE44\uD45C\uC900 \uC635\uC158\uC5D0 \uB300\uD55C \uB3C4\uC6C0\uB9D0\uC744 \uC778\uC1C4\uD569\uB2C8\uB2E4.\n\    -ea[:<packagename>...|:<classname>]\n\    -enableassertions[:<packagename>...|:<classname>]\n\                  \uC138\uBD84\uC131\uC774 \uC9C0\uC815\uB41C \uAC80\uC99D\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\    -da[:<packagename>...|:<classname>]\n\    -disableassertions[:<packagename>...|:<classname>]\n\                  \uC138\uBD84\uC131\uC774 \uC9C0\uC815\uB41C \uAC80\uC99D\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\    -esa | -enablesystemassertions\n\                  \uC2DC\uC2A4\uD15C \uAC80\uC99D\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\    -dsa | -disablesystemassertions\n\                  \uC2DC\uC2A4\uD15C \uAC80\uC99D\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\    -agentlib:<libname>[=<options>]\n\                  <libname> \uACE0\uC720 \uC5D0\uC774\uC804\uD2B8 \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB97C \uB85C\uB4DC\uD569\uB2C8\uB2E4(\uC608: -agentlib:hprof).\n\                  -agentlib:jdwp=help \uBC0F -agentlib:hprof=help\uB3C4 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.\n\    -agentpath:<pathname>[=<options>]\n\                  \uC804\uCCB4 \uACBD\uB85C\uBA85\uC744 \uC0AC\uC6A9\uD558\uC5EC \uACE0\uC720 \uC5D0\uC774\uC804\uD2B8 \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB97C \uB85C\uB4DC\uD569\uB2C8\uB2E4.\n\    -javaagent:<jarpath>[=<options>]\n\                  Java \uD504\uB85C\uADF8\uB798\uBC0D \uC5B8\uC5B4 \uC5D0\uC774\uC804\uD2B8\uB97C \uB85C\uB4DC\uD569\uB2C8\uB2E4. java.lang.instrument\uB97C \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.\n\    -splash:<imagepath>\n\                  \uC774\uBBF8\uC9C0\uAC00 \uC9C0\uC815\uB41C \uC2A4\uD50C\uB798\uC2DC \uD654\uBA74\uC744 \uD45C\uC2DC\uD569\uB2C8\uB2E4.\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:<directories and zip/jar files separated by {0}>\n\                      \ubd80\ud2b8\uc2a4\ud2b8\ub7a9 \ud074\ub798\uc2a4\uc640  \uc790\uc6d0\uc758 \uac80\uc0c9 \uacbd\ub85c \uc124\uc815\n\    -Xbootclasspath/a:<directories and zip/jar files separated by {0}>\n\                      \ubd80\ud2b8\uc2a4\ud2b8\ub7a9 \ud074\ub798\uc2a4 \uacbd\ub85c \ub05d\uc5d0 \ucd94\uac00\n\    -Xbootclasspath/p:<directories and zip/jar files separated by {0}>\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:<file>    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<size>        \ucd08\uae30 Java \ud799 \ud06c\uae30 \uc124\uc815\n\    -Xmx<size>        \ucd5c\ub300 Java \ud799 \ud06c\uae30 \uc124\uc815\n\    -Xss<size>        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.X.usage=\    -Xmixed           \uD63C\uD569 \uBAA8\uB4DC\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4(\uAE30\uBCF8\uAC12).\n\    -Xint             \uD574\uC11D\uB41C \uBAA8\uB4DC\uB9CC \uC2E4\uD589\uD569\uB2C8\uB2E4.\n\    -Xbootclasspath:<directories and zip/jar files separated by {0}>\n\                      \uBD80\uD2B8\uC2A4\uD2B8\uB7A9 \uD074\uB798\uC2A4 \uBC0F \uB9AC\uC18C\uC2A4\uC5D0 \uB300\uD55C \uAC80\uC0C9 \uACBD\uB85C\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n\    -Xbootclasspath/a:<directories and zip/jar files separated by {0}>\n\                      \uBD80\uD2B8\uC2A4\uD2B8\uB7A9 \uD074\uB798\uC2A4 \uACBD\uB85C \uB05D\uC5D0 \uCD94\uAC00\uD569\uB2C8\uB2E4.\n\    -Xbootclasspath/p:<directories and zip/jar files separated by {0}>\n\                      \uBD80\uD2B8\uC2A4\uD2B8\uB7A9 \uD074\uB798\uC2A4 \uACBD\uB85C \uC55E\uC5D0 \uCD94\uAC00\uD569\uB2C8\uB2E4.\n\    -Xdiag            \uCD94\uAC00 \uC9C4\uB2E8 \uBA54\uC2DC\uC9C0\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.\n\    -Xnoclassgc       \uD074\uB798\uC2A4\uC758 \uBD88\uD544\uC694\uD55C \uC815\uBCF4 \uBAA8\uC74C\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\    -Xincgc           \uC99D\uBD84\uC801\uC778 \uBD88\uD544\uC694\uD55C \uC815\uBCF4 \uBAA8\uC74C\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\    -Xloggc:<file>    \uC2DC\uAC04 \uAE30\uB85D\uACFC \uD568\uAED8 \uD30C\uC77C\uC5D0 GC \uC0C1\uD0DC\uB97C \uAE30\uB85D\uD569\uB2C8\uB2E4.\n\    -Xbatch           \uBC31\uADF8\uB77C\uC6B4\uB4DC \uCEF4\uD30C\uC77C\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\    -Xms<size>        \uCD08\uAE30 Java \uD799 \uD06C\uAE30\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n\    -Xmx<size>        \uCD5C\uB300 Java \uD799 \uD06C\uAE30\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n\    -Xss<size>        Java \uC2A4\uB808\uB4DC \uC2A4\uD0DD \uD06C\uAE30\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n\    -Xprof            CPU \uD504\uB85C\uD30C\uC77C \uC791\uC131 \uB370\uC774\uD130\uB97C \uCD9C\uB825\uD569\uB2C8\uB2E4.\n\    -Xfuture          \uBBF8\uB798 \uAE30\uBCF8\uAC12\uC744 \uC608\uCE21\uD558\uC5EC \uAC00\uC7A5 \uC5C4\uACA9\uD55C \uAC80\uC0AC\uB97C \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\    -Xrs              Java/VM\uC5D0 \uC758\uD55C OS \uC2E0\uD638 \uC0AC\uC6A9\uC744 \uC904\uC785\uB2C8\uB2E4(\uC124\uBA85\uC11C \uCC38\uC870).\n\    -Xcheck:jni       JNI \uD568\uC218\uC5D0 \uB300\uD55C \uCD94\uAC00 \uAC80\uC0AC\uB97C \uC218\uD589\uD569\uB2C8\uB2E4.\n\    -Xshare:off       \uACF5\uC720 \uD074\uB798\uC2A4 \uB370\uC774\uD130 \uC0AC\uC6A9\uC744 \uC2DC\uB3C4\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\n\    -Xshare:auto      \uAC00\uB2A5\uD55C \uACBD\uC6B0 \uACF5\uC720 \uD074\uB798\uC2A4 \uB370\uC774\uD130\uB97C \uC0AC\uC6A9\uD569\uB2C8\uB2E4(\uAE30\uBCF8\uAC12).\n\    -Xshare:on        \uACF5\uC720 \uD074\uB798\uC2A4 \uB370\uC774\uD130\uB97C \uC0AC\uC6A9\uD574\uC57C \uD569\uB2C8\uB2E4. \uADF8\uB807\uC9C0 \uC54A\uC744 \uACBD\uC6B0 \uC2E4\uD328\uD569\uB2C8\uB2E4.\n\    -XshowSettings    \uBAA8\uB4E0 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n\    -XshowSettings:all\n\                      \uBAA8\uB4E0 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n\    -XshowSettings:vm \uBAA8\uB4E0 VM \uAD00\uB828 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n\    -XshowSettings:properties\n\                      \uBAA8\uB4E0 \uC18D\uC131 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n\    -XshowSettings:locale\n\                      \uBAA8\uB4E0 \uB85C\uCF00\uC77C \uAD00\uB828 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n\n-X \uC635\uC158\uC740 \uBE44\uD45C\uC900 \uC635\uC158\uC774\uBBC0\uB85C \uD1B5\uC9C0 \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)
-
-
+java.launcher.cls.error1=\uC624\uB958: \uAE30\uBCF8 \uD074\uB798\uC2A4 {0}\uC744(\uB97C) \uCC3E\uAC70\uB098 \uB85C\uB4DC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+java.launcher.cls.error2=\uC624\uB958: {1} \uD074\uB798\uC2A4\uC5D0\uC11C \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uAC00 {0}\uC774(\uAC00) \uC544\uB2D9\uB2C8\uB2E4. \uB2E4\uC74C \uD615\uC2DD\uC73C\uB85C \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB97C \uC815\uC758\uD558\uC2ED\uC2DC\uC624.\n\   public static void main(String[] args)
+java.launcher.cls.error3=\uC624\uB958: \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB294 {0} \uD074\uB798\uC2A4\uC5D0\uC11C void \uC720\uD615\uC758 \uAC12\uC744 \uBC18\uD658\uD574\uC57C \uD569\uB2C8\uB2E4. \n\uB2E4\uC74C \uD615\uC2DD\uC73C\uB85C \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB97C \uC815\uC758\uD558\uC2ED\uC2DC\uC624.\n\   public static void main(String[] args)
+java.launcher.cls.error4=\uC624\uB958: {0} \uD074\uB798\uC2A4\uC5D0\uC11C \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uB2E4\uC74C \uD615\uC2DD\uC73C\uB85C \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB97C \uC815\uC758\uD558\uC2ED\uC2DC\uC624.\n\   public static void main(String[] args)
+java.launcher.jar.error1=\uC624\uB958: {0} \uD30C\uC77C\uC744 \uC5F4\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC608\uC0C1\uCE58 \uC54A\uC740 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
+java.launcher.jar.error2={0}\uC5D0\uC11C Manifest\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+java.launcher.jar.error3={0}\uC5D0 \uAE30\uBCF8 Manifest \uC18D\uC131\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.
--- a/jdk/src/share/classes/sun/launcher/resources/launcher_pt_BR.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/launcher/resources/launcher_pt_BR.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -24,93 +24,25 @@
 #
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.header  =   Usage: {0} [-options] class [args...]\n\
-\           (to execute a class)\n   or  {0} [-options] -jar jarfile [args...]\n\
-\           (to execute a jar file)\n\
-where options include:\n
+java.launcher.opt.header  =   Uso: {0} [-options] class [args...]\n\           (para executar uma classe)\n   ou  {0} [-options] -jar jarfile [args...]\n\           (para executar um arquivo jar)\nem que as op\u00E7\u00F5es incluem:\n
 
-java.launcher.opt.datamodel  =\    -d{0}\t  use a {0}-bit data model if available\n
-java.launcher.opt.vmselect   =\    {0}\t  to select the "{1}" VM\n
-java.launcher.opt.hotspot    =\    {0}\t  is a synonym for the "{1}" VM  [deprecated]\n
+java.launcher.opt.datamodel  =\    -d{0}\t  usar um modelo de dados de {0} bits, se estiver dispon\u00EDvel\n
+java.launcher.opt.vmselect   =\    {0}\t  para selecionar a VM "{1}"\n
+java.launcher.opt.hotspot    =\    {0}\t  \u00E9 um sin\u00F4nimo da VM "{1}" [obsoleto]\n
 
-java.launcher.ergo.message1  =\                  The default VM is {0}
-java.launcher.ergo.message2  =\                  because you are running on a server-class machine.\n
+java.launcher.ergo.message1  =\                  A VM default \u00E9 {0}
+java.launcher.ergo.message2  =\                  porque a execu\u00E7\u00E3o est\u00E1 sendo feita em uma m\u00E1quina de classe de servidor.\n
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.footer     =\    -cp <class search path of directories and zip/jar files>\n\
-\    -classpath <class search path of directories and zip/jar files>\n\
-\                  A {0} separated list of directories, JAR archives,\n\
-\                  and ZIP archives to search for class files.\n\
-\    -D<name>=<value>\n\
-\                  set a system property\n\
-\    -verbose[:class|gc|jni]\n\
-\                  enable verbose output\n\
-\    -version      print product version and exit\n\
-\    -version:<value>\n\
-\                  require the specified version to run\n\
-\    -showversion  print product version and continue\n\
-\    -jre-restrict-search | -no-jre-restrict-search\n\
-\                  include/exclude user private JREs in the version search\n\
-\    -? -help      print this help message\n\
-\    -X            print help on non-standard options\n\
-\    -ea[:<packagename>...|:<classname>]\n\
-\    -enableassertions[:<packagename>...|:<classname>]\n\
-\                  enable assertions with specified granularity\n\
-\    -da[:<packagename>...|:<classname>]\n\
-\    -disableassertions[:<packagename>...|:<classname>]\n\
-\                  disable assertions with specified granularity\n\
-\    -esa | -enablesystemassertions\n\
-\                  enable system assertions\n\
-\    -dsa | -disablesystemassertions\n\
-\                  disable system assertions\n\
-\    -agentlib:<libname>[=<options>]\n\
-\                  load native agent library <libname>, e.g. -agentlib:hprof\n\
-\                  see also, -agentlib:jdwp=help and -agentlib:hprof=help\n\
-\    -agentpath:<pathname>[=<options>]\n\
-\                  load native agent library by full pathname\n\
-\    -javaagent:<jarpath>[=<options>]\n\
-\                  load Java programming language agent, see java.lang.instrument\n\
-\    -splash:<imagepath>\n\
-\                  show splash screen with specified image\n\
-See http://java.sun.com/javase/reference for more details.
+java.launcher.opt.footer     =\    -cp <caminho de pesquisa da classe dos diret\u00F3rios e arquivos zip/jar>\n\    -classpath <caminho de pesquisa da classe dos diret\u00F3rios e arquivos zip/jar>\n\                  Uma lista separada por {0} de diret\u00F3rios, archives JAR\n\                  e archives ZIP nos quais ser\u00E3o procurados os arquivos de classe.\n\    -D<nome>=<valor>\n\                  define uma propriedade do sistema\n\    -verbose[:classe|gc|jni]\n\                  ativa a sa\u00EDda detalhada\n\    -version      imprime a vers\u00E3o do produto e sai do programa\n\    -version:<valor>\n\                  requer a execu\u00E7\u00E3o da vers\u00E3o especificada\n\    -showversion  imprime a vers\u00E3o do produto e continua\n\    -jre-restrict-search | -no-jre-restrict-search\n\                  inclui/exclui JREs privados do usu\u00E1rio na pesquisa de vers\u00E3o\n\    -? -help      imprime esta mensagem de ajuda\n\    -X            imprime a ajuda sobre op\u00E7\u00F5es n\u00E3o padronizadas\n\    -ea[:<nome do pacote>...|:<nome da classe>]\n\    -enableassertions[:<nome do pacote>...|:<nome da classe>]\n\                  ativa asser\u00E7\u00F5es com granularidade especificada\n\    -da[:<nome do pacote>...|:<nome da classe>]\n\    -disableassertions[:<nome do pacote>...|:<nome da classe>]\n\                  desativa asser\u00E7\u00F5es com granularidade especificada\n\    -esa | -enablesystemassertions\n\                  ativa asser\u00E7\u00F5es do sistema\n\    -dsa | -disablesystemassertions\n\                  desativa asser\u00E7\u00F5es do sistema\n\    -agentlib:<nome da biblioteca>[=<op\u00E7\u00F5es>]\n\                  carrega a biblioteca de agentes nativa <nome da biblioteca>, por exempl: -agentlib:hprof\n\                  consulte tamb\u00E9m: -agentlib:jdwp=help e -agentlib:hprof=help\n\    -agentpath:<nome do caminho>[=<op\u00E7\u00F5es>]\n\                  carrega a biblioteca de agentes nativa com base no nome do caminho completo\n\    -javaagent:<caminho do arquivo jar>[=<op\u00E7\u00F5es>]\n\                  carrega o agente da linguagem de programa\u00E7\u00E3o Java; consulte java.lang.instrument\n\    -splash:<caminho da imagem>\n\                  mostra a tela de abertura com a imagem especificada\nConsulte http://java.sun.com/javase/reference para obter mais detalhes.
 
 # Translators please note do not translate the options themselves
-java.launcher.X.usage=\
-\    -Xmixed           mixed mode execution (default)\n\
-\    -Xint             interpreted mode execution only\n\
-\    -Xbootclasspath:<directories and zip/jar files separated by {0}>\n\
-\                      set search path for bootstrap classes and resources\n\
-\    -Xbootclasspath/a:<directories and zip/jar files separated by {0}>\n\
-\                      append to end of bootstrap class path\n\
-\    -Xbootclasspath/p:<directories and zip/jar files separated by {0}>\n\
-\                      prepend in front of bootstrap class path\n\
-\    -Xnoclassgc       disable class garbage collection\n\
-\    -Xincgc           enable incremental garbage collection\n\
-\    -Xloggc:<file>    log GC status to a file with time stamps\n\
-\    -Xbatch           disable background compilation\n\
-\    -Xms<size>        set initial Java heap size\n\
-\    -Xmx<size>        set maximum Java heap size\n\
-\    -Xss<size>        set java thread stack size\n\
-\    -Xprof            output cpu profiling data\n\
-\    -Xfuture          enable strictest checks, anticipating future default\n\
-\    -Xrs              reduce use of OS signals by Java/VM (see documentation)\n\
-\    -Xcheck:jni       perform additional checks for JNI functions\n\
-\    -Xshare:off       do not attempt to use shared class data\n\
-\    -Xshare:auto      use shared class data if possible (default)\n\
-\    -Xshare:on        require using shared class data, otherwise fail.\n\n\
-The -X options are non-standard and subject to change without notice.\n
+java.launcher.X.usage=\    -Xmixed           execu\u00E7\u00E3o no modo misto (default)\n\    -Xint             execu\u00E7\u00E3o somente no modo interpretado\n\    -Xbootclasspath:<diret\u00F3rios e arquivos zip/jar separados por {0}>\n\                      define o caminho de pesquisa para classes e recursos de inicializa\u00E7\u00E3o\n\    -Xbootclasspath/a:<diret\u00F3rios e arquivos zip/jar separados por {0}>\n\                      anexa no final do caminho da classe de inicializa\u00E7\u00E3o\n\    -Xbootclasspath/p:<diret\u00F3rios e arquivos zip/jar separados por {0}>\n\                      anexa no in\u00EDcio do caminho da classe de inicializa\u00E7\u00E3o\n\    -Xdiag            mostra mensagens de diagn\u00F3stico adicionais\n\    -Xnoclassgc       desativa a coleta de lixo da classe\n\    -Xincgc           ativa a coleta de lixo incremental\n\    -Xloggc:<arquivo>    registra o status do GC status em um arquivo com marca\u00E7\u00F5es de data e hor\u00E1rio\n\    -Xbatch           desativa a compila\u00E7\u00E3o em segundo plano\n\    -Xms<tamanho>        define o tamanho inicial do heap Java\n\    -Xmx<tamanho>        define o tamanho m\u00E1ximo do heap Java\n\    -Xss<tamanho>        define o tamanho da pilha de threads java\n\    -Xprof            produz dados de perfil da cpu\n\    -Xfuture          ativa verifica\u00E7\u00F5es de n\u00EDvel m\u00E1ximo de exig\u00EAncia, prevendo o valor default futuro\n\    -Xrs              reduz o uso de sinais do SO pelo(a) Java/VM (consulte a documenta\u00E7\u00E3o)\n\    -Xcheck:jni       executa verifica\u00E7\u00F5es adicionais de fun\u00E7\u00F5es da JNI\n\    -Xshare:off       n\u00E3o tenta usar dados da classe compartilhada\n\    -Xshare:auto      se poss\u00EDvel, usa dados da classe compartilhada (default)\n\    -Xshare:on        requer o uso de dados da classe compartilhada, caso contr\u00E1rio haver\u00E1 falha.\n\    -XshowSettings    mostra todas as defini\u00E7\u00F5es e continua\n\    -XshowSettings:all\n\                      mostra todas as defini\u00E7\u00F5es e continua\n\    -XshowSettings:vm mostra todas as defini\u00E7\u00F5es relacionadas \u00E0 vm e continua\n\    -XshowSettings:properties\n\                      mostra todas as defini\u00E7\u00F5es da propriedade e continua\n\    -XshowSettings:locale\n\                      mostra todas as defini\u00E7\u00F5es relativas \u00E0s configura\u00E7\u00F5es regionais e continua\n\nAs -X options n\u00E3o s\u00E3o padronizadas e est\u00E3o sujeitas a altera\u00E7\u00F5es sem aviso.\n
 
-java.launcher.cls.error1=\
-    Error: Could not find main class {0}
-java.launcher.cls.error2=\
-    Error: Main method is not {0} in class {1}, please define the main method as:\n\
-\   public static void main(String[] args)
-java.launcher.cls.error3=\
-    Error: Main method must return a value of type void in class {0}, please \n\
-    define the main method as:\n\
-\   public static void main(String[] args)
-java.launcher.cls.error4=\
-    Error: Main method not found in class {0}, please define the main method as:\n\
-\   public static void main(String[] args)
-
-
+java.launcher.cls.error1=Erro: N\u00E3o foi poss\u00EDvel localizar nem carregar a classe principal {0}
+java.launcher.cls.error2=Erro: O m\u00E9todo principal n\u00E3o \u00E9 {0} na classe {1}; defina o m\u00E9todo principal como:\n\   public static void main(String[] args)
+java.launcher.cls.error3=Erro: O m\u00E9todo principal deve retornar um valor do tipo void na classe {0}; \ndefina o m\u00E9todo principal como:\n\   public static void main(String[] args)
+java.launcher.cls.error4=Erro: O m\u00E9todo principal n\u00E3o foi encontrado na classe {0}; defina o m\u00E9todo principal como:\n\   public static void main(String[] args)
+java.launcher.jar.error1=Erro: ocorreu um erro inesperado ao tentar abrir o arquivo {0}
+java.launcher.jar.error2=manifesto n\u00E3o encontrado em {0}
+java.launcher.jar.error3=nenhum atributo de manifesto principal em {0}
--- a/jdk/src/share/classes/sun/launcher/resources/launcher_sv.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/launcher/resources/launcher_sv.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -24,24 +24,25 @@
 #
 
 # 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.header  =   Syntax: {0} [-options] class [args...]\n\           (f\u00F6r att k\u00F6ra en klass)\n   eller  {0} [-options] -jar jarfile [args...]\n\           (f\u00F6r att k\u00F6ra en jar-fil)\nd\u00E4r alternativen omfattar:\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.opt.datamodel  =\    -d{0}\t  anv\u00E4nd en {0}-bitsdatamodell om det finns\n
+java.launcher.opt.vmselect   =\    {0}\t  f\u00F6r att v\u00E4lja "{1}" VM\n
+java.launcher.opt.hotspot    =\    {0}\t  \u00E4r en synonym f\u00F6r "{1}" VM  [deprecated]\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
+java.launcher.ergo.message1  =\                  Standard-VM \u00E4r {0}
+java.launcher.ergo.message2  =\                  eftersom du k\u00F6r en serverklassmaskin.\n
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.footer     =\    -cp <klass\u00f6kv\u00e4g till kataloger och zip-/jar-filers>\n\    -classpath <klass\u00f6kv\u00e4g till kataloger och zip-/jar-filer>\n\                  en med {0} avgr\u00e4nsad lista \u00f6ver kataloger, JAR-arkiv\n\                  och ZIP-arkiv f\u00f6r s\u00f6kning efter klassfiler.\n\    -D<namn>=<v\u00e4rde>\n\                  ange en systemegenskap\n\    -verbose[:klass|gc|jni]\n\                  visa mer text\n\    -version      skriv ut produktversionen och avsluta\n\    -version:<value>\n\                  kr\u00e4ver den angivna versionen f\u00f6r att kunna k\u00f6ras\n\    -showversion  skriv ut produktversion och forts\u00e4tt\n\    -jre-restrict-search | -no-jre-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[:<paketnamn>...|:<klassnamn>]\n\    -enableassertions[:<paketnamn>...|:<klassnamn>]\n\                  aktivera bekr\u00e4ftelser med angiven precision\n\    -da[:<paketnamn>...|:<klassnamn>]\n\    -disableassertions[:<paketnamn>...|:<klassnamn>]\n\                  inaktivera bekr\u00e4ftelser med angiven precision\n\    -esa | -enablesystemassertions\n\                  aktivera systembekr\u00e4ftelser\n\    -dsa | -disablesystemassertions\n\                  inaktivera systembekr\u00e4ftelser\n\    -agentlib:<biblnamn>[=<alternativ>]\n\                  l\u00e4s in det interna agentbiblioteket <biblnamn>, t.ex. -agentlib:hprof\n\                  se \u00e4ven, -agentlib:jdwp=help och -agentlib:hprof=help\n\    -agentpath:<filnamn>[=<alternativ>]\n\                  l\u00e4s in internt agentbibliotek utifr\u00e5n fullst\u00e4ndig s\u00f6kv\u00e4g\n\    -javaagent:<jar-s\u00f6kv\u00e4g>[=<alternativ>]\n\                  l\u00e4s in agenten f\u00f6r programmeringsspr\u00e5ket Java, se java.lang.instrument\n\    -splash:<bilds\u00f6kv\u00e4g>\n\                  visa v\u00e4lkomstf\u00f6nster med angiven bild\nMer information finns p\u00e5 http://java.sun.com/javase/reference.
+java.launcher.opt.footer     =\    -cp <klass\u00F6kv\u00E4g f\u00F6r kataloger och zip-/jar-filer>\n\    -classpath <klass\u00F6kv\u00E4g f\u00F6r kataloger och zip-/jar-filer>\n\                  En {0}-separerad lista med kataloger, JAR-arkiv,\n\                  och ZIP-arkiv f\u00F6r s\u00F6kning efter klassfiler.\n\    -D<name>=<value>\n\                  ange en systemegenskap\n\    -verbose[:class|gc|jni]\n\                  aktivera utf\u00F6rliga utdata\n\    -version      skriv ut produktversionen och avsluta\n\    -version:<value>\n\                  beg\u00E4r den specifika versionen som ska k\u00F6ras\n\    -showversion  skriv ut produktversionen och forts\u00E4tt\n\    -jre-restrict-search | -no-jre-restrict-search\n\                  inkludera/exkludera anv\u00E4ndarprivata JRE:er i versions\u00F6kningen\n\    -? -help      skriv ut det h\u00E4r hj\u00E4lpmeddelandet\n\    -X            skriv ut hj\u00E4lp f\u00F6r icke-standardalternativ\n\    -ea[:<packagename>...|:<classname>]\n\    -enableassertions[:<packagename>...|:<classname>]\n\                  aktivera verifiering med angiven detaljgrad\n\    -da[:<packagename>...|:<classname>]\n\    -disableassertions[:<packagename>...|:<classname>]\n\                  avaktivera verifiering med angiven detaljgrad\n\    -esa | -enablesystemassertions\n\                  aktivera systemverifieringar\n\    -dsa | -disablesystemassertions\n\                  avaktivera systemverifieringar\n\    -agentlib:<libname>[=<options>]\n\                  ladda ursprungligt agentbibliotek <libname>, e.g. -agentlib:hprof\n\                  se \u00E4ven -agentlib:jdwp=help och -agentlib:hprof=help\n\    -agentpath:<pathname>[=<options>]\n\                  ladda ursprungligt agentbibliotek med helt s\u00F6kv\u00E4gsnamn\n\    -javaagent:<jarpath>[=<options>]\n\                  ladda Java-programspr\u00E5ksagent, se java.lang.instrument\n\    -splash:<imagepath>\n\                  visa v\u00E4lkomstsk\u00E4rm 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:<kataloger och zip-/jar-filer som avgr\u00e4nsas med {0}>\n\                      ange s\u00f6kv\u00e4g f\u00f6r bootstrap-klasser och -resurser\n\    -Xbootclasspath/a:<kataloger och zip-/jar-filer som avgr\u00e4nsas med {0}>\n\                      l\u00e4gg till p\u00e5 slutet av s\u00f6kv\u00e4gen till bootstrap-klassen\n\    -Xbootclasspath/p:<kataloger och zip-/jar-filer som avgr\u00e4nsas med {0}>\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:<file>    logga GC-status till en fil med tidsst\u00e4mpel\n\    -Xbatch           inaktivera kompilering i bakgrunden\n\    -Xms<size>        st\u00e4ll in ursprunglig heapstorlek f\u00f6r Java\n\    -Xmx<size>        st\u00e4ll in st\u00f6rsta heapstorlek f\u00f6r Java\n\    -Xss<size>        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.X.usage=\    -Xmixed           k\u00F6rning i blandat l\u00E4ge (standard)\n\    -Xint             endast k\u00F6rning i tolkat l\u00E4ge\n\    -Xbootclasspath:<kataloger och zip-/jar-filer separeras med {0}>\n\                      ange s\u00F6kv\u00E4g f\u00F6r programladdningsklasser och -resurser\n\    -Xbootclasspath/a:<kataloger och zip-/jar-filer separeras med {0}>\n\                      l\u00E4gg till i slutet av programladdningsklassens s\u00F6kv\u00E4g\n\    -Xbootclasspath/p:<kataloger och zip-/jar-filer separeras med {0}>\n\                      l\u00E4gg till i b\u00F6rjan av programladdningsklassens s\u00F6kv\u00E4g\n\    -Xdiag            visa ytterligare diagnostiska meddelanden\n\    -Xnoclassgc       avaktivera klassens skr\u00E4pinsamling\n\    -Xincgc           aktivera inkrementell skr\u00E4pinsamling\n\    -Xloggc:<file>    logga GC-status till en fil med tidsst\u00E4mplar\n\    -Xbatch           avaktivera bakgrundskompilering\n\    -Xms<size>        ange initial storlek f\u00F6r Java-heap\n\    -Xmx<size>        ange maximal storlek f\u00F6r Java-heap\n\    -Xss<size>        ange storlek f\u00F6r java-tr\u00E5dsstack\n\    -Xprof            utdata f\u00F6r processorprofilering\n\    -Xfuture          aktivera str\u00E4ngaste kontroller, f\u00F6rv\u00E4ntad framtida standard\n\    -Xrs              minska OS-signalanv\u00E4ndning av Java/VM (se dokumentation)\n\    -Xcheck:jni       utf\u00F6r ytterligare kontroller f\u00F6r JNI-funktioner\n\    -Xshare:off       anv\u00E4nd inte delad klassdata\n\    -Xshare:auto      anv\u00E4nd delad klassdata om det g\u00E5r (standard)\n\    -Xshare:on        kr\u00E4v att delad klassdata anv\u00E4nds, annars slutf\u00F6rs inte.\n\    -XshowSettings    visa alla inst\u00E4llningar och forts\u00E4tt\n\    -XshowSettings:all\n\                      visa alla inst\u00E4llningar och forts\u00E4tt\n\    -XshowSettings:vm visa alla vm-relaterade inst\u00E4llningar och forts\u00E4tt\n\    -XshowSettings:properties\n\                      visa alla egenskapsinst\u00E4llningar och forts\u00E4tt\n\    -XshowSettings:locale\n\                      visa alla spr\u00E5krelaterade inst\u00E4llningar och forts\u00E4tt\n\n-X-alternativen \u00E4r inte standard och kan \u00E4ndras utan f\u00F6reg\u00E5ende meddelande.\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)
-
-
+java.launcher.cls.error1=Fel: Hittar inte eller kan inte ladda huvudklassen {0}
+java.launcher.cls.error2=Fel: Huvudmetoden \u00E4r inte {0} i klassen {1}, definiera huvudmetoden som:\n\   public static void main(String[] args)
+java.launcher.cls.error3=Fel: Huvudmetoden m\u00E5ste returnera ett v\u00E4rde av typen void i klassen {0}, \ndefiniera huvudmetoden som:\n\   public static void main(String[] args)
+java.launcher.cls.error4=Fel: Huvudmetoden finns inte i klassen {0}, definiera huvudmetoden som:\n\   public static void main(String[] args)
+java.launcher.jar.error1=Fel: Ett ov\u00E4ntat fel intr\u00E4ffade n\u00E4r filen {0} skulle \u00F6ppnas
+java.launcher.jar.error2=manifest finns inte i {0}
+java.launcher.jar.error3=inget huvudmanifestattribut i {0}
--- a/jdk/src/share/classes/sun/launcher/resources/launcher_zh_CN.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/launcher/resources/launcher_zh_CN.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -24,24 +24,25 @@
 #
 
 # 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.header  =   \u7528\u6CD5: {0} [-options] class [args...]\n\           (\u6267\u884C\u7C7B)\n   \u6216  {0} [-options] -jar jarfile [args...]\n\           (\u6267\u884C jar \u6587\u4EF6)\n\u5176\u4E2D\u9009\u9879\u5305\u62EC:\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.opt.datamodel  =\    -d{0}\t  \u4F7F\u7528 {0} \u4F4D\u6570\u636E\u6A21\u578B (\u5982\u679C\u53EF\u7528)\n
+java.launcher.opt.vmselect   =\    {0}\t  \u9009\u62E9 "{1}" VM\n
+java.launcher.opt.hotspot    =\    {0}\t  \u662F "{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
+java.launcher.ergo.message1  =\                  \u9ED8\u8BA4 VM \u662F {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<name>=<value>\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:<value>\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 | -no-jre-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[:<packagename>...|:<classname>]\n\    -enableassertions[:<packagename>...|:<classname>]\n\                  \u542f\u7528\u6307\u5b9a\u7c92\u5ea6\u7684\u65ad\u8a00\n\    -da[:<packagename>...|:<classname>]\n\    -disableassertions[:<packagename>...|:<classname>]\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:<libname>[=<options>]\n\                  \u88c5\u5165\u672c\u673a\u4ee3\u7406\u5e93 <libname>\uff0c\u4f8b\u5982\uff1a-agentlib:hprof\n\                  \u53e6\u8bf7\u53c2\u89c1 -agentlib:jdwp=help \u548c -agentlib:hprof=help\n\    -agentpath:<pathname>[=<options>]\n\                  \u4ee5\u5168\u8def\u5f84\u540d\u88c5\u5165\u672c\u673a\u4ee3\u7406\u5e93\n\    -javaagent:<jarpath>[=<options>]\n\                  \u88c5\u5165 Java \u7f16\u7a0b\u8bed\u8a00\u4ee3\u7406\uff0c\u8bf7\u53c2\u89c1 java.lang.instrument\n\    -splash:<imagepath>\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
+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\                  \u7528 {0} \u5206\u9694\u7684\u76EE\u5F55, JAR \u6863\u6848\n\                  \u548C ZIP \u6863\u6848\u5217\u8868, \u7528\u4E8E\u641C\u7D22\u7C7B\u6587\u4EF6\u3002\n\    -D<name>=<value>\n\                  \u8BBE\u7F6E\u7CFB\u7EDF\u5C5E\u6027\n\    -verbose[:class|gc|jni]\n\                  \u542F\u7528\u8BE6\u7EC6\u8F93\u51FA\n\    -version      \u8F93\u51FA\u4EA7\u54C1\u7248\u672C\u5E76\u9000\u51FA\n\    -version:<value>\n\                  \u9700\u8981\u6307\u5B9A\u7684\u7248\u672C\u624D\u80FD\u8FD0\u884C\n\    -showversion  \u8F93\u51FA\u4EA7\u54C1\u7248\u672C\u5E76\u7EE7\u7EED\n\    -jre-restrict-search | -no-jre-restrict-search\n\                  \u5728\u7248\u672C\u641C\u7D22\u4E2D\u5305\u62EC/\u6392\u9664\u7528\u6237\u4E13\u7528 JRE\n\    -? -help      \u8F93\u51FA\u6B64\u5E2E\u52A9\u6D88\u606F\n\    -X            \u8F93\u51FA\u975E\u6807\u51C6\u9009\u9879\u7684\u5E2E\u52A9\n\    -ea[:<packagename>...|:<classname>]\n\    -enableassertions[:<packagename>...|:<classname>]\n\                  \u6309\u6307\u5B9A\u7684\u7C92\u5EA6\u542F\u7528\u65AD\u8A00\n\    -da[:<packagename>...|:<classname>]\n\    -disableassertions[:<packagename>...|:<classname>]\n\                  \u7981\u7528\u5177\u6709\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:<libname>[=<options>]\n\                  \u52A0\u8F7D\u672C\u673A\u4EE3\u7406\u5E93 <libname>, \u4F8B\u5982 -agentlib:hprof\n\                  \u53E6\u8BF7\u53C2\u9605 -agentlib:jdwp=help \u548C -agentlib:hprof=help\n\    -agentpath:<pathname>[=<options>]\n\                  \u6309\u5B8C\u6574\u8DEF\u5F84\u540D\u52A0\u8F7D\u672C\u673A\u4EE3\u7406\u5E93\n\    -javaagent:<jarpath>[=<options>]\n\                  \u52A0\u8F7D Java \u7F16\u7A0B\u8BED\u8A00\u4EE3\u7406, \u8BF7\u53C2\u9605 java.lang.instrument\n\    -splash:<imagepath>\n\                  \u4F7F\u7528\u6307\u5B9A\u7684\u56FE\u50CF\u663E\u793A\u542F\u52A8\u5C4F\u5E55\n\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605 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.X.usage=\    -Xmixed           \u6DF7\u5408\u6A21\u5F0F\u6267\u884C (\u9ED8\u8BA4)\n\    -Xint             \u4EC5\u89E3\u91CA\u6A21\u5F0F\u6267\u884C\n\    -Xbootclasspath:<\u7528 {0} \u5206\u9694\u7684\u76EE\u5F55\u548C zip/jar \u6587\u4EF6>\n\                      \u8BBE\u7F6E\u641C\u7D22\u8DEF\u5F84\u4EE5\u5F15\u5BFC\u7C7B\u548C\u8D44\u6E90\n\    -Xbootclasspath/a:<\u7528 {0} \u5206\u9694\u7684\u76EE\u5F55\u548C zip/jar \u6587\u4EF6>\n\                      \u9644\u52A0\u5728\u5F15\u5BFC\u7C7B\u8DEF\u5F84\u672B\u5C3E\n\    -Xbootclasspath/p:<\u7528 {0} \u5206\u9694\u7684\u76EE\u5F55\u548C zip/jar \u6587\u4EF6>\n\                      \u7F6E\u4E8E\u5F15\u5BFC\u7C7B\u8DEF\u5F84\u4E4B\u524D\n\    -Xdiag            \u663E\u793A\u9644\u52A0\u8BCA\u65AD\u6D88\u606F\n\    -Xnoclassgc       \u7981\u7528\u7C7B\u5783\u573E\u6536\u96C6\n\    -Xincgc           \u542F\u7528\u589E\u91CF\u5783\u573E\u6536\u96C6\n\    -Xloggc:<file>    \u5C06 GC \u72B6\u6001\u8BB0\u5F55\u5728\u6587\u4EF6\u4E2D (\u5E26\u65F6\u95F4\u6233)\n\    -Xbatch           \u7981\u7528\u540E\u53F0\u7F16\u8BD1\n\    -Xms<size>        \u8BBE\u7F6E\u521D\u59CB Java \u5806\u5927\u5C0F\n\    -Xmx<size>        \u8BBE\u7F6E\u6700\u5927 Java \u5806\u5927\u5C0F\n\    -Xss<size>        \u8BBE\u7F6E Java \u7EBF\u7A0B\u5806\u6808\u5927\u5C0F\n\    -Xprof            \u8F93\u51FA cpu \u914D\u7F6E\u6587\u4EF6\u6570\u636E\n\    -Xfuture          \u542F\u7528\u6700\u4E25\u683C\u7684\u68C0\u67E5, \u9884\u671F\u5C06\u6765\u7684\u9ED8\u8BA4\u503C\n\    -Xrs              \u51CF\u5C11 Java/VM \u5BF9\u64CD\u4F5C\u7CFB\u7EDF\u4FE1\u53F7\u7684\u4F7F\u7528 (\u8BF7\u53C2\u9605\u6587\u6863)\n\    -Xcheck:jni       \u5BF9 JNI \u51FD\u6570\u6267\u884C\u5176\u4ED6\u68C0\u67E5\n\    -Xshare:off       \u4E0D\u5C1D\u8BD5\u4F7F\u7528\u5171\u4EAB\u7C7B\u6570\u636E\n\    -Xshare:auto      \u5728\u53EF\u80FD\u7684\u60C5\u51B5\u4E0B\u4F7F\u7528\u5171\u4EAB\u7C7B\u6570\u636E (\u9ED8\u8BA4)\n\    -Xshare:on        \u8981\u6C42\u4F7F\u7528\u5171\u4EAB\u7C7B\u6570\u636E, \u5426\u5219\u5C06\u5931\u8D25\u3002\n\    -XshowSettings    \u663E\u793A\u6240\u6709\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n\    -XshowSettings:all\n\                      \u663E\u793A\u6240\u6709\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n\    -XshowSettings:vm \u663E\u793A\u6240\u6709\u4E0E vm \u76F8\u5173\u7684\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n\    -XshowSettings:properties\n\                      \u663E\u793A\u6240\u6709\u5C5E\u6027\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n\    -XshowSettings:locale\n\                      \u663E\u793A\u6240\u6709\u4E0E\u533A\u57DF\u8BBE\u7F6E\u76F8\u5173\u7684\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n\n-X \u9009\u9879\u662F\u975E\u6807\u51C6\u9009\u9879, \u5982\u6709\u66F4\u6539, \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)
-
-
+java.launcher.cls.error1=\u9519\u8BEF: \u627E\u4E0D\u5230\u6216\u65E0\u6CD5\u52A0\u8F7D\u4E3B\u7C7B {0}
+java.launcher.cls.error2=\u9519\u8BEF: \u4E3B\u65B9\u6CD5\u4E0D\u662F\u7C7B {1} \u4E2D\u7684{0}, \u8BF7\u5C06\u4E3B\u65B9\u6CD5\u5B9A\u4E49\u4E3A:\n\   public static void main(String[] args)
+java.launcher.cls.error3=\u9519\u8BEF: \u4E3B\u65B9\u6CD5\u5FC5\u987B\u8FD4\u56DE\u7C7B {0} \u4E2D\u7684\u7A7A\u7C7B\u578B\u503C, \u8BF7\n\u5C06\u4E3B\u65B9\u6CD5\u5B9A\u4E49\u4E3A:\n\   public static void main(String[] args)
+java.launcher.cls.error4=\u9519\u8BEF: \u5728\u7C7B {0} \u4E2D\u627E\u4E0D\u5230\u4E3B\u65B9\u6CD5, \u8BF7\u5C06\u4E3B\u65B9\u6CD5\u5B9A\u4E49\u4E3A:\n\   public static void main(String[] args)
+java.launcher.jar.error1=\u9519\u8BEF: \u5C1D\u8BD5\u6253\u5F00\u6587\u4EF6{0}\u65F6\u51FA\u73B0\u610F\u5916\u9519\u8BEF
+java.launcher.jar.error2=\u5728{0}\u4E2D\u627E\u4E0D\u5230\u6E05\u5355
+java.launcher.jar.error3={0}\u4E2D\u6CA1\u6709\u4E3B\u6E05\u5355\u5C5E\u6027
--- a/jdk/src/share/classes/sun/launcher/resources/launcher_zh_TW.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/launcher/resources/launcher_zh_TW.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -24,24 +24,25 @@
 #
 
 # 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.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\u9078\u9805\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.opt.datamodel  =\    -d{0}\t  \u4F7F\u7528 {0} \u4F4D\u5143\u8CC7\u6599\u6A21\u578B (\u5982\u679C\u6709\u7684\u8A71)\n
+java.launcher.opt.vmselect   =\    {0}\t  \u9078\u53D6 "{1}" VM\n
+java.launcher.opt.hotspot    =\    {0}\t  \u662F "{1}" VM \u7684\u540C\u7FA9\u5B57  [\u5DF2\u4E0D\u518D\u4F7F\u7528]\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
+java.launcher.ergo.message1  =\                  \u9810\u8A2D\u7684 VM \u70BA {0}
+java.launcher.ergo.message2  =\                  \u56E0\u70BA\u60A8\u6B63\u5728\u4F3A\u670D\u5668\u985E\u5225\u6A5F\u5668\u4E0A\u57F7\u884C\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<name>=<value>\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:<value>\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 | -no-jre-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[:<packagename>...|:<classname>]\n\    -enableassertions[:<packagename>...|:<classname>]\n\                  \u555f\u7528\u5177\u6709\u6307\u5b9a\u9846\u7c92\u6027\u7684\u5ba3\u544a\n\    -da[:<packagename>...|:<classname>]\n\    -disableassertions[:<packagename>...|:<classname>]\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:<libname>[=<options>]\n\                  \u8f09\u5165\u539f\u751f\u4ee3\u7406\u7a0b\u5f0f\u7a0b\u5f0f\u5eab <libname>\uff0c\u4f8b\u5982 -agentlib:hprof\n\                  \u53e6\u8acb\u53c3\u95b1 -agentlib:jdwp=help \u548c -agentlib:hprof=help\n\    -agentpath:<pathname>[=<options>]\n\                  \u4f9d\u64da\u5b8c\u6574\u8def\u5f91\u540d\u7a31\u8f09\u5165\u539f\u751f\u4ee3\u7406\u7a0b\u5f0f\n\    -javaagent:<jarpath>[=<options>]\n\                  \u8f09\u5165 Java \u7a0b\u5f0f\u8a2d\u8a08\u8a9e\u8a00\u4ee3\u7406\u7a0b\u5f0f\uff0c\u8acb\u53c3\u95b1 java.lang.instrument\n\    -splash:<imagepath>\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
+java.launcher.opt.footer     =\    -cp <class search path of directories and zip/jar files>\n\    -classpath <class search path of directories and zip/jar files>\n\                  \u641C\u5C0B\u985E\u5225\u6A94\u6848\u4E4B\u76EE\u9304\u3001JAR \u5B58\u6A94\n\                  \u548C ZIP \u5B58\u6A94\u7684\u4EE5{0}\u5206\u9694\u7684\u6E05\u55AE\u3002\n\    -D<name>=<value>\n\                  \u8A2D\u5B9A\u7CFB\u7D71\u5C6C\u6027\n\    -verbose[:class|gc|jni]\n\                  \u555F\u7528\u8A73\u7D30\u8CC7\u8A0A\u8F38\u51FA\n\    -version      \u5217\u5370\u7522\u54C1\u7248\u672C\u4E26\u7D50\u675F\n\    -version:<value>\n\                  \u9700\u8981\u6307\u5B9A\u7684\u7248\u672C\u624D\u80FD\u57F7\u884C\n\    -showversion  \u5217\u5370\u7522\u54C1\u7248\u672C\u4E26\u7E7C\u7E8C\n\    -jre-restrict-search | -no-jre-restrict-search\n\                  \u5728\u7248\u672C\u641C\u5C0B\u4E2D\u5305\u62EC/\u6392\u9664\u4F7F\u7528\u8005\u5C08\u7528 JRE\n\    -? -help      \u5217\u5370\u6B64\u8AAA\u660E\u8A0A\u606F\n\    -X            \u5217\u5370\u975E\u6A19\u6E96\u9078\u9805\u7684\u8AAA\u660E\n\    -ea[:<packagename>...|:<classname>]\n\    -enableassertions[:<packagename>...|:<classname>]\n\                  \u555F\u7528\u5177\u6709\u6307\u5B9A\u8A73\u7D30\u7A0B\u5EA6\u7684\u5BA3\u544A\n\    -da[:<packagename>...|:<classname>]\n\    -disableassertions[:<packagename>...|:<classname>]\n\                  \u505C\u7528\u5177\u6709\u6307\u5B9A\u8A73\u7D30\u7A0B\u5EA6\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:<libname>[=<options>]\n\                  \u8F09\u5165\u539F\u751F\u4EE3\u7406\u7A0B\u5F0F\u7A0B\u5F0F\u5EAB <libname>\uFF0C\u4F8B\u5982 -agentlib:hprof\n\                  \u53E6\u8ACB\u53C3\u95B1 -agentlib:jdwp=help \u8207 -agentlib:hprof=help\n\    -agentpath:<pathname>[=<options>]\n\                  \u4F7F\u7528\u5B8C\u6574\u8DEF\u5F91\u540D\u7A31\u8F09\u5165\u539F\u751F\u4EE3\u7406\u7A0B\u5F0F\u7A0B\u5F0F\u5EAB\n\    -javaagent:<jarpath>[=<options>]\n\                  \u8F09\u5165 Java \u7A0B\u5F0F\u8A9E\u8A00\u4EE3\u7406\u7A0B\u5F0F\uFF0C\u8ACB\u53C3\u95B1 java.lang.instrument\n\    -splash:<imagepath>\n\                  \u986F\u793A\u6307\u5B9A\u5F71\u50CF\u7684\u8EDF\u9AD4\u8CC7\u8A0A\u756B\u9762\n\u8ACB\u53C3\u95B1 http://java.sun.com/javase/reference\uFF0C\u66B8\u89E3\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.X.usage=\    -Xmixed           \u6DF7\u5408\u6A21\u5F0F\u57F7\u884C (\u9810\u8A2D)\n\    -Xint             \u50C5\u9650\u89E3\u8B6F\u6A21\u5F0F\u57F7\u884C\n\    -Xbootclasspath:<\u4EE5 {0} \u5206\u9694\u7684\u76EE\u9304\u548C zip/jar \u6A94\u6848>\n\                      \u8A2D\u5B9A\u555F\u52D5\u5B89\u88DD\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\u5728\u555F\u52D5\u5B89\u88DD\u985E\u5225\u8DEF\u5F91\u7684\u7D50\u5C3E\n\    -Xbootclasspath/p:<\u4EE5 {0} \u5206\u9694\u7684\u76EE\u9304\u548C zip/jar \u6A94\u6848>\n\                      \u9644\u52A0\u5728\u555F\u52D5\u5B89\u88DD\u985E\u5225\u8DEF\u5F91\u7684\u524D\u9762\n\    -Xdiag            \u986F\u793A\u5176\u4ED6\u7684\u8A3A\u65B7\u8A0A\u606F\n\    -Xnoclassgc       \u505C\u7528\u985E\u5225\u8CC7\u6E90\u56DE\u6536\n\    -Xincgc           \u555F\u7528\u6F38\u9032\u8CC7\u6E90\u56DE\u6536\n\    -Xloggc:<file>    \u5229\u7528\u6642\u6233\u5C07 GC \u72C0\u614B\u8A18\u9304\u81F3\u6A94\u6848\u4E2D\n\    -Xbatch           \u505C\u7528\u80CC\u666F\u7DE8\u8B6F\n\    -Xms<size>        \u8A2D\u5B9A\u8D77\u59CB Java \u5806\u96C6\u5927\u5C0F\n\    -Xmx<size>        \u8A2D\u5B9A Java \u5806\u96C6\u5927\u5C0F\u4E0A\u9650\n\    -Xss<size>        \u8A2D\u5B9A Java \u57F7\u884C\u7DD2\u5806\u758A\u5927\u5C0F\n\    -Xprof            \u8F38\u51FA CPU \u5206\u6790\u8CC7\u6599\n\    -Xfuture          \u555F\u7528\u6700\u56B4\u683C\u7684\u6AA2\u67E5\uFF0C\u9810\u5148\u505A\u70BA\u5C07\u4F86\u7684\u9810\u8A2D\n\    -Xrs              \u6E1B\u5C11 Java/VM \u4F7F\u7528\u4F5C\u696D\u7CFB\u7D71\u4FE1\u865F (\u8ACB\u53C3\u95B1\u6587\u4EF6)\n\    -Xcheck:jni       \u57F7\u884C\u5176\u4ED6\u7684 JNI \u51FD\u6578\u6AA2\u67E5\n\    -Xshare:off       \u4E0D\u5617\u8A66\u4F7F\u7528\u5171\u7528\u985E\u5225\u8CC7\u6599\n\    -Xshare:auto      \u5118\u53EF\u80FD\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\u5931\u6557\u3002\n\    -XshowSettings    \u986F\u793A\u6240\u6709\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\n\    -XshowSettings:all\n\                      \u986F\u793A\u6240\u6709\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\n\    -XshowSettings:vm \u986F\u793A\u6240\u6709 VM \u76F8\u95DC\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\n\    -XshowSettings:properties\n\                      \u986F\u793A\u6240\u6709\u5C6C\u6027\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\n\    -XshowSettings:locale\n\                      \u986F\u793A\u6240\u6709\u5730\u5340\u8A2D\u5B9A\u76F8\u95DC\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\n\n -X \u9078\u9805\u4E0D\u662F\u6A19\u6E96\u9078\u9805\uFF0C\u82E5\u6709\u8B8A\u66F4\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)
-
-
+java.launcher.cls.error1=\u932F\u8AA4: \u627E\u4E0D\u5230\u6216\u7121\u6CD5\u8F09\u5165\u4E3B\u8981\u985E\u5225 {0}
+java.launcher.cls.error2=\u932F\u8AA4: \u4E3B\u8981\u65B9\u6CD5\u4E0D\u662F\u985E\u5225 {1} \u4E2D\u7684 {0}\uFF0C\u8ACB\u5B9A\u7FA9\u4E3B\u8981\u65B9\u6CD5\u70BA:\n\   public static void main(String[] args)
+java.launcher.cls.error3=\u932F\u8AA4: \u4E3B\u8981\u65B9\u6CD5\u5FC5\u9808\u50B3\u56DE\u985E\u5225 {0} \u4E2D void \u985E\u578B\u7684\u503C\uFF0C \n\u8ACB\u5B9A\u7FA9\u4E3B\u8981\u65B9\u6CD5\u70BA:\n\   public static void main(String[] args)
+java.launcher.cls.error4=\u932F\u8AA4: \u5728\u985E\u5225 {0} \u4E2D\u627E\u4E0D\u5230\u4E3B\u8981\u65B9\u6CD5\uFF0C\u8ACB\u5B9A\u7FA9\u4E3B\u8981\u65B9\u6CD5\u70BA:\n\   public static void main(String[] args)
+java.launcher.jar.error1=\u932F\u8AA4: \u5617\u8A66\u958B\u555F\u6A94\u6848 {0} \u6642\u767C\u751F\u672A\u9810\u671F\u7684\u932F\u8AA4
+java.launcher.jar.error2=\u5728 {0} \u4E2D\u627E\u4E0D\u5230\u8CC7\u8A0A\u6E05\u55AE
+java.launcher.jar.error3={0} \u4E2D\u6C92\u6709\u4E3B\u8981\u8CC7\u8A0A\u6E05\u55AE\u5C6C\u6027
--- a/jdk/src/share/classes/sun/management/resources/agent_de.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/management/resources/agent_de.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/management/resources/agent_es.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/management/resources/agent_es.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/management/resources/agent_fr.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/management/resources/agent_fr.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/management/resources/agent_it.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/management/resources/agent_it.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/management/resources/agent_ja.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/management/resources/agent_ja.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/management/resources/agent_ko.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/management/resources/agent_ko.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/management/resources/agent_pt_BR.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/management/resources/agent_pt_BR.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/management/resources/agent_sv.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/management/resources/agent_sv.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/management/resources/agent_zh_CN.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/management/resources/agent_zh_CN.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/management/resources/agent_zh_TW.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/management/resources/agent_zh_TW.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/misc/FloatingDecimal.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/misc/FloatingDecimal.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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,7 +30,7 @@
 import sun.misc.FloatConsts;
 import java.util.regex.*;
 
-public class FloatingDecimal{
+public strictfp class FloatingDecimal{
     boolean     isExceptional;
     boolean     isNegative;
     int         decExponent;
--- a/jdk/src/share/classes/sun/misc/FormattedFloatingDecimal.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/misc/FormattedFloatingDecimal.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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,7 +30,7 @@
 import sun.misc.FloatConsts;
 import java.util.regex.*;
 
-public class FormattedFloatingDecimal{
+public strictfp class FormattedFloatingDecimal{
     boolean     isExceptional;
     boolean     isNegative;
     int         decExponent;  // value set at construction, then immutable
--- a/jdk/src/share/classes/sun/misc/FpUtils.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/misc/FpUtils.java	Wed Apr 20 09:31:11 2011 -0700
@@ -531,10 +531,9 @@
      * Return {@code d} &times;
      * 2<sup>{@code scale_factor}</sup> rounded as if performed
      * by a single correctly rounded floating-point multiply to a
-     * member of the double value set.  See <a
-     * href="http://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html#9208">&sect;4.2.3</a>
-     * of the <a href="http://java.sun.com/docs/books/jls/html/">Java
-     * Language Specification</a> for a discussion of floating-point
+     * member of the double value set.  See section 4.2.3 of
+     * <cite>The Java&trade; Language Specification</cite>
+     * for a discussion of floating-point
      * value sets.  If the exponent of the result is between the
      * {@code double}'s minimum exponent and maximum exponent,
      * the answer is calculated exactly.  If the exponent of the
@@ -641,11 +640,10 @@
      * Return {@code f} &times;
      * 2<sup>{@code scale_factor}</sup> rounded as if performed
      * by a single correctly rounded floating-point multiply to a
-     * member of the float value set.  See <a
-     * href="http://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html#9208">&sect;4.2.3</a>
-     * of the <a href="http://java.sun.com/docs/books/jls/html/">Java
-     * Language Specification</a> for a discussion of floating-point
-     * value set. If the exponent of the result is between the
+     * member of the float value set.  See section 4.2.3 of
+     * <cite>The Java&trade; Language Specification</cite>
+     * for a discussion of floating-point
+     * value sets. If the exponent of the result is between the
      * {@code float}'s minimum exponent and maximum exponent, the
      * answer is calculated exactly.  If the exponent of the result
      * would be larger than {@code float}'s maximum exponent, an
--- a/jdk/src/share/classes/sun/misc/JavaSecurityAccess.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/misc/JavaSecurityAccess.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/sun/misc/JavaxSecurityAuthKerberosAccess.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package sun.misc;
+
+import javax.security.auth.kerberos.KeyTab;
+import sun.security.krb5.EncryptionKey;
+import sun.security.krb5.PrincipalName;
+
+/**
+ * An unsafe tunnel to get non-public access to classes in the
+ * javax.security.auth.kerberos package.
+ */
+public interface JavaxSecurityAuthKerberosAccess {
+    /**
+     * Returns keys for a principal in a keytab.
+     * @return the keys, never null, can be empty.
+     */
+    public EncryptionKey[] keyTabGetEncryptionKeys(
+            KeyTab ktab, PrincipalName principal);
+}
--- a/jdk/src/share/classes/sun/misc/Launcher.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/misc/Launcher.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/misc/SharedSecrets.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/misc/SharedSecrets.java	Wed Apr 20 09:31:11 2011 -0700
@@ -29,6 +29,7 @@
 import java.io.Console;
 import java.io.FileDescriptor;
 import java.security.ProtectionDomain;
+import javax.security.auth.kerberos.KeyTab;
 
 import java.security.AccessController;
 
@@ -51,6 +52,7 @@
     private static JavaIOFileDescriptorAccess javaIOFileDescriptorAccess;
     private static JavaSecurityProtectionDomainAccess javaSecurityProtectionDomainAccess;
     private static JavaSecurityAccess javaSecurityAccess;
+    private static JavaxSecurityAuthKerberosAccess javaxSecurityAuthKerberosAccess;
 
     public static JavaUtilJarAccess javaUtilJarAccess() {
         if (javaUtilJarAccess == null) {
@@ -139,4 +141,16 @@
         }
         return javaSecurityAccess;
     }
+
+    public static void setJavaxSecurityAuthKerberosAccess
+            (JavaxSecurityAuthKerberosAccess jsaka) {
+        javaxSecurityAuthKerberosAccess = jsaka;
+    }
+
+    public static JavaxSecurityAuthKerberosAccess
+            getJavaxSecurityAuthKerberosAccess() {
+        if (javaxSecurityAuthKerberosAccess == null)
+            unsafe.ensureClassInitialized(KeyTab.class);
+        return javaxSecurityAuthKerberosAccess;
+    }
 }
--- a/jdk/src/share/classes/sun/misc/URLClassPath.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/misc/URLClassPath.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/misc/VM.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/misc/VM.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/misc/resources/Messages_de.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/misc/resources/Messages_de.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/misc/resources/Messages_es.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/misc/resources/Messages_es.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/misc/resources/Messages_fr.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/misc/resources/Messages_fr.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/misc/resources/Messages_it.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/misc/resources/Messages_it.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/misc/resources/Messages_ja.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/misc/resources/Messages_ja.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/misc/resources/Messages_ko.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/misc/resources/Messages_ko.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/misc/resources/Messages_pt_BR.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/misc/resources/Messages_pt_BR.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/misc/resources/Messages_sv.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/misc/resources/Messages_sv.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/misc/resources/Messages_zh_CN.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/misc/resources/Messages_zh_CN.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/misc/resources/Messages_zh_TW.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/misc/resources/Messages_zh_TW.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/net/httpserver/ChunkedInputStream.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/net/httpserver/ChunkedInputStream.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/net/spi/DefaultProxySelector.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/net/spi/DefaultProxySelector.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/net/www/http/KeepAliveCache.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/net/www/http/KeepAliveCache.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/net/www/http/KeepAliveStream.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/net/www/http/KeepAliveStream.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/net/www/protocol/http/NTLMAuthenticationProxy.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/net/www/protocol/http/NTLMAuthenticationProxy.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/net/www/protocol/jar/Handler.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/net/www/protocol/jar/Handler.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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,9 +25,8 @@
 
 package sun.net.www.protocol.jar;
 
-import java.io.*;
+import java.io.IOException;
 import java.net.*;
-import java.util.*;
 import sun.net.www.ParseUtil;
 
 /*
@@ -42,7 +41,7 @@
         return new JarURLConnection(u, this);
     }
 
-    private int indexOfBangSlash(String spec) {
+    private static int indexOfBangSlash(String spec) {
         int indexOfBang = spec.length();
         while((indexOfBang = spec.lastIndexOf('!', indexOfBang)) != -1) {
             if ((indexOfBang != (spec.length() - 1)) &&
@@ -55,6 +54,75 @@
         return -1;
     }
 
+    /**
+     * Compare two jar URLs
+     */
+    @Override
+    protected boolean sameFile(URL u1, URL u2) {
+        if (!u1.getProtocol().equals("jar") || !u2.getProtocol().equals("jar"))
+            return false;
+
+        String file1 = u1.getFile();
+        String file2 = u2.getFile();
+        int sep1 = file1.indexOf(separator);
+        int sep2 = file2.indexOf(separator);
+
+        if (sep1 == -1 || sep2 == -1) {
+            return super.sameFile(u1, u2);
+        }
+
+        String entry1 = file1.substring(sep1 + 2);
+        String entry2 = file2.substring(sep2 + 2);
+
+        if (!entry1.equals(entry2))
+            return false;
+
+        URL enclosedURL1 = null, enclosedURL2 = null;
+        try {
+            enclosedURL1 = new URL(file1.substring(0, sep1));
+            enclosedURL2 = new URL(file2.substring(0, sep2));
+        } catch (MalformedURLException unused) {
+            return super.sameFile(u1, u2);
+        }
+
+        if (!super.sameFile(enclosedURL1, enclosedURL2)) {
+            return false;
+        }
+
+        return true;
+    }
+
+    @Override
+    protected int hashCode(URL u) {
+        int h = 0;
+
+        String protocol = u.getProtocol();
+        if (protocol != null)
+            h += protocol.hashCode();
+
+        String file = u.getFile();
+        int sep = file.indexOf(separator);
+
+        if (sep == -1)
+            return h + file.hashCode();
+
+        URL enclosedURL = null;
+        String fileWithoutEntry = file.substring(0, sep);
+        try {
+            enclosedURL = new URL(fileWithoutEntry);
+            h += enclosedURL.hashCode();
+        } catch (MalformedURLException unused) {
+            h += fileWithoutEntry.hashCode();
+        }
+
+        String entry = file.substring(sep + 2);
+        h += entry.hashCode();
+
+        return h;
+    }
+
+
+    @Override
     protected void parseURL(URL url, String spec,
                             int start, int limit) {
         String file = null;
--- a/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/nio/ch/Net.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/nio/ch/Net.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/nio/fs/AbstractFileTypeDetector.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/nio/fs/AbstractFileTypeDetector.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/nio/fs/AbstractPath.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/nio/fs/AbstractPath.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/nio/fs/AbstractWatchKey.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/nio/fs/AbstractWatchKey.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/nio/fs/AbstractWatchService.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/nio/fs/AbstractWatchService.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/nio/fs/DynamicFileAttributeView.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/nio/fs/DynamicFileAttributeView.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/nio/fs/Util.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/nio/fs/Util.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/print/resources/serviceui_de.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/print/resources/serviceui_de.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -15,13 +15,13 @@
 button.ok=OK
 button.print=Drucken
 button.properties=Eigenschaften...
-button.properties.mnemonic=E
+button.properties.mnemonic=I
 #
 checkbox.collate=Sortieren
 checkbox.collate.mnemonic=S
 checkbox.jobsheets=Bannerseite
 checkbox.jobsheets.mnemonic=B
-checkbox.printtofile=In Datei drucken
+checkbox.printtofile=Ausgabe in Datei
 checkbox.printtofile.mnemonic=D
 #
 dialog.printtitle=Drucken
@@ -33,7 +33,7 @@
 dialog.writeerror=Schreiben in Datei nicht m\u00F6glich:
 #
 label.info=Info:
-label.jobname=Jobname:
+label.jobname=Job-Name:
 label.jobname.mnemonic=J
 label.numcopies=Anzahl Kopien:
 label.numcopies.mnemonic=K
@@ -44,65 +44,65 @@
 label.pstype=Typ:
 label.rangeto=Bis
 label.size=Gr\u00F6\u00DFe:
-label.size.mnemonic=G
+label.size.mnemonic=R
 label.source=Quelle:
-label.source.mnemonic=U
+label.source.mnemonic=Q
 label.status=Status:
 label.username=Benutzername:
-label.username.mnemonic=Z
+label.username.mnemonic=B
 label.millimetres=(mm)
 label.inches=(Zoll)
 label.topmargin=oben
 label.topmargin.mnemonic=O
 label.bottommargin=unten
-label.bottommargin.mnemonic=T
+label.bottommargin.mnemonic=U
 label.leftmargin=links
 label.leftmargin.mnemonic=L
 label.rightmargin=rechts
-label.rightmargin.mnemonic=C
+label.rightmargin.mnemonic=R
 #
 radiobutton.color=Farbe
 radiobutton.color.mnemonic=F
 radiobutton.draftq=Entwurf
 radiobutton.draftq.mnemonic=W
 radiobutton.duplex=Duplex
-radiobutton.duplex.mnemonic=X
+radiobutton.duplex.mnemonic=D
 radiobutton.highq=Hoch
 radiobutton.highq.mnemonic=H
 radiobutton.landscape=Querformat
 radiobutton.landscape.mnemonic=Q
-radiobutton.monochrome=Schwarzwei\u00DF
-radiobutton.monochrome.mnemonic=W
+radiobutton.monochrome=Monochrom
+radiobutton.monochrome.mnemonic=M
 radiobutton.normalq=Normal
-radiobutton.normalq.mnemonic=M
+radiobutton.normalq.mnemonic=N
 radiobutton.oneside=Einseitig
 radiobutton.oneside.mnemonic=E
 radiobutton.portrait=Hochformat
-radiobutton.portrait.mnemonic=H
+radiobutton.portrait.mnemonic=M
 radiobutton.rangeall=Alle
 radiobutton.rangeall.mnemonic=L
 radiobutton.rangepages=Seiten
-radiobutton.rangepages.mnemonic=T
+radiobutton.rangepages.mnemonic=E
 radiobutton.revlandscape=Umgekehrtes Querformat
-radiobutton.revlandscape.mnemonic=M
+radiobutton.revlandscape.mnemonic=U
 radiobutton.revportrait=Umgekehrtes Hochformat
-radiobutton.revportrait.mnemonic=K
+radiobutton.revportrait.mnemonic=H
 radiobutton.tumble=Kalenderdruck
 radiobutton.tumble.mnemonic=K
 # The vkMnemonics correspond with the constants defined in KeyEvent, eg
 # 65 = KeyEvent.VK_A
 tab.appearance=Darstellung
-tab.appearance.vkMnemonic=65
+tab.appearance.vkMnemonic=68
 tab.general=Allgemein
-tab.general.vkMnemonic=71
+tab.general.vkMnemonic=65
 tab.pagesetup=Seite einrichten
-tab.pagesetup.vkMnemonic=83
+tab.pagesetup.vkMnemonic=69
 #
 error.pagerange=Ung\u00FCltiger Seitenbereich. Geben Sie die Werte erneut ein (Beispiel: 1-3,5,7-10)
 error.destination=Ung\u00FCltiger Dateiname. Wiederholen Sie den Vorgang
 #
 # The following keys match the Strings returned by MediaSizeName.toString()
-# (in some cases the space character is replaced by '-' and the pound 
+# (in some cases the space character is replaced by '-' and the pound
 # character is replaced with 'n')
 #
 iso-4a0=4A0 (ISO/DIN & JIS)
@@ -207,8 +207,9 @@
 Cassette=Kassette
 Form-Source=Formularquelle
 #
-# The following keys match the Strings returned by 
+# The following keys match the Strings returned by
 # PrinterIsAcceptingJobs.toString()
 #
 accepting-jobs=Jobs annehmen
 not-accepting-jobs=Jobs nicht annehmen
+
--- a/jdk/src/share/classes/sun/print/resources/serviceui_es.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/print/resources/serviceui_es.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -15,12 +15,12 @@
 button.ok=Aceptar
 button.print=Imprimir
 button.properties=Propiedades...
-button.properties.mnemonic=P
+button.properties.mnemonic=R
 #
 checkbox.collate=Intercalar
-checkbox.collate.mnemonic=E
+checkbox.collate.mnemonic=C
 checkbox.jobsheets=P\u00E1gina de R\u00F3tulo
-checkbox.jobsheets.mnemonic=R
+checkbox.jobsheets.mnemonic=L
 checkbox.printtofile=Imprimir en Archivo
 checkbox.printtofile.mnemonic=M
 #
@@ -34,61 +34,61 @@
 #
 label.info=Informaci\u00F3n:
 label.jobname=Nombre del Trabajo:
-label.jobname.mnemonic=T
+label.jobname.mnemonic=N
 label.numcopies=N\u00FAmero de Copias:
 label.numcopies.mnemonic=O
 label.priority=Prioridad:
-label.priority.mnemonic=R
+label.priority.mnemonic=I
 label.psname=Nombre:
 label.psname.mnemonic=N
 label.pstype=Tipo:
 label.rangeto=A
 label.size=Tama\u00F1o:
-label.size.mnemonic=T
+label.size.mnemonic=\
 label.source=Origen:
-label.source.mnemonic=O
+label.source.mnemonic=G
 label.status=Estado:
-label.username=Nombre de Usuario:
-label.username.mnemonic=S
+label.username=Usuario:
+label.username.mnemonic=U
 label.millimetres=(mm)
 label.inches=(pulg.)
 label.topmargin=superior
 label.topmargin.mnemonic=S
 label.bottommargin=inferior
-label.bottommargin.mnemonic=I
+label.bottommargin.mnemonic=F
 label.leftmargin=izquierdo
-label.leftmargin.mnemonic=Z
+label.leftmargin.mnemonic=Q
 label.rightmargin=derecho
-label.rightmargin.mnemonic=D
+label.rightmargin.mnemonic=E
 #
 radiobutton.color=Color
-radiobutton.color.mnemonic=O
+radiobutton.color.mnemonic=C
 radiobutton.draftq=Borrador
-radiobutton.draftq.mnemonic=B
+radiobutton.draftq.mnemonic=R
 radiobutton.duplex=D\u00FAplex
 radiobutton.duplex.mnemonic=D
 radiobutton.highq=Alta
-radiobutton.highq.mnemonic=L
+radiobutton.highq.mnemonic=A
 radiobutton.landscape=Horizontal
-radiobutton.landscape.mnemonic=H
+radiobutton.landscape.mnemonic=Z
 radiobutton.monochrome=Monocromo
 radiobutton.monochrome.mnemonic=M
 radiobutton.normalq=Normal
 radiobutton.normalq.mnemonic=N
 radiobutton.oneside=Una Cara
-radiobutton.oneside.mnemonic=U
+radiobutton.oneside.mnemonic=R
 radiobutton.portrait=Vertical
 radiobutton.portrait.mnemonic=V
 radiobutton.rangeall=Todo
 radiobutton.rangeall.mnemonic=T
 radiobutton.rangepages=P\u00E1ginas
-radiobutton.rangepages.mnemonic=A
+radiobutton.rangepages.mnemonic=G
 radiobutton.revlandscape=Horizontal Inverso
-radiobutton.revlandscape.mnemonic=N
+radiobutton.revlandscape.mnemonic=H
 radiobutton.revportrait=Vertical Inverso
-radiobutton.revportrait.mnemonic=R
+radiobutton.revportrait.mnemonic=S
 radiobutton.tumble=Cambio de Cara
-radiobutton.tumble.mnemonic=C
+radiobutton.tumble.mnemonic=B
 # The vkMnemonics correspond with the constants defined in KeyEvent, eg
 # 65 = KeyEvent.VK_A
 tab.appearance=Apariencia
@@ -96,13 +96,13 @@
 tab.general=General
 tab.general.vkMnemonic=71
 tab.pagesetup=Preparar P\u00E1gina
-tab.pagesetup.vkMnemonic=83
+tab.pagesetup.vkMnemonic=80
 #
 error.pagerange=Rango de p\u00E1ginas no v\u00E1lido; vuelva a introducir los valores (por ejemplo, 1-3, 5, 7-10)
 error.destination=Nombre de archivo no v\u00E1lido; int\u00E9ntelo de nuevo
 #
 # The following keys match the Strings returned by MediaSizeName.toString()
-# (in some cases the space character is replaced by '-' and the pound 
+# (in some cases the space character is replaced by '-' and the pound
 # character is replaced with 'n')
 #
 iso-4a0=4A0 (ISO/DIN & JIS)
@@ -207,8 +207,9 @@
 Cassette=Casete
 Form-Source=Origen de Formulario
 #
-# The following keys match the Strings returned by 
+# The following keys match the Strings returned by
 # PrinterIsAcceptingJobs.toString()
 #
 accepting-jobs=Aceptando trabajos
 not-accepting-jobs=No aceptando trabajos
+
--- a/jdk/src/share/classes/sun/print/resources/serviceui_fr.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/print/resources/serviceui_fr.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -33,8 +33,8 @@
 dialog.writeerror=Impossible d'\u00E9crire dans le fichier :
 #
 label.info=Infos :
-label.jobname=Nom de la t\u00E2che :
-label.jobname.mnemonic=C
+label.jobname=Nom du travail :
+label.jobname.mnemonic=T
 label.numcopies=Nombre de copies :
 label.numcopies.mnemonic=O
 label.priority=Priorit\u00E9 :
@@ -44,7 +44,7 @@
 label.pstype=Type :
 label.rangeto=A
 label.size=Taille :
-label.size.mnemonic=A
+label.size.mnemonic=L
 label.source=Source :
 label.source.mnemonic=C
 label.status=Statut :
@@ -53,24 +53,24 @@
 label.millimetres=(mm)
 label.inches=(po)
 label.topmargin=haut
-label.topmargin.mnemonic=T
+label.topmargin.mnemonic=H
 label.bottommargin=bas
 label.bottommargin.mnemonic=B
 label.leftmargin=gauche
-label.leftmargin.mnemonic=E
+label.leftmargin.mnemonic=G
 label.rightmargin=droite
-label.rightmargin.mnemonic=R
+label.rightmargin.mnemonic=D
 #
 radiobutton.color=Couleur
-radiobutton.color.mnemonic=C
+radiobutton.color.mnemonic=U
 radiobutton.draftq=Brouillon
-radiobutton.draftq.mnemonic=B
+radiobutton.draftq.mnemonic=L
 radiobutton.duplex=Duplex
 radiobutton.duplex.mnemonic=D
-radiobutton.highq=Haut
-radiobutton.highq.mnemonic=H
+radiobutton.highq=Max.
+radiobutton.highq.mnemonic=X
 radiobutton.landscape=Paysage
-radiobutton.landscape.mnemonic=P
+radiobutton.landscape.mnemonic=S
 radiobutton.monochrome=Monochrome
 radiobutton.monochrome.mnemonic=M
 radiobutton.normalq=Normal
@@ -78,7 +78,7 @@
 radiobutton.oneside=Un c\u00F4t\u00E9
 radiobutton.oneside.mnemonic=U
 radiobutton.portrait=Portrait
-radiobutton.portrait.mnemonic=O
+radiobutton.portrait.mnemonic=P
 radiobutton.rangeall=Tout
 radiobutton.rangeall.mnemonic=T
 radiobutton.rangepages=Pages
@@ -102,7 +102,7 @@
 error.destination=Nom de fichier non valide ; recommencez
 #
 # The following keys match the Strings returned by MediaSizeName.toString()
-# (in some cases the space character is replaced by '-' and the pound 
+# (in some cases the space character is replaced by '-' and the pound
 # character is replaced with 'n')
 #
 iso-4a0=4A0 (ISO/DIN & JIS)
@@ -207,8 +207,9 @@
 Cassette=Cassette
 Form-Source=Source du formulaire
 #
-# The following keys match the Strings returned by 
+# The following keys match the Strings returned by
 # PrinterIsAcceptingJobs.toString()
 #
 accepting-jobs=Acceptation des t\u00E2ches
 not-accepting-jobs=Refus des t\u00E2ches
+
--- a/jdk/src/share/classes/sun/print/resources/serviceui_it.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/print/resources/serviceui_it.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -2,7 +2,7 @@
 #
 border.chromaticity=Aspetto colore
 border.copies=Copie
-border.jobattributes=Attributi processo
+border.jobattributes=Attributi job
 border.media=Supporti
 border.orientation=Orientamento
 border.printrange=Intervallo di stampa
@@ -20,7 +20,7 @@
 checkbox.collate=Fascicola
 checkbox.collate.mnemonic=L
 checkbox.jobsheets=Pagina banner
-checkbox.jobsheets.mnemonic=P
+checkbox.jobsheets.mnemonic=B
 checkbox.printtofile=Stampa su file
 checkbox.printtofile.mnemonic=F
 #
@@ -33,18 +33,18 @@
 dialog.writeerror=Impossibile scrivere nel file:
 #
 label.info=Informazioni:
-label.jobname=Nome processo:
-label.jobname.mnemonic=M
+label.jobname=Nome job:
+label.jobname.mnemonic=J
 label.numcopies=Numero di copie:
-label.numcopies.mnemonic=U
+label.numcopies.mnemonic=O
 label.priority=Priorit\u00E0:
-label.priority.mnemonic=I
+label.priority.mnemonic=R
 label.psname=Nome:
 label.psname.mnemonic=N
 label.pstype=Tipo:
 label.rangeto=A
 label.size=Dimensioni:
-label.size.mnemonic=D
+label.size.mnemonic=M
 label.source=Origine:
 label.source.mnemonic=R
 label.status=Stato:
@@ -52,14 +52,14 @@
 label.username.mnemonic=U
 label.millimetres=(mm)
 label.inches=(poll.)
-label.topmargin=alto
-label.topmargin.mnemonic=L
-label.bottommargin=basso
-label.bottommargin.mnemonic=B
-label.leftmargin=sinistra
+label.topmargin=superiore
+label.topmargin.mnemonic=P
+label.bottommargin=inferiore
+label.bottommargin.mnemonic=F
+label.leftmargin=sinistro
 label.leftmargin.mnemonic=T
-label.rightmargin=destra
-label.rightmargin.mnemonic=E
+label.rightmargin=destro
+label.rightmargin.mnemonic=D
 #
 radiobutton.color=Colore
 radiobutton.color.mnemonic=C
@@ -67,11 +67,11 @@
 radiobutton.draftq.mnemonic=B
 radiobutton.duplex=Fronte retro
 radiobutton.duplex.mnemonic=R
-radiobutton.highq=Alto
+radiobutton.highq=Alta
 radiobutton.highq.mnemonic=L
 radiobutton.landscape=Orizzontale
-radiobutton.landscape.mnemonic=O
-radiobutton.monochrome=Monocromatica
+radiobutton.landscape.mnemonic=L
+radiobutton.monochrome=Monocromatico
 radiobutton.monochrome.mnemonic=A
 radiobutton.normalq=Normale
 radiobutton.normalq.mnemonic=N
@@ -80,14 +80,14 @@
 radiobutton.portrait=Verticale
 radiobutton.portrait.mnemonic=V
 radiobutton.rangeall=Tutto
-radiobutton.rangeall.mnemonic=T
+radiobutton.rangeall.mnemonic=U
 radiobutton.rangepages=Pagine
 radiobutton.rangepages.mnemonic=E
 radiobutton.revlandscape=Orizzontale capovolto
 radiobutton.revlandscape.mnemonic=N
 radiobutton.revportrait=Verticale capovolto
 radiobutton.revportrait.mnemonic=I
-radiobutton.tumble=Testa a piede
+radiobutton.tumble=Lato corto
 radiobutton.tumble.mnemonic=T
 # The vkMnemonics correspond with the constants defined in KeyEvent, eg
 # 65 = KeyEvent.VK_A
@@ -102,7 +102,7 @@
 error.destination=Nome file non valido; riprovare
 #
 # The following keys match the Strings returned by MediaSizeName.toString()
-# (in some cases the space character is replaced by '-' and the pound 
+# (in some cases the space character is replaced by '-' and the pound
 # character is replaced with 'n')
 #
 iso-4a0=4A0 (ISO/DIN & JIS)
@@ -207,8 +207,9 @@
 Cassette=Cassetta
 Form-Source=Origine modulo
 #
-# The following keys match the Strings returned by 
+# The following keys match the Strings returned by
 # PrinterIsAcceptingJobs.toString()
 #
-accepting-jobs=Accettazione processo
-not-accepting-jobs=Rifiuto processo
+accepting-jobs=Accettazione job
+not-accepting-jobs=Rifiuto job
+
--- a/jdk/src/share/classes/sun/print/resources/serviceui_ja.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/print/resources/serviceui_ja.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -14,14 +14,14 @@
 button.cancel=\u53D6\u6D88
 button.ok=OK
 button.print=\u5370\u5237
-button.properties=\u30D7\u30ED\u30D1\u30C6\u30A3...
+button.properties=\u30D7\u30ED\u30D1\u30C6\u30A3(R)...
 button.properties.mnemonic=R
 #
-checkbox.collate=\u4E01\u5408\u3044
+checkbox.collate=\u4E01\u5408\u3044(C)
 checkbox.collate.mnemonic=C
-checkbox.jobsheets=\u30D0\u30CA\u30FC\u30FB\u30DA\u30FC\u30B8
+checkbox.jobsheets=\u30D0\u30CA\u30FC\u30FB\u30DA\u30FC\u30B8(B)
 checkbox.jobsheets.mnemonic=B
-checkbox.printtofile=\u30D5\u30A1\u30A4\u30EB\u306B\u51FA\u529B
+checkbox.printtofile=\u30D5\u30A1\u30A4\u30EB\u306B\u51FA\u529B(F)
 checkbox.printtofile.mnemonic=F
 #
 dialog.printtitle=\u5370\u5237
@@ -33,76 +33,76 @@
 dialog.writeerror=\u30D5\u30A1\u30A4\u30EB\u306B\u66F8\u304D\u8FBC\u3081\u307E\u305B\u3093:
 #
 label.info=\u60C5\u5831:
-label.jobname=\u30B8\u30E7\u30D6\u540D:
+label.jobname=\u30B8\u30E7\u30D6\u540D(J):
 label.jobname.mnemonic=J
-label.numcopies=\u5370\u5237\u90E8\u6570:
+label.numcopies=\u5370\u5237\u90E8\u6570(O):
 label.numcopies.mnemonic=O
-label.priority=\u512A\u5148\u5EA6:
+label.priority=\u512A\u5148\u5EA6(R):
 label.priority.mnemonic=R
-label.psname=\u540D\u524D:
+label.psname=\u540D\u524D(N):
 label.psname.mnemonic=N
 label.pstype=\u30BF\u30A4\u30D7:
 label.rangeto=\u5370\u5237\u7BC4\u56F2
-label.size=\u30B5\u30A4\u30BA:
+label.size=\u30B5\u30A4\u30BA(Z):
 label.size.mnemonic=Z
-label.source=\u30BD\u30FC\u30B9:
+label.source=\u30BD\u30FC\u30B9(C):
 label.source.mnemonic=C
 label.status=\u72B6\u614B:
-label.username=\u30E6\u30FC\u30B6\u30FC\u540D:
+label.username=\u30E6\u30FC\u30B6\u30FC\u540D(U):
 label.username.mnemonic=U
 label.millimetres=(mm)
 label.inches=(in)
-label.topmargin=\u4E0A
+label.topmargin=\u4E0A(T)
 label.topmargin.mnemonic=T
-label.bottommargin=\u4E0B
+label.bottommargin=\u4E0B(B)
 label.bottommargin.mnemonic=B
-label.leftmargin=\u5DE6
+label.leftmargin=\u5DE6(F)
 label.leftmargin.mnemonic=F
-label.rightmargin=\u53F3
+label.rightmargin=\u53F3(R)
 label.rightmargin.mnemonic=R
 #
-radiobutton.color=\u30AB\u30E9\u30FC
+radiobutton.color=\u30AB\u30E9\u30FC(C)
 radiobutton.color.mnemonic=C
-radiobutton.draftq=\u30C9\u30E9\u30D5\u30C8
+radiobutton.draftq=\u30C9\u30E9\u30D5\u30C8(F)
 radiobutton.draftq.mnemonic=F
-radiobutton.duplex=\u4E21\u9762
+radiobutton.duplex=\u4E21\u9762(D)
 radiobutton.duplex.mnemonic=D
-radiobutton.highq=\u9AD8\u54C1\u8CEA
+radiobutton.highq=\u9AD8(H)
 radiobutton.highq.mnemonic=H
-radiobutton.landscape=\u30E9\u30F3\u30C9\u30B9\u30B1\u30FC\u30D7(\u6A2A)
+radiobutton.landscape=\u6A2A(L)
 radiobutton.landscape.mnemonic=L
-radiobutton.monochrome=\u30E2\u30CE\u30AF\u30ED
+radiobutton.monochrome=\u30E2\u30CE\u30AF\u30ED(M)
 radiobutton.monochrome.mnemonic=M
-radiobutton.normalq=\u6A19\u6E96
+radiobutton.normalq=\u6A19\u6E96(N)
 radiobutton.normalq.mnemonic=N
-radiobutton.oneside=\u7247\u9762
+radiobutton.oneside=\u7247\u9762(O)
 radiobutton.oneside.mnemonic=O
-radiobutton.portrait=\u30DD\u30FC\u30C8\u30EC\u30A4\u30C8(\u7E26)
+radiobutton.portrait=\u7E26(P)
 radiobutton.portrait.mnemonic=P
-radiobutton.rangeall=\u3059\u3079\u3066
+radiobutton.rangeall=\u3059\u3079\u3066(L)
 radiobutton.rangeall.mnemonic=L
-radiobutton.rangepages=\u30DA\u30FC\u30B8
+radiobutton.rangepages=\u30DA\u30FC\u30B8(E)
 radiobutton.rangepages.mnemonic=E
-radiobutton.revlandscape=\u30E9\u30F3\u30C9\u30B9\u30B1\u30FC\u30D7(\u53CD\u8EE2)
+radiobutton.revlandscape=\u30E9\u30F3\u30C9\u30B9\u30B1\u30FC\u30D7(\u53CD\u8EE2)(N)
 radiobutton.revlandscape.mnemonic=N
-radiobutton.revportrait=\u30DD\u30FC\u30C8\u30EC\u30A4\u30C8(\u53CD\u8EE2)
+radiobutton.revportrait=\u30DD\u30FC\u30C8\u30EC\u30A4\u30C8(\u53CD\u8EE2)(I)
 radiobutton.revportrait.mnemonic=I
-radiobutton.tumble=\u53CD\u8EE2
+radiobutton.tumble=\u53CD\u8EE2(T)
 radiobutton.tumble.mnemonic=T
 # The vkMnemonics correspond with the constants defined in KeyEvent, eg
 # 65 = KeyEvent.VK_A
-tab.appearance=\u5916\u89B3
+tab.appearance=\u5916\u89B3(A)
 tab.appearance.vkMnemonic=65
-tab.general=\u4E00\u822C
+tab.general=\u4E00\u822C(G)
 tab.general.vkMnemonic=71
-tab.pagesetup=\u30DA\u30FC\u30B8\u8A2D\u5B9A
+tab.pagesetup=\u30DA\u30FC\u30B8\u8A2D\u5B9A(S)
 tab.pagesetup.vkMnemonic=83
 #
 error.pagerange=\u7121\u52B9\u306A\u30DA\u30FC\u30B8\u7BC4\u56F2\u3002\u5024\u3092\u518D\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044(\u4F8B\u30011-3,5,7-10)
 error.destination=\u7121\u52B9\u306A\u30D5\u30A1\u30A4\u30EB\u540D\u3002\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u518D\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044
 #
 # The following keys match the Strings returned by MediaSizeName.toString()
-# (in some cases the space character is replaced by '-' and the pound 
+# (in some cases the space character is replaced by '-' and the pound
 # character is replaced with 'n')
 #
 iso-4a0=4A0 (ISO/DIN & JIS)
@@ -207,8 +207,9 @@
 Cassette=\u30AB\u30BB\u30C3\u30C8
 Form-Source=\u30D5\u30A9\u30FC\u30E0\u30FB\u30BD\u30FC\u30B9
 #
-# The following keys match the Strings returned by 
+# The following keys match the Strings returned by
 # PrinterIsAcceptingJobs.toString()
 #
 accepting-jobs=\u30B8\u30E7\u30D6\u3092\u53D7\u3051\u4ED8\u3051\u3066\u3044\u307E\u3059
 not-accepting-jobs=\u30B8\u30E7\u30D6\u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093
+
--- a/jdk/src/share/classes/sun/print/resources/serviceui_ko.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/print/resources/serviceui_ko.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -14,14 +14,14 @@
 button.cancel=\uCDE8\uC18C
 button.ok=\uD655\uC778
 button.print=\uC778\uC1C4
-button.properties=\uC18D\uC131...
+button.properties=\uC18D\uC131(R)...
 button.properties.mnemonic=R
 #
-checkbox.collate=\uC21C\uC11C\uB300\uB85C
+checkbox.collate=\uD55C \uBD80\uC529 \uC778\uC1C4(C)
 checkbox.collate.mnemonic=C
-checkbox.jobsheets=\uBC30\uB108 \uD398\uC774\uC9C0
+checkbox.jobsheets=\uBC30\uB108 \uD398\uC774\uC9C0(B)
 checkbox.jobsheets.mnemonic=B
-checkbox.printtofile=\uD30C\uC77C\uB85C \uC778\uC1C4
+checkbox.printtofile=\uD30C\uC77C\uB85C \uC778\uC1C4(F)
 checkbox.printtofile.mnemonic=F
 #
 dialog.printtitle=\uC778\uC1C4
@@ -33,76 +33,76 @@
 dialog.writeerror=\uD30C\uC77C\uC5D0 \uC4F8 \uC218 \uC5C6\uC74C:
 #
 label.info=\uC815\uBCF4:
-label.jobname=\uC791\uC5C5 \uC774\uB984:
+label.jobname=\uC791\uC5C5 \uC774\uB984(J):
 label.jobname.mnemonic=J
-label.numcopies=\uB9E4\uC218:
+label.numcopies=\uB9E4\uC218(O):
 label.numcopies.mnemonic=O
-label.priority=\uC6B0\uC120\uC21C\uC704:
+label.priority=\uC6B0\uC120\uC21C\uC704(R):
 label.priority.mnemonic=R
-label.psname=\uC774\uB984:
+label.psname=\uC774\uB984(N):
 label.psname.mnemonic=N
 label.pstype=\uC720\uD615:
 label.rangeto=\uC885\uB8CC
-label.size=\uD06C\uAE30:
+label.size=\uD06C\uAE30(Z):
 label.size.mnemonic=Z
-label.source=\uC18C\uC2A4:
+label.source=\uC18C\uC2A4(C):
 label.source.mnemonic=C
 label.status=\uC0C1\uD0DC:
-label.username=\uC0AC\uC6A9\uC790 \uC774\uB984:
+label.username=\uC0AC\uC6A9\uC790 \uC774\uB984(U):
 label.username.mnemonic=U
 label.millimetres=(mm)
 label.inches=(\uC778\uCE58)
-label.topmargin=\uC704\uCABD
+label.topmargin=\uC704\uCABD(T)
 label.topmargin.mnemonic=T
-label.bottommargin=\uC544\uB798\uCABD
+label.bottommargin=\uC544\uB798\uCABD(B)
 label.bottommargin.mnemonic=B
-label.leftmargin=\uC67C\uCABD
+label.leftmargin=\uC67C\uCABD(F)
 label.leftmargin.mnemonic=F
-label.rightmargin=\uC624\uB978\uCABD
+label.rightmargin=\uC624\uB978\uCABD(R)
 label.rightmargin.mnemonic=R
 #
-radiobutton.color=\uC0C9\uC0C1
+radiobutton.color=\uC0C9\uC0C1(C)
 radiobutton.color.mnemonic=C
-radiobutton.draftq=\uCD08\uC548
+radiobutton.draftq=\uCD08\uC548(F)
 radiobutton.draftq.mnemonic=F
-radiobutton.duplex=\uC591\uBA74
+radiobutton.duplex=\uC591\uBA74(D)
 radiobutton.duplex.mnemonic=D
-radiobutton.highq=\uB192\uC74C
+radiobutton.highq=\uB192\uC74C(H)
 radiobutton.highq.mnemonic=H
-radiobutton.landscape=\uAC00\uB85C
+radiobutton.landscape=\uAC00\uB85C(L)
 radiobutton.landscape.mnemonic=L
-radiobutton.monochrome=\uB2E8\uC0C9
+radiobutton.monochrome=\uB2E8\uC0C9(M)
 radiobutton.monochrome.mnemonic=M
-radiobutton.normalq=\uC77C\uBC18
+radiobutton.normalq=\uBCF4\uD1B5(N)
 radiobutton.normalq.mnemonic=N
-radiobutton.oneside=\uB2E8\uBA74
+radiobutton.oneside=\uB2E8\uBA74(O)
 radiobutton.oneside.mnemonic=O
-radiobutton.portrait=\uC138\uB85C
+radiobutton.portrait=\uC138\uB85C(P)
 radiobutton.portrait.mnemonic=P
-radiobutton.rangeall=\uBAA8\uB450
+radiobutton.rangeall=\uC804\uCCB4(L)
 radiobutton.rangeall.mnemonic=L
-radiobutton.rangepages=\uD398\uC774\uC9C0
+radiobutton.rangepages=\uD398\uC774\uC9C0(E)
 radiobutton.rangepages.mnemonic=E
-radiobutton.revlandscape=\uAC00\uB85C \uBC18\uC804
+radiobutton.revlandscape=\uAC00\uB85C \uBC18\uC804(N)
 radiobutton.revlandscape.mnemonic=N
-radiobutton.revportrait=\uC138\uB85C \uBC18\uC804
+radiobutton.revportrait=\uC138\uB85C \uBC18\uC804(I)
 radiobutton.revportrait.mnemonic=I
-radiobutton.tumble=\uD68C\uC804\uC2DD
+radiobutton.tumble=\uD68C\uC804\uC2DD(T)
 radiobutton.tumble.mnemonic=T
 # The vkMnemonics correspond with the constants defined in KeyEvent, eg
 # 65 = KeyEvent.VK_A
-tab.appearance=\uBAA8\uC591
+tab.appearance=\uBAA8\uC591(A)
 tab.appearance.vkMnemonic=65
-tab.general=\uC77C\uBC18 \uC0AC\uD56D
+tab.general=\uC77C\uBC18 \uC0AC\uD56D(G)
 tab.general.vkMnemonic=71
-tab.pagesetup=\uD398\uC774\uC9C0 \uC124\uC815
+tab.pagesetup=\uD398\uC774\uC9C0 \uC124\uC815(S)
 tab.pagesetup.vkMnemonic=83
 #
 error.pagerange=\uBD80\uC801\uD569\uD55C \uD398\uC774\uC9C0 \uBC94\uC704: \uAC12\uC744 \uB2E4\uC2DC \uC785\uB825\uD558\uC2ED\uC2DC\uC624(\uC608: 1-3,5,7-10).
 error.destination=\uBD80\uC801\uD569\uD55C \uD30C\uC77C \uC774\uB984: \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC2ED\uC2DC\uC624.
 #
 # The following keys match the Strings returned by MediaSizeName.toString()
-# (in some cases the space character is replaced by '-' and the pound 
+# (in some cases the space character is replaced by '-' and the pound
 # character is replaced with 'n')
 #
 iso-4a0=4A0 (ISO/DIN & JIS)
@@ -207,8 +207,9 @@
 Cassette=\uCE74\uC138\uD2B8
 Form-Source=\uC591\uC2DD \uC18C\uC2A4
 #
-# The following keys match the Strings returned by 
+# The following keys match the Strings returned by
 # PrinterIsAcceptingJobs.toString()
 #
 accepting-jobs=\uC791\uC5C5 \uC2B9\uC778
 not-accepting-jobs=\uC791\uC5C5 \uC2B9\uC778 \uC548\uD568
+
--- a/jdk/src/share/classes/sun/print/resources/serviceui_pt_BR.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/print/resources/serviceui_pt_BR.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -18,11 +18,11 @@
 button.properties.mnemonic=R
 #
 checkbox.collate=Agrupar
-checkbox.collate.mnemonic=C
+checkbox.collate.mnemonic=A
 checkbox.jobsheets=P\u00E1gina com Banner
 checkbox.jobsheets.mnemonic=B
 checkbox.printtofile=Imprimir em Arquivo
-checkbox.printtofile.mnemonic=F
+checkbox.printtofile.mnemonic=I
 #
 dialog.printtitle=Imprimir
 dialog.pstitle=Configura\u00E7\u00E3o da P\u00E1gina
@@ -44,33 +44,33 @@
 label.pstype=Tipo:
 label.rangeto=At\u00E9
 label.size=Tamanho:
-label.size.mnemonic=Z
+label.size.mnemonic=M
 label.source=Origem:
-label.source.mnemonic=C
+label.source.mnemonic=O
 label.status=Status:
 label.username=Nome do Usu\u00E1rio:
 label.username.mnemonic=U
 label.millimetres=(mm)
 label.inches=(pol)
 label.topmargin=superior
-label.topmargin.mnemonic=T
+label.topmargin.mnemonic=S
 label.bottommargin=inferior
-label.bottommargin.mnemonic=B
-label.leftmargin=esquerda
-label.leftmargin.mnemonic=F
+label.bottommargin.mnemonic=I
+label.leftmargin=esquerda:
+label.leftmargin.mnemonic=Q
 label.rightmargin=direita
 label.rightmargin.mnemonic=R
 #
 radiobutton.color=Cor
-radiobutton.color.mnemonic=C
+radiobutton.color.mnemonic=O
 radiobutton.draftq=Rascunho
-radiobutton.draftq.mnemonic=F
+radiobutton.draftq.mnemonic=R
 radiobutton.duplex=Duplex
 radiobutton.duplex.mnemonic=D
-radiobutton.highq=Alto
-radiobutton.highq.mnemonic=H
+radiobutton.highq=Alta
+radiobutton.highq.mnemonic=A
 radiobutton.landscape=Paisagem
-radiobutton.landscape.mnemonic=L
+radiobutton.landscape.mnemonic=P
 radiobutton.monochrome=Monocrom\u00E1tico
 radiobutton.monochrome.mnemonic=M
 radiobutton.normalq=Normal
@@ -78,31 +78,31 @@
 radiobutton.oneside=Um Lado
 radiobutton.oneside.mnemonic=O
 radiobutton.portrait=Retrato
-radiobutton.portrait.mnemonic=P
-radiobutton.rangeall=Todas
-radiobutton.rangeall.mnemonic=L
+radiobutton.portrait.mnemonic=R
+radiobutton.rangeall=Tudo
+radiobutton.rangeall.mnemonic=U
 radiobutton.rangepages=P\u00E1ginas
-radiobutton.rangepages.mnemonic=E
+radiobutton.rangepages.mnemonic=P
 radiobutton.revlandscape=Paisagem Invertida
 radiobutton.revlandscape.mnemonic=N
 radiobutton.revportrait=Retrato Invertido
 radiobutton.revportrait.mnemonic=I
-radiobutton.tumble=Duplex Horizontal
-radiobutton.tumble.mnemonic=T
+radiobutton.tumble=Virar
+radiobutton.tumble.mnemonic=V
 # The vkMnemonics correspond with the constants defined in KeyEvent, eg
 # 65 = KeyEvent.VK_A
 tab.appearance=Apar\u00EAncia
 tab.appearance.vkMnemonic=65
 tab.general=Geral
 tab.general.vkMnemonic=71
-tab.pagesetup=Configura\u00E7\u00E3o da P\u00E1gina
-tab.pagesetup.vkMnemonic=83
+tab.pagesetup=Configura\u00E7\u00E3o de P\u00E1gina
+tab.pagesetup.vkMnemonic=80
 #
 error.pagerange=Faixa de p\u00E1ginas inv\u00E1lida; insira novamente os valores (por exemplo, 1-3,5,7-10)
 error.destination=Nome de arquivo inv\u00E1lido; tente novamente
 #
 # The following keys match the Strings returned by MediaSizeName.toString()
-# (in some cases the space character is replaced by '-' and the pound 
+# (in some cases the space character is replaced by '-' and the pound
 # character is replaced with 'n')
 #
 iso-4a0=4A0 (ISO/DIN & JIS)
@@ -207,8 +207,9 @@
 Cassette=Cassete
 Form-Source=Origem do Formul\u00E1rio
 #
-# The following keys match the Strings returned by 
+# The following keys match the Strings returned by
 # PrinterIsAcceptingJobs.toString()
 #
 accepting-jobs=Aceitando jobs
 not-accepting-jobs=N\u00E3o aceitando jobs
+
--- a/jdk/src/share/classes/sun/print/resources/serviceui_sv.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/print/resources/serviceui_sv.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -15,14 +15,14 @@
 button.ok=OK
 button.print=Skriv ut
 button.properties=Egenskaper...
-button.properties.mnemonic=H
+button.properties.mnemonic=E
 #
 checkbox.collate=Sortera
-checkbox.collate.mnemonic=F
+checkbox.collate.mnemonic=S
 checkbox.jobsheets=F\u00F6rs\u00E4ttsblad
-checkbox.jobsheets.mnemonic=B
-checkbox.printtofile=Skriv till fil
-checkbox.printtofile.mnemonic=V
+checkbox.jobsheets.mnemonic=F
+checkbox.printtofile=Skriv ut till fil
+checkbox.printtofile.mnemonic=F
 #
 dialog.printtitle=Skriv ut
 dialog.pstitle=Utskriftsformat
@@ -33,39 +33,39 @@
 dialog.writeerror=Kan inte skriva till filen:
 #
 label.info=Information:
-label.jobname=Utskrift:
-label.jobname.mnemonic=U
-label.numcopies=Antal exemplar:
+label.jobname=Jobbnamn
+label.jobname.mnemonic=J
+label.numcopies=Antal exemplar
 label.numcopies.mnemonic=E
-label.priority=Prioritet:
-label.priority.mnemonic=H
+label.priority=Prioritet
+label.priority.mnemonic=R
 label.psname=Namn:
 label.psname.mnemonic=N
 label.pstype=Typ:
 label.rangeto=Till
 label.size=Storlek:
-label.size.mnemonic=o
-label.source=K\u00E4lla:
-label.source.mnemonic=F
+label.size.mnemonic=L
+label.source=K\u00E4lla
+label.source.mnemonic=L
 label.status=Status:
 label.username=Anv\u00E4ndarnamn:
-label.username.mnemonic=v
+label.username.mnemonic=N
 label.millimetres=(mm)
 label.inches=(tum)
-label.topmargin=topp
-label.topmargin.mnemonic=V
-label.bottommargin=botten
-label.bottommargin.mnemonic=B
+label.topmargin=\u00F6verkant
+label.topmargin.mnemonic=\
+label.bottommargin=nederkant
+label.bottommargin.mnemonic=N
 label.leftmargin=v\u00E4nster
-label.leftmargin.mnemonic=V
+label.leftmargin.mnemonic=\
 label.rightmargin=h\u00F6ger
 label.rightmargin.mnemonic=H
 #
 radiobutton.color=F\u00E4rg
 radiobutton.color.mnemonic=F
 radiobutton.draftq=Utkast
-radiobutton.draftq.mnemonic=V
-radiobutton.duplex=Duplex
+radiobutton.draftq.mnemonic=S
+radiobutton.duplex=Dubbelsidig
 radiobutton.duplex.mnemonic=D
 radiobutton.highq=H\u00F6g
 radiobutton.highq.mnemonic=H
@@ -75,34 +75,34 @@
 radiobutton.monochrome.mnemonic=M
 radiobutton.normalq=Normal
 radiobutton.normalq.mnemonic=N
-radiobutton.oneside=En sida
+radiobutton.oneside=Ensidig
 radiobutton.oneside.mnemonic=E
 radiobutton.portrait=St\u00E5ende
-radiobutton.portrait.mnemonic=D
+radiobutton.portrait.mnemonic=S
 radiobutton.rangeall=Alla
 radiobutton.rangeall.mnemonic=L
 radiobutton.rangepages=Sidor
-radiobutton.rangepages.mnemonic=D
+radiobutton.rangepages.mnemonic=O
 radiobutton.revlandscape=Omv\u00E4nt liggande
-radiobutton.revlandscape.mnemonic=N
+radiobutton.revlandscape.mnemonic=G
 radiobutton.revportrait=Omv\u00E4nt st\u00E5ende
-radiobutton.revportrait.mnemonic=M
+radiobutton.revportrait.mnemonic=D
 radiobutton.tumble=V\u00E4nd
 radiobutton.tumble.mnemonic=V
 # The vkMnemonics correspond with the constants defined in KeyEvent, eg
 # 65 = KeyEvent.VK_A
-tab.appearance=Utseende
-tab.appearance.vkMnemonic=65
+tab.appearance=Format
+tab.appearance.vkMnemonic=70
 tab.general=Allm\u00E4nt
-tab.general.vkMnemonic=71
+tab.general.vkMnemonic=65
 tab.pagesetup=Utskriftsformat
-tab.pagesetup.vkMnemonic=83
+tab.pagesetup.vkMnemonic=70
 #
 error.pagerange=Ogiltigt sidintervall. Skriv in v\u00E4rdena igen (t ex 1-3,5,7-10)
 error.destination=Ogiltigt filnamn. F\u00F6rs\u00F6k igen.
 #
 # The following keys match the Strings returned by MediaSizeName.toString()
-# (in some cases the space character is replaced by '-' and the pound 
+# (in some cases the space character is replaced by '-' and the pound
 # character is replaced with 'n')
 #
 iso-4a0=4A0 (ISO/DIN & JIS)
@@ -207,8 +207,9 @@
 Cassette=Kassett
 Form-Source=Formul\u00E4rk\u00E4lla
 #
-# The following keys match the Strings returned by 
+# The following keys match the Strings returned by
 # PrinterIsAcceptingJobs.toString()
 #
 accepting-jobs=Accepterar jobb
 not-accepting-jobs=Accepterar inte jobb
+
--- a/jdk/src/share/classes/sun/print/resources/serviceui_zh_CN.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/print/resources/serviceui_zh_CN.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -14,14 +14,14 @@
 button.cancel=\u53D6\u6D88
 button.ok=\u786E\u5B9A
 button.print=\u6253\u5370
-button.properties=\u5C5E\u6027...
+button.properties=\u5C5E\u6027(R)...
 button.properties.mnemonic=R
 #
-checkbox.collate=\u9010\u4EFD\u6253\u5370
+checkbox.collate=\u9010\u4EFD\u6253\u5370(C)
 checkbox.collate.mnemonic=C
-checkbox.jobsheets=\u6807\u5E1C\u9875
+checkbox.jobsheets=\u6807\u5E1C\u9875(B)
 checkbox.jobsheets.mnemonic=B
-checkbox.printtofile=\u6253\u5370\u5230\u6587\u4EF6
+checkbox.printtofile=\u6253\u5370\u5230\u6587\u4EF6(F)
 checkbox.printtofile.mnemonic=F
 #
 dialog.printtitle=\u6253\u5370
@@ -32,77 +32,77 @@
 dialog.noprintermsg=\u627E\u4E0D\u5230\u6253\u5370\u670D\u52A1\u3002
 dialog.writeerror=\u65E0\u6CD5\u5199\u5165\u6587\u4EF6:
 #
-label.info=\u4FE1\u606F: 
-label.jobname=\u4F5C\u4E1A\u540D\u79F0: 
+label.info=\u4FE1\u606F:
+label.jobname=\u4F5C\u4E1A\u540D(J):
 label.jobname.mnemonic=J
-label.numcopies=\u6253\u5370\u4EFD\u6570: 
+label.numcopies=\u6253\u5370\u4EFD\u6570(O):
 label.numcopies.mnemonic=O
-label.priority=\u4F18\u5148\u7EA7: 
+label.priority=\u4F18\u5148\u7EA7(R):
 label.priority.mnemonic=R
-label.psname=\u540D\u79F0:
+label.psname=\u540D\u79F0(N):
 label.psname.mnemonic=N
-label.pstype=\u7C7B\u578B: 
+label.pstype=\u7C7B\u578B:
 label.rangeto=\u81F3
-label.size=\u5927\u5C0F: 
+label.size=\u5927\u5C0F(Z):
 label.size.mnemonic=Z
-label.source=\u6765\u6E90: 
+label.source=\u6765\u6E90(C):
 label.source.mnemonic=C
-label.status=\u72B6\u6001: 
-label.username=\u7528\u6237\u540D:
+label.status=\u72B6\u6001:
+label.username=\u7528\u6237\u540D(U):
 label.username.mnemonic=U
 label.millimetres=(\u6BEB\u7C73)
 label.inches=(\u82F1\u5BF8)
-label.topmargin=\u4E0A\u8FB9\u8DDD
+label.topmargin=\u4E0A\u8FB9\u8DDD(T)
 label.topmargin.mnemonic=T
-label.bottommargin=\u4E0B\u8FB9\u8DDD
+label.bottommargin=\u4E0B\u8FB9\u8DDD(B)
 label.bottommargin.mnemonic=B
-label.leftmargin=\u5DE6\u8FB9\u8DDD
+label.leftmargin=\u5DE6\u8FB9\u8DDD(F)
 label.leftmargin.mnemonic=F
-label.rightmargin=\u53F3\u8FB9\u8DDD
+label.rightmargin=\u53F3\u8FB9\u8DDD(R)
 label.rightmargin.mnemonic=R
 #
-radiobutton.color=\u989C\u8272
+radiobutton.color=\u989C\u8272(C)
 radiobutton.color.mnemonic=C
-radiobutton.draftq=\u8349\u56FE
+radiobutton.draftq=\u8349\u56FE(F)
 radiobutton.draftq.mnemonic=F
-radiobutton.duplex=\u53CC\u9762\u6253\u5370
+radiobutton.duplex=\u53CC\u9762\u6253\u5370(D)
 radiobutton.duplex.mnemonic=D
-radiobutton.highq=\u9AD8
+radiobutton.highq=\u9AD8(H)
 radiobutton.highq.mnemonic=H
-radiobutton.landscape=\u6A2A\u5411
+radiobutton.landscape=\u6A2A\u5411(L)
 radiobutton.landscape.mnemonic=L
-radiobutton.monochrome=\u5355\u8272
+radiobutton.monochrome=\u5355\u8272(M)
 radiobutton.monochrome.mnemonic=M
-radiobutton.normalq=\u6B63\u5E38
+radiobutton.normalq=\u6B63\u5E38(N)
 radiobutton.normalq.mnemonic=N
-radiobutton.oneside=\u5355\u9762
+radiobutton.oneside=\u5355\u9762(O)
 radiobutton.oneside.mnemonic=O
-radiobutton.portrait=\u7EB5\u5411
+radiobutton.portrait=\u7EB5\u5411(P)
 radiobutton.portrait.mnemonic=P
-radiobutton.rangeall=\u5168\u90E8
+radiobutton.rangeall=\u5168\u90E8(L)
 radiobutton.rangeall.mnemonic=L
-radiobutton.rangepages=\u9875\u7801\u8303\u56F4
+radiobutton.rangepages=\u9875\u7801\u8303\u56F4(E)
 radiobutton.rangepages.mnemonic=E
-radiobutton.revlandscape=\u6A2A\u5411\u53CD\u9762\u6253\u5370
+radiobutton.revlandscape=\u6A2A\u5411\u53CD\u9762\u6253\u5370(N)
 radiobutton.revlandscape.mnemonic=N
-radiobutton.revportrait=\u7EB5\u5411\u53CD\u9762\u6253\u5370
+radiobutton.revportrait=\u7EB5\u5411\u53CD\u9762\u6253\u5370(I)
 radiobutton.revportrait.mnemonic=I
-radiobutton.tumble=\u7FFB\u8F6C
+radiobutton.tumble=\u7FFB\u8F6C(T)
 radiobutton.tumble.mnemonic=T
 # The vkMnemonics correspond with the constants defined in KeyEvent, eg
 # 65 = KeyEvent.VK_A
-tab.appearance=\u5916\u89C2
+tab.appearance=\u5916\u89C2(A)
 tab.appearance.vkMnemonic=65
-tab.general=\u5E38\u89C4
+tab.general=\u4E00\u822C\u4FE1\u606F(G)
 tab.general.vkMnemonic=71
-tab.pagesetup=\u9875\u9762\u8BBE\u7F6E
+tab.pagesetup=\u9875\u9762\u8BBE\u7F6E(S)
 tab.pagesetup.vkMnemonic=83
 #
 error.pagerange=\u65E0\u6548\u7684\u9875\u9762\u8303\u56F4; \u8BF7\u91CD\u65B0\u8F93\u5165\u6570\u503C (\u4F8B\u5982 1-3,5,7-10)
 error.destination=\u65E0\u6548\u7684\u6587\u4EF6\u540D; \u8BF7\u91CD\u8BD5
 #
 # The following keys match the Strings returned by MediaSizeName.toString()
-# (in some cases the space character is replaced by '-' and the pound 
+# (in some cases the space character is replaced by '-' and the pound
 # character is replaced with 'n')
 #
 iso-4a0=4A0 (ISO/DIN & JIS)
@@ -207,8 +207,9 @@
 Cassette=\u7EB8\u76D2
 Form-Source=\u8868\u683C\u6765\u6E90
 #
-# The following keys match the Strings returned by 
+# The following keys match the Strings returned by
 # PrinterIsAcceptingJobs.toString()
 #
 accepting-jobs=\u63A5\u53D7\u4F5C\u4E1A
 not-accepting-jobs=\u4E0D\u63A5\u53D7\u4F5C\u4E1A
+
--- a/jdk/src/share/classes/sun/print/resources/serviceui_zh_TW.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/print/resources/serviceui_zh_TW.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -14,7 +14,7 @@
 button.cancel=\u53D6\u6D88
 button.ok=\u78BA\u5B9A
 button.print=\u5217\u5370
-button.properties=\u5C6C\u6027(R)...
+button.properties=\u7279\u6027(R)...
 button.properties.mnemonic=R
 #
 checkbox.collate=\u7406\u5E8F(C)
@@ -32,23 +32,23 @@
 dialog.noprintermsg=\u627E\u4E0D\u5230\u5217\u5370\u670D\u52D9\u3002
 dialog.writeerror=\u7121\u6CD5\u5BEB\u5165\u81F3\u6A94\u6848:
 #
-label.info=\u8CC7\u8A0A: 
-label.jobname=\u5DE5\u4F5C\u540D\u7A31(J): 
+label.info=\u8CC7\u8A0A:
+label.jobname=\u5DE5\u4F5C\u540D\u7A31(J):
 label.jobname.mnemonic=J
-label.numcopies=\u5217\u5370\u4EFD\u6578(O): 
+label.numcopies=\u5217\u5370\u4EFD\u6578(O):
 label.numcopies.mnemonic=O
-label.priority=\u512A\u5148\u6B0A(R): 
+label.priority=\u512A\u5148\u6B0A(R):
 label.priority.mnemonic=R
-label.psname=\u540D\u7A31(N): 
+label.psname=\u540D\u7A31(N):
 label.psname.mnemonic=N
-label.pstype=\u985E\u578B: 
+label.pstype=\u985E\u578B:
 label.rangeto=\u81F3
-label.size=\u5927\u5C0F(Z): 
+label.size=\u5927\u5C0F(Z):
 label.size.mnemonic=Z
-label.source=\u4F86\u6E90(C): 
+label.source=\u4F86\u6E90(C):
 label.source.mnemonic=C
-label.status=\u72C0\u614B: 
-label.username=\u4F7F\u7528\u8005\u540D\u7A31(U): 
+label.status=\u72C0\u614B:
+label.username=\u4F7F\u7528\u8005\u540D\u7A31(U):
 label.username.mnemonic=U
 label.millimetres=(mm)
 label.inches=(in)
@@ -61,9 +61,9 @@
 label.rightmargin=\u53F3\u908A\u8DDD(R)
 label.rightmargin.mnemonic=R
 #
-radiobutton.color=\u8272\u5F69(C)
+radiobutton.color=\u984F\u8272(C)
 radiobutton.color.mnemonic=C
-radiobutton.draftq=\u8349\u5716(F)
+radiobutton.draftq=\u8349\u7A3F(F)
 radiobutton.draftq.mnemonic=F
 radiobutton.duplex=\u96D9\u9762\u5217\u5370(D)
 radiobutton.duplex.mnemonic=D
@@ -91,18 +91,18 @@
 radiobutton.tumble.mnemonic=T
 # The vkMnemonics correspond with the constants defined in KeyEvent, eg
 # 65 = KeyEvent.VK_A
-tab.appearance=\u5916\u89C0
+tab.appearance=\u5916\u89C0(A)
 tab.appearance.vkMnemonic=65
-tab.general=\u4E00\u822C
+tab.general=\u4E00\u822C(G)
 tab.general.vkMnemonic=71
-tab.pagesetup=\u9801\u9762\u8A2D\u5B9A
+tab.pagesetup=\u9801\u9762\u8A2D\u5B9A(S)
 tab.pagesetup.vkMnemonic=83
 #
 error.pagerange=\u7121\u6548\u7684\u9801\u9762\u7BC4\u570D; \u8ACB\u91CD\u65B0\u8F38\u5165\u6578\u503C (\u4F8B\u5982 1-3,5,7-10)
 error.destination=\u7121\u6548\u7684\u6A94\u540D; \u8ACB\u518D\u8A66\u4E00\u6B21
 #
 # The following keys match the Strings returned by MediaSizeName.toString()
-# (in some cases the space character is replaced by '-' and the pound 
+# (in some cases the space character is replaced by '-' and the pound
 # character is replaced with 'n')
 #
 iso-4a0=4A0 (ISO/DIN & JIS)
@@ -207,8 +207,9 @@
 Cassette=\u5361\u5F0F\u78C1\u5E36\u6A5F
 Form-Source=\u8868\u683C\u4F86\u6E90
 #
-# The following keys match the Strings returned by 
+# The following keys match the Strings returned by
 # PrinterIsAcceptingJobs.toString()
 #
 accepting-jobs=\u63A5\u53D7\u7684\u5DE5\u4F5C
 not-accepting-jobs=\u4E0D\u63A5\u53D7\u7684\u5DE5\u4F5C
+
--- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_de.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_de.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_es.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_es.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_fr.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_fr.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_it.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_it.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_ja.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_ja.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_ko.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_ko.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_pt_BR.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_pt_BR.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_sv.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_sv.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_zh_CN.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_zh_CN.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_zh_TW.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_zh_TW.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/rmi/rmic/resources/rmic_ja.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/rmi/rmic/resources/rmic_ja.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/rmi/rmic/resources/rmic_zh_CN.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/rmi/rmic/resources/rmic_zh_CN.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_de.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_de.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
@@ -81,16 +81,16 @@
 rmid.daemon.shutdown=Aktivierungsdaemon heruntergefahren
 
 # "rmid" should not be translated
-rmid.restart.group.warning=\nrmid: (WARNING) Neustart der Gruppe l\u00F6st Folgendes aus:
+rmid.restart.group.warning=\nrmid: (WARNUNG) Neustart der Gruppe l\u00F6st Folgendes aus:
 
 # "rmid" should not be translated
-rmid.restart.service.warning=\nrmid: (WARNING) Neustart des Service l\u00F6st Folgendes aus:
+rmid.restart.service.warning=\nrmid: (WARNUNG) Neustart des Service l\u00F6st Folgendes aus:
 
 # "rmid" should not be translated
-rmid.log.update.warning=\nrmid: (WARNING) Logupdate l\u00F6st Folgendes aus:
+rmid.log.update.warning=\nrmid: (WARNUNG) Logupdate l\u00F6st Folgendes aus:
 
 # "rmid" should not be translated
-rmid.log.snapshot.warning=\nrmid: (SEVERE) Log-Snapshot l\u00F6st Folgendes aus:
+rmid.log.snapshot.warning=\nrmid: (SCHWERWIEGEND) Log-Snapshot l\u00F6st Folgendes aus:
 
 # "rmid" should not be translated
-rmid.log.recover.warning=\nrmid: (WARNING) {0}: Logdatensatz wird bei Wiederherstellung \u00FCbersprungen:
+rmid.log.recover.warning=\nrmid: (WARNUNG) {0}: Logdatensatz wird bei Wiederherstellung \u00FCbersprungen:
--- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_es.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_es.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_fr.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_fr.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_it.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_it.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_ja.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_ja.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_ko.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_ko.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_pt_BR.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_pt_BR.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_sv.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_sv.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
@@ -81,16 +81,16 @@
 rmid.daemon.shutdown=aktiveringsdemonen avslutas
 
 # "rmid" should not be translated
-rmid.restart.group.warning=\nrmid: (VARNING) starta om gruppkast:
+rmid.restart.group.warning=\nrmid: (Varning) starta om gruppkast:
 
 # "rmid" should not be translated
-rmid.restart.service.warning=\nrmid: (VARNING) starta om tj\u00E4nstekast:
+rmid.restart.service.warning=\nrmid: (Varning) starta om tj\u00E4nstekast:
 
 # "rmid" should not be translated
-rmid.log.update.warning=\nrmid: (VARNING) logga uppdateringskast:
+rmid.log.update.warning=\nrmid: (Varning) logga uppdateringskast:
 
 # "rmid" should not be translated
-rmid.log.snapshot.warning=\nrmid: (ALLVARLIGT) logga \u00F6gonblickskast:
+rmid.log.snapshot.warning=\nrmid: (Allvarligt) logga \u00F6gonblickskast:
 
 # "rmid" should not be translated
-rmid.log.recover.warning=\nrmid: (VARNING) {0}: hoppar \u00F6ver loggpost under \u00E5terst\u00E4llning:
+rmid.log.recover.warning=\nrmid: (Varning) {0}: hoppar \u00F6ver loggpost under \u00E5terst\u00E4llning:
--- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_zh_CN.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_zh_CN.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_zh_TW.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_zh_TW.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/rmi/transport/ObjectTable.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/rmi/transport/ObjectTable.java	Wed Apr 20 09:31:11 2011 -0700
@@ -175,25 +175,26 @@
             DGCImpl.dgcLog.log(Log.VERBOSE, "add object " + oe);
         }
 
-        Remote impl = target.getImpl();
-        if (impl == null) {
-            throw new ExportException(
-                "internal error: attempt to export collected object");
-        }
+        synchronized (tableLock) {
+            /**
+             * Do nothing if impl has already been collected (see 6597112). Check while
+             * holding tableLock to ensure that Reaper cannot process weakImpl in between
+             * null check and put/increment effects.
+             */
+            if (target.getImpl() != null) {
+                if (objTable.containsKey(oe)) {
+                    throw new ExportException(
+                        "internal error: ObjID already in use");
+                } else if (implTable.containsKey(weakImpl)) {
+                    throw new ExportException("object already exported");
+                }
 
-        synchronized (tableLock) {
-            if (objTable.containsKey(oe)) {
-                throw new ExportException(
-                    "internal error: ObjID already in use");
-            } else if (implTable.containsKey(weakImpl)) {
-                throw new ExportException("object already exported");
-            }
+                objTable.put(oe, target);
+                implTable.put(weakImpl, target);
 
-            objTable.put(oe, target);
-            implTable.put(weakImpl, target);
-
-            if (!target.isPermanent()) {
-                incrementKeepAliveCount();
+                if (!target.isPermanent()) {
+                    incrementKeepAliveCount();
+                }
             }
         }
     }
--- a/jdk/src/share/classes/sun/security/acl/AclEntryImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/acl/AclEntryImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/acl/AclImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/acl/AclImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/acl/GroupImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/acl/GroupImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/jca/ProviderList.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/jca/ProviderList.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/jca/Providers.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/jca/Providers.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/jgss/krb5/Krb5AcceptCredential.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/jgss/krb5/Krb5AcceptCredential.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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,6 @@
 import sun.security.jgss.GSSCaller;
 import sun.security.jgss.spi.*;
 import sun.security.krb5.*;
-import javax.security.auth.kerberos.*;
 import java.security.PrivilegedActionException;
 import java.security.PrivilegedExceptionAction;
 import java.security.AccessController;
@@ -43,40 +42,23 @@
  * @since 1.4
  */
 public class Krb5AcceptCredential
-    extends KerberosKey
     implements Krb5CredElement {
 
     private static final long serialVersionUID = 7714332137352567952L;
 
     private Krb5NameElement name;
 
-    /**
-     * We cache an EncryptionKey representation of this key because many
-     * Krb5 operation require a key in that form. At some point we might do
-     * away with EncryptionKey altogether and use the base class
-     * KerberosKey everywhere.
-     */
-    private EncryptionKey[] krb5EncryptionKeys;
+    private Krb5Util.ServiceCreds screds;
 
-    private Krb5AcceptCredential(Krb5NameElement name, KerberosKey[] keys) {
+    private Krb5AcceptCredential(Krb5NameElement name, Krb5Util.ServiceCreds creds) {
         /*
          * Initialize this instance with the data from the acquired
          * KerberosKey. This class needs to be a KerberosKey too
          * hence we can't just store a reference.
          */
-        super(keys[0].getPrincipal(),
-              keys[0].getEncoded(),
-              keys[0].getKeyType(),
-              keys[0].getVersionNumber());
 
         this.name = name;
-        // Cache this for later use by the sun.security.krb5 package.
-        krb5EncryptionKeys = new EncryptionKey[keys.length];
-        for (int i = 0; i < keys.length; i++) {
-            krb5EncryptionKeys[i] = new EncryptionKey(keys[i].getEncoded(),
-                                    keys[i].getKeyType(),
-                                    new Integer(keys[i].getVersionNumber()));
-        }
+        this.screds = creds;
     }
 
     static Krb5AcceptCredential getInstance(final GSSCaller caller, Krb5NameElement name)
@@ -86,12 +68,12 @@
             name.getKrb5PrincipalName().getName());
         final AccessControlContext acc = AccessController.getContext();
 
-        KerberosKey[] keys;
+        Krb5Util.ServiceCreds creds = null;
         try {
-            keys = AccessController.doPrivileged(
-                        new PrivilegedExceptionAction<KerberosKey[]>() {
-                public KerberosKey[] run() throws Exception {
-                    return Krb5Util.getKeys(
+            creds = AccessController.doPrivileged(
+                        new PrivilegedExceptionAction<Krb5Util.ServiceCreds>() {
+                public Krb5Util.ServiceCreds run() throws Exception {
+                    return Krb5Util.getServiceCreds(
                         caller == GSSCaller.CALLER_UNKNOWN ? GSSCaller.CALLER_ACCEPT: caller,
                         serverPrinc, acc);
                 }});
@@ -103,17 +85,17 @@
             throw ge;
         }
 
-        if (keys == null || keys.length == 0)
+        if (creds == null)
             throw new GSSException(GSSException.NO_CRED, -1,
-                                   "Failed to find any Kerberos Key");
+                                   "Failed to find any Kerberos credentails");
 
         if (name == null) {
-            String fullName = keys[0].getPrincipal().getName();
+            String fullName = creds.getName();
             name = Krb5NameElement.getInstance(fullName,
                                        Krb5MechFactory.NT_GSS_KRB5_PRINCIPAL);
         }
 
-        return new Krb5AcceptCredential(name, keys);
+        return new Krb5AcceptCredential(name, creds);
     }
 
     /**
@@ -171,7 +153,7 @@
     }
 
     EncryptionKey[] getKrb5EncryptionKeys() {
-        return krb5EncryptionKeys;
+        return screds.getEKeys();
     }
 
     /**
@@ -193,13 +175,6 @@
      * destroy in the base class.
      */
     public void destroy() throws DestroyFailedException {
-        if (krb5EncryptionKeys != null) {
-            for (int i = 0; i < krb5EncryptionKeys.length; i++) {
-                krb5EncryptionKeys[i].destroy();
-            }
-            krb5EncryptionKeys = null;
-        }
-
-        super.destroy();
+        screds.destroy();
     }
 }
--- a/jdk/src/share/classes/sun/security/jgss/krb5/Krb5Util.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/jgss/krb5/Krb5Util.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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,7 @@
 import javax.security.auth.kerberos.KerberosTicket;
 import javax.security.auth.kerberos.KerberosKey;
 import javax.security.auth.kerberos.KerberosPrincipal;
+import javax.security.auth.kerberos.KeyTab;
 import javax.security.auth.Subject;
 import javax.security.auth.login.LoginException;
 import java.security.AccessControlContext;
@@ -38,7 +39,13 @@
 import sun.security.krb5.EncryptionKey;
 import sun.security.krb5.KrbException;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+import sun.misc.SharedSecrets;
+import sun.security.krb5.PrincipalName;
 /**
  * Utilities for obtaining and converting Kerberos tickets.
  *
@@ -75,7 +82,7 @@
 
         // 1. Try to find service ticket in acc subject
         Subject accSubj = Subject.getSubject(acc);
-        KerberosTicket ticket = (KerberosTicket) SubjectComber.find(accSubj,
+        KerberosTicket ticket = SubjectComber.find(accSubj,
             serverPrincipal, clientPrincipal, KerberosTicket.class);
 
         if (ticket != null) {
@@ -87,7 +94,7 @@
             // 2. Try to get ticket from login
             try {
                 loginSubj = GSSUtil.login(caller, GSSUtil.GSS_KRB5_MECH_OID);
-                ticket = (KerberosTicket) SubjectComber.find(loginSubj,
+                ticket = SubjectComber.find(loginSubj,
                     serverPrincipal, clientPrincipal, KerberosTicket.class);
                 if (ticket != null) {
                     return ticket; // found it
@@ -102,13 +109,13 @@
         // Try to get TGT to acquire service ticket
 
         // 3. Try to get TGT from acc subject
-        KerberosTicket tgt = (KerberosTicket) SubjectComber.find(accSubj,
+        KerberosTicket tgt = SubjectComber.find(accSubj,
             tgsPrincipal, clientPrincipal, KerberosTicket.class);
 
         boolean fromAcc;
         if (tgt == null && loginSubj != null) {
             // 4. Try to get TGT from login subject
-            tgt = (KerberosTicket) SubjectComber.find(loginSubj,
+            tgt = SubjectComber.find(loginSubj,
                 tgsPrincipal, clientPrincipal, KerberosTicket.class);
             fromAcc = false;
         } else {
@@ -145,14 +152,14 @@
 
         // Try to get ticket from acc's Subject
         Subject accSubj = Subject.getSubject(acc);
-        KerberosTicket ticket = (KerberosTicket)
+        KerberosTicket ticket =
             SubjectComber.find(accSubj, serverPrincipal, clientPrincipal,
                   KerberosTicket.class);
 
         // Try to get ticket from Subject obtained from GSSUtil
         if (ticket == null && !GSSUtil.useSubjectCredsOnly(caller)) {
             Subject subject = GSSUtil.login(caller, GSSUtil.GSS_KRB5_MECH_OID);
-            ticket = (KerberosTicket) SubjectComber.find(subject,
+            ticket = SubjectComber.find(subject,
                 serverPrincipal, clientPrincipal, KerberosTicket.class);
         }
         return ticket;
@@ -182,37 +189,152 @@
         return subject;
     }
 
+    // A special KerberosKey, used as keys read from a KeyTab object.
+    // Each time new keys are read from KeyTab objects in the private
+    // credentials set, old ones are removed and new ones added.
+    public static class KeysFromKeyTab extends KerberosKey {
+        public KeysFromKeyTab(KerberosKey key) {
+            super(key.getPrincipal(), key.getEncoded(),
+                    key.getKeyType(), key.getVersionNumber());
+        }
+    }
+
     /**
-     * Retrieves the keys for the specified server principal from
-     * the Subject in the specified AccessControlContext.
-     * If the ticket can not be found in the Subject, and if
-     * useSubjectCredsOnly is false, then obtain keys from
-     * a LoginContext.
+     * Credentials of a service, the private secret to authenticate its
+     * identity, which can be:
+     *   1. Some KerberosKeys (generated from password)
+     *   2. A KeyTab (for a typical service)
+     *   3. A TGT (for a user2user service. Not supported yet)
      *
-     * NOTE: This method is used by JSSE Kerberos Cipher Suites
+     * Note that some creds can coexist. For example, a user2user service
+     * can use its keytab (or keys) if the client can successfully obtain a
+     * normal service ticket, otherwise, it can uses the TGT (actually, the
+     * session key of the TGT) if the client can only acquire a service ticket
+     * of ENC-TKT-IN-SKEY style.
      */
-    public static KerberosKey[] getKeys(GSSCaller caller,
+    public static class ServiceCreds {
+        private KerberosPrincipal kp;
+        private List<KeyTab> ktabs;
+        private List<KerberosKey> kk;
+        private Subject subj;
+        //private KerberosTicket tgt;   // user2user, not supported yet
+
+        private static ServiceCreds getInstance(
+                Subject subj, String serverPrincipal) {
+
+            ServiceCreds sc = new ServiceCreds();
+            sc.subj = subj;
+
+            for (KerberosPrincipal p: subj.getPrincipals(KerberosPrincipal.class)) {
+                if (serverPrincipal == null ||
+                        p.getName().equals(serverPrincipal)) {
+                    sc.kp = p;
+                    serverPrincipal = p.getName();
+                    break;
+                }
+            }
+            if (sc.kp == null) {
+                // Compatibility with old behavior: even when there is no
+                // KerberosPrincipal, we can find one from KerberosKeys
+                List<KerberosKey> keys = SubjectComber.findMany(
+                        subj, null, null, KerberosKey.class);
+                if (!keys.isEmpty()) {
+                    sc.kp = keys.get(0).getPrincipal();
+                    serverPrincipal = sc.kp.getName();
+                    if (DEBUG) {
+                        System.out.println(">>> ServiceCreds: no kp?"
+                                + " find one from kk: " + serverPrincipal);
+                    }
+                } else {
+                    return null;
+                }
+            }
+            sc.ktabs = SubjectComber.findMany(
+                        subj, null, null, KeyTab.class);
+            sc.kk = SubjectComber.findMany(
+                        subj, serverPrincipal, null, KerberosKey.class);
+            if (sc.ktabs.isEmpty() && sc.kk.isEmpty()) {
+                return null;
+            }
+            return sc;
+        }
+
+        public String getName() {
+            return kp.getName();
+        }
+
+        public KerberosKey[] getKKeys() {
+            if (ktabs.isEmpty()) {
+                return kk.toArray(new KerberosKey[kk.size()]);
+            } else {
+                List<KerberosKey> keys = new ArrayList<>();
+                for (KeyTab ktab: ktabs) {
+                    for (KerberosKey k: ktab.getKeys(kp)) {
+                        keys.add(k);
+                    }
+                }
+                // Compatibility: also add keys to privCredSet. Remove old
+                // ones first, only remove those from keytab.
+                if (!subj.isReadOnly()) {
+                    Set<Object> pcs = subj.getPrivateCredentials();
+                    synchronized (pcs) {
+                        Iterator<Object> iterator = pcs.iterator();
+                        while (iterator.hasNext()) {
+                            Object obj = iterator.next();
+                            if (obj instanceof KeysFromKeyTab) {
+                                KerberosKey key = (KerberosKey)obj;
+                                if (Objects.equals(key.getPrincipal(), kp)) {
+                                    iterator.remove();
+                                }
+                            }
+                        }
+                    }
+                    for (KerberosKey key: keys) {
+                        subj.getPrivateCredentials().add(new KeysFromKeyTab(key));
+                    }
+                }
+                return keys.toArray(new KerberosKey[keys.size()]);
+            }
+        }
+
+        public EncryptionKey[] getEKeys() {
+            KerberosKey[] kkeys = getKKeys();
+            EncryptionKey[] ekeys = new EncryptionKey[kkeys.length];
+            for (int i=0; i<ekeys.length; i++) {
+                ekeys[i] =  new EncryptionKey(
+                            kkeys[i].getEncoded(), kkeys[i].getKeyType(),
+                            new Integer(kkeys[i].getVersionNumber()));
+            }
+            return ekeys;
+        }
+
+        public void destroy() {
+            kp = null;
+            ktabs = null;
+            kk = null;
+        }
+    }
+    /**
+     * Retrieves the ServiceCreds for the specified server principal from
+     * the Subject in the specified AccessControlContext. If not found, and if
+     * useSubjectCredsOnly is false, then obtain from a LoginContext.
+     *
+     * NOTE: This method is also used by JSSE Kerberos Cipher Suites
+     */
+    public static ServiceCreds getServiceCreds(GSSCaller caller,
         String serverPrincipal, AccessControlContext acc)
                 throws LoginException {
 
         Subject accSubj = Subject.getSubject(acc);
-        List<KerberosKey> kkeys = (List<KerberosKey>)SubjectComber.findMany(
-                accSubj, serverPrincipal, null, KerberosKey.class);
-
-        if (kkeys == null && !GSSUtil.useSubjectCredsOnly(caller)) {
-            Subject subject = GSSUtil.login(caller, GSSUtil.GSS_KRB5_MECH_OID);
-            kkeys = (List<KerberosKey>) SubjectComber.findMany(subject,
-                serverPrincipal, null, KerberosKey.class);
+        ServiceCreds sc = null;
+        if (accSubj != null) {
+            sc = ServiceCreds.getInstance(accSubj, serverPrincipal);
         }
-
-        int len;
-        if (kkeys != null && (len = kkeys.size()) > 0) {
-            KerberosKey[] keys = new KerberosKey[len];
-            kkeys.toArray(keys);
-            return keys;
-        } else {
-            return null;
+        if (sc == null && !GSSUtil.useSubjectCredsOnly(caller)) {
+            Subject subject = GSSUtil.login(caller, GSSUtil.GSS_KRB5_MECH_OID);
+            sc = ServiceCreds.getInstance(subject, serverPrincipal);
         }
+        return sc;
     }
 
     public static KerberosTicket credsToTicket(Credentials serviceCreds) {
@@ -247,4 +369,17 @@
             kerbTicket.getRenewTill(),
             kerbTicket.getClientAddresses());
     }
+
+    /**
+     * A helper method to get EncryptionKeys from a javax..KeyTab
+     * @param ktab the javax..KeyTab class
+     * @param cname the PrincipalName
+     * @return the EKeys, never null, might be empty
+     */
+    public static EncryptionKey[] keysFromJavaxKeyTab(
+            KeyTab ktab, PrincipalName cname) {
+        return SharedSecrets.getJavaxSecurityAuthKerberosAccess().
+                keyTabGetEncryptionKeys(ktab, cname);
+    }
+
 }
--- a/jdk/src/share/classes/sun/security/jgss/krb5/SubjectComber.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/jgss/krb5/SubjectComber.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
@@ -33,10 +33,11 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
+import javax.security.auth.kerberos.KeyTab;
 
 /**
- * This utility looks through the current Subject and retrieves a ticket or key
- * for the desired client/server principals.
+ * This utility looks through the current Subject and retrieves private
+ * credentials for the desired client/server principals.
  *
  * @author Ram Marti
  * @since 1.4.2
@@ -52,58 +53,70 @@
     private SubjectComber() {  // Cannot create one of these
     }
 
-    static Object find(Subject subject, String serverPrincipal,
-        String clientPrincipal, Class credClass) {
+    static <T> T find(Subject subject, String serverPrincipal,
+        String clientPrincipal, Class<T> credClass) {
 
-        return findAux(subject, serverPrincipal, clientPrincipal, credClass,
+        return (T)findAux(subject, serverPrincipal, clientPrincipal, credClass,
             true);
     }
 
-    static Object findMany(Subject subject, String serverPrincipal,
-        String clientPrincipal, Class credClass) {
+    static <T> List<T> findMany(Subject subject, String serverPrincipal,
+        String clientPrincipal, Class<T> credClass) {
 
-        return findAux(subject, serverPrincipal, clientPrincipal, credClass,
+        return (List<T>)findAux(subject, serverPrincipal, clientPrincipal, credClass,
             false);
     }
 
     /**
-     * Find the ticket or key for the specified client/server principals
+     * Find private credentials for the specified client/server principals
      * in the subject. Returns null if the subject is null.
      *
-     * @return the ticket or key
+     * @return the private credentials
      */
-    private static Object findAux(Subject subject, String serverPrincipal,
-        String clientPrincipal, Class credClass, boolean oneOnly) {
+    private static <T> Object findAux(Subject subject, String serverPrincipal,
+        String clientPrincipal, Class<T> credClass, boolean oneOnly) {
 
         if (subject == null) {
             return null;
         } else {
-            List<Object> answer = (oneOnly ? null : new ArrayList<Object>());
+            List<T> answer = (oneOnly ? null : new ArrayList<T>());
 
-            if (credClass == KerberosKey.class) {
-                // We are looking for a KerberosKey credentials for the
-                // serverPrincipal
-                Iterator<KerberosKey> iterator =
-                    subject.getPrivateCredentials(KerberosKey.class).iterator();
+            if (credClass == KeyTab.class) {    // Principal un-related
+                // We are looking for credentials unrelated to serverPrincipal
+                Iterator<T> iterator =
+                    subject.getPrivateCredentials(credClass).iterator();
                 while (iterator.hasNext()) {
-                    KerberosKey key = iterator.next();
-                    if (serverPrincipal == null ||
-                        serverPrincipal.equals(key.getPrincipal().getName())) {
+                    T t = iterator.next();
+                    if (DEBUG) {
+                        System.out.println("Found " + credClass.getSimpleName());
+                    }
+                    if (oneOnly) {
+                        return t;
+                    } else {
+                        answer.add(t);
+                    }
+                }
+            } else if (credClass == KerberosKey.class) {
+                // We are looking for credentials for the serverPrincipal
+                Iterator<T> iterator =
+                    subject.getPrivateCredentials(credClass).iterator();
+                while (iterator.hasNext()) {
+                    T t = iterator.next();
+                    String name = ((KerberosKey)t).getPrincipal().getName();
+                    if (serverPrincipal == null || serverPrincipal.equals(name)) {
                          if (DEBUG) {
-                             System.out.println("Found key for "
-                                 + key.getPrincipal() + "(" +
-                                 key.getKeyType() + ")");
+                             System.out.println("Found " +
+                                     credClass.getSimpleName() + " for " + name);
                          }
                          if (oneOnly) {
-                             return key;
+                             return t;
                          } else {
                              if (serverPrincipal == null) {
                                  // Record name so that keys returned will all
                                  // belong to the same principal
-                                 serverPrincipal =
-                                     key.getPrincipal().getName();
+                                 serverPrincipal = name;
                              }
-                             answer.add(key);
+                             answer.add(t);
                          }
                     }
                 }
@@ -167,7 +180,7 @@
                                                 serverPrincipal =
                                                 ticket.getServer().getName();
                                             }
-                                            answer.add(ticket);
+                                            answer.add((T)ticket);
                                         }
                                     }
                                 }
--- a/jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/krb5/Config.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/krb5/Config.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
@@ -110,7 +110,6 @@
 
     public static synchronized void refresh() throws KrbException {
         singleton = new Config();
-        KeyTab.refresh();
         KdcComm.initStatic();
     }
 
--- a/jdk/src/share/classes/sun/security/krb5/EncryptionKey.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/krb5/EncryptionKey.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
@@ -138,8 +138,7 @@
      * @returns an array of secret keys or null if none were found.
      */
     public static EncryptionKey[] acquireSecretKeys(PrincipalName princ,
-                                                    String keytab)
-        throws KrbException, IOException {
+                                                    String keytab) {
 
         if (princ == null)
             throw new IllegalArgumentException(
@@ -148,11 +147,6 @@
         // KeyTab getInstance(keytab) will call KeyTab.getInstance()
         // if keytab is null
         KeyTab ktab = KeyTab.getInstance(keytab);
-
-        if (ktab == null) {
-            return null;
-        }
-
         return ktab.readServiceKeys(princ);
     }
 
--- a/jdk/src/share/classes/sun/security/krb5/KdcComm.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/krb5/KdcComm.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/krb5/KrbAsRep.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/krb5/KrbAsRep.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
@@ -37,6 +37,8 @@
 import sun.security.util.*;
 import java.io.IOException;
 import java.util.Objects;
+import javax.security.auth.kerberos.KeyTab;
+import sun.security.jgss.krb5.Krb5Util;
 
 /**
  * This class encapsulates a AS-REP message that the KDC sends to the
@@ -90,29 +92,32 @@
     }
 
     /**
-     * Called by KrbAsReqBuilder to resolve a AS-REP message using keys.
-     * @param keys user provided keys, not null
+     * Called by KrbAsReqBuilder to resolve a AS-REP message using a keytab.
+     * @param ktab the keytab, not null
      * @param asReq the original AS-REQ sent, used to validate AS-REP
+     * @param cname the user principal name, used to locate keys in ktab
      */
-    void decryptUsingKeys(EncryptionKey[] keys, KrbAsReq asReq)
+    void decryptUsingKeyTab(KeyTab ktab, KrbAsReq asReq, PrincipalName cname)
             throws KrbException, Asn1Exception, IOException {
         EncryptionKey dkey = null;
         int encPartKeyType = rep.encPart.getEType();
         Integer encPartKvno = rep.encPart.kvno;
-        try {
-            dkey = EncryptionKey.findKey(encPartKeyType, encPartKvno, keys);
-        } catch (KrbException ke) {
-            if (ke.returnCode() == Krb5.KRB_AP_ERR_BADKEYVER) {
-                // Fallback to no kvno. In some cases, keytab is generated
-                // not by sysadmin but Java's ktab command
-                dkey = EncryptionKey.findKey(encPartKeyType, keys);
+            try {
+                dkey = EncryptionKey.findKey(encPartKeyType, encPartKvno,
+                        Krb5Util.keysFromJavaxKeyTab(ktab, cname));
+            } catch (KrbException ke) {
+                if (ke.returnCode() == Krb5.KRB_AP_ERR_BADKEYVER) {
+                    // Fallback to no kvno. In some cases, keytab is generated
+                    // not by sysadmin but Java's ktab command
+                    dkey = EncryptionKey.findKey(encPartKeyType,
+                            Krb5Util.keysFromJavaxKeyTab(ktab, cname));
+                }
             }
-        }
-        if (dkey == null) {
-            throw new KrbException(Krb5.API_INVALID_ARG,
-                "Cannot find key for type/kvno to decrypt AS REP - " +
-                EType.toString(encPartKeyType) + "/" + encPartKvno);
-        }
+            if (dkey == null) {
+                throw new KrbException(Krb5.API_INVALID_ARG,
+                    "Cannot find key for type/kvno to decrypt AS REP - " +
+                    EType.toString(encPartKeyType) + "/" + encPartKvno);
+            }
         decrypt(dkey, asReq);
     }
 
--- a/jdk/src/share/classes/sun/security/krb5/KrbAsReqBuilder.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/krb5/KrbAsReqBuilder.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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,6 +27,8 @@
 
 import java.io.IOException;
 import java.util.Arrays;
+import javax.security.auth.kerberos.KeyTab;
+import sun.security.jgss.krb5.Krb5Util;
 import sun.security.krb5.internal.HostAddresses;
 import sun.security.krb5.internal.KDCOptions;
 import sun.security.krb5.internal.KRBError;
@@ -42,13 +44,16 @@
  * 1. Gather information to create AS-REQ
  * 2. Create and send AS-REQ
  * 3. Receive AS-REP and KRB-ERROR (-KRB_ERR_RESPONSE_TOO_BIG) and parse them
- * 4. Emit credentials and secret keys (for JAAS storeKey=true)
+ * 4. Emit credentials and secret keys (for JAAS storeKey=true with password)
  *
  * This class does not:
  * 1. Deal with real communications (KdcComm does it, and TGS-REQ)
  *    a. Name of KDCs for a realm
  *    b. Server availability, timeout, UDP or TCP
  *    d. KRB_ERR_RESPONSE_TOO_BIG
+ * 2. Stores its own copy of password, this means:
+ *    a. Do not change/wipe it before Builder finish
+ *    b. Builder will not wipe it for you
  *
  * With this class:
  * 1. KrbAsReq has only one constructor
@@ -70,19 +75,17 @@
     private HostAddresses addresses;
 
     // Secret source: can't be changed once assigned, only one (of the two
-    // sources) can be set and should be non-null
-    private EncryptionKey[] keys;
-    private char[] password;
+    // sources) can be set to non-null
+    private final char[] password;
+    private final KeyTab ktab;
 
     // Used to create a ENC-TIMESTAMP in the 2nd AS-REQ
-    private EncryptionKey pakey;
     private PAData[] paList;        // PA-DATA from both KRB-ERROR and AS-REP.
                                     // Used by getKeys() only.
                                     // Only AS-REP should be enough per RFC,
                                     // combined in case etypes are different.
 
     // The generated and received:
-    int[] eTypes;
     private KrbAsReq req;
     private KrbAsRep rep;
 
@@ -94,7 +97,7 @@
     private State state;
 
     // Called by other constructors
-    private KrbAsReqBuilder(PrincipalName cname)
+    private void init(PrincipalName cname)
             throws KrbException {
         if (cname.getRealm() == null) {
             cname.setRealm(Config.getInstance().getDefaultRealm());
@@ -114,14 +117,11 @@
      * This argument will neither be modified nor stored by the method.
      * @throws KrbException
      */
-    public KrbAsReqBuilder(PrincipalName cname, EncryptionKey[] keys)
+    public KrbAsReqBuilder(PrincipalName cname, KeyTab ktab)
             throws KrbException {
-        this(cname);
-        this.keys = new EncryptionKey[keys.length];
-        for (int i=0; i<keys.length; i++) {
-            this.keys[i] = (EncryptionKey)keys[i].clone();
-        }
-        eTypes = EType.getDefaults("default_tkt_enctypes", keys);
+        init(cname);
+        this.ktab = ktab;
+        this.password = null;
     }
 
     /**
@@ -137,30 +137,24 @@
      */
     public KrbAsReqBuilder(PrincipalName cname, char[] pass)
             throws KrbException {
-        this(cname);
+        init(cname);
         this.password = pass.clone();
-        eTypes = EType.getDefaults("default_tkt_enctypes");
+        this.ktab = null;
     }
 
     /**
-     * Retrieves an array of secret keys for the client. This is useful if
+     * Retrieves an array of secret keys for the client. This is used when
      * the client supplies password but need keys to act as an acceptor
      * (in JAAS words, isInitiator=true and storeKey=true)
-     * @return original keys if initiated with keys, or generated keys if
-     * password. In latter case, PA-DATA from server might be used to
-     * generate keys. All "default_tkt_enctypes" keys will be generated,
-     * Never null.
+     * @return generated keys from password. PA-DATA from server might be used.
+     * All "default_tkt_enctypes" keys will be generated, Never null.
+     * @throws IllegalStateException if not constructed from a password
      * @throws KrbException
      */
     public EncryptionKey[] getKeys() throws KrbException {
         checkState(State.REQ_OK, "Cannot get keys");
-        if (keys != null) {
-            EncryptionKey[] result = new EncryptionKey[keys.length];
-            for (int i=0; i<keys.length; i++) {
-                result[i] = (EncryptionKey)keys[i].clone();
-            }
-            return result;
-        } else {
+        if (password != null) {
+            int[] eTypes = EType.getDefaults("default_tkt_enctypes");
             EncryptionKey[] result = new EncryptionKey[eTypes.length];
 
             /*
@@ -205,6 +199,8 @@
                 }
             }
             return result;
+        } else {
+            throw new IllegalStateException("Required password not provided");
         }
     }
 
@@ -241,12 +237,22 @@
     /**
      * Build a KrbAsReq object from all info fed above. Normally this method
      * will be called twice: initial AS-REQ and second with pakey
+     * @param key null (initial AS-REQ) or pakey (with preauth)
      * @return the KrbAsReq object
      * @throws KrbException
      * @throws IOException
      */
-    private KrbAsReq build() throws KrbException, IOException {
-        return new KrbAsReq(pakey,
+    private KrbAsReq build(EncryptionKey key) throws KrbException, IOException {
+        int[] eTypes;
+        if (password != null) {
+            eTypes = EType.getDefaults("default_tkt_enctypes");
+        } else {
+            EncryptionKey[] ks = Krb5Util.keysFromJavaxKeyTab(ktab, cname);
+            eTypes = EType.getDefaults("default_tkt_enctypes",
+                    ks);
+            for (EncryptionKey k: ks) k.destroy();
+        }
+        return new KrbAsReq(key,
             options,
             cname,
             sname,
@@ -263,9 +269,10 @@
      * @throws Asn1Exception
      * @throws IOException
      */
-    private KrbAsReqBuilder resolve() throws KrbException, Asn1Exception, IOException {
-        if (keys != null) {
-            rep.decryptUsingKeys(keys, req);
+    private KrbAsReqBuilder resolve()
+            throws KrbException, Asn1Exception, IOException {
+        if (ktab != null) {
+            rep.decryptUsingKeyTab(ktab, req, cname);
         } else {
             rep.decryptUsingPassword(password, req, cname);
         }
@@ -292,9 +299,10 @@
     private KrbAsReqBuilder send() throws KrbException, IOException {
         boolean preAuthFailedOnce = false;
         KdcComm comm = new KdcComm(cname.getRealmAsString());
+        EncryptionKey pakey = null;
         while (true) {
             try {
-                req = build();
+                req = build(pakey);
                 rep = new KrbAsRep(comm.send(req.encoding()));
                 return this;
             } catch (KrbException ke) {
@@ -308,7 +316,10 @@
                     preAuthFailedOnce = true;
                     KRBError kerr = ke.getError();
                     if (password == null) {
-                        pakey = EncryptionKey.findKey(kerr.getEType(), keys);
+                        EncryptionKey[] ks = Krb5Util.keysFromJavaxKeyTab(ktab, cname);
+                        pakey = EncryptionKey.findKey(kerr.getEType(), ks);
+                        if (pakey != null) pakey = (EncryptionKey)pakey.clone();
+                        for (EncryptionKey k: ks) k.destroy();
                     } else {
                         PAData.SaltAndParams snp = PAData.getSaltAndParams(
                                 kerr.getEType(), kerr.getPA());
@@ -317,7 +328,7 @@
                             // does not recommend this
                             pakey = EncryptionKey.acquireSecretKey(password,
                                     snp.salt == null ? cname.getSalt() : snp.salt,
-                                    eTypes[0],
+                                    EType.getDefaults("default_tkt_enctypes")[0],
                                     null);
                         } else {
                             pakey = EncryptionKey.acquireSecretKey(password,
@@ -369,15 +380,8 @@
      */
     public void destroy() {
         state = State.DESTROYED;
-        if (keys != null) {
-            for (EncryptionKey k: keys) {
-                k.destroy();
-            }
-            keys = null;
-        }
         if (password != null) {
             Arrays.fill(password, (char)0);
-            password = null;
         }
     }
 
--- a/jdk/src/share/classes/sun/security/krb5/PrincipalName.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/krb5/PrincipalName.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/krb5/internal/HostAddresses.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/krb5/internal/HostAddresses.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/krb5/internal/KRBError.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/krb5/internal/KRBError.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/krb5/internal/NetClient.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/krb5/internal/NetClient.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
@@ -59,7 +59,8 @@
 
     TCPClient(String hostname, int port, int timeout)
             throws IOException {
-        tcpSocket = new Socket(hostname, port);
+        tcpSocket = new Socket();
+        tcpSocket.connect(new InetSocketAddress(hostname, port), timeout);
         out = new BufferedOutputStream(tcpSocket.getOutputStream());
         in = new BufferedInputStream(tcpSocket.getInputStream());
         tcpSocket.setSoTimeout(timeout);
--- a/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/krb5/internal/crypto/EType.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/krb5/internal/crypto/EType.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
@@ -40,6 +40,7 @@
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.File;
+import java.io.FileNotFoundException;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Map;
@@ -50,92 +51,138 @@
  * This class represents key table. The key table functions deal with storing
  * and retrieving service keys for use in authentication exchanges.
  *
+ * A KeyTab object is always constructed, if the file specified does not
+ * exist, it's still valid but empty. If there is an I/O error or file format
+ * error, it's invalid.
+ *
+ * The class is immutable on the read side (the write side is only used by
+ * the ktab tool).
+ *
  * @author Yanni Zhang
  */
 public class KeyTab implements KeyTabConstants {
-    int kt_vno;
-    private static KeyTab singleton = null;
+
     private static final boolean DEBUG = Krb5.DEBUG;
-    private static String name;
+    private static String defaultTabName = null;
+
+    // Attention: Currently there is no way to remove a keytab from this map,
+    // this might lead to a memory leak.
+    private static Map<String,KeyTab> map = new HashMap<>();
+
+    // KeyTab file does not exist. Note: a missing keytab is still valid
+    private boolean isMissing = false;
+
+    // KeyTab file is invalid, possibly an I/O error or a file format error.
+    private boolean isValid = true;
+
+    private final String tabName;
+    private long lastModified;
+    private int kt_vno;
+
     private Vector<KeyTabEntry> entries = new Vector<>();
 
-    private KeyTab(String filename) throws IOException, RealmException {
-        init(filename);
-    }
-
-    public static KeyTab getInstance(String s) {
-        name = parse(s);
-        if (name == null) {
-            return getInstance();
+    /**
+     * Constructs a KeyTab object.
+     *
+     * If there is any I/O error or format errot during the loading, the
+     * isValid flag is set to false, and all half-read entries are dismissed.
+     * @param filename path name for the keytab file, must not be null
+     */
+    private KeyTab(String filename) {
+        tabName = filename;
+        try {
+            lastModified = new File(tabName).lastModified();
+            KeyTabInputStream kis =
+                new KeyTabInputStream(new FileInputStream(filename));
+            load(kis);
+            kis.close();
+        } catch (FileNotFoundException e) {
+            entries.clear();
+            isMissing = true;
+        } catch (Exception ioe) {
+            entries.clear();
+            isValid = false;
         }
-        return getInstance(new File(name));
     }
 
     /**
-     * Gets the single instance of KeyTab class.
-     * @param file the key tab file.
-     * @return single instance of KeyTab;
-     *  return null if error occurs while reading data out of the file.
+     * Read a keytab file. Returns a new object and save it into cache when
+     * new content (modified since last read) is available. If keytab file is
+     * invalid, the old object will be returned. This is a safeguard for
+     * partial-written keytab files or non-stable network. Please note that
+     * a missing keytab is valid, which is equivalent to an empty keytab.
+     *
+     * @param s file name of keytab, must not be null
+     * @return the keytab object, can be invalid, but never null.
      */
-    public static KeyTab getInstance(File file) {
-        try {
-            if (!(file.exists())) {
-                singleton = null;
-            } else {
-                String fname = file.getAbsolutePath();
-                // Since this class deals with file I/O operations,
-                // we want only one class instance existing.
-                if (singleton != null) {
-                    File kfile = new File(singleton.name);
-                    String kname = kfile.getAbsolutePath();
-                    if (kname.equalsIgnoreCase(fname)) {
-                       if (DEBUG) {
-                          System.out.println("KeyTab instance already exists");
-                       }
-                    }
-                } else {
-                    singleton = new KeyTab(fname);
-                }
-            }
-        } catch (Exception e) {
-            singleton = null;
-            if (DEBUG) {
-                System.out.println("Could not obtain an instance of KeyTab" +
-                                   e.getMessage());
-            }
+    private synchronized static KeyTab getInstance0(String s) {
+        long lm = new File(s).lastModified();
+        KeyTab old = map.get(s);
+        if (old != null && old.isValid() && old.lastModified == lm) {
+            return old;
         }
-        return singleton;
+        KeyTab ktab = new KeyTab(s);
+        if (ktab.isValid()) {               // A valid new keytab
+            map.put(s, ktab);
+            return ktab;
+        } else if (old != null) {           // An existing old one
+            return old;
+        } else {
+            return ktab;                    // first read is invalid
+        }
     }
 
     /**
-     * Gets the single instance of KeyTab class.
-     * @return single instance of KeyTab; return null if default keytab file
-     *  does not exist, or error occurs while reading data from the file.
+     * Gets a KeyTab object.
+     * @param s the key tab file name.
+     * @return the KeyTab object, never null.
+     */
+    public static KeyTab getInstance(String s) {
+        if (s == null) {
+            return getInstance();
+        } else {
+            return getInstance0(s);
+        }
+    }
+
+    /**
+     * Gets a KeyTab object.
+     * @param file the key tab file.
+     * @return the KeyTab object, never null.
+     */
+    public static KeyTab getInstance(File file) {
+        if (file == null) {
+            return getInstance();
+        } else {
+            return getInstance0(file.getPath());
+        }
+    }
+
+    /**
+     * Gets the default KeyTab object.
+     * @return the KeyTab object, never null.
      */
     public static KeyTab getInstance() {
-        try {
-            name = getDefaultKeyTab();
-            if (name != null) {
-                singleton = getInstance(new File(name));
-            }
-        } catch (Exception e) {
-            singleton = null;
-            if (DEBUG) {
-                System.out.println("Could not obtain an instance of KeyTab" +
-                                   e.getMessage());
-            }
-        }
-        return singleton;
+        return getInstance(getDefaultTabName());
+    }
+
+    public boolean isMissing() {
+        return isMissing;
+    }
+
+    public boolean isValid() {
+        return isValid;
     }
 
     /**
      * The location of keytab file will be read from the configuration file
      * If it is not specified, consider user.home as the keytab file's
      * default location.
+     * @return never null
      */
-    private static String getDefaultKeyTab() {
-        if (name != null) {
-            return name;
+    private static String getDefaultTabName() {
+        if (defaultTabName != null) {
+            return defaultTabName;
         } else {
             String kname = null;
             try {
@@ -145,7 +192,7 @@
                     StringTokenizer st = new StringTokenizer(keytab_names, " ");
                     while (st.hasMoreTokens()) {
                         kname = parse(st.nextToken());
-                        if (kname != null) {
+                        if (new File(kname).exists()) {
                             break;
                         }
                     }
@@ -165,19 +212,20 @@
                         new sun.security.action.GetPropertyAction("user.dir"));
                 }
 
-                if (user_home != null) {
-                    kname = user_home + File.separator  + "krb5.keytab";
-                }
+                kname = user_home + File.separator  + "krb5.keytab";
             }
+            defaultTabName = kname;
             return kname;
         }
     }
 
+    /**
+     * Parses some common keytab name formats
+     * @param name never null
+     * @return never null
+     */
     private static String parse(String name) {
-        String kname = null;
-        if (name == null) {
-            return null;
-        }
+        String kname;
         if ((name.length() >= 5) &&
             (name.substring(0, 5).equalsIgnoreCase("FILE:"))) {
             kname = name.substring(5);
@@ -194,18 +242,6 @@
         return kname;
     }
 
-    private synchronized void init(String filename)
-        throws IOException, RealmException {
-
-        if (filename != null) {
-            KeyTabInputStream kis =
-                new KeyTabInputStream(new FileInputStream(filename));
-            load(kis);
-            kis.close();
-            name = filename;
-        }
-    }
-
     private void load(KeyTabInputStream kis)
         throws IOException, RealmException {
 
@@ -234,14 +270,13 @@
      * etypes that have been configured for use. If there are multiple
      * keys with same etype, the one with the highest kvno is returned.
      * @param service the PrincipalName of the requested service
-     * @return an array containing all the service keys
+     * @return an array containing all the service keys, never null
      */
     public EncryptionKey[] readServiceKeys(PrincipalName service) {
         KeyTabEntry entry;
         EncryptionKey key;
         int size = entries.size();
         ArrayList<EncryptionKey> keys = new ArrayList<>(size);
-
         for (int i = size-1; i >= 0; i--) {
             entry = entries.elementAt(i);
             if (entry.service.match(service)) {
@@ -260,10 +295,7 @@
                 }
             }
         }
-
         size = keys.size();
-        if (size == 0)
-            return null;
         EncryptionKey[] retVal = keys.toArray(new EncryptionKey[size]);
 
         // Sort keys according to default_tkt_enctypes
@@ -328,10 +360,13 @@
         return false;
     }
 
-    public static String tabName() {
-        return name;
+    public String tabName() {
+        return tabName;
     }
 
+    /////////////////// THE WRITE SIDE ///////////////////////
+    /////////////// only used by ktab tool //////////////////
+
     /**
      * Adds a new entry in the key table.
      * @param service the service which will have a new entry in the key table.
@@ -394,7 +429,7 @@
      */
     public synchronized static KeyTab create()
         throws IOException, RealmException {
-        String dname = getDefaultKeyTab();
+        String dname = getDefaultTabName();
         return create(dname);
     }
 
@@ -408,8 +443,7 @@
                 new KeyTabOutputStream(new FileOutputStream(name));
         kos.writeVersion(KRB5_KT_VNO);
         kos.close();
-        singleton = new KeyTab(name);
-        return singleton;
+        return new KeyTab(name);
     }
 
     /**
@@ -417,7 +451,7 @@
      */
     public synchronized void save() throws IOException {
         KeyTabOutputStream kos =
-                new KeyTabOutputStream(new FileOutputStream(name));
+                new KeyTabOutputStream(new FileOutputStream(tabName));
         kos.writeVersion(kt_vno);
         for (int i = 0; i < entries.size(); i++) {
             kos.writeEntry(entries.elementAt(i));
@@ -490,13 +524,4 @@
         kos.write16(KRB5_KT_VNO);
         kos.close();
     }
-
-    public static void refresh() {
-        if (singleton != null) {
-            if (DEBUG) {
-                System.out.println("Refreshing Keytab");
-            }
-            singleton = null;
-        }
-    }
 }
--- a/jdk/src/share/classes/sun/security/pkcs11/Config.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/pkcs11/Config.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. 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
@@ -343,6 +343,7 @@
         st.wordChars('{', '{'); // need {} for property subst
         st.wordChars('}', '}');
         st.wordChars('*', '*');
+        st.wordChars('+', '+');
         st.wordChars('~', '~');
         // XXX check ASCII table and add all other characters except special
 
--- a/jdk/src/share/classes/sun/security/pkcs11/P11Key.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/pkcs11/P11Key.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/pkcs11/SessionManager.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/pkcs11/SessionManager.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
@@ -76,6 +76,9 @@
     // 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;
 
@@ -115,11 +118,6 @@
         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) {
@@ -141,7 +139,7 @@
         // create a new session rather than re-using an obj session
         // that avoids potential expensive cancels() for Signatures & RSACipher
         if (maxSessions == Integer.MAX_VALUE ||
-                totalSessionCount() < maxSessions) {
+                activeSessions < maxSessions) {
             session = openSession();
             return ensureValid(session);
         }
@@ -164,7 +162,7 @@
         if (debug != null) {
             String location = new Exception().getStackTrace()[2].toString();
             System.out.println("Killing session (" + location + ") active: "
-                + totalSessionCount());
+                + activeSessions);
         }
         closeSession(session);
         return null;
@@ -189,7 +187,7 @@
         }
         if (debug != null) {
             System.out.println("Demoting session, active: " +
-                totalSessionCount());
+                activeSessions);
         }
         boolean present = objSessions.remove(session);
         if (present == false) {
@@ -202,16 +200,16 @@
 
     private Session openSession() throws PKCS11Exception {
         if ((maxSessions != Integer.MAX_VALUE) &&
-                (totalSessionCount() >= maxSessions)) {
+                (activeSessions >= 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) {
-            int currTotal = totalSessionCount();
-            if (currTotal > maxActiveSessions) {
-                maxActiveSessions = currTotal;
+            if (activeSessions > maxActiveSessions) {
+                maxActiveSessions = activeSessions;
                 if (maxActiveSessions % 10 == 0) {
                     System.out.println("Open sessions: " + maxActiveSessions);
                 }
@@ -222,6 +220,7 @@
 
     private void closeSession(Session session) {
         session.close();
+        activeSessions--;
     }
 
     private static final class Pool {
@@ -275,7 +274,7 @@
             }
             if (debug != null) {
                 System.out.println("Closing " + i + " idle sessions, active: "
-                        + mgr.totalSessionCount());
+                        + mgr.activeSessions);
             }
             List<Session> subList = pool.subList(0, i);
             subList.clear();
--- a/jdk/src/share/classes/sun/security/provider/PolicyFile.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/provider/PolicyFile.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/provider/SeedGenerator.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/provider/SeedGenerator.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/provider/Sun.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/provider/Sun.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/provider/VerificationProvider.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/provider/VerificationProvider.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/provider/X509Factory.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/provider/X509Factory.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/provider/certpath/CrlRevocationChecker.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/provider/certpath/CrlRevocationChecker.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
@@ -249,7 +249,7 @@
         throws CertPathValidatorException
     {
         verifyRevocationStatus(currCert, prevKey, signFlag,
-                               allowSeparateKey, null);
+                   allowSeparateKey, null, mParams.getTrustAnchors());
     }
 
     /**
@@ -260,11 +260,12 @@
      *                     circular dependencies, we assume they're
      *                     revoked while checking the revocation
      *                     status of this cert.
+     * @param trustAnchors a <code>Set</code> of <code>TrustAnchor</code>s
      */
     private void verifyRevocationStatus(X509Certificate currCert,
         PublicKey prevKey, boolean signFlag, boolean allowSeparateKey,
-        Set<X509Certificate> stackedCerts) throws CertPathValidatorException
-    {
+        Set<X509Certificate> stackedCerts,
+        Set<TrustAnchor> trustAnchors) throws CertPathValidatorException {
 
         String msg = "revocation status";
         if (debug != null) {
@@ -311,7 +312,7 @@
                 DistributionPointFetcher.getInstance();
             // all CRLs returned by the DP Fetcher have also been verified
             mApprovedCRLs.addAll(store.getCRLs(sel, signFlag, prevKey,
-                mSigProvider, mStores, reasonsMask, mAnchor));
+                mSigProvider, mStores, reasonsMask, trustAnchors));
         } catch (Exception e) {
             if (debug != null) {
                 debug.println("CrlRevocationChecker.verifyRevocationStatus() "
@@ -328,7 +329,7 @@
             // Now that we have a list of possible CRLs, see which ones can
             // be approved
             mApprovedCRLs.addAll(verifyPossibleCRLs(mPossibleCRLs, currCert,
-                signFlag, prevKey, reasonsMask));
+                signFlag, prevKey, reasonsMask, trustAnchors));
         }
         if (debug != null) {
             debug.println("CrlRevocationChecker.verifyRevocationStatus() " +
@@ -353,9 +354,10 @@
         // See if the cert is in the set of approved crls.
         if (debug != null) {
             BigInteger sn = currCert.getSerialNumber();
-            debug.println("starting the final sweep...");
+            debug.println("CrlRevocationChecker.verifyRevocationStatus() " +
+                            "starting the final sweep...");
             debug.println("CrlRevocationChecker.verifyRevocationStatus" +
-                          " cert SN: " + sn.toString());
+                            " cert SN: " + sn.toString());
         }
 
         CRLReason reasonCode = CRLReason.UNSPECIFIED;
@@ -497,9 +499,9 @@
         certSel.setSubject(currCert.getIssuerX500Principal());
         certSel.setKeyUsage(mCrlSignUsage);
 
-        Set<TrustAnchor> newAnchors = mAnchor == null
-            ? mParams.getTrustAnchors()
-            : Collections.singleton(mAnchor);
+        Set<TrustAnchor> newAnchors =
+            (mAnchor == null ? mParams.getTrustAnchors() :
+                                Collections.singleton(mAnchor));
 
         PKIXBuilderParameters builderParams;
         if (mParams instanceof PKIXBuilderParameters) {
@@ -617,8 +619,8 @@
                             debug.println("CrlRevocationChecker.buildToNewKey()"
                                 + " index " + i + " checking " + cert);
                         }
-                        verifyRevocationStatus(cert, prevKey2, signFlag,
-                                               true, stackedCerts);
+                        verifyRevocationStatus(cert, prevKey2, signFlag, true,
+                                stackedCerts, newAnchors);
                         signFlag = certCanSignCrl(cert);
                         prevKey2 = cert.getPublicKey();
                     }
@@ -727,12 +729,14 @@
      * @param signFlag <code>true</code> if prevKey was trusted to sign CRLs
      * @param prevKey the public key of the issuer of cert
      * @param reasonsMask the reason code mask
+     * @param trustAnchors a <code>Set</code> of <code>TrustAnchor</code>s>
      * @return a collection of approved crls (or an empty collection)
      */
     private Collection<X509CRL> verifyPossibleCRLs(Set<X509CRL> crls,
         X509Certificate cert, boolean signFlag, PublicKey prevKey,
-        boolean[] reasonsMask) throws CertPathValidatorException
-    {
+        boolean[] reasonsMask,
+        Set<TrustAnchor> trustAnchors) throws CertPathValidatorException {
+
         try {
             X509CertImpl certImpl = X509CertImpl.toImpl(cert);
             if (debug != null) {
@@ -764,7 +768,8 @@
                 DistributionPoint point = t.next();
                 for (X509CRL crl : crls) {
                     if (dpf.verifyCRL(certImpl, point, crl, reasonsMask,
-                        signFlag, prevKey, mSigProvider, mAnchor, mStores)) {
+                            signFlag, prevKey, mSigProvider,
+                            trustAnchors, mStores)) {
                         results.add(crl);
                     }
                 }
--- a/jdk/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java	Wed Apr 20 09:31:11 2011 -0700
@@ -90,8 +90,9 @@
      */
     Collection<X509CRL> getCRLs(X509CRLSelector selector, boolean signFlag,
         PublicKey prevKey, String provider, List<CertStore> certStores,
-        boolean[] reasonsMask, TrustAnchor anchor) throws CertStoreException
-    {
+        boolean[] reasonsMask,
+        Set<TrustAnchor> trustAnchors) throws CertStoreException {
+
         if (USE_CRLDP == false) {
             return Collections.emptySet();
         }
@@ -121,7 +122,7 @@
                 DistributionPoint point = t.next();
                 Collection<X509CRL> crls = getCRLs(selector, certImpl,
                     point, reasonsMask, signFlag, prevKey, provider,
-                    certStores, anchor);
+                    certStores, trustAnchors);
                 results.addAll(crls);
             }
             if (debug != null) {
@@ -142,8 +143,8 @@
     private Collection<X509CRL> getCRLs(X509CRLSelector selector,
         X509CertImpl certImpl, DistributionPoint point, boolean[] reasonsMask,
         boolean signFlag, PublicKey prevKey, String provider,
-        List<CertStore> certStores, TrustAnchor anchor)
-    {
+        List<CertStore> certStores, Set<TrustAnchor> trustAnchors) {
+
         // check for full name
         GeneralNames fullName = point.getFullName();
         if (fullName == null) {
@@ -194,7 +195,7 @@
                 // we check the issuer in verifyCRLs method
                 selector.setIssuerNames(null);
                 if (selector.match(crl) && verifyCRL(certImpl, point, crl,
-                        reasonsMask, signFlag, prevKey, provider, anchor,
+                        reasonsMask, signFlag, prevKey, provider, trustAnchors,
                         certStores)) {
                     crls.add(crl);
                 }
@@ -276,12 +277,17 @@
      * @param signFlag true if prevKey can be used to verify the CRL
      * @param prevKey the public key that verifies the certificate's signature
      * @param provider the Signature provider to use
+     * @param trustAnchors a {@code Set} of {@code TrustAnchor}s
+     * @param certStores a {@code List} of {@code CertStore}s to be used in
+     *        finding certificates and CRLs
      * @return true if ok, false if not
      */
     boolean verifyCRL(X509CertImpl certImpl, DistributionPoint point,
         X509CRL crl, boolean[] reasonsMask, boolean signFlag,
-        PublicKey prevKey, String provider, TrustAnchor anchor,
+        PublicKey prevKey, String provider,
+        Set<TrustAnchor> trustAnchors,
         List<CertStore> certStores) throws CRLException, IOException {
+
         boolean indirectCRL = false;
         X509CRLImpl crlImpl = X509CRLImpl.toImpl(crl);
         IssuingDistributionPointExtension idpExt =
@@ -335,7 +341,16 @@
             byte[] crlAKID = crlImpl.getExtensionValue(
                                 PKIXExtensions.AuthorityKey_Id.toString());
 
-            if (!Arrays.equals(certAKID, crlAKID)) {
+            if (certAKID == null || crlAKID == null) {
+                // cannot recognize indirect CRL without AKID
+
+                // we accept the case that a CRL issuer provide status
+                // information for itself.
+                if (issues(certImpl, crlImpl, provider)) {
+                    // reset the public key used to verify the CRL's signature
+                    prevKey = certImpl.getPublicKey();
+                }
+            } else if (!Arrays.equals(certAKID, crlAKID)) {
                 // we accept the case that a CRL issuer provide status
                 // information for itself.
                 if (issues(certImpl, crlImpl, provider)) {
@@ -572,46 +587,19 @@
             // Except the performance improvement, another benefit is to break
             // the dead loop while looking for the issuer back and forth
             // between the delegated self-issued certificate and its issuer.
-            Set<TrustAnchor> trustAnchors = new HashSet<TrustAnchor>();
-            if (anchor != null) {
-                trustAnchors.add(anchor);
-            }
+            Set<TrustAnchor> newTrustAnchors = new HashSet<>(trustAnchors);
 
             if (prevKey != null) {
-                // if the previous key is of the anchor, don't bother to
-                // duplicate the trust.
-                boolean duplicated = false;
-                PublicKey publicKey = prevKey;
+                // Add the previous certificate as a trust anchor.
                 X500Principal principal = certImpl.getIssuerX500Principal();
-
-                if (anchor != null) {
-                    X509Certificate trustedCert = anchor.getTrustedCert();
-                    X500Principal trustedPrincipal;
-                    PublicKey trustedPublicKey;
-                    if (trustedCert != null) {
-                        trustedPrincipal = trustedCert.getSubjectX500Principal();
-                        trustedPublicKey = trustedCert.getPublicKey();
-                    } else {
-                        trustedPrincipal = anchor.getCA();
-                        trustedPublicKey = anchor.getCAPublicKey();
-                    }
-
-                    if (principal.equals(trustedPrincipal) &&
-                        publicKey.equals(trustedPublicKey)) {
-                        duplicated = true;
-                    }
-                }
-
-                if (!duplicated) {
-                    TrustAnchor temporary =
-                        new TrustAnchor(principal, publicKey, null);
-                    trustAnchors.add(temporary);
-                }
+                TrustAnchor temporary =
+                        new TrustAnchor(principal, prevKey, null);
+                newTrustAnchors.add(temporary);
             }
 
             PKIXBuilderParameters params = null;
             try {
-                params = new PKIXBuilderParameters(trustAnchors, certSel);
+                params = new PKIXBuilderParameters(newTrustAnchors, certSel);
             } catch (InvalidAlgorithmParameterException iape) {
                 throw new CRLException(iape);
             }
@@ -697,6 +685,8 @@
     private static boolean issues(X509CertImpl cert, X509CRLImpl crl,
             String provider) throws IOException {
 
+        boolean matched = false;
+
         AdaptableX509CertSelector issuerSelector =
                                     new AdaptableX509CertSelector();
 
@@ -719,9 +709,24 @@
          * and MUST include authority key identifier extension in all CRLs
          * issued. [section 5.2.1, RFC 2459]
          */
-        issuerSelector.parseAuthorityKeyIdentifierExtension(
-                                        crl.getAuthKeyIdExtension());
+        AuthorityKeyIdentifierExtension crlAKID = crl.getAuthKeyIdExtension();
+        if (crlAKID != null) {
+            issuerSelector.parseAuthorityKeyIdentifierExtension(crlAKID);
+        }
+
+        matched = issuerSelector.match(cert);
 
-        return issuerSelector.match(cert);
+        // if AKID is unreliable, verify the CRL signature with the cert
+        if (matched && (crlAKID == null ||
+                cert.getAuthorityKeyIdentifierExtension() == null)) {
+            try {
+                crl.verify(cert.getPublicKey(), provider);
+                matched = true;
+            } catch (Exception e) {
+                matched = false;
+            }
+        }
+
+        return matched;
     }
 }
--- a/jdk/src/share/classes/sun/security/rsa/RSACore.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/rsa/RSACore.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/rsa/SunRsaSign.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/rsa/SunRsaSign.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/ssl/CipherSuite.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/CipherSuite.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/ssl/Handshaker.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/Handshaker.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/ssl/HelloExtensions.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/HelloExtensions.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/ssl/SSLAlgorithmConstraints.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/SSLAlgorithmConstraints.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
@@ -1285,11 +1285,12 @@
 
             // check permission to access and use the secret key of the
             // Kerberized "host" service
-            if (kerberosKeys != null) {
-
+            if (kerberosKeys != null && kerberosKeys.length > 0) {
                 if (debug != null && Debug.isOn("handshake")) {
-                    System.out.println("Using Kerberos key: " +
-                        kerberosKeys[0]);
+                    for (SecretKey k: kerberosKeys) {
+                        System.out.println("Using Kerberos key: " +
+                            k);
+                    }
                 }
 
                 String serverPrincipal =
--- a/jdk/src/share/classes/sun/security/ssl/SignatureAndHashAlgorithm.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/SignatureAndHashAlgorithm.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/ssl/krb5/Krb5ProxyImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/krb5/Krb5ProxyImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
@@ -40,7 +40,7 @@
 import sun.security.ssl.Krb5Proxy;
 
 /**
- * An implementatin of Krb5Proxy that simply delegates to the appropriate
+ * An implementation of Krb5Proxy that simply delegates to the appropriate
  * Kerberos APIs.
  */
 public class Krb5ProxyImpl implements Krb5Proxy {
@@ -62,7 +62,7 @@
     @Override
     public SecretKey[] getServerKeys(AccessControlContext acc)
             throws LoginException {
-        return Krb5Util.getKeys(GSSCaller.CALLER_SSL_SERVER, null, acc);
+        return Krb5Util.getServiceCreds(GSSCaller.CALLER_SSL_SERVER, null, acc).getKKeys();
     }
 
     @Override
--- a/jdk/src/share/classes/sun/security/tools/JarSignerResources_ja.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/tools/JarSignerResources_ja.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/tools/JarSignerResources_zh_CN.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/tools/JarSignerResources_zh_CN.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/tools/policytool/PolicyTool.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/tools/policytool/PolicyTool.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/util/AuthResources_de.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/util/AuthResources_de.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/util/AuthResources_es.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/util/AuthResources_es.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/util/AuthResources_fr.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/util/AuthResources_fr.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/util/AuthResources_it.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/util/AuthResources_it.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/util/AuthResources_ja.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/util/AuthResources_ja.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/util/AuthResources_ko.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/util/AuthResources_ko.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/util/AuthResources_pt_BR.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/util/AuthResources_pt_BR.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/util/AuthResources_sv.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/util/AuthResources_sv.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/util/AuthResources_zh_CN.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/util/AuthResources_zh_CN.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/util/AuthResources_zh_TW.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/util/AuthResources_zh_TW.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/util/Resources_de.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/util/Resources_de.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/util/Resources_es.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/util/Resources_es.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/util/Resources_fr.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/util/Resources_fr.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/util/Resources_it.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/util/Resources_it.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/util/Resources_ja.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/util/Resources_ja.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/util/Resources_ko.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/util/Resources_ko.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/util/Resources_pt_BR.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/util/Resources_pt_BR.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/util/Resources_sv.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/util/Resources_sv.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/util/Resources_zh_CN.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/util/Resources_zh_CN.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/security/util/Resources_zh_TW.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/security/util/Resources_zh_TW.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/swing/AccumulativeRunnable.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/swing/AccumulativeRunnable.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/swing/WindowsPlacesBar.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/swing/WindowsPlacesBar.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/text/resources/CollationData_sr_Latn.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/text/resources/CollationData_sr_Latn.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/tools/attach/HotSpotAttachProvider.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/tools/attach/HotSpotAttachProvider.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/tools/jar/Main.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/tools/jar/Main.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/tools/jar/resources/jar_de.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_de.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/tools/jar/resources/jar_es.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_es.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/tools/jar/resources/jar_fr.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_fr.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/tools/jar/resources/jar_it.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_it.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/tools/jar/resources/jar_ja.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_ja.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/tools/jar/resources/jar_ko.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_ko.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/tools/jar/resources/jar_pt_BR.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_pt_BR.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/tools/jar/resources/jar_sv.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_sv.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/tools/jar/resources/jar_zh_CN.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_zh_CN.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/tools/jar/resources/jar_zh_TW.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_zh_TW.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/tools/javac/resources/javac.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/tools/javac/resources/javac.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -498,9 +498,9 @@
 javac.err.cant.write=\
 	Can''t write: {0}
 javac.err.fatal.error=\
-	An error has occurred in the compiler; please file a bug report (http://java.sun.com/cgi-bin/bugreport.cgi).
+	An error has occurred in the compiler; please file a bug report (http://bugreport.sun.com/bugreport/).
 javac.err.fatal.exception=\
-	An exception has occurred in the compiler; please file a bug report (http://java.sun.com/cgi-bin/bugreport.cgi).
+	An exception has occurred in the compiler; please file a bug report (http://bugreport.sun.com/bugreport/).
 javac.err.no.inner.classes=\
 	Support for inner classes has been disabled.
 javac.err.uncaught.exception=\
--- a/jdk/src/share/classes/sun/tools/javac/resources/javac_ja.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/tools/javac/resources/javac_ja.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1996, 1999, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/tools/javac/resources/javac_zh_CN.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/tools/javac/resources/javac_zh_CN.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1996, 1999, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_ja.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_ja.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
@@ -102,9 +102,9 @@
         {"CPU Usage","CPU\u4F7F\u7528\u7387"},
         {"CPUUsageFormat","CPU\u4F7F\u7528\u7387: {0}%"},
         {"Cancel","\u53D6\u6D88"},
-        {"Cascade", "\u91CD\u306D\u3066\u8868\u793A"},
+        {"Cascade", "\u91CD\u306D\u3066\u8868\u793A(C)"},
         {"Cascade.mnemonic", "C"},
-        {"Chart:", "\u30C1\u30E3\u30FC\u30C8:"},
+        {"Chart:", "\u30C1\u30E3\u30FC\u30C8(C):"},
         {"Chart:.mnemonic", "C"},
         {"Class path","\u30AF\u30E9\u30B9\u30D1\u30B9"},
         {"Class","\u30AF\u30E9\u30B9"},
@@ -121,7 +121,7 @@
         {"Compiler","\u30B3\u30F3\u30D1\u30A4\u30E9"},
         {"CompositeData","CompositeData"},
         {"Config","\u69CB\u6210"},
-        {"Connect", "\u63A5\u7D9A"},
+        {"Connect", "\u63A5\u7D9A(C)"},
         {"Connect.mnemonic", "C"},
         {"Connect...","\u63A5\u7D9A..."},
         {"ConnectDialog.connectButton.toolTip", "Java\u4EEE\u60F3\u30DE\u30B7\u30F3\u306B\u63A5\u7D9A"},
@@ -132,7 +132,7 @@
         {"ConnectDialog.title", "JConsole: \u65B0\u898F\u63A5\u7D9A"},
         {"Connected. Click to disconnect.","\u63A5\u7D9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u5207\u65AD\u3057\u307E\u3059\u3002"},
         {"Connection failed","\u63A5\u7D9A\u306B\u5931\u6557\u3057\u307E\u3057\u305F"},
-        {"Connection", "\u63A5\u7D9A"},
+        {"Connection", "\u63A5\u7D9A(C)"},
         {"Connection.mnemonic", "C"},
         {"Connection name", "\u63A5\u7D9A\u540D"},
         {"ConnectionName (disconnected)","{0} (\u5207\u65AD\u6E08)"},
@@ -149,7 +149,7 @@
         {"Description: ", "\u8AAC\u660E: "},
         {"Descriptor", "\u8A18\u8FF0\u5B50"},
         {"Details", "\u8A73\u7D30"},
-        {"Detect Deadlock", "\u30C7\u30C3\u30C9\u30ED\u30C3\u30AF\u306E\u691C\u51FA"},
+        {"Detect Deadlock", "\u30C7\u30C3\u30C9\u30ED\u30C3\u30AF\u306E\u691C\u51FA(D)"},
         {"Detect Deadlock.mnemonic", "D"},
         {"Detect Deadlock.toolTip", "\u30C7\u30C3\u30C9\u30ED\u30C3\u30AF\u6E08\u30B9\u30EC\u30C3\u30C9\u306E\u691C\u51FA"},
         {"Dimension is not supported:","\u6B21\u5143\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093:"},
@@ -167,7 +167,7 @@
         {"Error: MBeans do not exist","\u30A8\u30E9\u30FC: MBeans\u306F\u5B58\u5728\u3057\u307E\u305B\u3093"},
         {"Error:","\u30A8\u30E9\u30FC:"},
         {"Event","\u30A4\u30D9\u30F3\u30C8"},
-        {"Exit", "\u7D42\u4E86"},
+        {"Exit", "\u7D42\u4E86(X)"},
         {"Exit.mnemonic", "X"},
         {"Fail to load plugin", "\u8B66\u544A: \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30ED\u30FC\u30C9\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {0}"},
         {"FileChooser.fileExists.cancelOption", "\u53D6\u6D88"},
@@ -192,16 +192,16 @@
         {"Help.AboutDialog.masthead.accessibleName", "\u30DE\u30B9\u30C8\u30D8\u30C3\u30C9\u56F3\u5F62"},
         {"Help.AboutDialog.masthead.title", "JConsole\u306B\u3064\u3044\u3066"},
         {"Help.AboutDialog.title", "JConsole: \u8A73\u7D30"},
-        {"Help.AboutDialog.userGuideLink", "JConsole\u30E6\u30FC\u30B6\u30FC\u30FB\u30AC\u30A4\u30C9:<br>{0}"},
+        {"Help.AboutDialog.userGuideLink", "JConsole\u30E6\u30FC\u30B6\u30FC\u30FB\u30AC\u30A4\u30C9(U):<br>{0}"},
         {"Help.AboutDialog.userGuideLink.mnemonic", "U"},
         {"Help.AboutDialog.userGuideLink.url", "http://java.sun.com/javase/6/docs/technotes/guides/management/jconsole.html"},
-        {"HelpMenu.About.title", "JConsole\u306B\u3064\u3044\u3066"},
+        {"HelpMenu.About.title", "JConsole\u306B\u3064\u3044\u3066(A)"},
         {"HelpMenu.About.title.mnemonic", "A"},
-        {"HelpMenu.UserGuide.title", "\u30AA\u30F3\u30E9\u30A4\u30F3\u30FB\u30E6\u30FC\u30B6\u30FC\u30FB\u30AC\u30A4\u30C9"},
+        {"HelpMenu.UserGuide.title", "\u30AA\u30F3\u30E9\u30A4\u30F3\u30FB\u30E6\u30FC\u30B6\u30FC\u30FB\u30AC\u30A4\u30C9(U)"},
         {"HelpMenu.UserGuide.title.mnemonic", "U"},
-        {"HelpMenu.title", "\u30D8\u30EB\u30D7"},
+        {"HelpMenu.title", "\u30D8\u30EB\u30D7(H)"},
         {"HelpMenu.title.mnemonic", "H"},
-        {"Hotspot MBeans...", "Hotspot MBeans..."},
+        {"Hotspot MBeans...", "Hotspot MBeans(H)..."},
         {"Hotspot MBeans....mnemonic", "H"},
         {"Hotspot MBeans.dialog.accessibleDescription", "Hotspot MBeans\u306E\u7BA1\u7406\u7528\u30C0\u30A4\u30A2\u30ED\u30B0"},
         {"Impact","\u5F71\u97FF"},
@@ -221,7 +221,7 @@
         {"Listeners","\u30EA\u30B9\u30CA\u30FC"},
         {"Live Threads","\u5B9F\u884C\u4E2D\u306E\u30B9\u30EC\u30C3\u30C9"},
         {"Loaded", "\u30ED\u30FC\u30C9\u6E08"},
-        {"Local Process:", "\u30ED\u30FC\u30AB\u30EB\u30FB\u30D7\u30ED\u30BB\u30B9:"},
+        {"Local Process:", "\u30ED\u30FC\u30AB\u30EB\u30FB\u30D7\u30ED\u30BB\u30B9(L):"},
         {"Local Process:.mnemonic", "L"},
         {"Look and Feel","Look&Feel"},
         {"Masthead.font", "Dialog-PLAIN-25"},
@@ -232,20 +232,20 @@
         {"MBeanNotificationInfo","MBeanNotificationInfo"},
         {"MBeanOperationInfo","MBeanOperationInfo"},
         {"MBeans","MBeans"},
-        {"MBeansTab.clearNotificationsButton", "\u30AF\u30EA\u30A2"},
+        {"MBeansTab.clearNotificationsButton", "\u30AF\u30EA\u30A2(C)"},
         {"MBeansTab.clearNotificationsButton.mnemonic", "C"},
         {"MBeansTab.clearNotificationsButton.toolTip", "\u901A\u77E5\u306E\u30AF\u30EA\u30A2"},
         {"MBeansTab.compositeNavigationMultiple", "\u30B3\u30F3\u30DD\u30B8\u30C3\u30C8\u30FB\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3{0}/{1}"},
         {"MBeansTab.compositeNavigationSingle", "\u30B3\u30F3\u30DD\u30B8\u30C3\u30C8\u30FB\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3"},
-        {"MBeansTab.refreshAttributesButton", "\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5"},
+        {"MBeansTab.refreshAttributesButton", "\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5(R)"},
         {"MBeansTab.refreshAttributesButton.mnemonic", "R"},
         {"MBeansTab.refreshAttributesButton.toolTip", "\u5C5E\u6027\u306E\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5"},
-        {"MBeansTab.subscribeNotificationsButton", "\u30B5\u30D6\u30B9\u30AF\u30E9\u30A4\u30D6"},
+        {"MBeansTab.subscribeNotificationsButton", "\u30B5\u30D6\u30B9\u30AF\u30E9\u30A4\u30D6(S)"},
         {"MBeansTab.subscribeNotificationsButton.mnemonic", "S"},
         {"MBeansTab.subscribeNotificationsButton.toolTip", "\u901A\u77E5\u30EA\u30B9\u30CB\u30F3\u30B0\u306E\u958B\u59CB"},
         {"MBeansTab.tabularNavigationMultiple", "\u30BF\u30D6\u30FB\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3{0}/{1}"},
         {"MBeansTab.tabularNavigationSingle", "\u30BF\u30D6\u30FB\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3"},
-        {"MBeansTab.unsubscribeNotificationsButton", "\u30B5\u30D6\u30B9\u30AF\u30E9\u30A4\u30D6\u89E3\u9664"},
+        {"MBeansTab.unsubscribeNotificationsButton", "\u30B5\u30D6\u30B9\u30AF\u30E9\u30A4\u30D6\u89E3\u9664(U)"},
         {"MBeansTab.unsubscribeNotificationsButton.mnemonic", "U"},
         {"MBeansTab.unsubscribeNotificationsButton.toolTip", "\u901A\u77E5\u30EA\u30B9\u30CB\u30F3\u30B0\u306E\u505C\u6B62"},
         {"Manage Hotspot MBeans in: ", "Hotspot MBeans\u306E\u7BA1\u7406: "},
@@ -262,7 +262,7 @@
         {"MemoryTab.poolPlotter.accessibleName", "{0}\u306E\u30E1\u30E2\u30EA\u30FC\u4F7F\u7528\u7387\u30C1\u30E3\u30FC\u30C8\u3002"},
         {"Message","\u30E1\u30C3\u30BB\u30FC\u30B8"},
         {"Method successfully invoked", "\u30E1\u30BD\u30C3\u30C9\u304C\u6B63\u5E38\u306B\u8D77\u52D5\u3055\u308C\u307E\u3057\u305F"},
-        {"Minimize All", "\u3059\u3079\u3066\u6700\u5C0F\u5316"},
+        {"Minimize All", "\u3059\u3079\u3066\u6700\u5C0F\u5316(M)"},
         {"Minimize All.mnemonic", "M"},
         {"Minus Version", "\u3053\u308C\u306F{0}\u306E\u30D0\u30FC\u30B8\u30E7\u30F3{1}\u3067\u3059"},
         {"Monitor locked",
@@ -278,7 +278,7 @@
              "\u540D\u524D: {0}\n\u72B6\u614B: {2}\u306E{1}\n"},
         {"Name State LockName LockOwner",
              "\u540D\u524D: {0}\n\u72B6\u614B: {2}\u306E{1}\u3001\u6240\u6709\u8005: {3}\n"},
-        {"New Connection...", "\u65B0\u898F\u63A5\u7D9A..."},
+        {"New Connection...", "\u65B0\u898F\u63A5\u7D9A(N)..."},
         {"New Connection....mnemonic", "N"},
         {"New value applied","\u9069\u7528\u3055\u308C\u305F\u65B0\u898F\u5024"},
         {"No attribute selected","\u5C5E\u6027\u304C\u9078\u629E\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F"},
@@ -304,19 +304,19 @@
         {"Overview","\u6982\u8981"},
         {"OverviewPanel.plotter.accessibleName", "{0}\u306E\u30C1\u30E3\u30FC\u30C8\u3002"},
         {"Parameter", "\u30D1\u30E9\u30E1\u30FC\u30BF"},
-        {"Password: ", "\u30D1\u30B9\u30EF\u30FC\u30C9: "},
+        {"Password: ", "\u30D1\u30B9\u30EF\u30FC\u30C9(P): "},
         {"Password: .mnemonic", "P"},
         {"Password.accessibleName", "\u30D1\u30B9\u30EF\u30FC\u30C9"},
         {"Peak","\u30D4\u30FC\u30AF"},
-        {"Perform GC", "GC\u306E\u5B9F\u884C"},
+        {"Perform GC", "GC\u306E\u5B9F\u884C(G)"},
         {"Perform GC.mnemonic", "G"},
         {"Perform GC.toolTip", "\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u306E\u30EA\u30AF\u30A8\u30B9\u30C8"},
         {"Plotter.accessibleName", "\u30C1\u30E3\u30FC\u30C8"},
         {"Plotter.accessibleName.keyAndValue", "{0}={1}\n"},
         {"Plotter.accessibleName.noData", "\u30C7\u30FC\u30BF\u304C\u30D7\u30ED\u30C3\u30C8\u3055\u308C\u307E\u305B\u3093\u3002"},
-        {"Plotter.saveAsMenuItem", "\u540D\u524D\u3092\u4ED8\u3051\u3066\u30C7\u30FC\u30BF\u3092\u4FDD\u5B58..."},
+        {"Plotter.saveAsMenuItem", "\u540D\u524D\u3092\u4ED8\u3051\u3066\u30C7\u30FC\u30BF\u3092\u4FDD\u5B58(A)..."},
         {"Plotter.saveAsMenuItem.mnemonic", "A"},
-        {"Plotter.timeRangeMenu", "\u6642\u9593\u7BC4\u56F2"},
+        {"Plotter.timeRangeMenu", "\u6642\u9593\u7BC4\u56F2(T)"},
         {"Plotter.timeRangeMenu.mnemonic", "T"},
         {"Problem adding listener","\u30EA\u30B9\u30CA\u30FC\u8FFD\u52A0\u4E2D\u306E\u554F\u984C"},
         {"Problem displaying MBean", "MBean\u8868\u793A\u4E2D\u306E\u554F\u984C"},
@@ -328,11 +328,11 @@
         {"Readable","\u8AAD\u53D6\u308A\u53EF\u80FD"},
         {"Received","\u53D7\u4FE1\u6E08"},
         {"Reconnect","\u518D\u63A5\u7D9A"},
-        {"Remote Process:", "\u30EA\u30E2\u30FC\u30C8\u30FB\u30D7\u30ED\u30BB\u30B9:"},
+        {"Remote Process:", "\u30EA\u30E2\u30FC\u30C8\u30FB\u30D7\u30ED\u30BB\u30B9(R):"},
         {"Remote Process:.mnemonic", "R"},
         {"Remote Process.textField.accessibleName", "\u30EA\u30E2\u30FC\u30C8\u30FB\u30D7\u30ED\u30BB\u30B9"},
         {"Remove","\u524A\u9664"},
-        {"Restore All", "\u3059\u3079\u3066\u5FA9\u5143"},
+        {"Restore All", "\u3059\u3079\u3066\u5FA9\u5143(R)"},
         {"Restore All.mnemonic", "R"},
         {"Return value", "\u623B\u308A\u5024"},
         {"ReturnType", "ReturnType"},
@@ -363,9 +363,9 @@
         {"ThreadTab.threadInfo.accessibleName", "\u30B9\u30EC\u30C3\u30C9\u60C5\u5831"},
         {"ThreadTab.threadPlotter.accessibleName", "\u30B9\u30EC\u30C3\u30C9\u6570\u306E\u30C1\u30E3\u30FC\u30C8\u3002"},
         {"Threshold","\u3057\u304D\u3044\u5024"},
-        {"Tile", "\u4E26\u3079\u3066\u8868\u793A"},
+        {"Tile", "\u4E26\u3079\u3066\u8868\u793A(T)"},
         {"Tile.mnemonic", "T"},
-        {"Time Range:", "\u6642\u9593\u7BC4\u56F2:"},
+        {"Time Range:", "\u6642\u9593\u7BC4\u56F2(T):"},
         {"Time Range:.mnemonic", "T"},
         {"Time", "\u6642\u9593"},
         {"TimeStamp","TimeStamp"},
@@ -386,7 +386,7 @@
         {"Usage Threshold","\u4F7F\u7528\u3057\u304D\u3044\u5024"},
         {"remoteTF.usage","<b>\u4F7F\u7528\u65B9\u6CD5</b>: &lt;hostname&gt;:&lt;port&gt;\u307E\u305F\u306Fservice:jmx:&lt;protocol&gt;:&lt;sap&gt;"},
         {"Used","\u4F7F\u7528\u6E08"},
-        {"Username: ", "\u30E6\u30FC\u30B6\u30FC\u540D: "},
+        {"Username: ", "\u30E6\u30FC\u30B6\u30FC\u540D(U): "},
         {"Username: .mnemonic", "U"},
         {"Username.accessibleName", "\u30E6\u30FC\u30B6\u30FC\u540D"},
         {"UserData","UserData"},
--- a/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_zh_CN.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_zh_CN.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
@@ -102,9 +102,9 @@
         {"CPU Usage","CPU \u5360\u7528\u7387"},
         {"CPUUsageFormat","CPU \u5360\u7528\u7387: {0}%"},
         {"Cancel","\u53D6\u6D88"},
-        {"Cascade", "\u7EA7\u8054"},
+        {"Cascade", "\u7EA7\u8054(C)"},
         {"Cascade.mnemonic", "C"},
-        {"Chart:", "\u56FE\u8868:"},
+        {"Chart:", "\u56FE\u8868(C):"},
         {"Chart:.mnemonic", "C"},
         {"Class path","\u7C7B\u8DEF\u5F84"},
         {"Class","\u7C7B"},
@@ -121,7 +121,7 @@
         {"Compiler","\u7F16\u8BD1\u5668"},
         {"CompositeData","CompositeData"},
         {"Config","\u914D\u7F6E"},
-        {"Connect", "\u8FDE\u63A5"},
+        {"Connect", "\u8FDE\u63A5(C)"},
         {"Connect.mnemonic", "C"},
         {"Connect...","\u8FDE\u63A5..."},
         {"ConnectDialog.connectButton.toolTip", "\u8FDE\u63A5\u5230 Java \u865A\u62DF\u673A"},
@@ -132,7 +132,7 @@
         {"ConnectDialog.title", "JConsole: \u65B0\u5EFA\u8FDE\u63A5"},
         {"Connected. Click to disconnect.","\u5DF2\u8FDE\u63A5\u3002\u5355\u51FB\u53EF\u65AD\u5F00\u8FDE\u63A5\u3002"},
         {"Connection failed","\u8FDE\u63A5\u5931\u8D25"},
-        {"Connection", "\u8FDE\u63A5"},
+        {"Connection", "\u8FDE\u63A5(C)"},
         {"Connection.mnemonic", "C"},
         {"Connection name", "\u8FDE\u63A5\u540D\u79F0"},
         {"ConnectionName (disconnected)","{0} (\u5DF2\u65AD\u5F00\u8FDE\u63A5)"},
@@ -149,7 +149,7 @@
         {"Description: ", "\u8BF4\u660E: "},
         {"Descriptor", "\u63CF\u8FF0\u7B26"},
         {"Details", "\u8BE6\u7EC6\u8D44\u6599"},
-        {"Detect Deadlock", "\u68C0\u6D4B\u6B7B\u9501"},
+        {"Detect Deadlock", "\u68C0\u6D4B\u6B7B\u9501(D)"},
         {"Detect Deadlock.mnemonic", "D"},
         {"Detect Deadlock.toolTip", "\u68C0\u6D4B\u5904\u4E8E\u6B7B\u9501\u72B6\u6001\u7684\u7EBF\u7A0B"},
         {"Dimension is not supported:","\u4E0D\u652F\u6301\u7EF4:"},
@@ -167,7 +167,7 @@
         {"Error: MBeans do not exist","\u9519\u8BEF: MBean \u4E0D\u5B58\u5728"},
         {"Error:","\u9519\u8BEF:"},
         {"Event","\u4E8B\u4EF6"},
-        {"Exit", "\u9000\u51FA"},
+        {"Exit", "\u9000\u51FA(X)"},
         {"Exit.mnemonic", "X"},
         {"Fail to load plugin", "\u8B66\u544A: \u65E0\u6CD5\u52A0\u8F7D\u63D2\u4EF6: {0}"},
         {"FileChooser.fileExists.cancelOption", "\u53D6\u6D88"},
@@ -192,16 +192,16 @@
         {"Help.AboutDialog.masthead.accessibleName", "\u62A5\u5934\u56FE"},
         {"Help.AboutDialog.masthead.title", "\u5173\u4E8E JConsole"},
         {"Help.AboutDialog.title", "JConsole: \u5173\u4E8E"},
-        {"Help.AboutDialog.userGuideLink", "JConsole \u7528\u6237\u6307\u5357:<br>{0}"},
+        {"Help.AboutDialog.userGuideLink", "JConsole \u7528\u6237\u6307\u5357(U):<br>{0}"},
         {"Help.AboutDialog.userGuideLink.mnemonic", "U"},
         {"Help.AboutDialog.userGuideLink.url", "http://java.sun.com/javase/6/docs/technotes/guides/management/jconsole.html"},
-        {"HelpMenu.About.title", "\u5173\u4E8E JConsole"},
+        {"HelpMenu.About.title", "\u5173\u4E8E JConsole(A)"},
         {"HelpMenu.About.title.mnemonic", "A"},
-        {"HelpMenu.UserGuide.title", "\u8054\u673A\u7528\u6237\u6307\u5357"},
+        {"HelpMenu.UserGuide.title", "\u8054\u673A\u7528\u6237\u6307\u5357(U)"},
         {"HelpMenu.UserGuide.title.mnemonic", "U"},
-        {"HelpMenu.title", "\u5E2E\u52A9"},
+        {"HelpMenu.title", "\u5E2E\u52A9(H)"},
         {"HelpMenu.title.mnemonic", "H"},
-        {"Hotspot MBeans...", "\u70ED\u70B9 MBean..."},
+        {"Hotspot MBeans...", "\u70ED\u70B9 MBean(H)..."},
         {"Hotspot MBeans....mnemonic", "H"},
         {"Hotspot MBeans.dialog.accessibleDescription", "\u7528\u4E8E\u7BA1\u7406\u70ED\u70B9 MBean \u7684\u5BF9\u8BDD\u6846"},
         {"Impact","\u5F71\u54CD"},
@@ -221,7 +221,7 @@
         {"Listeners","\u76D1\u542C\u7A0B\u5E8F"},
         {"Live Threads","\u6D3B\u52A8\u7EBF\u7A0B"},
         {"Loaded", "\u5DF2\u52A0\u8F7D"},
-        {"Local Process:", "\u672C\u5730\u8FDB\u7A0B:"},
+        {"Local Process:", "\u672C\u5730\u8FDB\u7A0B(L):"},
         {"Local Process:.mnemonic", "L"},
         {"Look and Feel","\u5916\u89C2"},
         {"Masthead.font", "Dialog-PLAIN-25"},
@@ -232,20 +232,20 @@
         {"MBeanNotificationInfo","MBeanNotificationInfo"},
         {"MBeanOperationInfo","MBeanOperationInfo"},
         {"MBeans","MBean"},
-        {"MBeansTab.clearNotificationsButton", "\u6E05\u9664"},
+        {"MBeansTab.clearNotificationsButton", "\u6E05\u9664(C)"},
         {"MBeansTab.clearNotificationsButton.mnemonic", "C"},
         {"MBeansTab.clearNotificationsButton.toolTip", "\u6E05\u9664\u901A\u77E5"},
         {"MBeansTab.compositeNavigationMultiple", "\u7EC4\u5408\u5BFC\u822A{0}/{1}"},
         {"MBeansTab.compositeNavigationSingle", "\u7EC4\u5408\u5BFC\u822A"},
-        {"MBeansTab.refreshAttributesButton", "\u5237\u65B0"},
+        {"MBeansTab.refreshAttributesButton", "\u5237\u65B0(R)"},
         {"MBeansTab.refreshAttributesButton.mnemonic", "R"},
         {"MBeansTab.refreshAttributesButton.toolTip", "\u5237\u65B0\u5C5E\u6027"},
-        {"MBeansTab.subscribeNotificationsButton", "\u8BA2\u9605"},
+        {"MBeansTab.subscribeNotificationsButton", "\u8BA2\u9605(S)"},
         {"MBeansTab.subscribeNotificationsButton.mnemonic", "S"},
         {"MBeansTab.subscribeNotificationsButton.toolTip", "\u5F00\u59CB\u76D1\u542C\u901A\u77E5"},
         {"MBeansTab.tabularNavigationMultiple", "\u8868\u683C\u5F0F\u5BFC\u822A{0}/{1}"},
         {"MBeansTab.tabularNavigationSingle", "\u8868\u683C\u5F0F\u5BFC\u822A"},
-        {"MBeansTab.unsubscribeNotificationsButton", "\u53D6\u6D88\u8BA2\u9605"},
+        {"MBeansTab.unsubscribeNotificationsButton", "\u53D6\u6D88\u8BA2\u9605(U)"},
         {"MBeansTab.unsubscribeNotificationsButton.mnemonic", "U"},
         {"MBeansTab.unsubscribeNotificationsButton.toolTip", "\u505C\u6B62\u76D1\u542C\u901A\u77E5"},
         {"Manage Hotspot MBeans in: ", "\u7BA1\u7406\u4EE5\u4E0B\u4F4D\u7F6E\u7684\u70ED\u70B9 MBean: "},
@@ -262,7 +262,7 @@
         {"MemoryTab.poolPlotter.accessibleName", "{0}\u7684\u5185\u5B58\u4F7F\u7528\u91CF\u56FE\u8868\u3002"},
         {"Message","\u6D88\u606F"},
         {"Method successfully invoked", "\u5DF2\u6210\u529F\u8C03\u7528\u65B9\u6CD5"},
-        {"Minimize All", "\u5168\u90E8\u6700\u5C0F\u5316"},
+        {"Minimize All", "\u5168\u90E8\u6700\u5C0F\u5316(M)"},
         {"Minimize All.mnemonic", "M"},
         {"Minus Version", "\u8FD9\u662F{0}\u7248\u672C {1}"},
         {"Monitor locked",
@@ -278,7 +278,7 @@
              "\u540D\u79F0: {0}\n\u72B6\u6001: {2}\u4E0A\u7684{1}\n"},
         {"Name State LockName LockOwner",
              "\u540D\u79F0: {0}\n\u72B6\u6001: {2}\u4E0A\u7684{1}, \u62E5\u6709\u8005: {3}\n"},
-        {"New Connection...", "\u65B0\u5EFA\u8FDE\u63A5..."},
+        {"New Connection...", "\u65B0\u5EFA\u8FDE\u63A5(N)..."},
         {"New Connection....mnemonic", "N"},
         {"New value applied","\u5DF2\u5E94\u7528\u65B0\u503C"},
         {"No attribute selected","\u672A\u9009\u62E9\u5C5E\u6027"},
@@ -304,19 +304,19 @@
         {"Overview","\u6982\u89C8"},
         {"OverviewPanel.plotter.accessibleName", "{0}\u7684\u56FE\u8868\u3002"},
         {"Parameter", "\u53C2\u6570"},
-        {"Password: ", "\u53E3\u4EE4: "},
+        {"Password: ", "\u53E3\u4EE4(P): "},
         {"Password: .mnemonic", "P"},
         {"Password.accessibleName", "\u53E3\u4EE4"},
         {"Peak","\u5CF0\u503C"},
-        {"Perform GC", "\u6267\u884C GC"},
+        {"Perform GC", "\u6267\u884C GC(G)"},
         {"Perform GC.mnemonic", "G"},
         {"Perform GC.toolTip", "\u8BF7\u6C42\u5783\u573E\u6536\u96C6"},
         {"Plotter.accessibleName", "\u56FE\u8868"},
         {"Plotter.accessibleName.keyAndValue", "{0}={1}\n"},
         {"Plotter.accessibleName.noData", "\u672A\u7ED8\u5236\u6570\u636E\u3002"},
-        {"Plotter.saveAsMenuItem", "\u5C06\u6570\u636E\u53E6\u5B58\u4E3A..."},
+        {"Plotter.saveAsMenuItem", "\u5C06\u6570\u636E\u53E6\u5B58\u4E3A(A)..."},
         {"Plotter.saveAsMenuItem.mnemonic", "A"},
-        {"Plotter.timeRangeMenu", "\u65F6\u95F4\u8303\u56F4"},
+        {"Plotter.timeRangeMenu", "\u65F6\u95F4\u8303\u56F4(T)"},
         {"Plotter.timeRangeMenu.mnemonic", "T"},
         {"Problem adding listener","\u6DFB\u52A0\u76D1\u542C\u7A0B\u5E8F\u65F6\u51FA\u73B0\u95EE\u9898"},
         {"Problem displaying MBean", "\u663E\u793A MBean \u65F6\u51FA\u73B0\u95EE\u9898"},
@@ -328,11 +328,11 @@
         {"Readable","\u53EF\u8BFB"},
         {"Received","\u6536\u5230"},
         {"Reconnect","\u91CD\u65B0\u8FDE\u63A5"},
-        {"Remote Process:", "\u8FDC\u7A0B\u8FDB\u7A0B:"},
+        {"Remote Process:", "\u8FDC\u7A0B\u8FDB\u7A0B(R):"},
         {"Remote Process:.mnemonic", "R"},
         {"Remote Process.textField.accessibleName", "\u8FDC\u7A0B\u8FDB\u7A0B"},
         {"Remove","\u5220\u9664"},
-        {"Restore All", "\u5168\u90E8\u8FD8\u539F"},
+        {"Restore All", "\u5168\u90E8\u8FD8\u539F(R)"},
         {"Restore All.mnemonic", "R"},
         {"Return value", "\u8FD4\u56DE\u503C"},
         {"ReturnType", "ReturnType"},
@@ -363,9 +363,9 @@
         {"ThreadTab.threadInfo.accessibleName", "\u7EBF\u7A0B\u4FE1\u606F"},
         {"ThreadTab.threadPlotter.accessibleName", "\u8868\u793A\u7EBF\u7A0B\u6570\u7684\u56FE\u8868\u3002"},
         {"Threshold","\u9608\u503C"},
-        {"Tile", "\u5E73\u94FA"},
+        {"Tile", "\u5E73\u94FA(T)"},
         {"Tile.mnemonic", "T"},
-        {"Time Range:", "\u65F6\u95F4\u8303\u56F4:"},
+        {"Time Range:", "\u65F6\u95F4\u8303\u56F4(T):"},
         {"Time Range:.mnemonic", "T"},
         {"Time", "\u65F6\u95F4"},
         {"TimeStamp","TimeStamp"},
@@ -386,7 +386,7 @@
         {"Usage Threshold","\u7528\u6CD5\u9608\u503C"},
         {"remoteTF.usage","<b>\u7528\u6CD5</b>: &lt;hostname&gt;:&lt;port&gt; \u6216 service:jmx:&lt;protocol&gt;:&lt;sap&gt;"},
         {"Used","\u5DF2\u7528"},
-        {"Username: ", "\u7528\u6237\u540D: "},
+        {"Username: ", "\u7528\u6237\u540D(U): "},
         {"Username: .mnemonic", "U"},
         {"Username.accessibleName", "\u7528\u6237\u540D"},
         {"UserData","UserData"},
@@ -400,7 +400,7 @@
         {"Verbose Output.toolTip", "\u4E3A\u7C7B\u52A0\u8F7D\u7CFB\u7EDF\u542F\u7528\u8BE6\u7EC6\u8F93\u51FA"},
         {"View value", "\u89C6\u56FE\u503C"},
         {"View","\u89C6\u56FE"},
-        {"Window", "\u7A97\u53E3"},
+        {"Window", "\u7A97\u53E3(W)"},
         {"Window.mnemonic", "W"},
         {"Windows","Windows"},
         {"Writable","\u53EF\u5199"},
--- a/jdk/src/share/classes/sun/tools/native2ascii/Main.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/tools/native2ascii/Main.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/tools/native2ascii/resources/MsgNative2ascii_ja.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/tools/native2ascii/resources/MsgNative2ascii_ja.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/tools/native2ascii/resources/MsgNative2ascii_zh_CN.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/tools/native2ascii/resources/MsgNative2ascii_zh_CN.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/util/locale/LanguageTag.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/locale/LanguageTag.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/util/logging/PlatformLogger.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/logging/PlatformLogger.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/util/logging/resources/logging.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/logging/resources/logging.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/util/logging/resources/logging_de.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/logging/resources/logging_de.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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,13 +25,22 @@
 
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
+
+# The following ALL CAPS words should be translated.
 ALL=ALL
+# The following ALL CAPS words should be translated.
 SEVERE=SEVERE
+# The following ALL CAPS words should be translated.
 WARNING=WARNING
+# The following ALL CAPS words should be translated.
 INFO=INFO
+# The following ALL CAPS words should be translated.
 CONFIG= CONFIG
+# The following ALL CAPS words should be translated.
 FINE=FINE
+# The following ALL CAPS words should be translated.
 FINER=FINER
+# The following ALL CAPS words should be translated.
 FINEST=FINEST
+# The following ALL CAPS words should be translated.
 OFF=OFF
-
--- a/jdk/src/share/classes/sun/util/logging/resources/logging_es.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/logging/resources/logging_es.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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,13 +25,22 @@
 
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
+
+# The following ALL CAPS words should be translated.
 ALL=ALL
+# The following ALL CAPS words should be translated.
 SEVERE=SEVERE
+# The following ALL CAPS words should be translated.
 WARNING=WARNING
+# The following ALL CAPS words should be translated.
 INFO=INFO
+# The following ALL CAPS words should be translated.
 CONFIG= CONFIG
+# The following ALL CAPS words should be translated.
 FINE=FINE
+# The following ALL CAPS words should be translated.
 FINER=FINER
+# The following ALL CAPS words should be translated.
 FINEST=FINEST
+# The following ALL CAPS words should be translated.
 OFF=OFF
-
--- a/jdk/src/share/classes/sun/util/logging/resources/logging_fr.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/logging/resources/logging_fr.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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,13 +25,22 @@
 
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
+
+# The following ALL CAPS words should be translated.
 ALL=ALL
+# The following ALL CAPS words should be translated.
 SEVERE=SEVERE
+# The following ALL CAPS words should be translated.
 WARNING=WARNING
+# The following ALL CAPS words should be translated.
 INFO=INFO
+# The following ALL CAPS words should be translated.
 CONFIG= CONFIG
+# The following ALL CAPS words should be translated.
 FINE=FINE
+# The following ALL CAPS words should be translated.
 FINER=FINER
+# The following ALL CAPS words should be translated.
 FINEST=FINEST
+# The following ALL CAPS words should be translated.
 OFF=OFF
-
--- a/jdk/src/share/classes/sun/util/logging/resources/logging_it.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/logging/resources/logging_it.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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,13 +25,22 @@
 
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
+
+# The following ALL CAPS words should be translated.
 ALL=ALL
+# The following ALL CAPS words should be translated.
 SEVERE=SEVERE
+# The following ALL CAPS words should be translated.
 WARNING=WARNING
+# The following ALL CAPS words should be translated.
 INFO=INFO
+# The following ALL CAPS words should be translated.
 CONFIG= CONFIG
+# The following ALL CAPS words should be translated.
 FINE=FINE
+# The following ALL CAPS words should be translated.
 FINER=FINER
+# The following ALL CAPS words should be translated.
 FINEST=FINEST
+# The following ALL CAPS words should be translated.
 OFF=OFF
-
--- a/jdk/src/share/classes/sun/util/logging/resources/logging_ja.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/logging/resources/logging_ja.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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,13 +25,22 @@
 
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
+
+# The following ALL CAPS words should be translated.
 ALL=\u3059\u3079\u3066
+# The following ALL CAPS words should be translated.
 SEVERE=SEVERE
+# The following ALL CAPS words should be translated.
 WARNING=WARNING
+# The following ALL CAPS words should be translated.
 INFO=\u60C5\u5831
+# The following ALL CAPS words should be translated.
 CONFIG= CONFIG
+# The following ALL CAPS words should be translated.
 FINE=\u8A73\u7D30\u30EC\u30D9\u30EB(\u4F4E)
+# The following ALL CAPS words should be translated.
 FINER=FINER
+# The following ALL CAPS words should be translated.
 FINEST=FINEST
+# The following ALL CAPS words should be translated.
 OFF=\u30AA\u30D5
-
--- a/jdk/src/share/classes/sun/util/logging/resources/logging_ko.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/logging/resources/logging_ko.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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,13 +25,22 @@
 
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
+
+# The following ALL CAPS words should be translated.
 ALL=ALL
+# The following ALL CAPS words should be translated.
 SEVERE=SEVERE
+# The following ALL CAPS words should be translated.
 WARNING=WARNING
+# The following ALL CAPS words should be translated.
 INFO=INFO
+# The following ALL CAPS words should be translated.
 CONFIG= CONFIG
+# The following ALL CAPS words should be translated.
 FINE=FINE
+# The following ALL CAPS words should be translated.
 FINER=FINER
+# The following ALL CAPS words should be translated.
 FINEST=FINEST
+# The following ALL CAPS words should be translated.
 OFF=OFF
-
--- a/jdk/src/share/classes/sun/util/logging/resources/logging_pt_BR.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/logging/resources/logging_pt_BR.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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,13 +25,22 @@
 
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
-ALL=TUDO
+
+# The following ALL CAPS words should be translated.
+ALL=ALL
+# The following ALL CAPS words should be translated.
 SEVERE=SEVERE
+# The following ALL CAPS words should be translated.
 WARNING=WARNING
+# The following ALL CAPS words should be translated.
 INFO=INFO
+# The following ALL CAPS words should be translated.
 CONFIG= CONFIG
+# The following ALL CAPS words should be translated.
 FINE=FINE
+# The following ALL CAPS words should be translated.
 FINER=FINER
+# The following ALL CAPS words should be translated.
 FINEST=FINEST
+# The following ALL CAPS words should be translated.
 OFF=OFF
-
--- a/jdk/src/share/classes/sun/util/logging/resources/logging_sv.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/logging/resources/logging_sv.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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,13 +25,22 @@
 
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
-ALL=ALLA
+
+# The following ALL CAPS words should be translated.
+ALL=ALL
+# The following ALL CAPS words should be translated.
 SEVERE=SEVERE
+# The following ALL CAPS words should be translated.
 WARNING=WARNING
+# The following ALL CAPS words should be translated.
 INFO=INFO
+# The following ALL CAPS words should be translated.
 CONFIG= CONFIG
-FINE=FIN
+# The following ALL CAPS words should be translated.
+FINE=FINE
+# The following ALL CAPS words should be translated.
 FINER=FINER
+# The following ALL CAPS words should be translated.
 FINEST=FINEST
-OFF=AV
-
+# The following ALL CAPS words should be translated.
+OFF=OFF
--- a/jdk/src/share/classes/sun/util/logging/resources/logging_zh_CN.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/logging/resources/logging_zh_CN.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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,13 +25,22 @@
 
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
+
+# The following ALL CAPS words should be translated.
 ALL=ALL
+# The following ALL CAPS words should be translated.
 SEVERE=SEVERE
+# The following ALL CAPS words should be translated.
 WARNING=WARNING
+# The following ALL CAPS words should be translated.
 INFO=INFO
+# The following ALL CAPS words should be translated.
 CONFIG= CONFIG
+# The following ALL CAPS words should be translated.
 FINE=FINE
+# The following ALL CAPS words should be translated.
 FINER=FINER
+# The following ALL CAPS words should be translated.
 FINEST=FINEST
+# The following ALL CAPS words should be translated.
 OFF=OFF
-
--- a/jdk/src/share/classes/sun/util/logging/resources/logging_zh_TW.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/logging/resources/logging_zh_TW.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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,13 +25,22 @@
 
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
+
+# The following ALL CAPS words should be translated.
 ALL=\u6240\u6709
+# The following ALL CAPS words should be translated.
 SEVERE=SEVERE
+# The following ALL CAPS words should be translated.
 WARNING=WARNING
+# The following ALL CAPS words should be translated.
 INFO=\u8CC7\u8A0A
+# The following ALL CAPS words should be translated.
 CONFIG= CONFIG
+# The following ALL CAPS words should be translated.
 FINE=\u7D30\u7DFB
+# The following ALL CAPS words should be translated.
 FINER=FINER
+# The following ALL CAPS words should be translated.
 FINEST=FINEST
+# The following ALL CAPS words should be translated.
 OFF=\u95DC\u9589
-
--- a/jdk/src/share/classes/sun/util/resources/CurrencyNames.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/CurrencyNames.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,45 +1,68 @@
 #
-# Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
 #
 
 #
 # COPYRIGHT AND PERMISSION NOTICE
 #
-# Copyright (C) 1991-2007 Unicode, Inc. All rights reserved.
+# Copyright (C) 1991-2011 Unicode, Inc. All rights reserved.
 # Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
 #
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of the Unicode data files and any associated documentation (the "Data
-# Files") or Unicode software and any associated documentation (the
-# "Software") to deal in the Data Files or Software without restriction,
-# including without limitation the rights to use, copy, modify, merge,
-# publish, distribute, and/or sell copies of the Data Files or Software, and
-# to permit persons to whom the Data Files or Software are furnished to do
-# so, provided that (a) the above copyright notice(s) and this permission
-# notice appear with all copies of the Data Files or Software, (b) both the
-# above copyright notice(s) and this permission notice appear in associated
-# documentation, and (c) there is clear notice in each modified Data File or
-# in the Software as well as in the documentation associated with the Data
-# File(s) or Software that the data or software has been modified.
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of the Unicode data files and any associated documentation (the
+# "Data Files") or Unicode software and any associated documentation
+# (the "Software") to deal in the Data Files or Software without
+# restriction, including without limitation the rights to use, copy,
+# modify, merge, publish, distribute, and/or sell copies of the Data
+# Files or Software, and to permit persons to whom the Data Files or
+# Software are furnished to do so, provided that (a) the above copyright
+# notice(s) and this permission notice appear with all copies of the
+# Data Files or Software, (b) both the above copyright notice(s) and
+# this permission notice appear in associated documentation, and (c)
+# there is clear notice in each modified Data File or in the Software as
+# well as in the documentation associated with the Data File(s) or
+# Software that the data or software has been modified.
 #
-# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
-# THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
-# INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
-# CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+# ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT
+# HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR
+# ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR
+# SOFTWARE.
 #
-# Except as contained in this notice, the name of a copyright holder shall not
-# be used in advertising or otherwise to promote the sale, use or other
-# dealings in these Data Files or Software without prior written
-# authorization of the copyright holder.
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in these Data Files or Software without prior
+# written authorization of the copyright holder.
+
 #
- 
 # Generated automatically from the Common Locale Data Repository. DO NOT EDIT!
-
+#
 ADP=ADP
 AED=AED
 AFA=AFA
@@ -254,52 +277,52 @@
 ZWN=ZWN
 adp=Andorran Peseta
 aed=United Arab Emirates Dirham
-afa=Afghani (1927-2002)
-afn=Afghani
+afa=Afghan Afghani (1927-2002)
+afn=Afghan Afghani
 all=Albanian Lek
 amd=Armenian Dram
-ang=Netherlands Antillan Guilder
+ang=Netherlands Antillean Guilder
 aoa=Angolan Kwanza
 ars=Argentine Peso
 ats=Austrian Schilling
 aud=Australian Dollar
-awg=Aruban Guilder
-azm=Azerbaijanian Manat (1993-2006)
-azn=Azerbaijanian Manat
+awg=Aruban Florin
+azm=Azerbaijani Manat (1993-2006)
+azn=Azerbaijani Manat
 bam=Bosnia-Herzegovina Convertible Mark
-bbd=Barbados Dollar
-bdt=Bangladesh Taka
+bbd=Barbadian Dollar
+bdt=Bangladeshi Taka
 bef=Belgian Franc
 bgl=Bulgarian Hard Lev
-bgn=Bulgarian New Lev
+bgn=Bulgarian Lev
 bhd=Bahraini Dinar
-bif=Burundi Franc
+bif=Burundian Franc
 bmd=Bermudan Dollar
 bnd=Brunei Dollar
-bob=Boliviano
+bob=Bolivian Boliviano
 bov=Bolivian Mvdol
 brl=Brazilian Real
 bsd=Bahamian Dollar
-btn=Bhutan Ngultrum
+btn=Bhutanese Ngultrum
 bwp=Botswanan Pula
-byb=Belarussian New Ruble (1994-1999)
-byr=Belarussian Ruble
+byb=Belarusian New Ruble (1994-1999)
+byr=Belarusian Ruble
 bzd=Belize Dollar
 cad=Canadian Dollar
-cdf=Congolese Franc Congolais
+cdf=Congolese Franc
 chf=Swiss Franc
-clf=Chilean Unidades de Fomento
+clf=Chilean Unit of Account (UF)
 clp=Chilean Peso
-cny=Chinese Yuan Renminbi
+cny=Chinese Yuan
 cop=Colombian Peso
-crc=Costa Rican Colon
-csd=Serbian Dinar
+crc=Costa Rican Col\u00f3n
+csd=Serbian Dinar (2002-2006)
 cup=Cuban Peso
-cve=Cape Verde Escudo
-cyp=Cyprus Pound
+cve=Cape Verdean Escudo
+cyp=Cypriot Pound
 czk=Czech Republic Koruna
-dem=Deutsche Mark
-djf=Djibouti Franc
+dem=German Mark
+djf=Djiboutian Franc
 dkk=Danish Krone
 dop=Dominican Peso
 dzd=Algerian Dinar
@@ -310,22 +333,22 @@
 etb=Ethiopian Birr
 eur=Euro
 fim=Finnish Markka
-fjd=Fiji Dollar
+fjd=Fijian Dollar
 fkp=Falkland Islands Pound
 frf=French Franc
 gbp=British Pound Sterling
 gel=Georgian Lari
-ghc=Ghana Cedi
-ghs=Ghana Cedi
+ghc=Ghanaian Cedi (1979-2007)
+ghs=Ghanaian Cedi
 gip=Gibraltar Pound
-gmd=Gambia Dalasi
-gnf=Guinea Franc
+gmd=Gambian Dalasi
+gnf=Guinean Franc
 grd=Greek Drachma
-gtq=Guatemala Quetzal
+gtq=Guatemalan Quetzal
 gwp=Guinea-Bissau Peso
-gyd=Guyana Dollar
+gyd=Guyanaese Dollar
 hkd=Hong Kong Dollar
-hnl=Hoduras Lempira
+hnl=Honduran Lempira
 hrk=Croatian Kuna
 htg=Haitian Gourde
 huf=Hungarian Forint
@@ -335,110 +358,111 @@
 inr=Indian Rupee
 iqd=Iraqi Dinar
 irr=Iranian Rial
-isk=Icelandic Krona
+isk=Icelandic Kr\u00f3na
 itl=Italian Lira
 jmd=Jamaican Dollar
 jod=Jordanian Dinar
 jpy=Japanese Yen
 kes=Kenyan Shilling
-kgs=Kyrgystan Som
+kgs=Kyrgystani Som
 khr=Cambodian Riel
-kmf=Comoro Franc
+kmf=Comorian Franc
 kpw=North Korean Won
 krw=South Korean Won
 kwd=Kuwaiti Dinar
 kyd=Cayman Islands Dollar
-kzt=Kazakhstan Tenge
+kzt=Kazakhstani Tenge
 lak=Laotian Kip
 lbp=Lebanese Pound
-lkr=Sri Lanka Rupee
+lkr=Sri Lankan Rupee
 lrd=Liberian Dollar
 lsl=Lesotho Loti
-ltl=Lithuanian Lita
-luf=Luxembourg Franc
+ltl=Lithuanian Litas
+luf=Luxembourgian Franc
 lvl=Latvian Lats
 lyd=Libyan Dinar
 mad=Moroccan Dirham
 mdl=Moldovan Leu
-mga=Madagascar Ariary
-mgf=Madagascar Franc
+mga=Malagasy Ariary
+mgf=Malagasy Franc
 mkd=Macedonian Denar
-mmk=Myanmar Kyat
+mmk=Myanma Kyat
 mnt=Mongolian Tugrik
-mop=Macao Pataca
-mro=Mauritania Ouguiya
+mop=Macanese Pataca
+mro=Mauritanian Ouguiya
 mtl=Maltese Lira
-mur=Mauritius Rupee
-mvr=Maldive Islands Rufiyaa
-mwk=Malawi Kwacha
+mur=Mauritian Rupee
+mvr=Maldivian Rufiyaa
+mwk=Malawian Kwacha
 mxn=Mexican Peso
-mxv=Mexican Unidad de Inversion (UDI)
+mxv=Mexican Investment Unit
 myr=Malaysian Ringgit
-mzm=Old Mozambique Metical
-mzn=Mozambique Metical
-nad=Namibia Dollar
+mzm=Mozambican Metical (1980-2006)
+mzn=Mozambican Metical
+nad=Namibian Dollar
 ngn=Nigerian Naira
-nio=Nicaraguan Cordoba Oro
-nlg=Netherlands Guilder
+nio=Nicaraguan C\u00f3rdoba
+nlg=Dutch Guilder
 nok=Norwegian Krone
 npr=Nepalese Rupee
 nzd=New Zealand Dollar
-omr=Oman Rial
+omr=Omani Rial
 pab=Panamanian Balboa
-pen=Peruvian Sol Nuevo
-pgk=Papua New Guinea Kina
+pen=Peruvian Nuevo Sol
+pgk=Papua New Guinean Kina
 php=Philippine Peso
-pkr=Pakistan Rupee
+pkr=Pakistani Rupee
 pln=Polish Zloty
 pte=Portuguese Escudo
-pyg=Paraguay Guarani
+pyg=Paraguayan Guarani
 qar=Qatari Rial
-rol=Old Romanian Leu
+rol=Romanian Leu (1952-2006)
 ron=Romanian Leu
+rsd=Serbian Dinar
 rub=Russian Ruble
 rur=Russian Ruble (1991-1998)
 rwf=Rwandan Franc
 sar=Saudi Riyal
 sbd=Solomon Islands Dollar
-scr=Seychelles Rupee
-sdd=Sudanese Dinar
+scr=Seychellois Rupee
+sdd=Sudanese Dinar (1992-2007)
 sdg=Sudanese Pound
 sek=Swedish Krona
 sgd=Singapore Dollar
 shp=Saint Helena Pound
-sit=Slovenia Tolar
+sit=Slovenian Tolar
 skk=Slovak Koruna
-sll=Sierra Leone Leone
+sll=Sierra Leonean Leone
 sos=Somali Shilling
-srd=Surinam Dollar
-srg=Suriname Guilder
-std=Sao Tome and Principe Dobra
-svc=El Salvador Colon
+srd=Surinamese Dollar
+srg=Surinamese Guilder
+std=S\u00e3o Tom\u00e9 and Pr\u00edncipe Dobra
+svc=Salvadoran Col\u00f3n
 syp=Syrian Pound
-szl=Swaziland Lilangeni
+szl=Swazi Lilangeni
 thb=Thai Baht
-tjs=Tajikistan Somoni
-tmm=Turkmenistan Manat
+tjs=Tajikistani Somoni
+tmm=Turkmenistani Manat (1993-2009)
 tnd=Tunisian Dinar
-top=Tonga Pa\u02bbanga
-tpe=Timor Escudo
-trl=Turkish Lira
-try=New Turkish Lira
+top=Tongan Pa\u02bbanga
+tpe=Timorese Escudo
+trl=Turkish Lira (1922-2005)
+try=Turkish Lira
 ttd=Trinidad and Tobago Dollar
-twd=Taiwan New Dollar
+twd=New Taiwan Dollar
 tzs=Tanzanian Shilling
 uah=Ukrainian Hryvnia
 ugx=Ugandan Shilling
 usd=US Dollar
 usn=US Dollar (Next day)
 uss=US Dollar (Same day)
-uyu=Uruguay Peso Uruguayo
-uzs=Uzbekistan Sum
-veb=Venezuelan Bolivar
-vef=Venezuelan Bolivar Fuerte
+uyu=Uruguayan Peso
+uzs=Uzbekistan Som
+veb=Venezuelan Bol\u00edvar (1871-2008)
+vef=Venezuelan Bol\u00edvar
 vnd=Vietnamese Dong
 vuv=Vanuatu Vatu
-wst=Western Samoa Tala
+wst=Samoan Tala
 xaf=CFA Franc BEAC
 xag=Silver
 xau=Gold
@@ -455,9 +479,9 @@
 xpf=CFP Franc
 xpt=Platinum
 xts=Testing Currency Code
-xxx=No Currency
+xxx=Unknown Currency
 yer=Yemeni Rial
-yum=Yugoslavian Noviy Dinar
+yum=Yugoslavian New Dinar (1994-2002)
 zar=South African Rand
 zmk=Zambian Kwacha
-zwd=Zimbabwe Dollar
+zwd=Zimbabwean Dollar (1980-2008)
--- a/jdk/src/share/classes/sun/util/resources/CurrencyNames_de.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/CurrencyNames_de.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,49 +1,70 @@
 #
-# Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
 #
 
 #
 # COPYRIGHT AND PERMISSION NOTICE
 #
-# Copyright (C) 1991-2007 Unicode, Inc. All rights reserved.
+# Copyright (C) 1991-2011 Unicode, Inc. All rights reserved.
 # Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
 #
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of the Unicode data files and any associated documentation (the "Data
-# Files") or Unicode software and any associated documentation (the
-# "Software") to deal in the Data Files or Software without restriction,
-# including without limitation the rights to use, copy, modify, merge,
-# publish, distribute, and/or sell copies of the Data Files or Software, and
-# to permit persons to whom the Data Files or Software are furnished to do
-# so, provided that (a) the above copyright notice(s) and this permission
-# notice appear with all copies of the Data Files or Software, (b) both the
-# above copyright notice(s) and this permission notice appear in associated
-# documentation, and (c) there is clear notice in each modified Data File or
-# in the Software as well as in the documentation associated with the Data
-# File(s) or Software that the data or software has been modified.
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of the Unicode data files and any associated documentation (the
+# "Data Files") or Unicode software and any associated documentation
+# (the "Software") to deal in the Data Files or Software without
+# restriction, including without limitation the rights to use, copy,
+# modify, merge, publish, distribute, and/or sell copies of the Data
+# Files or Software, and to permit persons to whom the Data Files or
+# Software are furnished to do so, provided that (a) the above copyright
+# notice(s) and this permission notice appear with all copies of the
+# Data Files or Software, (b) both the above copyright notice(s) and
+# this permission notice appear in associated documentation, and (c)
+# there is clear notice in each modified Data File or in the Software as
+# well as in the documentation associated with the Data File(s) or
+# Software that the data or software has been modified.
 #
-# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
-# THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
-# INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
-# CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+# ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT
+# HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR
+# ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR
+# SOFTWARE.
 #
-# Except as contained in this notice, the name of a copyright holder shall not
-# be used in advertising or otherwise to promote the sale, use or other
-# dealings in these Data Files or Software without prior written
-# authorization of the copyright holder.
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in these Data Files or Software without prior
+# written authorization of the copyright holder.
+
 #
- 
 # Generated automatically from the Common Locale Data Repository. DO NOT EDIT!
-
+#
 adp=Andorranische Pesete
 aed=UAE Dirham
-afa=Afghani (1927-2002)
-afn=Afghani
 all=Lek
 amd=Dram
 ang=Niederl. Antillen Gulden
@@ -52,7 +73,8 @@
 ats=\u00d6sterreichischer Schilling
 aud=Australischer Dollar
 awg=Aruba Florin
-azm=Aserbeidschan Manat
+azm=Aserbaidschan-Manat (1993-2006)
+azn=Aserbaidschan-Manat
 bam=Konvertierbare Mark
 bbd=Barbados-Dollar
 bdt=Taka
@@ -63,7 +85,6 @@
 bif=Burundi-Franc
 bmd=Bermuda-Dollar
 bnd=Brunei-Dollar
-bob=Boliviano
 bov=Mvdol
 brl=Real
 bsd=Bahama-Dollar
@@ -80,11 +101,11 @@
 cny=Renminbi Yuan
 cop=Kolumbianischer Peso
 crc=Costa Rica Colon
+csd=Alter Serbischer Dinar
 cup=Kubanischer Peso
 cve=Kap Verde Escudo
-cyp=Zypern Pfund
+cyp=Zypern-Pfund
 czk=Tschechische Krone
-dem=Deutsche Mark
 djf=Dschibuti-Franc
 dkk=D\u00e4nische Krone
 dop=Dominikanischer Peso
@@ -92,24 +113,24 @@
 eek=Estnische Krone
 egp=\u00c4gyptisches Pfund
 ern=Nakfa
-esp=Spanische Pesete
+esp=Spanische Peseta
 etb=Birr
-eur=Euro
 fim=Finnische Mark
-fjd=Fidschi Dollar
-fkp=Falkland Pfund
+fjd=Fidschi-Dollar
+fkp=Falkland-Pfund
 frf=Franz\u00f6sischer Franc
 gbp=Pfund Sterling
 gel=Georgischer Lari
 ghc=Cedi
-gip=Gibraltar Pfund
+ghs=Ghanaische Cedi
+gip=Gibraltar-Pfund
 gmd=Dalasi
-gnf=Guinea Franc
+gnf=Guinea-Franc
 grd=Griechische Drachme
 gtq=Quetzal
 gwp=Guinea Bissau Peso
-gyd=Guyana Dollar
-hkd=Hongkong Dollar
+gyd=Guyana-Dollar
+hkd=Hongkong-Dollar
 hnl=Lempira
 hrk=Kuna
 htg=Gourde
@@ -121,11 +142,11 @@
 iqd=Irak Dinar
 irr=Rial
 isk=Isl\u00e4ndische Krone
-itl=Italienische Lire
-jmd=Jamaika Dollar
+itl=Italienische Lira
+jmd=Jamaika-Dollar
 jod=Jordanischer Dinar
 jpy=Yen
-kes=Kenia Schilling
+kes=Kenia-Schilling
 kgs=Som
 khr=Riel
 kmf=Komoren Franc
@@ -146,27 +167,26 @@
 mad=Marokkanischer Dirham
 mdl=Moldau Leu
 mga=Madagaskar Ariary
-mgf=Madagaskar Franc
+mgf=Madagaskar-Franc
 mkd=Denar
 mmk=Kyat
 mnt=Tugrik
 mop=Pataca
 mro=Ouguiya
 mtl=Maltesische Lira
-mur=Mauritius Rupie
+mur=Mauritius-Rupie
 mvr=Rufiyaa
-mwk=Malawi Kwacha
 mxn=Mexikanischer Peso
-mxv=Mexican Unidad de Inversion (UDI)
 myr=Malaysischer Ringgit
-mzm=Metical
-nad=Namibia Dollar
+mzm=Alter Metical
+mzn=Metical
+nad=Namibia-Dollar
 ngn=Naira
 nio=Gold-Cordoba
 nlg=Holl\u00e4ndischer Gulden
 nok=Norwegische Krone
 npr=Nepalesische Rupie
-nzd=Neuseeland Dollar
+nzd=Neuseeland-Dollar
 omr=Rial Omani
 pab=Balboa
 pen=Neuer Sol
@@ -178,23 +198,25 @@
 pyg=Guarani
 qar=Katar Riyal
 rol=Leu
+ron=Rum\u00e4nischer Leu
+rsd=Serbischer Dinar
 rub=Russischer Rubel (neu)
 rur=Russischer Rubel (alt)
-rwf=Ruanda Franc
-sar=Saudi Riyal
-sbd=Salomonen Dollar
-scr=Seychellen Rupie
+rwf=Ruanda-Franc
+sbd=Salomonen-Dollar
+scr=Seychellen-Rupie
 sdd=Sudanesischer Dinar
+sdg=Sudanesisches Pfund
 sek=Schwedische Krone
-sgd=Singapur Dollar
+sgd=Singapur-Dollar
 shp=St. Helena Pfund
 sit=Tolar
 skk=Slowakische Krone
 sll=Leone
-sos=Somalia Schilling
+sos=Somalia-Schilling
+srd=Surinamischer Dollar
 srg=Suriname Gulden
 std=Dobra
-svc=El Salvador Colon
 syp=Syrisches Pfund
 szl=Lilangeni
 thb=Baht
@@ -202,26 +224,29 @@
 tmm=Turkmenistan-Manat
 tnd=Tunesischer Dinar
 top=Pa\u02bbanga
-tpe=Timor Escudo
-trl=T\u00fcrkische Lira
-try=Neue T\u00fcrkische Lira
-ttd=Trinidad und Tobago Dollar
-twd=Neuer Taiwan Dollar
-tzs=Tansania Schilling
+tpe=Timor-Escudo
+trl=Alte T\u00fcrkische Lira
+try=T\u00fcrkische Lira
+ttd=Trinidad- und Tobago-Dollar
+twd=Neuer Taiwan-Dollar
+tzs=Tansania-Schilling
 uah=Hryvnia
-ugx=Uganda Schilling
-usd=US Dollar
+ugx=Uganda-Schilling
+usd=US-Dollar
 usn=US Dollar (N\u00e4chster Tag)
 uss=US Dollar (Gleicher Tag)
 uyu=Uruguayischer Peso
 uzs=Usbekistan Sum
 veb=Bolivar
+vef=Bol\u00edvar Fuerte
 vnd=Dong
 vuv=Vatu
 wst=Tala
 xaf=CFA Franc (\u00c4quatorial)
-xau=Gold
+xag=Unze Silber
+xau=Unze Gold
 xba=Europ\u00e4ische Rechnungseinheit
+xbb=Europ\u00e4ische W\u00e4hrungseinheit (XBB)
 xbc=Europ\u00e4ische Rechnungseinheit (XBC)
 xbd=Europ\u00e4ische Rechnungseinheit (XBD)
 xcd=Ostkaribischer Dollar
@@ -229,9 +254,12 @@
 xfo=Franz\u00f6sischer Gold-Franc
 xfu=Franz\u00f6sischer UIC-Franc
 xof=CFA Franc (West)
-xpf=CFP Franc
-yer=Jemen Rial
+xpd=Unze Palladium
+xpt=Unze Platin
+xts=Testw\u00e4hrung
+xxx=Unbekannte W\u00e4hrung
+yer=Jemen-Rial
 yum=Neuer Dinar
-zar=Rand
+zar=S\u00fcdafrikanischer Rand
 zmk=Kwacha
-zwd=Simbabwe Dollar
+zwd=Simbabwe-Dollar
--- a/jdk/src/share/classes/sun/util/resources/CurrencyNames_es.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/CurrencyNames_es.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,47 +1,70 @@
 #
-# Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
 #
 
 #
 # COPYRIGHT AND PERMISSION NOTICE
 #
-# Copyright (C) 1991-2007 Unicode, Inc. All rights reserved.
+# Copyright (C) 1991-2011 Unicode, Inc. All rights reserved.
 # Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
 #
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of the Unicode data files and any associated documentation (the "Data
-# Files") or Unicode software and any associated documentation (the
-# "Software") to deal in the Data Files or Software without restriction,
-# including without limitation the rights to use, copy, modify, merge,
-# publish, distribute, and/or sell copies of the Data Files or Software, and
-# to permit persons to whom the Data Files or Software are furnished to do
-# so, provided that (a) the above copyright notice(s) and this permission
-# notice appear with all copies of the Data Files or Software, (b) both the
-# above copyright notice(s) and this permission notice appear in associated
-# documentation, and (c) there is clear notice in each modified Data File or
-# in the Software as well as in the documentation associated with the Data
-# File(s) or Software that the data or software has been modified.
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of the Unicode data files and any associated documentation (the
+# "Data Files") or Unicode software and any associated documentation
+# (the "Software") to deal in the Data Files or Software without
+# restriction, including without limitation the rights to use, copy,
+# modify, merge, publish, distribute, and/or sell copies of the Data
+# Files or Software, and to permit persons to whom the Data Files or
+# Software are furnished to do so, provided that (a) the above copyright
+# notice(s) and this permission notice appear with all copies of the
+# Data Files or Software, (b) both the above copyright notice(s) and
+# this permission notice appear in associated documentation, and (c)
+# there is clear notice in each modified Data File or in the Software as
+# well as in the documentation associated with the Data File(s) or
+# Software that the data or software has been modified.
 #
-# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
-# THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
-# INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
-# CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+# ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT
+# HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR
+# ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR
+# SOFTWARE.
 #
-# Except as contained in this notice, the name of a copyright holder shall not
-# be used in advertising or otherwise to promote the sale, use or other
-# dealings in these Data Files or Software without prior written
-# authorization of the copyright holder.
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in these Data Files or Software without prior
+# written authorization of the copyright holder.
+
 #
- 
 # Generated automatically from the Common Locale Data Repository. DO NOT EDIT!
-
+#
 adp=peseta andorrana
-aed=dirham de los Emiratos \u00c1rabes Unidos
+aed=d\u00edrham de los Emiratos \u00c1rabes Unidos
 afa=afgani (1927-2002)
 afn=afgani
 all=lek alban\u00e9s
@@ -52,7 +75,8 @@
 ats=chel\u00edn austriaco
 aud=d\u00f3lar australiano
 awg=flor\u00edn de Aruba
-azm=manat azer\u00ed
+azm=manat azer\u00ed (1993-2006)
+azn=manat azer\u00ed
 bam=marco convertible de Bosnia-Herzegovina
 bbd=d\u00f3lar de Barbados
 bdt=taka de Bangladesh
@@ -80,7 +104,7 @@
 cny=yuan renminbi chino
 cop=peso colombiano
 crc=col\u00f3n costarricense
-csd=dinar serbio
+csd=antiguo dinar serbio
 cup=peso cubano
 cve=escudo de Cabo Verde
 cyp=libra chipriota
@@ -102,7 +126,8 @@
 frf=franco franc\u00e9s
 gbp=libra esterlina brit\u00e1nica
 gel=lari georgiano
-ghc=cedi ghan\u00e9s
+ghc=cedi ghan\u00e9s (1979-2007)
+ghs=cedi ghan\u00e9s
 gip=libra de Gibraltar
 gmd=dalasi gambiano
 gnf=franco guineano
@@ -160,7 +185,8 @@
 mxn=peso mexicano
 mxv=unidad de inversi\u00f3n (UDI) mexicana
 myr=ringgit malasio
-mzm=metical mozambique\u00f1o
+mzm=antiguo metical mozambique\u00f1o
+mzn=metical mozambique\u00f1o
 nad=d\u00f3lar de Namibia
 ngn=naira nigeriano
 nio=c\u00f3rdoba oro nicarag\u00fcense
@@ -180,6 +206,7 @@
 qar=riyal de Qatar
 rol=antiguo leu rumano
 ron=leu rumano
+rsd=dinar serbio
 rub=rublo ruso
 rur=rublo ruso (1991-1998)
 rwf=franco ruand\u00e9s
@@ -187,6 +214,7 @@
 sbd=d\u00f3lar de las Islas Salom\u00f3n
 scr=rupia de Seychelles
 sdd=dinar sudan\u00e9s
+sdg=libra sudanesa
 sek=corona sueca
 sgd=d\u00f3lar singapurense
 shp=libra de Santa Elena
@@ -206,7 +234,7 @@
 tnd=dinar tunecino
 top=pa\u02bbanga tongano
 tpe=escudo timorense
-trl=lira turca
+trl=lira turca antigua
 try=nueva lira turca
 ttd=d\u00f3lar de Trinidad y Tobago
 twd=nuevo d\u00f3lar taiwan\u00e9s
@@ -219,6 +247,7 @@
 uyu=peso uruguayo
 uzs=sum uzbeko
 veb=bol\u00edvar venezolano
+vef=bol\u00edvar fuerte venezolano
 vnd=dong vietnamita
 vuv=vatu vanuatuense
 wst=tala samoano
--- a/jdk/src/share/classes/sun/util/resources/CurrencyNames_fr.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/CurrencyNames_fr.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,224 +1,256 @@
 #
-# Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
 #
 
 #
 # COPYRIGHT AND PERMISSION NOTICE
 #
-# Copyright (C) 1991-2007 Unicode, Inc. All rights reserved.
+# Copyright (C) 1991-2011 Unicode, Inc. All rights reserved.
 # Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
 #
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of the Unicode data files and any associated documentation (the "Data
-# Files") or Unicode software and any associated documentation (the
-# "Software") to deal in the Data Files or Software without restriction,
-# including without limitation the rights to use, copy, modify, merge,
-# publish, distribute, and/or sell copies of the Data Files or Software, and
-# to permit persons to whom the Data Files or Software are furnished to do
-# so, provided that (a) the above copyright notice(s) and this permission
-# notice appear with all copies of the Data Files or Software, (b) both the
-# above copyright notice(s) and this permission notice appear in associated
-# documentation, and (c) there is clear notice in each modified Data File or
-# in the Software as well as in the documentation associated with the Data
-# File(s) or Software that the data or software has been modified.
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of the Unicode data files and any associated documentation (the
+# "Data Files") or Unicode software and any associated documentation
+# (the "Software") to deal in the Data Files or Software without
+# restriction, including without limitation the rights to use, copy,
+# modify, merge, publish, distribute, and/or sell copies of the Data
+# Files or Software, and to permit persons to whom the Data Files or
+# Software are furnished to do so, provided that (a) the above copyright
+# notice(s) and this permission notice appear with all copies of the
+# Data Files or Software, (b) both the above copyright notice(s) and
+# this permission notice appear in associated documentation, and (c)
+# there is clear notice in each modified Data File or in the Software as
+# well as in the documentation associated with the Data File(s) or
+# Software that the data or software has been modified.
 #
-# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
-# THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
-# INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
-# CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+# ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT
+# HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR
+# ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR
+# SOFTWARE.
 #
-# Except as contained in this notice, the name of a copyright holder shall not
-# be used in advertising or otherwise to promote the sale, use or other
-# dealings in these Data Files or Software without prior written
-# authorization of the copyright holder.
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in these Data Files or Software without prior
+# written authorization of the copyright holder.
+
 #
- 
 # Generated automatically from the Common Locale Data Repository. DO NOT EDIT!
-
+#
 adp=peseta andorrane
 aed=dirham des \u00c9mirats arabes unis
-afa=afghani [AFA]
+afa=afghani (1927\u20132002)
 afn=afghani
-all=lek
+all=lek albanais
 amd=dram arm\u00e9nien
-ang=florin des Antilles
+ang=florin antillais
 aoa=kwanza angolais
 ars=peso argentin
 ats=schilling autrichien
 aud=dollar australien
-awg=florin d\u2019Aruba
-azm=manat az\u00e9ri
-bam=mark bosniaque convertible
-bbd=dollar de Barbade
-bdt=taka
+awg=florin arubais
+azm=manat az\u00e9ri (1993-2006)
+azn=manat az\u00e9ri
+bam=mark convertible bosniaque
+bbd=dollar barbadien
+bdt=taka bangladeshi
 bef=franc belge
-bgl=lev
-bgn=nouveau lev
-bhd=dinar de Bahre\u00efn
-bif=franc du Burundi
-bmd=dollar des Bermudes
-bnd=dollar de Brunei
+bgl=lev bulgare (1962\u20131999)
+bgn=nouveau lev bulgare
+bhd=dinar bahre\u00efni
+bif=franc burundais
+bmd=dollar bermudien
+bnd=dollar brun\u00e9ien
 bob=boliviano
-bov=mvdol
-brl=r\u00e9al
-bsd=dollar des Bahamas
-btn=ngultrum
-bwp=pula
+bov=mvdol bolivien
+brl=r\u00e9al br\u00e9silien
+bsd=dollar baham\u00e9en
+btn=ngultrum bouthanais
+bwp=pula botswanais
 byb=nouveau rouble bi\u00e9lorusse (1994-1999)
 byr=rouble bi\u00e9lorusse
-bzd=dollar de Belize
+bzd=dollar b\u00e9liz\u00e9en
 cad=dollar canadien
 cdf=franc congolais
 chf=franc suisse
 clf=unit\u00e9 d\u2019investissement chilienne
 clp=peso chilien
-cny=Yuan Ren-min-bi
+cny=yuan renminbi chinois
 cop=peso colombien
-crc=colon de Costa Rica
-csd=dinar serbe
+crc=col\u00f3n costaricain
+csd=dinar serbo-mont\u00e9n\u00e9grin
 cup=peso cubain
-cve=escudo du Cap-Vert
-cyp=livre cypriote
+cve=escudo capverdien
+cyp=livre chypriote
 czk=couronne tch\u00e8que
-dem=deutsche mark
-djf=franc de Djibouti
+dem=mark allemand
+djf=franc djiboutien
 dkk=couronne danoise
 dop=peso dominicain
 dzd=dinar alg\u00e9rien
 eek=couronne estonienne
 egp=livre \u00e9gyptienne
-ern=Eritrean Nakfa
+ern=nafka \u00e9rythr\u00e9en
 esp=peseta espagnole
-etb=birr
+etb=birr \u00e9thiopien
 eur=euro
 fim=mark finlandais
-fjd=dollar de Fidji
-fkp=livre des Falkland (Malvinas)
+fjd=dollar fidjien
+fkp=livre des Falkland
 frf=franc fran\u00e7ais
 gbp=livre sterling
-gel=lari
+gel=lari g\u00e9orgien
 ghc=c\u00e9di
+ghs=c\u00e9di ghan\u00e9en
 gip=livre de Gibraltar
-gmd=dalasie
+gmd=dalasi gambien
 gnf=franc guin\u00e9en
-grd=drachme
-gtq=quetzal
-gwp=peso de Guin\u00e9e-Bissau
+grd=drachme grecque
+gtq=quetzal guat\u00e9malt\u00e8que
+gwp=peso bissau-guin\u00e9en
 gyd=dollar du Guyana
 hkd=dollar de Hong Kong
-hnl=lempira
-hrk=kuna
-htg=gourde
-huf=forint
-idr=rupiah
+hnl=lempira hondurien
+hrk=kuna croate
+htg=gourde ha\u00eftienne
+huf=forint hongrois
+idr=roupie indon\u00e9sienne
 iep=livre irlandaise
+ils=nouveau shekel isra\u00e9lien
 inr=roupie indienne
+iqd=dinar irakien
 irr=rial iranien
 isk=couronne islandaise
 itl=lire italienne
 jmd=dollar jama\u00efcain
 jod=dinar jordanien
-jpy=yen
-kes=shilling du Kenya
-kgs=som
-khr=riel
-kmf=franc des Comores
+jpy=yen japonais
+kes=shilling k\u00e9nyan
+kgs=som kirghize
+khr=riel cambodgien
+kmf=franc comorien
 kpw=won nord-cor\u00e9en
 krw=won sud-cor\u00e9en
+kwd=dinar kowe\u00eftien
 kyd=dollar des \u00eeles Ca\u00efmanes
-kzt=tenge du Kazakhstan
-lak=kip
+kzt=tenge kazakh
+lak=kip loatien
 lbp=livre libanaise
-lkr=roupie de Sri Lanka
+lkr=roupie srilankaise
 lrd=dollar lib\u00e9rien
-lsl=loti
+lsl=loti lesothan
 ltl=litas lituanien
 luf=franc luxembourgeois
 lvl=lats letton
 lyd=dinar lybien
 mad=dirham marocain
 mdl=leu moldave
-mga=ariary
+mga=ariary malgache
 mgf=franc malgache
-mkd=denar
-mmk=Myanmar Kyat
-mnt=tugrik
-mop=pataca
-mro=ouguija
+mkd=denar mac\u00e9donien
+mmk=kyat myanmarais
+mnt=tugrik mongol
+mop=pataca macanaise
+mro=ouguiya mauritanien
 mtl=lire maltaise
 mur=roupie mauricienne
-mvr=roupie des Maldives
-mwk=kwacha [MWK]
+mvr=rufiyaa maldivienne
+mwk=kwacha malawite
 mxn=peso mexicain
 mxv=unit\u00e9 de conversion mexicaine (UDI)
-myr=ringgit
+myr=ringgit malais
 mzm=m\u00e9tical
+mzn=metical mozambicain
 nad=dollar namibien
-ngn=naira
-nio=cordoba d\u2019or
+ngn=naira nig\u00e9rian
+nio=c\u00f3rdoba oro nicaraguayen
 nlg=florin n\u00e9erlandais
 nok=couronne norv\u00e9gienne
-npr=roupie du N\u00e9pal
+npr=roupie n\u00e9palaise
 nzd=dollar n\u00e9o-z\u00e9landais
 omr=rial omani
-pab=balboa
+pab=balboa panam\u00e9en
 pen=nouveau sol p\u00e9ruvien
-pgk=kina
+pgk=kina papouan-n\u00e9o-guin\u00e9en
 php=peso philippin
-pkr=roupie du Pakistan
-pln=zloty
+pkr=roupie pakistanaise
+pln=zloty polonais
 pte=escudo portugais
-pyg=guarani
-qar=rial du Qatar
+pyg=guaran\u00ed paraguayen
+qar=rial qatari
 rol=ancien leu roumain
-ron=nouveau leu roumain
-rub=rouble
-rur=rouble de Russie (1991-1998)
+ron=leu roumain
+rsd=dinar serbe
+rub=rouble russe
+rur=rouble russe (1991\u20131998)
 rwf=franc rwandais
 sar=rial saoudien
-sbd=dollar des \u00celes Salomon
+sbd=dollar des \u00eeles Salomon
 scr=roupie des Seychelles
 sdd=dinar soudanais
+sdg=livre soudanaise
 sek=couronne su\u00e9doise
 sgd=dollar de Singapour
 shp=livre de Sainte-H\u00e9l\u00e8ne
-sit=tolar
+sit=tolar slov\u00e8ne
 skk=couronne slovaque
-sll=l\u00e9one
-sos=shilling de Somalie
+sll=leone sierra-l\u00e9onais
+sos=shilling somalien
 srd=dollar surinamais
-srg=florin du Surinam
-std=dobra
-svc=colon salvadorien
+srg=florin surinamais
+std=dobra santom\u00e9en
+svc=col\u00f3n salvadorien
 syp=livre syrienne
-szl=lilangeni
-thb=baht
-tjs=somoni du Tadjikistan
-tmm=Turkmenistan Manat
+szl=lilangeni swazi
+thb=baht tha\u00eflandais
+tjs=somoni tadjik
+tmm=manat turkm\u00e8ne
 tnd=dinar tunisien
-top=pa\u02bbanga
-tpe=escudo de Timor
+top=pa\u2019anga tongan
+tpe=escudo timorais
 trl=livre turque
 try=nouvelle livre turque
-ttd=dollar de la Trinit\u00e9
-twd=dollar ta\u00efwanais
-tzs=shilling de Tanzanie
-uah=hryvnia
+ttd=dollar trinidadien
+twd=nouveau dollar ta\u00efwanais
+tzs=shilling tanzanien
+uah=hryvnia ukrainienne
 ugx=shilling ougandais
 usd=dollar des \u00c9tats-Unis
 usn=dollar des Etats-Unis (jour suivant)
 uss=dollar des Etats-Unis (jour m\u00eame)
 uyu=peso uruguayen
-uzs=sum
+uzs=sum ouzbek
 veb=bolivar
-vnd=dong
-vuv=vatu
-wst=tala
+vef=bolivar fuerte v\u00e9n\u00e9zu\u00e9lien
+vnd=d\u00f4ng vietnamien
+vuv=vatu vanuatuan
+wst=tala samoan
 xaf=franc CFA (BEAC)
 xag=argent
 xau=or
@@ -234,8 +266,10 @@
 xpd=palladium
 xpf=franc CFP
 xpt=platine
-yer=riyal du Y\u00e9men
+xts=(devise de test)
+xxx=devise inconnue ou non valide
+yer=rial y\u00e9m\u00e9nite
 yum=dinar yougoslave Noviy
-zar=rand
-zmk=kwacha
-zwd=dollar du Zimbabwe
+zar=rand sud-africain
+zmk=kwacha zambien
+zwd=dollar zimbabw\u00e9en
--- a/jdk/src/share/classes/sun/util/resources/CurrencyNames_it.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/CurrencyNames_it.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,45 +1,68 @@
 #
-# Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
 #
 
 #
 # COPYRIGHT AND PERMISSION NOTICE
 #
-# Copyright (C) 1991-2007 Unicode, Inc. All rights reserved.
+# Copyright (C) 1991-2011 Unicode, Inc. All rights reserved.
 # Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
 #
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of the Unicode data files and any associated documentation (the "Data
-# Files") or Unicode software and any associated documentation (the
-# "Software") to deal in the Data Files or Software without restriction,
-# including without limitation the rights to use, copy, modify, merge,
-# publish, distribute, and/or sell copies of the Data Files or Software, and
-# to permit persons to whom the Data Files or Software are furnished to do
-# so, provided that (a) the above copyright notice(s) and this permission
-# notice appear with all copies of the Data Files or Software, (b) both the
-# above copyright notice(s) and this permission notice appear in associated
-# documentation, and (c) there is clear notice in each modified Data File or
-# in the Software as well as in the documentation associated with the Data
-# File(s) or Software that the data or software has been modified.
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of the Unicode data files and any associated documentation (the
+# "Data Files") or Unicode software and any associated documentation
+# (the "Software") to deal in the Data Files or Software without
+# restriction, including without limitation the rights to use, copy,
+# modify, merge, publish, distribute, and/or sell copies of the Data
+# Files or Software, and to permit persons to whom the Data Files or
+# Software are furnished to do so, provided that (a) the above copyright
+# notice(s) and this permission notice appear with all copies of the
+# Data Files or Software, (b) both the above copyright notice(s) and
+# this permission notice appear in associated documentation, and (c)
+# there is clear notice in each modified Data File or in the Software as
+# well as in the documentation associated with the Data File(s) or
+# Software that the data or software has been modified.
 #
-# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
-# THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
-# INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
-# CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+# ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT
+# HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR
+# ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR
+# SOFTWARE.
 #
-# Except as contained in this notice, the name of a copyright holder shall not
-# be used in advertising or otherwise to promote the sale, use or other
-# dealings in these Data Files or Software without prior written
-# authorization of the copyright holder.
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in these Data Files or Software without prior
+# written authorization of the copyright holder.
+
 #
- 
 # Generated automatically from the Common Locale Data Repository. DO NOT EDIT!
-
+#
 adp=Peseta Andorrana
 aed=Dirham degli Emirati Arabi Uniti
 afa=Afgani (1927-2002)
@@ -52,7 +75,7 @@
 ats=Scellino Austriaco
 aud=Dollaro Australiano
 awg=Fiorino di Aruba
-azm=Manat Azero
+azm=Manat Azero (1993-2006)
 bam=Marco Conv. Bosnia-Erzegovina
 bbd=Dollaro di Barbados
 bdt=Taka Bangladese
@@ -63,7 +86,6 @@
 bif=Franco del Burundi
 bmd=Dollaro delle Bermuda
 bnd=Dollaro del Brunei
-bob=Boliviano
 bov=Mvdol Boliviano
 brl=Real Brasiliano
 bsd=Dollaro delle Bahamas
@@ -80,7 +102,6 @@
 cny=Renmimbi Cinese
 cop=Peso Colombiano
 crc=Col\u00f3n Costaricano
-csd=Dinaro serbo
 cup=Peso Cubano
 cve=Escudo del Capo Verde
 cyp=Sterlina Cipriota
@@ -95,7 +116,6 @@
 ern=Nakfa Eritreo
 esp=Peseta Spagnola
 etb=Birr Etiopico
-eur=Euro
 fim=Markka Finlandese
 fjd=Dollaro delle Figi
 fkp=Sterlina delle Falkland
@@ -103,6 +123,7 @@
 gbp=Sterlina Inglese
 gel=Lari Georgiano
 ghc=Cedi del Ghana
+ghs=Cedi ghanese
 gip=Sterlina di Gibilterra
 gmd=Dalasi del Gambia
 gnf=Franco della Guinea
@@ -116,7 +137,7 @@
 htg=Gourde Haitiano
 huf=Fiorino Ungherese
 idr=Rupia Indonesiana
-iep=Lira Irlandese
+iep=Sterlina irlandese
 ils=Nuovo sheqel israeliano
 inr=Rupia Indiana
 iqd=Dinaro Iracheno
@@ -127,7 +148,7 @@
 jod=Dinaro Giordano
 jpy=Yen Giapponese
 kes=Scellino Keniota
-kgs=Som  Kirghiso
+kgs=Som Kirghiso
 khr=Riel Cambogiano
 kmf=Franco Comoriano
 kpw=Won Nordcoreano
@@ -160,7 +181,7 @@
 mxn=Peso Messicano
 mxv=Unidad de Inversion (UDI) Messicana
 myr=Ringgit della Malesia
-mzm=Metical del Mozambico
+mzn=Metical del Mozambico
 nad=Dollaro Namibiano
 ngn=Naira Nigeriana
 nio=C\u00f3rdoba oro nicaraguense
@@ -179,6 +200,7 @@
 pyg=Guarani del Paraguay
 qar=Rial del Qatar
 rol=Leu della Romania
+rsd=Dinaro serbo
 rub=Rublo Russo
 rur=Rublo della CSI
 rwf=Franco Ruandese
@@ -186,6 +208,7 @@
 sbd=Dollaro delle Isole Solomon
 scr=Rupia delle Seychelles
 sdd=Dinaro Sudanese
+sdg=Sterlina sudanese
 sek=Corona Svedese
 sgd=Dollaro di Singapore
 shp=Sterlina di Sant\u2019Elena
@@ -193,6 +216,7 @@
 skk=Corona Slovacca
 sll=Leone della Sierra Leone
 sos=Scellino Somalo
+srd=Dollaro surinamese
 srg=Fiorino del Suriname
 std=Dobra di Sao Tom\u00e9 e Principe
 svc=Col\u00f3n Salvadoregno
@@ -216,10 +240,12 @@
 uyu=Peso Uruguayo uruguaiano
 uzs=Sum dell\u2019Uzbekistan
 veb=Bolivar Venezuelano
+vef=Bol\u00edvar venezuelano forte
 vnd=Dong Vietnamita
 vuv=Vatu di Vanuatu
 wst=Tala della Samoa Occidentale
 xaf=Franco CFA BEAC
+xag=Argento
 xau=Oro
 xba=Unit\u00e0 composita europea
 xbb=Unit\u00e0 monetaria europea
@@ -230,6 +256,7 @@
 xfo=Franco Oro Francese
 xfu=Franco UIC Francese
 xof=Franco CFA BCEAO
+xpd=Palladio
 xpf=Franco CFP
 xxx=Nessuna valuta
 yer=Rial dello Yemen
--- a/jdk/src/share/classes/sun/util/resources/CurrencyNames_ja.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/CurrencyNames_ja.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,45 +1,68 @@
 #
-# Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
 #
 
 #
 # COPYRIGHT AND PERMISSION NOTICE
 #
-# Copyright (C) 1991-2007 Unicode, Inc. All rights reserved.
+# Copyright (C) 1991-2011 Unicode, Inc. All rights reserved.
 # Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
 #
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of the Unicode data files and any associated documentation (the "Data
-# Files") or Unicode software and any associated documentation (the
-# "Software") to deal in the Data Files or Software without restriction,
-# including without limitation the rights to use, copy, modify, merge,
-# publish, distribute, and/or sell copies of the Data Files or Software, and
-# to permit persons to whom the Data Files or Software are furnished to do
-# so, provided that (a) the above copyright notice(s) and this permission
-# notice appear with all copies of the Data Files or Software, (b) both the
-# above copyright notice(s) and this permission notice appear in associated
-# documentation, and (c) there is clear notice in each modified Data File or
-# in the Software as well as in the documentation associated with the Data
-# File(s) or Software that the data or software has been modified.
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of the Unicode data files and any associated documentation (the
+# "Data Files") or Unicode software and any associated documentation
+# (the "Software") to deal in the Data Files or Software without
+# restriction, including without limitation the rights to use, copy,
+# modify, merge, publish, distribute, and/or sell copies of the Data
+# Files or Software, and to permit persons to whom the Data Files or
+# Software are furnished to do so, provided that (a) the above copyright
+# notice(s) and this permission notice appear with all copies of the
+# Data Files or Software, (b) both the above copyright notice(s) and
+# this permission notice appear in associated documentation, and (c)
+# there is clear notice in each modified Data File or in the Software as
+# well as in the documentation associated with the Data File(s) or
+# Software that the data or software has been modified.
 #
-# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
-# THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
-# INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
-# CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+# ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT
+# HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR
+# ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR
+# SOFTWARE.
 #
-# Except as contained in this notice, the name of a copyright holder shall not
-# be used in advertising or otherwise to promote the sale, use or other
-# dealings in these Data Files or Software without prior written
-# authorization of the copyright holder.
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in these Data Files or Software without prior
+# written authorization of the copyright holder.
+
 #
- 
 # Generated automatically from the Common Locale Data Repository. DO NOT EDIT!
-
+#
 adp=\u30a2\u30f3\u30c9\u30e9 \u30da\u30bb\u30bf
 aed=UAE \u30c7\u30a3\u30eb\u30cf\u30e0
 afa=\u30a2\u30d5\u30ac\u30cb\u30fc (1927-2002)
@@ -52,7 +75,8 @@
 ats=\u30aa\u30fc\u30b9\u30c8\u30ea\u30a2 \u30b7\u30ea\u30f3\u30b0
 aud=\u30aa\u30fc\u30b9\u30c8\u30e9\u30ea\u30a2 \u30c9\u30eb
 awg=\u30a2\u30eb\u30d0 \u30ae\u30eb\u30c0\u30fc
-azm=\u30a2\u30bc\u30eb\u30d0\u30a4\u30b8\u30e3\u30f3 \u30de\u30ca\u30c8
+azm=\u30a2\u30bc\u30eb\u30d0\u30a4\u30b8\u30e3\u30f3 \u30de\u30ca\u30c8 (1993-2006)
+azn=\u30a2\u30bc\u30eb\u30d0\u30a4\u30b8\u30e3\u30f3 \u30de\u30ca\u30c8
 bam=\u30dc\u30b9\u30cb\u30a2 \u30de\u30eb\u30af (BAM)
 bbd=\u30d0\u30eb\u30d0\u30c9\u30b9 \u30c9\u30eb
 bdt=\u30d0\u30f3\u30b0\u30e9\u30c7\u30b7\u30e5 \u30bf\u30ab
@@ -102,7 +126,8 @@
 frf=\u30d5\u30e9\u30f3\u30b9 \u30d5\u30e9\u30f3
 gbp=\u82f1\u56fd\u30dd\u30f3\u30c9
 gel=\u30b0\u30eb\u30b8\u30a2 \u30e9\u30ea
-ghc=\u30ac\u30fc\u30ca \u30bb\u30c7\u30a3
+ghc=\u30ac\u30fc\u30ca \u30bb\u30c7\u30a3 (1979-2007)
+ghs=\u30ac\u30fc\u30ca \u30bb\u30c7\u30a3
 gip=\u30b8\u30d6\u30e9\u30eb\u30bf\u30eb \u30dd\u30f3\u30c9
 gmd=\u30ac\u30f3\u30d3\u30a2 \u30c0\u30e9\u30b7
 gnf=\u30ae\u30cb\u30a2 \u30d5\u30e9\u30f3
@@ -161,6 +186,7 @@
 mxv=\u30e1\u30ad\u30b7\u30b3 UDI
 myr=\u30de\u30ec\u30fc\u30b7\u30a2 \u30ea\u30f3\u30ae\u30c3\u30c8
 mzm=\u30e2\u30b6\u30f3\u30d4\u30fc\u30af \u30e1\u30c6\u30a3\u30ab\u30eb
+mzn=\u30e2\u30b6\u30f3\u30d3\u30fc\u30af \u30e1\u30c6\u30a3\u30ab\u30eb
 nad=\u30ca\u30df\u30d3\u30a2 \u30c9\u30eb
 ngn=\u30ca\u30a4\u30b8\u30a7\u30ea\u30a2 \u30ca\u30a4\u30e9
 nio=\u30cb\u30ab\u30e9\u30b0\u30a2 \u30b3\u30eb\u30c9\u30d0 \u30aa\u30ed
@@ -178,7 +204,9 @@
 pte=\u30dd\u30eb\u30c8\u30ac\u30eb \u30a8\u30b9\u30af\u30fc\u30c9
 pyg=\u30d1\u30e9\u30b0\u30a2\u30a4 \u30b0\u30a2\u30e9\u30cb
 qar=\u30ab\u30bf\u30fc\u30eb \u30ea\u30a2\u30eb
-rol=\u30eb\u30fc\u30de\u30cb\u30a2 \u30ec\u30a4
+rol=\u30eb\u30fc\u30de\u30cb\u30a2 \u65e7\u30ec\u30a4
+ron=\u30eb\u30fc\u30de\u30cb\u30a2 \u30ec\u30a4
+rsd=\u30c7\u30a3\u30ca\u30fc\u30eb (\u30bb\u30eb\u30d3\u30a2)
 rub=\u30ed\u30b7\u30a2 \u30eb\u30fc\u30d6\u30eb
 rur=\u30ed\u30b7\u30a2 \u30eb\u30fc\u30d6\u30eb (1991-1998)
 rwf=\u30eb\u30ef\u30f3\u30c0 \u30d5\u30e9\u30f3
@@ -186,6 +214,7 @@
 sbd=\u30bd\u30ed\u30e2\u30f3\u8af8\u5cf6 \u30c9\u30eb
 scr=\u30bb\u30a4\u30b7\u30a7\u30eb \u30eb\u30d4\u30fc
 sdd=\u30b9\u30fc\u30c0\u30f3 \u30c7\u30a3\u30ca\u30fc\u30eb
+sdg=\u30b9\u30fc\u30c0\u30f3 \u30dd\u30f3\u30c9
 sek=\u30b9\u30a6\u30a7\u30fc\u30c7\u30f3 \u30af\u30ed\u30fc\u30ca
 sgd=\u30b7\u30f3\u30ac\u30dd\u30fc\u30eb \u30c9\u30eb
 shp=\u30bb\u30f3\u30c8\u30d8\u30ec\u30ca\u5cf6 \u30dd\u30f3\u30c9
@@ -193,6 +222,7 @@
 skk=\u30b9\u30ed\u30d0\u30ad\u30a2 \u30b3\u30eb\u30ca
 sll=\u30b7\u30a8\u30e9\u30ec\u30aa\u30cd \u30ec\u30aa\u30f3
 sos=\u30bd\u30de\u30ea\u30a2 \u30b7\u30ea\u30f3\u30b0
+srd=\u30b9\u30ea\u30ca\u30e0 \u30c9\u30eb
 srg=\u30b9\u30ea\u30ca\u30e0 \u30ae\u30eb\u30c0\u30fc
 std=\u30b5\u30f3\u30c8\u30e1\u30fb\u30d7\u30ea\u30f3\u30b7\u30da \u30c9\u30d6\u30e9
 svc=\u30a8\u30eb\u30b5\u30eb\u30d0\u30c9\u30eb \u30b3\u30ed\u30f3
@@ -217,10 +247,12 @@
 uyu=\u30a6\u30eb\u30b0\u30a2\u30a4 \u30da\u30bd
 uzs=\u30a6\u30ba\u30d9\u30ad\u30b9\u30bf\u30f3 \u30b9\u30e0
 veb=\u30d9\u30cd\u30ba\u30a8\u30e9 \u30dc\u30ea\u30d0\u30eb
+vef=\u30d9\u30cd\u30ba\u30a8\u30e9 \u30dc\u30ea\u30d0\u30eb\u30d5\u30a8\u30eb\u30c6
 vnd=\u30d9\u30c8\u30ca\u30e0 \u30c9\u30f3
 vuv=\u30d0\u30cc\u30a2\u30c4 \u30d0\u30c4
 wst=\u897f\u30b5\u30e2\u30a2 \u30bf\u30e9
 xaf=CFA \u30d5\u30e9\u30f3 BEAC
+xag=\u9280
 xau=\u91d1
 xba=\u30e8\u30fc\u30ed\u30c3\u30d1\u6df7\u5408\u5358\u4f4d (EURCO)
 xbb=\u30e8\u30fc\u30ed\u30c3\u30d1\u901a\u8ca8\u5358\u4f4d (EMU-6)
@@ -231,8 +263,13 @@
 xfo=\u30d5\u30e9\u30f3\u30b9\u91d1\u30d5\u30e9\u30f3
 xfu=\u30d5\u30e9\u30f3\u30b9 UIC \u30d5\u30e9\u30f3
 xof=CFA \u30d5\u30e9\u30f3 BCEAO
+xpd=\u30d1\u30e9\u30b8\u30a6\u30e0
 xpf=CFP \u30d5\u30e9\u30f3
+xpt=\u30d7\u30e9\u30c1\u30ca
+xts=\u30c6\u30b9\u30c8\u7528\u901a\u8ca8\u30b3\u30fc\u30c9
+xxx=\u4e0d\u660e\u307e\u305f\u306f\u7121\u52b9\u306a\u901a\u8ca8
 yer=\u30a4\u30a8\u30e1\u30f3 \u30ea\u30a2\u30eb
 yum=\u30e6\u30fc\u30b4\u30b9\u30e9\u30d3\u30a2 \u30b9\u30fc\u30d1\u30fc \u30c7\u30a3\u30ca\u30fc\u30eb
 zar=\u5357\u30a2\u30d5\u30ea\u30ab \u30e9\u30f3\u30c9
+zmk=\u30b6\u30f3\u30d3\u30a2 \u30af\u30ef\u30c1\u30e3
 zwd=\u30b8\u30f3\u30d0\u30d6\u30a8 \u30c9\u30eb
--- a/jdk/src/share/classes/sun/util/resources/CurrencyNames_ko.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/CurrencyNames_ko.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,58 +1,82 @@
 #
-# Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
 #
 
 #
 # COPYRIGHT AND PERMISSION NOTICE
 #
-# Copyright (C) 1991-2007 Unicode, Inc. All rights reserved.
+# Copyright (C) 1991-2011 Unicode, Inc. All rights reserved.
 # Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
 #
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of the Unicode data files and any associated documentation (the "Data
-# Files") or Unicode software and any associated documentation (the
-# "Software") to deal in the Data Files or Software without restriction,
-# including without limitation the rights to use, copy, modify, merge,
-# publish, distribute, and/or sell copies of the Data Files or Software, and
-# to permit persons to whom the Data Files or Software are furnished to do
-# so, provided that (a) the above copyright notice(s) and this permission
-# notice appear with all copies of the Data Files or Software, (b) both the
-# above copyright notice(s) and this permission notice appear in associated
-# documentation, and (c) there is clear notice in each modified Data File or
-# in the Software as well as in the documentation associated with the Data
-# File(s) or Software that the data or software has been modified.
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of the Unicode data files and any associated documentation (the
+# "Data Files") or Unicode software and any associated documentation
+# (the "Software") to deal in the Data Files or Software without
+# restriction, including without limitation the rights to use, copy,
+# modify, merge, publish, distribute, and/or sell copies of the Data
+# Files or Software, and to permit persons to whom the Data Files or
+# Software are furnished to do so, provided that (a) the above copyright
+# notice(s) and this permission notice appear with all copies of the
+# Data Files or Software, (b) both the above copyright notice(s) and
+# this permission notice appear in associated documentation, and (c)
+# there is clear notice in each modified Data File or in the Software as
+# well as in the documentation associated with the Data File(s) or
+# Software that the data or software has been modified.
 #
-# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
-# THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
-# INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
-# CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+# ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT
+# HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR
+# ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR
+# SOFTWARE.
 #
-# Except as contained in this notice, the name of a copyright holder shall not
-# be used in advertising or otherwise to promote the sale, use or other
-# dealings in these Data Files or Software without prior written
-# authorization of the copyright holder.
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in these Data Files or Software without prior
+# written authorization of the copyright holder.
+
 #
- 
 # Generated automatically from the Common Locale Data Repository. DO NOT EDIT!
-
+#
 adp=\uc548\ub3c4\ub77c \ud398\uc138\ud0c0
-aed=\uc544\ub78d\uc5d0\ubbf8\ub808\uc774\ud2b8 \ub514\ub098\ub974
+aed=\uc544\ub78d\uc5d0\ubbf8\ub9ac\ud2b8 \ub514\ub974\ud568
 afa=\uc544\ud504\uac00\ub2c8 (1927-2002)
 afn=\uc544\ud504\uac00\ub2c8
 all=\uc54c\ubc14\ub2c8\uc544 \ub808\ud06c
 amd=\uc544\ub974\uba54\ub2c8\uc544 \ub4dc\ub78c
-ang=\ub124\ub378\ub780\ub4dc \uc548\ud2f8\ub808\uc2a4 \uad74\ub374
+ang=\ub124\ub35c\ub780\ub4dc\ub839 \uc548\ud2f8\ub808\uc2a4 \uae38\ub354
 aoa=\uc559\uace8\ub77c \ucf74\uc790
 ars=\uc544\ub974\ud5e8\ud2f0\ub098 \ud398\uc18c
 ats=\ud638\uc8fc \uc2e4\ub9c1
 aud=\ud638\uc8fc \ub2ec\ub7ec
 awg=\uc544\ub8e8\ubc14 \uae38\ub354
-azm=\uc544\uc81c\ub974\ubc14\uc774\uc820 \ub9c8\ub098\ud2b8
+azm=\uc544\uc81c\ub974\ubc14\uc774\uc820 \ub9c8\ub098\ud2b8(1993-2006)
+azn=\uc544\uc81c\ub974\ubc14\uc774\uc794 \ub9c8\ub098\ud2b8
 bam=\ubcf4\uc2a4\ub2c8\uc544-\ud5e4\ub974\uccb4\uace0\ube44\ub098 \ud0dc\ud658 \ub9c8\ub974\ud06c
 bbd=\ubc14\ubca0\uc774\ub3c4\uc2a4 \ub2ec\ub7ec
 bdt=\ubc29\uae00\ub77c\ub370\uc2dc \ud0c0\uce74
@@ -64,6 +88,7 @@
 bmd=\ubc84\ubba4\ub2e4 \ub2ec\ub7ec
 bnd=\ubd80\ub8e8\ub098\uc774 \ub2ec\ub7ec
 bob=\ubcfc\ub9ac\ube44\uc544\ub178
+bov=\ubcfc\ub9ac\ube44\uc544\ub178 Mvdol(\uae30\uae08)
 brl=\ube0c\ub77c\uc9c8 \ub808\uc54c
 bsd=\ubc14\ud558\ub9c8 \ub2ec\ub7ec
 btn=\ubd80\ud0c4 \ub20c\ud22c\ub214
@@ -73,11 +98,13 @@
 bzd=\ubca8\ub9ac\uc988 \ub2ec\ub7ec
 cad=\uce90\ub098\ub2e4 \ub2ec\ub7ec
 cdf=\ucf69\uace0 \ud504\ub791 \ucf69\uace8\ub77c\uc2a4
-chf=\uc2a4\uc704\uc2a4 \ud504\ub791\ub2ec\ub7ec
+chf=\uc2a4\uc704\uc2a4 \ud504\ub791
+clf=\uce60\ub808 UF (Unidades de Fomento)
 clp=\uce60\ub808 \ud398\uc18c
 cny=\uc911\uad6d \uc704\uc548 \uc778\ubbfc\ud3d0
 cop=\ucf5c\ub86c\ube44\uc544 \ud398\uc18c
 crc=\ucf54\uc2a4\ud0c0\ub9ac\uce74 \ucf5c\ub860
+csd=\uace0 \uc138\ub974\ube44\uc544 \ub514\ub098\ub974
 cup=\ucfe0\ubc14 \ud398\uc18c
 cve=\uce74\ubcf4\ubca0\ub974\ub370 \uc5d0\uc2a4\ucfe0\ub3c4
 cyp=\uc2f8\uc774\ud504\ub7ec\uc2a4 \ud30c\uc6b4\ub4dc
@@ -99,7 +126,8 @@
 frf=\ud504\ub791\uc2a4 \ud504\ub791
 gbp=\uc601\uad6d\ub839 \ud30c\uc6b4\ub4dc \uc2a4\ud138\ub9c1
 gel=\uadf8\ub8e8\uc9c0\uc57c \ub77c\ub9ac
-ghc=\uac00\ub098 \uc2dc\ub514
+ghc=\uac00\ub098 \uc2dc\ub514 (1979-2007)
+ghs=\uac00\ub098 \uc2dc\ub514
 gip=\uc9c0\ube0c\ub864\ud130 \ud30c\uc6b4\ub4dc
 gmd=\uac10\ube44\uc544 \ub2ec\ub77c\uc2dc
 gnf=\uae30\ub2c8 \ud504\ub791
@@ -155,8 +183,10 @@
 mvr=\ubab0\ub514\ube0c \uc81c\ub3c4 \ub8e8\ud53c\uc544
 mwk=\ub9d0\ub77c\uc704 \ucf70\uccd0
 mxn=\uba55\uc2dc\ucf54 \ud398\uc18c
-myr=\ub9d0\ub808\uc774\uc9c0\uc544 \ub9c1\uae30\ud2b8
-mzm=\ubaa8\uc7a0\ube44\ud06c \uba54\ud2f0\uce7c
+mxv=\uba55\uc2dc\ucf54 UDI(Unidad de Inversion)
+myr=\ub9d0\ub808\uc774\uc2dc\uc544 \ub9c1\uae43
+mzm=\uace0 \ubaa8\uc7a0\ube44\ud06c \uba54\ud2f0\uce7c
+mzn=\ubaa8\uc7a0\ube44\ud06c \uba54\ud2f0\uce7c
 nad=\ub098\ubbf8\ube44\uc544 \ub2ec\ub7ec
 ngn=\ub2c8\uc81c\ub974 \ub098\uc774\ub77c
 nio=\ub2c8\uce74\ub77c\uacfc \ucf54\ub974\ub3c4\ubc14 \uc624\ub85c
@@ -175,6 +205,8 @@
 pyg=\ud30c\ub77c\uacfc\uc774 \uacfc\ub77c\ub2c8
 qar=\uce74\ud0c0\ub974 \ub9ac\uc584
 rol=\ub8e8\ub9c8\ub2c8\uc544 \ub808\uc774
+ron=\ub8e8\ub9c8\ub2c8\uc544 \ub808\uc6b0
+rsd=\uc138\ub974\ube44\uc544 \ub514\ub098\ub974
 rub=\ub7ec\uc2dc\uc544 \ub8e8\ube14
 rur=\ub7ec\uc2dc\uc544 \ub8e8\ube14 (1991-1998)
 rwf=\ub974\uc644\ub2e4 \ud504\ub791
@@ -182,6 +214,7 @@
 sbd=\uc194\ub85c\ubaac \uc81c\ub3c4 \ub2ec\ub7ec
 scr=\uc138\uc774\uc274 \ub8e8\ud53c
 sdd=\uc218\ub2e8 \ub514\ub098\ub974
+sdg=\uc218\ub2e8 \ud30c\uc6b4\ub4dc
 sek=\uc2a4\uc6e8\ub374 \ud06c\ub85c\ub098
 sgd=\uc2f1\uac00\ud3f4 \ub2ec\ub7ec
 shp=\uc138\uc778\ud2b8\ud5ec\ub808\ub098 \ud30c\uc6b4\ub4dc
@@ -189,6 +222,7 @@
 skk=\uc2ac\ub85c\ubc14\ud0a4\uc544 \ucf54\ub8e8\ub098
 sll=\uc2dc\uc5d0\ub77c\ub9ac\uc628 \ub9ac\uc628
 sos=\uc18c\ub9d0\ub9ac\uc544 \uc2e4\ub9c1
+srd=\uc218\ub9ac\ub0a8 \ub2ec\ub7ec
 srg=\uc218\ub9ac\ub0a8 \uae38\ub354
 std=\uc0c1\ud22c\uba54 \ud504\ub9b0\uc2dc\ud398 \ub3c4\ube0c\ub77c
 svc=\uc5d8\uc0b4\ubc14\ub3c4\ub974 \ucf5c\ub860
@@ -198,28 +232,44 @@
 tjs=\ud0c0\uc9c0\ud0a4\uc2a4\ud0c4 \uc18c\ubaa8\ub2c8
 tmm=\ud22c\ub974\ud06c\uba54\ub2c8\uc2a4\ud0c4 \ub9c8\ub098\ud2b8
 tnd=\ud280\ub2c8\uc9c0 \ub514\ub098\ub974
+top=\ud1b5\uac00 \ud30c\uc559\uac00
 tpe=\ud2f0\ubaa8\ub974 \uc5d0\uc2a4\ucfe0\ub3c4
-trl=\ud130\uae30 \ub9ac\ub77c
-try=\uc0c8\ub85c\uc6b4 \ud130\ud0a4 \ub9ac\ub77c
+trl=\ud130\ud0a4 \ub9ac\ub77c
+try=\uc2e0 \ud130\ud0a4 \ub9ac\ub77c
 ttd=\ud2b8\ub9ac\ub2c8\ub2e4\ub4dc \ud1a0\ubc14\uace0 \ub2ec\ub7ec
 twd=\ub300\ub9cc \uc2e0\uad8c \ub2ec\ub7ec
 tzs=\ud0c4\uc790\ub2c8\uc544 \uc2e4\ub9c1
 uah=\uc6b0\ud06c\ub77c\uc774\ub098 \uadf8\ub9ac\ube0c\ub098
 ugx=\uc6b0\uac04\ub2e4 \uc2e4\ub9c1
 usd=\ubbf8\uad6d \ub2ec\ub7ec
+usn=\ubbf8\uad6d \ub2ec\ub7ec(\ub2e4\uc74c\ub0a0)
+uss=\ubbf8\uad6d \ub2ec\ub7ec(\ub2f9\uc77c)
 uyu=\uc6b0\ub8e8\uacfc\uc774 \ud398\uc18c \uc6b0\ub8e8\uacfc\uc694
 uzs=\uc6b0\uc988\ubca0\ud0a4\uc2a4\ud0c4 \uc228
 veb=\ubca0\ub124\uc8fc\uc5d8\ub77c \ubcfc\ub9ac\ubc14\ub974
+vef=\ubca0\ub124\uc8fc\uc5d8\ub77c \ubcfc\ub9ac\ubc14\ub974 \ud478\uc5d0\ub974\ub5bc
 vnd=\ubca0\ud2b8\ub0a8 \ub3d9
 vuv=\ubc14\ub204\uc544\ud22c \ubc14\ud22c
 wst=\uc11c \uc0ac\ubaa8\uc544 \ud0c8\ub77c
+xaf=CFA \ud504\ub791 BEAC
+xag=\uc740\ud654
 xau=\uae08
+xba=\uc720\ub974\ucf54 (\uc720\ub7fd \ud68c\uacc4 \ub2e8\uc704)
+xbb=\uc720\ub7fd \ud1b5\ud654 \ub3d9\ub9f9
+xbc=\uc720\ub7fd \uacc4\uc0b0 \ub2e8\uc704 (XBC)
+xbd=\uc720\ub7fd \uacc4\uc0b0 \ub2e8\uc704 (XBD)
 xcd=\ub3d9\uce74\ub9ac\ube0c \ub2ec\ub7ec
 xdr=\ud2b9\ubcc4\uc778\ucd9c\uad8c
 xfo=\ud504\ub791\uc2a4 Gold \ud504\ub791
 xfu=\ud504\ub791\uc2a4 UIC-\ud504\ub791
+xof=CFA \ud504\ub791 BCEAO
+xpd=\ud314\ub77c\ub4d0
+xpf=CFP \ud504\ub791
+xpt=\ubc31\uae08
+xts=\ud14c\uc2a4\ud2b8 \ud1b5\ud654 \ucf54\ub4dc
+xxx=\uc54c\uc218\uc5c6\uac70\ub098 \uc720\ud6a8\ud558\uc9c0\uc54a\uc740 \ud1b5\ud654\ub2e8\uc704
 yer=\uc608\uba58 \ub9ac\uc54c
 yum=\uc720\uace0\uc2ac\ub77c\ube44\uc544 \ub178\ube44 \ub514\ub098\ub974
 zar=\ub0a8\uc544\ud504\ub9ac\uce74 \ub79c\ub4dc
 zmk=\uc7d8\ube44\uc544 \ucf70\uccd0
-zwd=\uc9d0\ube44\ube0c\uc6e8 \ub2ec\ub7ec
+zwd=\uc9d0\ubc14\ube0c\uc6e8 \ub2ec\ub7ec
--- a/jdk/src/share/classes/sun/util/resources/CurrencyNames_pt.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/CurrencyNames_pt.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,26 @@
 #
 # Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
 #
 
 #
@@ -8,38 +29,40 @@
 # Copyright (C) 1991-2011 Unicode, Inc. All rights reserved.
 # Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
 #
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of the Unicode data files and any associated documentation (the "Data
-# Files") or Unicode software and any associated documentation (the
-# "Software") to deal in the Data Files or Software without restriction,
-# including without limitation the rights to use, copy, modify, merge,
-# publish, distribute, and/or sell copies of the Data Files or Software, and
-# to permit persons to whom the Data Files or Software are furnished to do
-# so, provided that (a) the above copyright notice(s) and this permission
-# notice appear with all copies of the Data Files or Software, (b) both the
-# above copyright notice(s) and this permission notice appear in associated
-# documentation, and (c) there is clear notice in each modified Data File or
-# in the Software as well as in the documentation associated with the Data
-# File(s) or Software that the data or software has been modified.
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of the Unicode data files and any associated documentation (the
+# "Data Files") or Unicode software and any associated documentation
+# (the "Software") to deal in the Data Files or Software without
+# restriction, including without limitation the rights to use, copy,
+# modify, merge, publish, distribute, and/or sell copies of the Data
+# Files or Software, and to permit persons to whom the Data Files or
+# Software are furnished to do so, provided that (a) the above copyright
+# notice(s) and this permission notice appear with all copies of the
+# Data Files or Software, (b) both the above copyright notice(s) and
+# this permission notice appear in associated documentation, and (c)
+# there is clear notice in each modified Data File or in the Software as
+# well as in the documentation associated with the Data File(s) or
+# Software that the data or software has been modified.
 #
-# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
-# THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
-# INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
-# CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+# ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT
+# HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR
+# ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR
+# SOFTWARE.
 #
-# Except as contained in this notice, the name of a copyright holder shall not
-# be used in advertising or otherwise to promote the sale, use or other
-# dealings in these Data Files or Software without prior written
-# authorization of the copyright holder.
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in these Data Files or Software without prior
+# written authorization of the copyright holder.
+
 #
- 
 # Generated automatically from the Common Locale Data Repository. DO NOT EDIT!
-
+#
 adp=Peseta de Andorra
 aed=Dir\u00e9m dos Emirados \u00c1rabes Unidos
 afa=Afegane (1927-2002)
--- a/jdk/src/share/classes/sun/util/resources/CurrencyNames_sr_Latn_BA.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/CurrencyNames_sr_Latn_BA.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -64,6 +64,6 @@
 # Generated automatically from the Common Locale Data Repository. DO NOT EDIT!
 #
 BAM=KM
-bam=bosansko-hercegova\u010dkih konvertibilnih maraka
+bam=Bosansko-Hercegova\u010dka konvertibilna marka
 EUR=\u20ac
-eur=evra
+eur=Evro
--- a/jdk/src/share/classes/sun/util/resources/CurrencyNames_sr_Latn_ME.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/CurrencyNames_sr_Latn_ME.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -64,4 +64,4 @@
 # Generated automatically from the Common Locale Data Repository. DO NOT EDIT!
 #
 EUR=\u20ac
-eur=evra
+eur=Evro
--- a/jdk/src/share/classes/sun/util/resources/CurrencyNames_sr_Latn_RS.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/CurrencyNames_sr_Latn_RS.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -64,4 +64,4 @@
 # Generated automatically from the Common Locale Data Repository. DO NOT EDIT!
 #
 RSD=din.
-rsd=srpski dinari
+rsd=Srpski dinar
--- a/jdk/src/share/classes/sun/util/resources/CurrencyNames_sr_RS.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/CurrencyNames_sr_RS.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,26 @@
 #
 # Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
 #
 
 #
@@ -8,36 +29,38 @@
 # Copyright (C) 1991-2011 Unicode, Inc. All rights reserved.
 # Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
 #
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of the Unicode data files and any associated documentation (the "Data
-# Files") or Unicode software and any associated documentation (the
-# "Software") to deal in the Data Files or Software without restriction,
-# including without limitation the rights to use, copy, modify, merge,
-# publish, distribute, and/or sell copies of the Data Files or Software, and
-# to permit persons to whom the Data Files or Software are furnished to do
-# so, provided that (a) the above copyright notice(s) and this permission
-# notice appear with all copies of the Data Files or Software, (b) both the
-# above copyright notice(s) and this permission notice appear in associated
-# documentation, and (c) there is clear notice in each modified Data File or
-# in the Software as well as in the documentation associated with the Data
-# File(s) or Software that the data or software has been modified.
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of the Unicode data files and any associated documentation (the
+# "Data Files") or Unicode software and any associated documentation
+# (the "Software") to deal in the Data Files or Software without
+# restriction, including without limitation the rights to use, copy,
+# modify, merge, publish, distribute, and/or sell copies of the Data
+# Files or Software, and to permit persons to whom the Data Files or
+# Software are furnished to do so, provided that (a) the above copyright
+# notice(s) and this permission notice appear with all copies of the
+# Data Files or Software, (b) both the above copyright notice(s) and
+# this permission notice appear in associated documentation, and (c)
+# there is clear notice in each modified Data File or in the Software as
+# well as in the documentation associated with the Data File(s) or
+# Software that the data or software has been modified.
 #
-# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
-# THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
-# INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
-# CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+# ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT
+# HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR
+# ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR
+# SOFTWARE.
 #
-# Except as contained in this notice, the name of a copyright holder shall not
-# be used in advertising or otherwise to promote the sale, use or other
-# dealings in these Data Files or Software without prior written
-# authorization of the copyright holder.
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in these Data Files or Software without prior
+# written authorization of the copyright holder.
+
 #
- 
 # Generated automatically from the Common Locale Data Repository. DO NOT EDIT!
-
+#
 RSD=\u0434\u0438\u043d.
--- a/jdk/src/share/classes/sun/util/resources/CurrencyNames_sv.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/CurrencyNames_sv.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,230 +1,271 @@
 #
-# Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
 #
 
 #
 # COPYRIGHT AND PERMISSION NOTICE
 #
-# Copyright (C) 1991-2007 Unicode, Inc. All rights reserved.
+# Copyright (C) 1991-2011 Unicode, Inc. All rights reserved.
 # Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
 #
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of the Unicode data files and any associated documentation (the "Data
-# Files") or Unicode software and any associated documentation (the
-# "Software") to deal in the Data Files or Software without restriction,
-# including without limitation the rights to use, copy, modify, merge,
-# publish, distribute, and/or sell copies of the Data Files or Software, and
-# to permit persons to whom the Data Files or Software are furnished to do
-# so, provided that (a) the above copyright notice(s) and this permission
-# notice appear with all copies of the Data Files or Software, (b) both the
-# above copyright notice(s) and this permission notice appear in associated
-# documentation, and (c) there is clear notice in each modified Data File or
-# in the Software as well as in the documentation associated with the Data
-# File(s) or Software that the data or software has been modified.
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of the Unicode data files and any associated documentation (the
+# "Data Files") or Unicode software and any associated documentation
+# (the "Software") to deal in the Data Files or Software without
+# restriction, including without limitation the rights to use, copy,
+# modify, merge, publish, distribute, and/or sell copies of the Data
+# Files or Software, and to permit persons to whom the Data Files or
+# Software are furnished to do so, provided that (a) the above copyright
+# notice(s) and this permission notice appear with all copies of the
+# Data Files or Software, (b) both the above copyright notice(s) and
+# this permission notice appear in associated documentation, and (c)
+# there is clear notice in each modified Data File or in the Software as
+# well as in the documentation associated with the Data File(s) or
+# Software that the data or software has been modified.
 #
-# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
-# THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
-# INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
-# CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+# ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT
+# HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR
+# ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR
+# SOFTWARE.
 #
-# Except as contained in this notice, the name of a copyright holder shall not
-# be used in advertising or otherwise to promote the sale, use or other
-# dealings in these Data Files or Software without prior written
-# authorization of the copyright holder.
-#
- 
-# Generated automatically from the Common Locale Data Repository. DO NOT EDIT!
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in these Data Files or Software without prior
+# written authorization of the copyright holder.
 
-adp=Andorransk peseta
-aed=F\u00f6renade arabemiratens dirham
-afa=afro-asiatiskt spr\u00e5k (annat)
-all=Albansk lek
-amd=Armenisk dram
-ang=Nederl\u00e4ndsk antillisk gulden
-aoa=Angolansk kwanza
-ars=Argentinsk peso
-ats=\u00d6sterrikisk schilling
-aud=Australisk dollar
-awg=Aruba-florin
-azm=Azerbajdzjansk manat
-bam=Konvertibel bosnisk-hercegovinsk mark
-bbd=Barbadisk dollar
-bdt=Bangladeshisk taka
-bef=Belgisk franc
-bgl=Bulgarisk h\u00e5rd lev
-bgn=Bulgarisk ny lev
-bhd=Bahrainsk dinar
-bif=Burundisk franc
+#
+# Generated automatically from the Common Locale Data Repository. DO NOT EDIT!
+#
+adp=andorransk peseta
+aed=F\u00f6renade Arabemiratens dirham
+afa=afghani (1927-2002)
+afn=afghani
+all=albansk lek
+amd=armenisk dram
+ang=Nederl\u00e4ndska Antillernas gulden
+aoa=angolansk kwanza
+ars=argentinsk peso
+ats=\u00f6sterrikisk schilling
+aud=australisk dollar
+awg=Aruba-gulden
+azm=azerbajdzjansk manat (1993-2006)
+azn=azerbajdzjansk manat
+bam=bosnisk-hercegovinsk mark (konvertibel)
+bbd=Barbados-dollar
+bdt=bangladeshisk taka
+bef=belgisk franc
+bgn=bulgarisk ny lev
+bhd=Bahrain-dinar
+bif=burundisk franc
 bmd=Bermuda-dollar
-bnd=Bruneisk dollar
-bov=Boliviansk mvdol
-brl=Brasiliansk real
-bsd=Bahamansk dollar
-btn=Bhutanesisk ngultrum
-bwp=Botswansk pula
-byb=Vitrysk ny rubel (1994-1999)
-byr=Vitrysk rubel
-bzd=Belizisk dollar
-cad=Kanadensisk dollar
-cdf=Kongolesisk franc congolais
-chf=Schweizisk franc
-clf=Chilensk unidad de fomento
-clp=Chilensk peso
-cny=Kinesisk yuan renminbi
-cop=Colombiansk peso
-crc=Costarikansk col\u00f3n
-cup=Kubansk peso
-cve=Kapverdisk escudo
-cyp=Cypriotiskt pund
-czk=Tjeckisk koruna
-dem=Tysk mark
-djf=Djiboutisk franc
-dkk=Dansk krona
-dop=Dominikansk peso
-dzd=Algerisk dinar
-eek=Estnisk krona
-egp=Egyptiskt pund
-ern=Eritreansk nakfa
-esp=Spansk peseta
-etb=Etiopisk birr
-eur=Euro
-fim=Finsk mark
-fjd=Fijiansk dollar
+bnd=Brunei-dollar
+bob=boliviano
+bov=boliviansk mvdol
+brl=brasiliansk real
+bsd=Bahamas-dollar
+btn=bhutanesisk ngultrum
+bwp=botswansk pula
+byb=vitrysk ny rubel (1994-1999)
+byr=vitrysk rubel
+bzd=belizisk dollar
+cad=kanadensisk dollar
+cdf=kongolesisk franc
+chf=schweizisk franc
+clf=chilensk unidad de fomento
+clp=chilensk peso
+cny=kinesisk yuan renminbi
+cop=colombiansk peso
+crc=costarikansk col\u00f3n
+csd=jugoslavisk dinar
+cup=kubansk peso
+cve=kapverdisk escudo
+cyp=cypriotiskt pund
+czk=tjeckisk koruna
+dem=tysk mark
+djf=djiboutisk franc
+dkk=dansk krona
+dop=dominikansk peso
+dzd=algerisk dinar
+eek=estnisk krona
+egp=egyptiskt pund
+ern=eritreansk nakfa
+esp=spansk peseta
+etb=etiopisk birr
+eur=euro
+fim=finsk mark
+fjd=Fiji-dollar
 fkp=Falklands\u00f6arnas pund
-frf=Fransk franc
-gbp=Brittiskt pund sterling
-gel=Georgisk lari
-ghc=Ghanansk cedi
-gip=Gibraltiskt pund
-gmd=Gambisk dalasi
-gnf=Guineansk franc
-grd=Grekisk drachma
-gtq=Guatemalansk quetzal
+frf=fransk franc
+gbp=brittiskt pund sterling
+gel=georgisk lari
+ghc=ghanansk cedi (1979-2007)
+ghs=ghanansk cedi
+gip=gibraltiskt pund
+gmd=gambisk dalasi
+gnf=guineansk franc
+grd=grekisk drachma
+gtq=guatemalansk quetzal
 gwp=Guinea-Bissau-peso
-gyd=Guyanansk dollar
+gyd=guyanansk dollar
 hkd=Hongkong-dollar
-hnl=Hoduransk lempira
-hrk=Kroatisk kuna
-htg=Haitisk gourde
-huf=Ungersk forint
-idr=Indonesisk rupiah
-iep=Irl\u00e4ndskt pund
-ils=Israelisk ny shekel
-inr=Indisk rupie
-iqd=Irakisk dinar
-irr=Iransk rial
-isk=Isl\u00e4ndsk krona
-itl=Italiensk lira
-jmd=Jamaicansk dollar
-jod=Jordansk dinar
-jpy=Japansk yen
-kes=Kenyansk shilling
-kgs=Kirgizistansk som
-khr=Kambodjansk riel
-kmf=Komorisk franc
-kpw=Nordkoreansk won
-krw=Sydkoreansk won
-kwd=Kuwaitisk dinar
+hnl=honduransk lempira
+hrk=kroatisk kuna
+htg=haitisk gourde
+huf=ungersk forint
+idr=indonesisk rupiah
+iep=irl\u00e4ndskt pund
+ils=israelisk ny shekel
+inr=indisk rupie
+iqd=irakisk dinar
+irr=iransk rial
+isk=isl\u00e4ndsk krona
+itl=italiensk lira
+jmd=Jamaica-dollar
+jod=jordansk dinar
+jpy=japansk yen
+kes=kenyansk shilling
+kgs=kirgizisk som
+khr=kambodjansk riel
+kmf=komorisk franc
+kpw=nordkoreansk won
+krw=sydkoreansk won
+kwd=kuwaitisk dinar
 kyd=Cayman-dollar
-kzt=Kazakisk tenge
-lak=Laotisk kip
-lbp=Libanesiskt pund
-lkr=Srilankesisk rupie
-lrd=Liberisk dollar
-lsl=Lesothisk loti
-ltl=Lettisk lita
-luf=Luxemburgsk franc
-lvl=Lettisk lats
-lyd=Libysk dinar
-mad=Marockansk dirham
-mdl=Moldavisk leu
-mga=Madagaskisk ariary
-mgf=Madagaskisk franc
-mkd=Makedonisk denar
-mmk=Myanmarisk kyat
-mnt=Mongolisk tugrik
-mop=Macaoisk pataca
-mro=Mauretansk ouguiya
-mtl=Maltesisk lira
-mur=Mauritisk rupie
-mvr=Maldivisk rufiyaa
-mwk=Malawisk kwacha
-mxn=Mexikansk peso
-mxv=Mexikansk Unidad de Inversion (UDI)
-myr=Malaysisk ringgit
-mzm=Mo\u00e7ambikisk metical
-nad=Namibisk dollar
-ngn=Nigeriansk naira
-nio=Nicaraguansk c\u00f3rdoba oro
-nlg=Nederl\u00e4ndsk gulden
-nok=Norsk krona
-npr=Nepalesisk rupie
-nzd=Nyzeel\u00e4ndsk dollar
-omr=Omansk rial
-pab=Panamansk balboa
-pen=Peruansk sol nuevo
-pgk=Papuansk kina
-php=Filippinsk peso
-pkr=Pakistansk rupie
-pln=Polsk zloty
-pte=Portugisisk escudo
-pyg=Paraguaysk guarani
-qar=Qatarisk rial
-rol=Rum\u00e4nsk leu
-rub=Rysk rubel
-rur=Rysk rubel (1991-1998)
-rwf=Rwandisk franc
-sar=Saudisk riyal
+kzt=kazakisk tenge
+lak=laotisk kip
+lbp=libanesiskt pund
+lkr=srilankesisk rupie
+lrd=Liberia-dollar
+lsl=lesothisk loti
+ltl=litauisk litas
+luf=luxemburgsk franc
+lvl=lettisk lats
+lyd=libysk dinar
+mad=marockansk dirham
+mdl=moldavisk leu
+mga=madagaskisk ariary
+mgf=madagaskisk franc
+mkd=makedonisk denar
+mmk=myanmarisk kyat
+mnt=mongolisk tugrik
+mop=Macao-pataca
+mro=mauretansk ouguiya
+mtl=maltesisk lira
+mur=mauritisk rupie
+mvr=maldivisk rufiyaa
+mwk=malawisk kwacha
+mxn=mexikansk peso
+mxv=mexikansk unidad de inversion
+myr=malaysisk ringgit
+mzm=gammal mo\u00e7ambikisk metical
+mzn=mo\u00e7ambikisk metical
+nad=Namibia-dollar
+ngn=nigeriansk naira
+nio=nicaraguansk c\u00f3rdoba oro
+nlg=nederl\u00e4ndsk gulden
+nok=norsk krona
+npr=nepalesisk rupie
+nzd=nyzeel\u00e4ndsk dollar
+omr=omansk rial
+pab=panamansk balboa
+pen=peruansk sol nuevo
+pgk=papuansk kina
+php=filippinsk peso
+pkr=pakistansk rupie
+pln=polsk zloty
+pte=portugisisk escudo
+pyg=paraguaysk guarani
+qar=qatarisk rial
+rol=gammal rum\u00e4nsk leu
+ron=rum\u00e4nsk leu
+rsd=Serbisk dinar
+rub=rysk rubel
+rur=rysk rubel (1991-1998)
+rwf=rwandisk franc
+sar=saudisk riyal
 sbd=Salomon-dollar
-scr=Seychellisk rupie
-sdd=Sudanesisk dinar
-sek=Svensk krona
-sgd=Singaporiansk dollar
+scr=seychellisk rupie
+sdd=sudanesisk dinar
+sdg=sudanesiskt pund
+sek=svensk krona
+sgd=Singapore-dollar
 shp=S\:t Helena-pund
-sit=Slovensk tolar
-skk=Slovakisk koruna
-sll=Sierraleonsk leone
-sos=Somalisk shilling
-srg=Surinamesisk gulden
+sit=slovensk tolar
+skk=slovakisk koruna
+sll=sierraleonsk leone
+sos=somalisk shilling
+srd=Surinam-dollar
+srg=surinamesisk gulden
 std=S\u00e3o Tom\u00e9 och Pr\u00edncipe-dobra
-svc=Salvadoransk col\u00f3n
-syp=Syriskt pund
-szl=Swazil\u00e4ndsk lilangeni
-thb=Thail\u00e4ndsk baht
-tjs=Tadzjikisk somoni
-tmm=Turkmensk manat
-tnd=Tunisisk dinar
-top=Tongansk pa\u02bbanga
-tpe=Timoriansk escudo
-trl=Turkisk lira
-try=Ny turkisk lira
-ttd=Trinidadisk dollar
-twd=Taiwanesisk ny dollar
-tzs=Tanzanisk shilling
-uah=Ukrainsk hryvnia
-ugx=Ugandisk shilling
+svc=salvadoransk col\u00f3n
+syp=syriskt pund
+szl=swazil\u00e4ndsk lilangeni
+thb=thail\u00e4ndsk baht
+tjs=tadzjikisk somoni
+tmm=turkmensk manat
+tnd=tunisisk dinar
+top=tongansk pa\u02bbanga
+tpe=timoriansk escudo
+trl=gammal turkisk lira
+try=ny turkisk lira
+ttd=Trinidad ochTobago-dollar
+twd=taiwanesisk ny dollar
+tzs=tanzanisk shilling
+uah=ukrainsk hryvnia
+ugx=ugandisk shilling
 usd=US-dollar
 usn=US-dollar (n\u00e4sta dag)
 uss=US-dollar (samma dag)
-uyu=Uruguayansk peso uruguayo
-uzs=Uzbekisk sum
-veb=Venezuelansk bolivar
-vnd=Vietnamesisk dong
-vuv=Vanuatisk vatu
-wst=V\u00e4stsamoansk tala
-xaf=CFA Franc BEAC
-xcd=\u00d6stkaribisk dollar
-xfo=Fransk guldfranc
-xfu=French UIC-Franc
-xof=CFA Franc BCEAO
+uyu=uruguayansk peso
+uzs=uzbekisk sum
+veb=venezuelansk bolivar
+vef=venezuelansk bolivar fuerte
+vnd=vietnamesisk dong
+vuv=vanuatisk vatu
+wst=v\u00e4stsamoansk tala
+xag=silver
+xau=guld
+xba=europeisk kompositenhet
+xbb=europeisk monet\u00e4r enhet
+xbc=europeisk kontoenhet (XBC)
+xbd=europeisk kontoenhet (XBD)
+xcd=\u00f6stkaribisk dollar
+xdr=IMF s\u00e4rskild dragningsr\u00e4tt
+xfo=fransk guldfranc
+xpd=palladium
 xpf=CFP-franc
-yer=Jemenitisk rial
-yum=Dinar (Serbien och Montenegro)
-zar=Sydafrikansk rand
-zmk=Zambisk kwacha
-zwd=Zimbabwisk dollar
+xpt=platina
+xts=test-valutakod
+xxx=ok\u00e4nd eller ogiltig valuta
+yer=jemenitisk rial
+yum=jugoslavisk ny dinar
+zar=sydafrikansk rand
+zmk=zambisk kwacha
+zwd=Zimbabwe-dollar
--- a/jdk/src/share/classes/sun/util/resources/CurrencyNames_zh_CN.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/CurrencyNames_zh_CN.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,45 +1,68 @@
 #
-# Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
 #
 
 #
 # COPYRIGHT AND PERMISSION NOTICE
 #
-# Copyright (C) 1991-2007 Unicode, Inc. All rights reserved.
+# Copyright (C) 1991-2011 Unicode, Inc. All rights reserved.
 # Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
 #
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of the Unicode data files and any associated documentation (the "Data
-# Files") or Unicode software and any associated documentation (the
-# "Software") to deal in the Data Files or Software without restriction,
-# including without limitation the rights to use, copy, modify, merge,
-# publish, distribute, and/or sell copies of the Data Files or Software, and
-# to permit persons to whom the Data Files or Software are furnished to do
-# so, provided that (a) the above copyright notice(s) and this permission
-# notice appear with all copies of the Data Files or Software, (b) both the
-# above copyright notice(s) and this permission notice appear in associated
-# documentation, and (c) there is clear notice in each modified Data File or
-# in the Software as well as in the documentation associated with the Data
-# File(s) or Software that the data or software has been modified.
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of the Unicode data files and any associated documentation (the
+# "Data Files") or Unicode software and any associated documentation
+# (the "Software") to deal in the Data Files or Software without
+# restriction, including without limitation the rights to use, copy,
+# modify, merge, publish, distribute, and/or sell copies of the Data
+# Files or Software, and to permit persons to whom the Data Files or
+# Software are furnished to do so, provided that (a) the above copyright
+# notice(s) and this permission notice appear with all copies of the
+# Data Files or Software, (b) both the above copyright notice(s) and
+# this permission notice appear in associated documentation, and (c)
+# there is clear notice in each modified Data File or in the Software as
+# well as in the documentation associated with the Data File(s) or
+# Software that the data or software has been modified.
 #
-# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
-# THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
-# INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
-# CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+# ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT
+# HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR
+# ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR
+# SOFTWARE.
 #
-# Except as contained in this notice, the name of a copyright holder shall not
-# be used in advertising or otherwise to promote the sale, use or other
-# dealings in these Data Files or Software without prior written
-# authorization of the copyright holder.
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in these Data Files or Software without prior
+# written authorization of the copyright holder.
+
 #
- 
 # Generated automatically from the Common Locale Data Repository. DO NOT EDIT!
-
+#
 CNY=\uffe5
 cny=\u4eba\u6c11\u5e01
 adp=\u5b89\u9053\u5c14\u6bd4\u585e\u5854
@@ -48,13 +71,14 @@
 afn=\u963f\u5bcc\u6c57\u5c3c
 all=\u963f\u5c14\u5df4\u5c3c\u4e9a\u5217\u514b
 amd=\u4e9a\u7f8e\u5c3c\u4e9a\u5fb7\u62c9\u59c6
-ang=\u53e4\u82f1\u6587
+ang=\u8377\u5170\u5b89\u66ff\u5170\u76fe
 aoa=\u5b89\u54e5\u62c9\u5bbd\u624e
 ars=\u963f\u6839\u5ef7\u6bd4\u7d22
 ats=\u5965\u5730\u5229\u5148\u4ee4
 aud=\u6fb3\u5927\u5229\u4e9a\u5143
 awg=\u963f\u9c81\u5df4\u57fa\u5c14\u5fb7\u5143
-azm=\u963f\u585e\u62dc\u7586\u9a6c\u7eb3\u7279
+azm=\u963f\u585e\u62dc\u7586\u9a6c\u7eb3\u7279 (1993-2006)
+azn=\u963f\u585e\u62dc\u7586\u9a6c\u7eb3\u7279
 bam=\u6ce2\u58eb\u5c3c\u4e9a-\u8d6b\u585e\u54e5\u7ef4\u7eb3\u5151\u6362\u5238
 bbd=\u5df4\u5df4\u591a\u65af\u5143
 bdt=\u5b5f\u52a0\u62c9\u5854\u5361
@@ -81,7 +105,7 @@
 clp=\u667a\u5229\u6bd4\u7d22
 cop=\u54e5\u4f26\u6bd4\u4e9a\u6bd4\u7d22
 crc=\u54e5\u65af\u8fbe\u9ece\u52a0\u79d1\u6717
-csd=\u585e\u5c14\u7ef4\u4e9a\u7b2c\u7eb3\u5c14
+csd=\u65e7\u585e\u5c14\u7ef4\u4e9a\u7b2c\u7eb3\u5c14
 cup=\u53e4\u5df4\u6bd4\u7d22
 cve=\u4f5b\u5f97\u89d2\u57c3\u65af\u5e93\u591a
 cyp=\u585e\u6d66\u8def\u65af\u9551
@@ -104,6 +128,7 @@
 gbp=\u82f1\u9551
 gel=\u4e54\u6cbb\u4e9a\u62c9\u745e
 ghc=\u52a0\u7eb3\u585e\u7b2c
+ghs=\u52a0\u7eb3\u585e\u5730
 gip=\u76f4\u5e03\u7f57\u9640\u9551
 gmd=\u5188\u6bd4\u4e9a\u8fbe\u62c9\u897f
 gnf=\u51e0\u5185\u4e9a\u6cd5\u90ce
@@ -161,7 +186,8 @@
 mxn=\u58a8\u897f\u54e5\u6bd4\u7d22
 mxv=\u58a8\u897f\u54e5 Unidad de Inversion (UDI)\uff08\u8d44\u91d1\uff09
 myr=\u9a6c\u6765\u897f\u4e9a\u6797\u5409\u7279
-mzm=\u83ab\u6851\u6bd4\u514b\u6885\u8482\u5361\u5c14
+mzm=\u65e7\u83ab\u6851\u6bd4\u514b\u7f8e\u63d0\u5361
+mzn=\u83ab\u6851\u6bd4\u514b\u7f8e\u63d0\u5361
 nad=\u7eb3\u7c73\u6bd4\u4e9a\u5143
 ngn=\u5c3c\u65e5\u5229\u4e9a\u5948\u62c9
 nio=\u5c3c\u52a0\u62c9\u74dc\u91d1\u79d1\u591a\u5df4
@@ -180,6 +206,8 @@
 pyg=\u5df4\u62c9\u572d\u74dc\u62c9\u5c3c
 qar=\u5361\u5854\u5c14\u91cc\u4e9a\u5c14
 rol=\u65e7\u7f57\u9a6c\u5c3c\u4e9a\u5217\u4f0a
+ron=\u7f57\u9a6c\u5c3c\u4e9a\u5217\u4f0a
+rsd=\u585e\u5c14\u7ef4\u4e9a\u7b2c\u7eb3\u5c14
 rub=\u4fc4\u56fd\u5362\u5e03
 rur=\u4fc4\u56fd\u5362\u5e03 (1991-1998)
 rwf=\u5362\u65fa\u8fbe\u6cd5\u90ce
@@ -189,7 +217,7 @@
 sdd=\u82cf\u4e39\u7b2c\u7eb3\u5c14
 sek=\u745e\u5178\u514b\u6717
 sgd=\u65b0\u52a0\u5761\u5143
-shp=\u5723\u8d6b\u52d2\u62ff\u9551
+shp=\u5723\u8d6b\u52d2\u62ff\u7fa4\u5c9b\u78c5
 sit=\u65af\u6d1b\u6587\u5c3c\u4e9a\u6258\u62c9\u5c14
 skk=\u65af\u6d1b\u4f10\u514b\u514b\u6717
 sll=\u585e\u62c9\u5229\u6602\u5229\u6602
@@ -209,7 +237,7 @@
 trl=\u571f\u8033\u5176\u91cc\u62c9
 try=\u65b0\u571f\u8033\u5176\u91cc\u62c9
 ttd=\u7279\u7acb\u5c3c\u8fbe\u548c\u591a\u5df4\u54e5\u5143
-twd=\u65b0\u53f0\u5e01\u5143
+twd=\u65b0\u53f0\u5e01
 tzs=\u5766\u6851\u5c3c\u4e9a\u5148\u4ee4
 uah=\u4e4c\u514b\u5170\u683c\u91cc\u592b\u5c3c\u4e9a
 ugx=\u4e4c\u5e72\u8fbe\u5148\u4ee4
@@ -219,6 +247,7 @@
 uyu=\u4e4c\u62c9\u572d\u6bd4\u7d22
 uzs=\u4e4c\u5179\u522b\u514b\u65af\u82cf\u59c6
 veb=\u59d4\u5185\u745e\u62c9\u535a\u5229\u74e6
+vef=\u59d4\u5185\u745e\u62c9\u5f3a\u52bf\u73bb\u5229\u74e6
 vnd=\u8d8a\u5357\u76fe
 vuv=\u74e6\u52aa\u963f\u56fe\u74e6\u56fe
 wst=\u897f\u8428\u6469\u4e9a\u5854\u62c9
@@ -238,7 +267,7 @@
 xpf=\u592a\u5e73\u6d0b\u6cd5\u90ce
 xpt=\u94c2
 xts=\u4e3a\u6d4b\u8bd5\u4fdd\u7559\u7684\u4ee3\u7801
-xxx=\u6ca1\u6709\u8d27\u5e01\u7684\u4ea4\u6613
+xxx=\u8d27\u5e01\u672a\u77e5\u6216\u65e0\u6548
 yer=\u4e5f\u95e8\u91cc\u4e9a\u5c14
 yum=\u5357\u65af\u62c9\u592b\u504c\u5a01\u7b2c\u7eb3\u5c14
 zar=\u5357\u975e\u5170\u7279
--- a/jdk/src/share/classes/sun/util/resources/CurrencyNames_zh_TW.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/CurrencyNames_zh_TW.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,60 +1,84 @@
 #
-# Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
 #
 
 #
 # COPYRIGHT AND PERMISSION NOTICE
 #
-# Copyright (C) 1991-2007 Unicode, Inc. All rights reserved.
+# Copyright (C) 1991-2011 Unicode, Inc. All rights reserved.
 # Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
 #
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of the Unicode data files and any associated documentation (the "Data
-# Files") or Unicode software and any associated documentation (the
-# "Software") to deal in the Data Files or Software without restriction,
-# including without limitation the rights to use, copy, modify, merge,
-# publish, distribute, and/or sell copies of the Data Files or Software, and
-# to permit persons to whom the Data Files or Software are furnished to do
-# so, provided that (a) the above copyright notice(s) and this permission
-# notice appear with all copies of the Data Files or Software, (b) both the
-# above copyright notice(s) and this permission notice appear in associated
-# documentation, and (c) there is clear notice in each modified Data File or
-# in the Software as well as in the documentation associated with the Data
-# File(s) or Software that the data or software has been modified.
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of the Unicode data files and any associated documentation (the
+# "Data Files") or Unicode software and any associated documentation
+# (the "Software") to deal in the Data Files or Software without
+# restriction, including without limitation the rights to use, copy,
+# modify, merge, publish, distribute, and/or sell copies of the Data
+# Files or Software, and to permit persons to whom the Data Files or
+# Software are furnished to do so, provided that (a) the above copyright
+# notice(s) and this permission notice appear with all copies of the
+# Data Files or Software, (b) both the above copyright notice(s) and
+# this permission notice appear in associated documentation, and (c)
+# there is clear notice in each modified Data File or in the Software as
+# well as in the documentation associated with the Data File(s) or
+# Software that the data or software has been modified.
 #
-# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
-# THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
-# INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
-# CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+# ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT
+# HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR
+# ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR
+# SOFTWARE.
 #
-# Except as contained in this notice, the name of a copyright holder shall not
-# be used in advertising or otherwise to promote the sale, use or other
-# dealings in these Data Files or Software without prior written
-# authorization of the copyright holder.
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in these Data Files or Software without prior
+# written authorization of the copyright holder.
+
 #
- 
 # Generated automatically from the Common Locale Data Repository. DO NOT EDIT!
-
+#
 TWD=NT$
 twd=\u65b0\u81fa\u5e63
 adp=\u5b89\u9053\u723e\u966a\u58eb\u7279
 aed=\u963f\u62c9\u4f2f\u806f\u5408\u5927\u516c\u570b\u8fea\u723e\u6c57
-afa=\u975e\u9583\u65cf\u53ca\u975e\u4e9e\u8a9e\u8a00
+afa=\u963f\u5bcc\u6c57\u5c3c (1927-2002)
 afn=\u963f\u5bcc\u6c57\u5c3c
 all=\u963f\u723e\u5df4\u5c3c\u4e9e\u5217\u514b
 amd=\u4e9e\u7f8e\u5c3c\u4e9e\u5fb7\u62c9\u59c6
-ang=\u8377\u862d \u5b89\u68af\u862d \u76fe
+ang=\u53e4\u82f1\u6587
 aoa=\u5b89\u54e5\u62c9\u5bec\u624e
 ars=\u963f\u6839\u5ef7\u62ab\u7d22
 ats=\u5967\u5730\u5229\u5148\u4ee4
 aud=\u6fb3\u5e63
 awg=\u963f\u9b6f\u5df4\u76fe
-azm=\u963f\u585e\u62dc\u5f4a\u99ac\u7279\u7d0d
+azm=\u4e9e\u585e\u62dc\u7136\u99ac\u7d0d\u7279 (1993-2006)
+azn=\u4e9e\u585e\u62dc\u7136\u99ac\u7d0d\u7279
 bam=\u6ce2\u58eb\u5c3c\u4e9e-\u9ed1\u585e\u54e5\u7dad\u90a3\u53ef\u8f49\u63db\u99ac\u514b
 bbd=\u5df4\u8c9d\u591a\u5143
 bdt=\u5b5f\u52a0\u62c9\u5854\u5361
@@ -66,14 +90,14 @@
 bmd=\u767e\u6155\u9054\u5e63
 bnd=\u6c76\u840a\u5143
 bob=\u73bb\u5229\u7dad\u4e9e\u8ca8\u5e63\u55ae\u4f4d
-bov=\u73bb\u5229\u7dad\u4e9e \u5e55\u591a
+bov=\u73bb\u5229\u7dad\u4e9e\u5e55\u591a
 brl=\u5df4\u897f\u91cc\u62c9
 bsd=\u5df4\u54c8\u99ac\u5143
 btn=\u4e0d\u4e39\u52aa\u624e\u59c6
-bwp=\u6ce2\u672d\u90a3 - \u666e\u62c9
+bwp=\u6ce2\u672d\u90a3\u666e\u62c9
 byb=\u767d\u4fc4\u7f85\u65af\u65b0\u76e7\u5e03 (1994-1999)
 byr=\u767d\u4fc4\u7f85\u65af\u76e7\u5e03
-bzd=\u4f2f\u5229\u8332\u5143
+bzd=\u8c9d\u91cc\u65af\u5143
 cad=\u52a0\u5e63
 cdf=\u525b\u679c\u6cd5\u90ce
 chf=\u745e\u58eb\u6cd5\u90ce
@@ -82,9 +106,10 @@
 cny=\u4eba\u6c11\u5e63
 cop=\u54e5\u502b\u6bd4\u4e9e\u62ab\u7d22
 crc=\u54e5\u65af\u5927\u9ece\u52a0\u79d1\u90ce
+csd=\u65e7\u585e\u5c14\u7ef4\u4e9a\u7b2c\u7eb3\u5c14
 cup=\u53e4\u5df4\u62ab\u7d22
 cve=\u7dad\u5fb7\u89d2\u57c3\u65af\u5eab\u591a
-cyp=\u8cfd\u6d66\u8def\u65af\u938a
+cyp=\u8cfd\u666e\u52d2\u65af\u938a
 czk=\u6377\u514b\u514b\u6717
 dem=\u5fb7\u570b\u99ac\u514b
 djf=\u5409\u5e03\u5730\u6cd5\u90ce
@@ -103,23 +128,24 @@
 frf=\u6cd5\u570b\u6cd5\u90ce
 gbp=\u82f1\u938a
 gel=\u55ac\u6cbb\u62c9\u91cc
-ghc=\u8fe6\u7d0d\u4ed9\u8515
+ghc=\u8fe6\u7d0d\u4ed9\u8515 (1979-2007)
+ghs=\u8fe6\u7d0d\u4ed9\u8515
 gip=\u76f4\u5e03\u7f85\u9640\u938a
 gmd=\u7518\u6bd4\u4e9e\u9054\u62c9\u897f
 gnf=\u5e7e\u5167\u4e9e\u6cd5\u90ce
 grd=\u5e0c\u81d8\u5fb7\u62c9\u514b\u99ac
 gtq=\u74dc\u5730\u99ac\u62c9\u683c\u67e5\u723e
-gwp=\u5e7e\u5167\u4e9e\u62ab\u7d22\u62ab\u7d22
+gwp=\u5e7e\u5167\u4e9e\u6bd4\u7d22\u62ab\u7d22
 gyd=\u572d\u4e9e\u90a3\u5143
 hkd=\u6e2f\u5143
 hnl=\u6d2a\u90fd\u62c9\u65af\u502b\u76ae\u62c9
 hrk=\u514b\u7f85\u5730\u4e9e\u5eab\u7d0d
 htg=\u6d77\u5730\u53e4\u5fb7
-huf=\u5308\u7259\u5229 - \u798f\u6797
-idr=\u5370\u5c3c - \u76e7\u5e03
+huf=\u5308\u7259\u5229\u798f\u6797
+idr=\u5370\u5c3c\u76fe
 iep=\u611b\u723e\u862d\u938a
 ils=\u4ee5\u8272\u5217\u65b0\u8b1d\u514b\u723e
-inr=\u5370\u5ea6\u76e7\u5e03
+inr=\u5370\u5ea6\u76e7\u6bd4
 iqd=\u4f0a\u62c9\u514b\u7b2c\u7d0d\u723e
 irr=\u4f0a\u6717\u91cc\u4e9e\u723e
 isk=\u51b0\u5cf6\u514b\u6717
@@ -131,12 +157,12 @@
 kgs=\u5409\u723e\u5409\u65af\u7d22\u99ac
 khr=\u67ec\u57d4\u5be8\u745e\u723e
 kmf=\u79d1\u6469\u7f85\u6cd5\u90ce
-kpw=\u5317\u671d\u9bae\u5e63
-krw=\u97d3\u570b\u571c
+kpw=\u5317\u97d3\u571c
+krw=\u97d3\u571c
 kwd=\u79d1\u5a01\u7279\u7b2c\u7d0d\u723e
 kyd=\u958b\u66fc\u7fa4\u5cf6\u7f8e\u5143
 kzt=\u5361\u624e\u514b\u65af\u5766\u5766\u5409
-lak=\u8001\u64be \u958b\u666e
+lak=\u8001\u631d\u57fa\u666e
 lbp=\u9ece\u5df4\u5ae9\u938a
 lkr=\u65af\u91cc\u862d\u5361\u76e7\u5e03
 lrd=\u8cf4\u6bd4\u745e\u4e9e\u5143
@@ -145,7 +171,7 @@
 luf=\u76e7\u68ee\u5821\u6cd5\u90ce
 lvl=\u62c9\u812b\u7dad\u4e9e\u62c9\u7279\u9280\u5e63
 lyd=\u5229\u6bd4\u4e9e\u7b2c\u7d0d\u723e
-mad=\u99ac\u90fd\u62c9\u6587
+mad=\u6469\u6d1b\u54e5\u8fea\u62c9\u59c6
 mdl=\u6469\u675c\u96f2\u5217\u4f0a
 mga=\u99ac\u9054\u52a0\u65af\u52a0\u827e\u745e\u723e
 mgf=\u99ac\u9054\u52a0\u65af\u52a0\u6cd5\u90ce
@@ -158,13 +184,14 @@
 mur=\u6a21\u91cc\u897f\u65af\u76e7\u5e03
 mvr=\u99ac\u723e\u5730\u592b\u6d77\u5cf6\u76e7\u975e\u4e9e
 mwk=\u99ac\u62c9\u7dad\u514b\u74e6\u67e5
-mxn=\u58a8\u897f\u54e5 - \u62ab\u7d22
-mxv=\u58a8\u897f\u54e5\u6cd5\u5f8b\u53cd\u8f49(UDI)
-myr=\u99ac\u4f86\u897f\u4e9e - \u6797\u5409\u7279
+mxn=\u58a8\u897f\u54e5\u62ab\u7d22
+mxv=\u58a8\u897f\u54e5 Unidad de Inversion (UDI)\uff08\u8d44\u91d1\uff09
+myr=\u99ac\u4f86\u897f\u4e9e\u4ee4\u5409
 mzm=\u83ab\u4e09\u6bd4\u514b\u6885\u8482\u5361\u723e
+mzn=\u83ab\u4e09\u6bd4\u514b\u7f8e\u63d0\u5361
 nad=\u7d0d\u7c73\u6bd4\u4e9e\u5143
 ngn=\u5948\u53ca\u5229\u4e9e\u5948\u62c9
-nio=\u5c3c\u52a0\u62c9\u74dc \u91d1\u54e5\u591a\u83ef
+nio=\u5c3c\u52a0\u62c9\u74dc\u91d1\u79d1\u591a\u5df4
 nlg=\u8377\u862d\u76fe
 nok=\u632a\u5a01\u514b\u7f85\u7d0d
 npr=\u5c3c\u6cca\u723e\u76e7\u5e03
@@ -179,60 +206,70 @@
 pte=\u8461\u8404\u7259\u57c3\u65af\u5eab\u591a
 pyg=\u5df4\u62c9\u572d\u74dc\u62c9\u5c3c
 qar=\u5361\u9054\u723e\u91cc\u4e9e\u723e
-rol=\u7f85\u99ac\u5c3c\u4e9e\u5217\u4f0a
+rol=\u65e7\u7f57\u9a6c\u5c3c\u4e9a\u5217\u4f0a
+ron=\u7f85\u99ac\u5c3c\u4e9e\u5217\u4f0a
+rsd=\u585e\u723e\u7dad\u4e9e\u6234\u7d0d
 rub=\u4fc4\u7f85\u65af\u76e7\u5e03
 rur=\u4fc4\u7f85\u65af\u76e7\u5e03 (1991-1998)
 rwf=\u76e7\u5b89\u9054\u6cd5\u90ce
 sar=\u6c99\u70cf\u5730\u91cc\u96c5
 sbd=\u7d22\u7f85\u9580\u7fa4\u5cf6\u5143
-scr=\u585e\u820c\u723e\u7fa4\u5cf6\u76e7\u5e03
+scr=\u585e\u5e2d\u723e\u76e7\u6bd4
 sdd=\u8607\u4e39\u7b2c\u7d0d\u723e
+sdg=\u8607\u4e39\u938a
 sek=\u745e\u5178\u514b\u7f85\u7d0d
 sgd=\u65b0\u52a0\u5761\u5e63
-shp=\u8056\u8d6b\u52d2\u62ff \u938a
+shp=\u5723\u8d6b\u52d2\u62ff\u7fa4\u5c9b\u78c5
 sit=\u65af\u6d1b\u7dad\u5c3c\u4e9e\u6258\u52d2
 skk=\u65af\u6d1b\u4f10\u514b\u514b\u6717
 sll=\u7345\u5b50\u5c71\u5229\u6602
 sos=\u7d22\u99ac\u5229\u4e9e\u5148\u4ee4
-srg=\u8607\u91cc\u5357\u76fe
+srd=\u82cf\u91cc\u5357\u5143
+srg=\u8607\u5229\u5357\u57fa\u723e
 std=\u8056\u591a\u7f8e\u5cf6\u548c\u666e\u6797\u897f\u6bd4\u5cf6\u591a\u5e03\u62c9
-svc=\u611b\u723e \u85a9\u723e\u74e6\u591a\u79d1\u90ce
+svc=\u8428\u5c14\u74e6\u591a\u79d1\u6717
 syp=\u6558\u5229\u4e9e\u938a
-szl=\u65af\u5a01\u58eb\u862d \u91cc\u90ce
+szl=\u65af\u5a01\u58eb\u5170\u91cc\u5170\u5409\u5c3c
 thb=\u6cf0\u9296
-tjs=\u5854\u5409\u514b\u65af\u5766 \u7d22\u83ab\u5c3c
+tjs=\u5854\u5409\u514b\u65af\u5766\u7d22\u83ab\u5c3c
 tmm=\u571f\u5eab\u66fc\u99ac\u7d0d\u7279
 tnd=\u7a81\u5c3c\u897f\u4e9e\u7b2c\u7d0d\u723e
 top=\u6771\u52a0\u6f58\u52a0
-tpe=\u5e1d\u6c76 \u57c3\u65af\u5eab\u591a
+tpe=\u5e1d\u6c76\u57c3\u65af\u5e93\u591a
 trl=\u571f\u8033\u5176\u91cc\u62c9
 try=\u65b0\u571f\u8033\u5176\u91cc\u62c9
-ttd=\u5343\u91cc\u9054\u53ca\u6258\u5df4\u54e5r
-tzs=\u5766\u6851\u5c3c\u4e9e \u5148\u4ee4
+ttd=\u7279\u7acb\u5c3c\u8fbe\u548c\u591a\u5df4\u54e5\u5143
+tzs=\u5766\u6851\u5c3c\u4e9a\u5148\u4ee4
 uah=\u70cf\u514b\u862d\u683c\u91cc\u592b\u90a3
 ugx=\u70cf\u5e72\u9054\u5148\u4ee4
 usd=\u7f8e\u5143
 usn=\u7f8e\u5143 (\u7b2c\u4e8c\u5929)
 uss=\u7f8e\u5143 (\u540c\u4e00\u5929)
 uyu=\u70cf\u62c9\u572d\u62ab\u7d22
-uzs=\u70cf\u8332\u5225\u514b\u65af\u5766 \u85a9\u6728
-veb=\u59d4\u5167\u745e\u62c9\u535a\u5229\u74e6
+uzs=\u70cf\u8332\u5225\u514b\u7d22\u59c6
+veb=\u59d4\u5167\u745e\u62c9\u73bb\u5229\u74e6
+vef=\u59d4\u5167\u745e\u62c9\u5f37\u52e2\u73bb\u5229\u74e6
 vnd=\u8d8a\u5357\u76fe
 vuv=\u842c\u90a3\u675c\u842c\u675c
 wst=\u897f\u85a9\u6469\u4e9e\u5854\u62c9
-xaf=\u897f\u975e \u6cd5\u90ce BEAC
+xaf=\u897f\u975e\u6cd5\u90ce BEAC
+xag=XAG
 xau=\u9ec3\u91d1
 xba=\u6b50\u6d32\u7d9c\u5408\u55ae\u4f4d
 xbb=\u6b50\u6d32\u8ca8\u5e63\u55ae\u4f4d XBB
-xbc=\u6b50\u6d32\u6703\u8a08\u55ae\u4f4d(XBC)
-xbd=\u6b50\u6d32\u6703\u8a08\u55ae\u4f4d(XBD)
+xbc=\u6b50\u6d32\u6703\u8a08\u55ae\u4f4d (XBC)
+xbd=\u6b50\u6d32\u6703\u8a08\u55ae\u4f4d (XBD)
 xcd=\u683c\u745e\u90a3\u9054\u5143
 xdr=\u7279\u6b8a\u63d0\u6b3e\u6b0a
 xfo=\u6cd5\u570b\u91d1\u6cd5\u90ce
 xfu=\u6cd5\u570b UIC \u6cd5\u90ce
-xof=\u897f\u975e \u6cd5\u90ce BCEAO
+xof=\u897f\u975e\u6cd5\u90ce BCEAO
+xpd=\u94af
 xpf=CFP \u6cd5\u90ce
-yer=\u4e5f\u9580\u91cc\u4e9e\u723e
+xpt=\u94c2
+xts=XTS
+xxx=XXX
+yer=\u8449\u9580\u91cc\u96c5
 yum=\u5357\u65af\u62c9\u592b\u632a\u5a01\u4e9e\u7b2c\u7d0d\u723e
 zar=\u5357\u975e\u862d\u7279
 zmk=\u5c1a\u6bd4\u4e9e\u514b\u74e6\u67e5
--- a/jdk/src/share/classes/sun/util/resources/LocaleData.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/LocaleData.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames_pt_BR.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames_pt_BR.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/demo/applets/ArcTest/ArcTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/ArcTest/ArcTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,22 +29,24 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
 import java.awt.*;
 import java.awt.event.*;
 import java.applet.*;
 
+
 /**
  * An interactive test of the Graphics.drawArc and Graphics.fillArc
  * routines. Can be run either as a standalone application by
  * typing "java ArcTest" or as an applet in the AppletViewer.
  */
+@SuppressWarnings("serial")
 public class ArcTest extends Applet {
+
     ArcControls controls;   // The controls for marking and filling arcs
     ArcCanvas canvas;       // The drawing area to display arcs
 
+    @Override
     public void init() {
         setLayout(new BorderLayout());
         canvas = new ArcCanvas();
@@ -52,19 +54,23 @@
         add("South", controls = new ArcControls(canvas));
     }
 
+    @Override
     public void destroy() {
         remove(controls);
         remove(canvas);
     }
 
+    @Override
     public void start() {
         controls.setEnabled(true);
     }
 
+    @Override
     public void stop() {
         controls.setEnabled(false);
     }
 
+    @Override
     public void processEvent(AWTEvent e) {
         if (e.getID() == Event.WINDOW_DESTROY) {
             System.exit(0);
@@ -80,20 +86,28 @@
 
         f.add("Center", arcTest);
         f.setSize(300, 300);
-        f.show();
+        f.setVisible(true);
     }
 
+    @Override
     public String getAppletInfo() {
-        return "An interactive test of the Graphics.drawArc and \nGraphics.fillArc routines. Can be run \neither as a standalone application by typing 'java ArcTest' \nor as an applet in the AppletViewer.";
+        return "An interactive test of the Graphics.drawArc and \nGraphics."
+                + "fillArc routines. Can be run \neither as a standalone "
+                + "application by typing 'java ArcTest' \nor as an applet in "
+                + "the AppletViewer.";
     }
 }
 
+
+@SuppressWarnings("serial")
 class ArcCanvas extends Canvas {
-    int         startAngle = 0;
-    int         extent = 45;
-    boolean     filled = false;
-    Font        font = new java.awt.Font("SansSerif", Font.PLAIN, 12);
 
+    int startAngle = 0;
+    int extent = 45;
+    boolean filled = false;
+    Font font = new java.awt.Font("SansSerif", Font.PLAIN, 12);
+
+    @Override
     public void paint(Graphics g) {
         Rectangle r = getBounds();
         int hlines = r.height / 10;
@@ -134,12 +148,16 @@
     }
 }
 
+
+@SuppressWarnings("serial")
 class ArcControls extends Panel
-                  implements ActionListener {
+        implements ActionListener {
+
     TextField startTF;
     TextField extentTF;
     ArcCanvas canvas;
 
+    @SuppressWarnings("LeakingThisInConstructor")
     public ArcControls(ArcCanvas canvas) {
         Button b = null;
 
@@ -154,18 +172,19 @@
         add(b);
     }
 
+    @Override
     public void actionPerformed(ActionEvent ev) {
         String label = ev.getActionCommand();
 
         int start, extent;
         try {
             start = Integer.parseInt(startTF.getText().trim());
-        } catch (NumberFormatException nfe) {
+        } catch (NumberFormatException ignored) {
             start = 0;
         }
         try {
             extent = Integer.parseInt(extentTF.getText().trim());
-        } catch (NumberFormatException nfe) {
+        } catch (NumberFormatException ignored) {
             extent = 0;
         }
 
@@ -173,6 +192,8 @@
     }
 }
 
+
+@SuppressWarnings("serial")
 class IntegerTextField extends TextField {
 
     String oldText = null;
@@ -188,6 +209,7 @@
     // function, but this is neater, since ideally, it would prevent
     // the text from appearing at all.  Sigh.  See bugid 4100317/4114565.
     //
+    @Override
     protected void processEvent(AWTEvent evt) {
         int id = evt.getID();
         if (id != KeyEvent.KEY_TYPED) {
@@ -200,8 +222,8 @@
 
         // Digits, backspace, and delete are okay
         // Note that the minus sign is allowed, but not the decimal
-        if (Character.isDigit(c) || (c == '\b') || (c == '\u007f') ||
-            (c == '\u002d')) {
+        if (Character.isDigit(c) || (c == '\b') || (c == '\u007f') || (c
+                == '\u002d')) {
             super.processEvent(evt);
             return;
         }
@@ -215,6 +237,7 @@
     // so we can revert to it on a TextEvent (paste, or
     // legal key in the wrong location) with bad text
     //
+    @Override
     protected void processTextEvent(TextEvent te) {
         // The empty string is okay, too
         String newText = getText();
@@ -233,12 +256,11 @@
     // Note that the empty string is not allowed.
     //
     private boolean textIsInteger(String textToCheck) {
-        int value = -1;
 
         try {
-            value = Integer.parseInt(textToCheck, 10);
+            Integer.parseInt(textToCheck, 10);
             return true;
-        } catch (NumberFormatException nfe) {
+        } catch (NumberFormatException ignored) {
             return false;
         }
     }
--- a/jdk/src/share/demo/applets/BarChart/BarChart.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/BarChart/BarChart.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,28 +29,26 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
 import java.awt.*;
 
+
 /**
  * A simple bar chart demo
  * @author Sami Shaio
  * @modified 06/21/00 Daniel Peek : refactored, comments
  */
+@SuppressWarnings("serial")
 public class BarChart extends java.applet.Applet {
+
     private static final int VERTICAL = 0;
     private static final int HORIZONTAL = 1;
-
     private static final int SOLID = 0;
     private static final int STRIPED = 1;
-
     private int orientation;
     private String title;
     private Font font;
     private FontMetrics metrics;
-    private int fontHeight = 15;
     private int columns;
     private int values[];
     private Color colors[];
@@ -61,6 +59,7 @@
     private int barSpacing = 10;
     private int maxValue = 0;
 
+    @Override
     public void init() {
 
         getSettings();
@@ -70,7 +69,7 @@
         styles = new int[columns];
         colors = new Color[columns];
 
-        for (int i=0; i < columns; i++) {
+        for (int i = 0; i < columns; i++) {
             parseValue(i);
             parseLabel(i);
             parseStyle(i);
@@ -112,7 +111,7 @@
     }
 
     private void parseValue(int i) {
-        String temp = getParameter("C" + (i+1));
+        String temp = getParameter("C" + (i + 1));
         try {
             values[i] = Integer.parseInt(temp);
         } catch (NumberFormatException e) {
@@ -124,18 +123,17 @@
     }
 
     private void parseLabel(int i) {
-        String temp = getParameter("C" + (i+1) + "_label");
-        if (temp==null) {
+        String temp = getParameter("C" + (i + 1) + "_label");
+        if (temp == null) {
             labels[i] = "";
         } else {
             labels[i] = temp;
         }
-        maxLabelWidth = Math.max(metrics.stringWidth
-                                 ((String) (labels[i])), maxLabelWidth);
+        maxLabelWidth = Math.max(metrics.stringWidth(labels[i]), maxLabelWidth);
     }
 
     private void parseStyle(int i) {
-        String temp = getParameter("C" + (i+1) + "_style");
+        String temp = getParameter("C" + (i + 1) + "_style");
         if (temp == null || temp.equalsIgnoreCase("solid")) {
             styles[i] = SOLID;
         } else if (temp.equalsIgnoreCase("striped")) {
@@ -146,7 +144,7 @@
     }
 
     private void parseColor(int i) {
-        String temp = getParameter("C" + (i+1) + "_color");
+        String temp = getParameter("C" + (i + 1) + "_color");
         if (temp != null) {
             temp = temp.toLowerCase();
             if (temp.equals("red")) {
@@ -179,6 +177,7 @@
         }
     }
 
+    @Override
     public void paint(Graphics g) {
         // draw the title centered at the bottom of the bar graph
         g.setColor(Color.black);
@@ -192,7 +191,7 @@
         g.drawString(title, cx, cy);
 
         // draw the bars and their titles
-        if(orientation == HORIZONTAL) {
+        if (orientation == HORIZONTAL) {
             paintHorizontal(g);
         } else {  // VERTICAL
             paintVertical(g);
@@ -208,12 +207,13 @@
 
             // set the X coordinate for this bar and label and center it
             int widthOfItems = maxLabelWidth + 3 + (maxValue * scale) + 5
-                + metrics.stringWidth(Integer.toString(maxValue));
+                    + metrics.stringWidth(Integer.toString(maxValue));
             cx = Math.max((getSize().width - widthOfItems) / 2, 0);
 
             // set the Y coordinate for this bar and label
             cy = getSize().height - metrics.getDescent() - metrics.getHeight()
-                - barSpacing - ((columns - i - 1) * (barSpacing + barHeight));
+                    - barSpacing
+                    - ((columns - i - 1) * (barSpacing + barHeight));
 
             // draw the label
             g.setColor(Color.black);
@@ -223,7 +223,7 @@
 
             // draw the shadow
             g.fillRect(cx + 4, cy - barHeight + 4,
-                       (values[i] * scale), barHeight);
+                    (values[i] * scale), barHeight);
 
             // draw the bar
             g.setColor(colors[i]);
@@ -233,7 +233,7 @@
                 }
             } else {      // SOLID
                 g.fillRect(cx, cy - barHeight,
-                           (values[i] * scale) + 1, barHeight + 1);
+                        (values[i] * scale) + 1, barHeight + 1);
             }
             cx += (values[i] * scale) + 4;
 
@@ -255,7 +255,7 @@
 
             // Y coordinate for this label and bar
             int cy = getSize().height - metrics.getHeight()
-                - metrics.getDescent() - 4;
+                    - metrics.getDescent() - 4;
 
             // draw the label
             g.setColor(Color.black);
@@ -264,18 +264,18 @@
 
             // draw the shadow
             g.fillRect(cx + 4, cy - (values[i] * scale) - 4,
-                       barWidth, (values[i] * scale));
+                    barWidth, (values[i] * scale));
 
             // draw the bar
             g.setColor(colors[i]);
             if (styles[i] == STRIPED) {
-                for (int k=0; k <= values[i] * scale; k+=2) {
+                for (int k = 0; k <= values[i] * scale; k += 2) {
                     g.drawLine(cx, cy - k,
-                               cx + barWidth, cy - k);
+                            cx + barWidth, cy - k);
                 }
             } else {
                 g.fillRect(cx, cy - (values[i] * scale),
-                           barWidth + 1, (values[i] * scale) + 1);
+                        barWidth + 1, (values[i] * scale) + 1);
             }
             cy -= (values[i] * scale) + 5;
 
@@ -285,28 +285,30 @@
         }
     }
 
+    @Override
     public String getAppletInfo() {
         return "Title: Bar Chart \n"
-            + "Author: Sami Shaio \n"
-            + "A simple bar chart demo.";
+                + "Author: Sami Shaio \n"
+                + "A simple bar chart demo.";
     }
 
+    @Override
     public String[][] getParameterInfo() {
         String[][] info = {
-            {"title", "string", "The title of bar graph.  Default is 'Chart'"},
-            {"scale", "int", "The scale of the bar graph.  Default is 10."},
-            {"columns", "int", "The number of columns/rows.  Default is 5."},
-            {"orientation", "{VERTICAL, HORIZONTAL}",
-             "The orienation of the bar graph.  Default is VERTICAL."},
-            {"c#", "int", "Subsitute a number for #.  "
-             + "The value/size of bar #.  Default is 0."},
-            {"c#_label", "string", "The label for bar #.  "
-             + "Default is an empty label."},
-            {"c#_style", "{SOLID, STRIPED}", "The style of bar #.  "
-             + "Default is SOLID."},
-            {"c#_color", "{RED, GREEN, BLUE, PINK, ORANGE, MAGENTA, CYAN, "
-             + "WHITE, YELLOW, GRAY, DARKGRAY}",
-             "The color of bar #.  Default is GRAY."}
+            { "title", "string", "The title of bar graph.  Default is 'Chart'" },
+            { "scale", "int", "The scale of the bar graph.  Default is 10." },
+            { "columns", "int", "The number of columns/rows.  Default is 5." },
+            { "orientation", "{VERTICAL, HORIZONTAL}",
+                "The orienation of the bar graph.  Default is VERTICAL." },
+            { "c#", "int", "Subsitute a number for #.  "
+                + "The value/size of bar #.  Default is 0." },
+            { "c#_label", "string", "The label for bar #.  "
+                + "Default is an empty label." },
+            { "c#_style", "{SOLID, STRIPED}", "The style of bar #.  "
+                + "Default is SOLID." },
+            { "c#_color", "{RED, GREEN, BLUE, PINK, ORANGE, MAGENTA, CYAN, "
+                + "WHITE, YELLOW, GRAY, DARKGRAY}",
+                "The color of bar #.  Default is GRAY." }
         };
         return info;
     }
--- a/jdk/src/share/demo/applets/Blink/Blink.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/Blink/Blink.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,92 +29,106 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
 /**
  * I love blinking things.
  *
  * @author Arthur van Hoff
- * @modified 04/24/96 Jim Hagen use getBackground
- * @modified 02/05/98 Mike McCloskey removed use of deprecated methods
- * @modified 04/23/99 Josh Bloch, use timer instead of explicit multithreading.
- * @modified 07/10/00 Daniel Peek brought to code conventions, minor changes
+ * @author 04/24/96 Jim Hagen use getBackground
+ * @author 02/05/98 Mike McCloskey removed use of deprecated methods
+ * @author 04/23/99 Josh Bloch, use timer instead of explicit multithreading.
+ * @author 07/10/00 Daniel Peek brought to code conventions, minor changes
  */
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.util.StringTokenizer;
+import java.util.Timer;
+import java.util.TimerTask;
 
-import java.awt.*;
-import java.util.*;
 
 public class Blink extends java.applet.Applet {
+
+    private static final long serialVersionUID = -775844794477507646L;
     private Timer timer;              // Schedules the blinking
     private String labelString;       // The label for the window
     private int delay;                // the delay time between blinks
 
+    @Override
     public void init() {
         String blinkFrequency = getParameter("speed");
-        delay = (blinkFrequency == null) ? 400 :
-            (1000 / Integer.parseInt(blinkFrequency));
+        delay = (blinkFrequency == null) ? 400
+                : (1000 / Integer.parseInt(blinkFrequency));
         labelString = getParameter("lbl");
-        if (labelString == null)
+        if (labelString == null) {
             labelString = "Blink";
+        }
         Font font = new java.awt.Font("Serif", Font.PLAIN, 24);
         setFont(font);
     }
 
+    @Override
     public void start() {
         timer = new Timer();     //creates a new timer to schedule the blinking
         timer.schedule(new TimerTask() {      //creates a timertask to schedule
+
             // overrides the run method to provide functionality
+            @Override
             public void run() {
                 repaint();
             }
-        }
-            , delay, delay);
+        }, delay, delay);
     }
 
+    @Override
     public void paint(Graphics g) {
         int fontSize = g.getFont().getSize();
         int x = 0, y = fontSize, space;
-        int red =   (int) ( 50 * Math.random());
-        int green = (int) ( 50 * Math.random());
-        int blue =  (int) (256 * Math.random());
+        int red = (int) (50 * Math.random());
+        int green = (int) (50 * Math.random());
+        int blue = (int) (256 * Math.random());
         Dimension d = getSize();
         g.setColor(Color.black);
         FontMetrics fm = g.getFontMetrics();
         space = fm.stringWidth(" ");
         for (StringTokenizer t = new StringTokenizer(labelString);
-             t.hasMoreTokens();) {
+                t.hasMoreTokens();) {
             String word = t.nextToken();
             int w = fm.stringWidth(word) + space;
             if (x + w > d.width) {
                 x = 0;
                 y += fontSize;  //move word to next line if it doesn't fit
             }
-            if (Math.random() < 0.5)
-                g.setColor(new java.awt.Color((red + y*30) % 256,
-                                              (green + x/3) % 256, blue));
-            else
+            if (Math.random() < 0.5) {
+                g.setColor(new java.awt.Color((red + y * 30) % 256,
+                        (green + x / 3) % 256, blue));
+            } else {
                 g.setColor(getBackground());
+            }
             g.drawString(word, x, y);
             x += w;  //shift to the right to draw the next word
         }
     }
 
+    @Override
     public void stop() {
         timer.cancel();  //stops the timer
     }
 
+    @Override
     public String getAppletInfo() {
         return "Title: Blinker\n"
-            + "Author: Arthur van Hoff\n"
-            + "Displays multicolored blinking text.";
+                + "Author: Arthur van Hoff\n"
+                + "Displays multicolored blinking text.";
     }
 
+    @Override
     public String[][] getParameterInfo() {
         String pinfo[][] = {
-            {"speed", "string", "The blink frequency"},
-            {"lbl", "string", "The text to blink."},
-        };
+            { "speed", "string", "The blink frequency" },
+            { "lbl", "string", "The text to blink." }, };
         return pinfo;
     }
 }
--- a/jdk/src/share/demo/applets/CardTest/CardTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/CardTest/CardTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,14 +29,27 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
-import java.awt.*;
-import java.awt.event.*;
 import java.applet.Applet;
+import java.awt.BorderLayout;
+import java.awt.Button;
+import java.awt.CardLayout;
+import java.awt.Choice;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.Frame;
+import java.awt.GridLayout;
+import java.awt.LayoutManager;
+import java.awt.Panel;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
 
-class CardPanel extends Panel {
+
+@SuppressWarnings("serial")
+final class CardPanel extends Panel {
+
     ActionListener listener;
 
     Panel create(LayoutManager layout) {
@@ -83,16 +96,21 @@
         add("six", create(new GridLayout(2, 2, 10, 10)));
     }
 
+    @Override
     public Dimension getPreferredSize() {
         return new Dimension(200, 100);
     }
 }
 
+
+@SuppressWarnings("serial")
 public class CardTest extends Applet
-                      implements ActionListener,
-                                 ItemListener {
+        implements ActionListener,
+        ItemListener {
+
     CardPanel cards;
 
+    @SuppressWarnings("LeakingThisInConstructor")
     public CardTest() {
         setLayout(new BorderLayout());
         add("Center", cards = new CardPanel(this));
@@ -127,24 +145,26 @@
         p.add(c);
     }
 
+    @Override
     public void itemStateChanged(ItemEvent e) {
-        ((CardLayout)cards.getLayout()).show(cards,
-                                             (String)(e.getItem()));
+        ((CardLayout) cards.getLayout()).show(cards,
+                (String) (e.getItem()));
     }
 
+    @Override
     public void actionPerformed(ActionEvent e) {
         String arg = e.getActionCommand();
 
         if ("first".equals(arg)) {
-            ((CardLayout)cards.getLayout()).first(cards);
+            ((CardLayout) cards.getLayout()).first(cards);
         } else if ("next".equals(arg)) {
-            ((CardLayout)cards.getLayout()).next(cards);
+            ((CardLayout) cards.getLayout()).next(cards);
         } else if ("previous".equals(arg)) {
-            ((CardLayout)cards.getLayout()).previous(cards);
+            ((CardLayout) cards.getLayout()).previous(cards);
         } else if ("last".equals(arg)) {
-            ((CardLayout)cards.getLayout()).last(cards);
+            ((CardLayout) cards.getLayout()).last(cards);
         } else {
-            ((CardLayout)cards.getLayout()).show(cards,(String)arg);
+            ((CardLayout) cards.getLayout()).show(cards, arg);
         }
     }
 
@@ -156,9 +176,10 @@
 
         f.add("Center", cardTest);
         f.setSize(300, 300);
-        f.show();
+        f.setVisible(true);
     }
 
+    @Override
     public String getAppletInfo() {
         return "Demonstrates the different types of layout managers.";
     }
--- a/jdk/src/share/demo/applets/Clock/Clock.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/Clock/Clock.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,24 +29,28 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
-import java.util.*;
-import java.awt.*;
-import java.applet.*;
-import java.text.*;
+import java.applet.Applet;
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Graphics;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
 
 /**
  * Time!
  *
  * @author Rachel Gollub
- * @modified Daniel Peek replaced circle drawing calculation, few more changes
+ * @author Daniel Peek replaced circle drawing calculation, few more changes
  */
+@SuppressWarnings("serial")
 public class Clock extends Applet implements Runnable {
+
     private volatile Thread timer;       // The thread that displays clock
     private int lastxs, lastys, lastxm,
-                lastym, lastxh, lastyh;  // Dimensions used to draw hands
+            lastym, lastxh, lastyh;  // Dimensions used to draw hands
     private SimpleDateFormat formatter;  // Formats the date displayed
     private String lastdate;             // String to hold date displayed
     private Font clockFaceFont;          // Font for number display on clock
@@ -55,11 +59,11 @@
     private Color numberColor;           // Color of second hand and numbers
     private int xcenter = 80, ycenter = 55; // Center position
 
+    @Override
     public void init() {
-        int x,y;
         lastxs = lastys = lastxm = lastym = lastxh = lastyh = 0;
-        formatter = new SimpleDateFormat ("EEE MMM dd hh:mm:ss yyyy",
-                                          Locale.getDefault());
+        formatter = new SimpleDateFormat("EEE MMM dd hh:mm:ss yyyy",
+                Locale.getDefault());
         currentDate = new Date();
         lastdate = formatter.format(currentDate);
         clockFaceFont = new Font("Serif", Font.PLAIN, 14);
@@ -68,26 +72,29 @@
 
         try {
             setBackground(new Color(Integer.parseInt(getParameter("bgcolor"),
-                                                     16)));
+                    16)));
         } catch (NullPointerException e) {
         } catch (NumberFormatException e) {
         }
         try {
             handColor = new Color(Integer.parseInt(getParameter("fgcolor1"),
-                                                   16));
+                    16));
         } catch (NullPointerException e) {
         } catch (NumberFormatException e) {
         }
         try {
             numberColor = new Color(Integer.parseInt(getParameter("fgcolor2"),
-                                                     16));
+                    16));
         } catch (NullPointerException e) {
         } catch (NumberFormatException e) {
         }
-        resize(300,300);              // Set clock window size
+        resize(300, 300);              // Set clock window size
     }
 
-    // Paint is the main part of the program
+    /**
+     * Paint is the main part of the program
+     */
+    @Override
     public void update(Graphics g) {
         int xh, yh, xm, ym, xs, ys;
         int s = 0, m = 10, h = 10;
@@ -119,10 +126,12 @@
         ys = (int) (Math.sin(s * Math.PI / 30 - Math.PI / 2) * 45 + ycenter);
         xm = (int) (Math.cos(m * Math.PI / 30 - Math.PI / 2) * 40 + xcenter);
         ym = (int) (Math.sin(m * Math.PI / 30 - Math.PI / 2) * 40 + ycenter);
-        xh = (int) (Math.cos((h*30 + m / 2) * Math.PI / 180 - Math.PI / 2) * 30
-                   + xcenter);
-        yh = (int) (Math.sin((h*30 + m / 2) * Math.PI / 180 - Math.PI / 2) * 30
-                   + ycenter);
+        xh = (int) (Math.cos((h * 30 + m / 2) * Math.PI / 180 - Math.PI / 2)
+                * 30
+                + xcenter);
+        yh = (int) (Math.sin((h * 30 + m / 2) * Math.PI / 180 - Math.PI / 2)
+                * 30
+                + ycenter);
 
         // Get the date to print at the bottom
         formatter.applyPattern("EEE MMM dd HH:mm:ss yyyy");
@@ -136,12 +145,12 @@
             g.drawString(lastdate, 5, 125);
         }
         if (xm != lastxm || ym != lastym) {
-            g.drawLine(xcenter, ycenter-1, lastxm, lastym);
-            g.drawLine(xcenter-1, ycenter, lastxm, lastym);
+            g.drawLine(xcenter, ycenter - 1, lastxm, lastym);
+            g.drawLine(xcenter - 1, ycenter, lastxm, lastym);
         }
         if (xh != lastxh || yh != lastyh) {
-            g.drawLine(xcenter, ycenter-1, lastxh, lastyh);
-            g.drawLine(xcenter-1, ycenter, lastxh, lastyh);
+            g.drawLine(xcenter, ycenter - 1, lastxh, lastyh);
+            g.drawLine(xcenter - 1, ycenter, lastxh, lastyh);
         }
 
         // Draw date and hands
@@ -149,73 +158,83 @@
         g.drawString(today, 5, 125);
         g.drawLine(xcenter, ycenter, xs, ys);
         g.setColor(handColor);
-        g.drawLine(xcenter, ycenter-1, xm, ym);
-        g.drawLine(xcenter-1, ycenter, xm, ym);
-        g.drawLine(xcenter, ycenter-1, xh, yh);
-        g.drawLine(xcenter-1, ycenter, xh, yh);
-        lastxs = xs; lastys = ys;
-        lastxm = xm; lastym = ym;
-        lastxh = xh; lastyh = yh;
+        g.drawLine(xcenter, ycenter - 1, xm, ym);
+        g.drawLine(xcenter - 1, ycenter, xm, ym);
+        g.drawLine(xcenter, ycenter - 1, xh, yh);
+        g.drawLine(xcenter - 1, ycenter, xh, yh);
+        lastxs = xs;
+        lastys = ys;
+        lastxm = xm;
+        lastym = ym;
+        lastxh = xh;
+        lastyh = yh;
         lastdate = today;
         currentDate = null;
     }
 
+    @Override
     public void paint(Graphics g) {
         g.setFont(clockFaceFont);
         // Draw the circle and numbers
         g.setColor(handColor);
-        g.drawArc(xcenter-50, ycenter-50, 100, 100, 0, 360);
+        g.drawArc(xcenter - 50, ycenter - 50, 100, 100, 0, 360);
         g.setColor(numberColor);
-        g.drawString("9", xcenter-45, ycenter+3);
-        g.drawString("3", xcenter+40, ycenter+3);
-        g.drawString("12", xcenter-5, ycenter-37);
-        g.drawString("6", xcenter-3, ycenter+45);
+        g.drawString("9", xcenter - 45, ycenter + 3);
+        g.drawString("3", xcenter + 40, ycenter + 3);
+        g.drawString("12", xcenter - 5, ycenter - 37);
+        g.drawString("6", xcenter - 3, ycenter + 45);
 
         // Draw date and hands
         g.setColor(numberColor);
         g.drawString(lastdate, 5, 125);
         g.drawLine(xcenter, ycenter, lastxs, lastys);
         g.setColor(handColor);
-        g.drawLine(xcenter, ycenter-1, lastxm, lastym);
-        g.drawLine(xcenter-1, ycenter, lastxm, lastym);
-        g.drawLine(xcenter, ycenter-1, lastxh, lastyh);
-        g.drawLine(xcenter-1, ycenter, lastxh, lastyh);
+        g.drawLine(xcenter, ycenter - 1, lastxm, lastym);
+        g.drawLine(xcenter - 1, ycenter, lastxm, lastym);
+        g.drawLine(xcenter, ycenter - 1, lastxh, lastyh);
+        g.drawLine(xcenter - 1, ycenter, lastxh, lastyh);
     }
 
+    @Override
     public void start() {
         timer = new Thread(this);
         timer.start();
     }
 
+    @Override
     public void stop() {
         timer = null;
     }
 
+    @Override
+    @SuppressWarnings("SleepWhileHoldingLock")
     public void run() {
         Thread me = Thread.currentThread();
         while (timer == me) {
             try {
-                Thread.currentThread().sleep(100);
+                Thread.sleep(100);
             } catch (InterruptedException e) {
             }
             repaint();
         }
     }
 
+    @Override
     public String getAppletInfo() {
         return "Title: A Clock \n"
-            + "Author: Rachel Gollub, 1995 \n"
-            + "An analog clock.";
+                + "Author: Rachel Gollub, 1995 \n"
+                + "An analog clock.";
     }
 
+    @Override
     public String[][] getParameterInfo() {
         String[][] info = {
-            {"bgcolor", "hexadecimal RGB number",
-             "The background color. Default is the color of your browser."},
-            {"fgcolor1", "hexadecimal RGB number",
-             "The color of the hands and dial. Default is blue."},
-            {"fgcolor2", "hexadecimal RGB number",
-             "The color of the second hand and numbers. Default is dark gray."}
+            { "bgcolor", "hexadecimal RGB number",
+                "The background color. Default is the color of your browser." },
+            { "fgcolor1", "hexadecimal RGB number",
+                "The color of the hands and dial. Default is blue." },
+            { "fgcolor2", "hexadecimal RGB number",
+                "The color of the second hand and numbers. Default is dark gray." }
         };
         return info;
     }
--- a/jdk/src/share/demo/applets/DitherTest/DitherTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/DitherTest/DitherTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,25 +29,43 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
 import java.applet.Applet;
-import java.awt.event.*;
-import java.awt.*;
+import java.awt.AWTEvent;
+import java.awt.BorderLayout;
+import java.awt.Button;
+import java.awt.Canvas;
+import java.awt.Choice;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.FontMetrics;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Label;
+import java.awt.LayoutManager;
+import java.awt.Panel;
+import java.awt.TextField;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.TextEvent;
 import java.awt.image.ColorModel;
 import java.awt.image.MemoryImageSource;
 
+
+enum DitherMethod {
+
+    NOOP, RED, GREEN, BLUE, ALPHA, SATURATION
+};
+
+
+@SuppressWarnings("serial")
 public class DitherTest extends Applet implements Runnable {
-    final private static int NOOP = 0;
-    final private static int RED = 1;
-    final private static int GREEN = 2;
-    final private static int BLUE = 3;
-    final private static int ALPHA = 4;
-    final private static int SATURATION = 5;
 
     private Thread runner;
-
     private DitherControls XControls;
     private DitherControls YControls;
     private DitherCanvas canvas;
@@ -62,6 +80,7 @@
         ditherTest.start();
     }
 
+    @Override
     public void init() {
         String xspec = null, yspec = null;
         int xvals[] = new int[2];
@@ -70,7 +89,7 @@
         try {
             xspec = getParameter("xaxis");
             yspec = getParameter("yaxis");
-        } catch (NullPointerException npe) {
+        } catch (NullPointerException ignored) {
             //only occurs if run as application
         }
 
@@ -80,44 +99,34 @@
         if (yspec == null) {
             yspec = "blue";
         }
-        int xmethod = colormethod(xspec, xvals);
-        int ymethod = colormethod(yspec, yvals);
+        DitherMethod xmethod = colorMethod(xspec, xvals);
+        DitherMethod ymethod = colorMethod(yspec, yvals);
 
         setLayout(new BorderLayout());
         XControls = new DitherControls(this, xvals[0], xvals[1],
-                                       xmethod, false);
+                xmethod, false);
         YControls = new DitherControls(this, yvals[0], yvals[1],
-                                       ymethod, true);
+                ymethod, true);
         YControls.addRenderButton();
         add("North", XControls);
         add("South", YControls);
         add("Center", canvas = new DitherCanvas());
     }
 
-    private int colormethod(String s, int vals[]) {
-        int method = NOOP;
+    private DitherMethod colorMethod(String s, int vals[]) {
+        DitherMethod method = DitherMethod.NOOP;
         if (s == null) {
             s = "";
         }
         String lower = s.toLowerCase();
-        int len = 0;
-        if (lower.startsWith("red")) {
-            method = RED;
-            lower = lower.substring(3);
-        } else if (lower.startsWith("green")) {
-            method = GREEN;
-            lower = lower.substring(5);
-        } else if (lower.startsWith("blue")) {
-            method = BLUE;
-            lower = lower.substring(4);
-        } else if (lower.startsWith("alpha")) {
-            method = ALPHA;
-            lower = lower.substring(5);
-        } else if (lower.startsWith("saturation")) {
-            method = SATURATION;
-            lower = lower.substring(10);
+
+        for (DitherMethod m : DitherMethod.values()) {
+            if (lower.startsWith(m.toString().toLowerCase())) {
+                method = m;
+                lower = lower.substring(m.toString().length());
+            }
         }
-        if (method == NOOP) {
+        if (method == DitherMethod.NOOP) {
             vals[0] = 0;
             vals[1] = 0;
             return method;
@@ -132,7 +141,7 @@
                 begval = Integer.parseInt(lower.substring(0, dash));
                 endval = Integer.parseInt(lower.substring(dash + 1));
             }
-        } catch (NumberFormatException nfe) {
+        } catch (NumberFormatException ignored) {
         }
 
         if (begval < 0) {
@@ -173,16 +182,14 @@
                 c[0] = c[1] = c[2] = 0;
                 c[3] = 255;
                 if (xmethod < ymethod) {
-                    applymethod(c, xmethod, i, width, xvals);
-                    applymethod(c, ymethod, j, height, yvals);
+                    applyMethod(c, xmethod, i, width, xvals);
+                    applyMethod(c, ymethod, j, height, yvals);
                 } else {
-                    applymethod(c, ymethod, j, height, yvals);
-                    applymethod(c, xmethod, i, width, xvals);
+                    applyMethod(c, ymethod, j, height, yvals);
+                    applyMethod(c, xmethod, i, width, xvals);
                 }
-                pixels[index++] = ((c[3] << 24) |
-                                   (c[0] << 16) |
-                                   (c[1] << 8) |
-                                   c[2]);
+                pixels[index++] = ((c[3] << 24) | (c[0] << 16) | (c[1] << 8)
+                        | c[2]);
             }
 
             // Poll once per row to see if we've been told to stop.
@@ -191,51 +198,54 @@
             }
         }
         return createImage(new MemoryImageSource(width, height,
-                            ColorModel.getRGBdefault(), pixels, 0, width));
+                ColorModel.getRGBdefault(), pixels, 0, width));
     }
 
-    private void applymethod(int c[], int method, int step,
-                             int total, int vals[]) {
-        if (method == NOOP) {
+    private void applyMethod(int c[], int methodIndex, int step,
+            int total, int vals[]) {
+        DitherMethod method = DitherMethod.values()[methodIndex];
+        if (method == DitherMethod.NOOP) {
             return;
         }
         int val = ((total < 2)
-                   ? vals[0]
-                   : vals[0] + ((vals[1] - vals[0]) * step / (total - 1)));
+                ? vals[0]
+                : vals[0] + ((vals[1] - vals[0]) * step / (total - 1)));
         switch (method) {
-        case RED:
-            c[0] = val;
-            break;
-        case GREEN:
-            c[1] = val;
-            break;
-        case BLUE:
-            c[2] = val;
-            break;
-        case ALPHA:
-            c[3] = val;
-            break;
-        case SATURATION:
-            int max = Math.max(Math.max(c[0], c[1]), c[2]);
-            int min = max * (255 - val) / 255;
-            if (c[0] == 0) {
-                c[0] = min;
-            }
-            if (c[1] == 0) {
-                c[1] = min;
-            }
-            if (c[2] == 0) {
-                c[2] = min;
-            }
-            break;
+            case RED:
+                c[0] = val;
+                break;
+            case GREEN:
+                c[1] = val;
+                break;
+            case BLUE:
+                c[2] = val;
+                break;
+            case ALPHA:
+                c[3] = val;
+                break;
+            case SATURATION:
+                int max = Math.max(Math.max(c[0], c[1]), c[2]);
+                int min = max * (255 - val) / 255;
+                if (c[0] == 0) {
+                    c[0] = min;
+                }
+                if (c[1] == 0) {
+                    c[1] = min;
+                }
+                if (c[2] == 0) {
+                    c[2] = min;
+                }
+                break;
         }
     }
 
+    @Override
     public void start() {
         runner = new Thread(this);
         runner.start();
     }
 
+    @Override
     public void run() {
         canvas.setImage(null);  // Wipe previous image
         Image img = calculateImage();
@@ -244,35 +254,43 @@
         }
     }
 
+    @Override
     public void stop() {
         runner = null;
     }
 
+    @Override
     public void destroy() {
         remove(XControls);
         remove(YControls);
         remove(canvas);
     }
 
+    @Override
     public String getAppletInfo() {
         return "An interactive demonstration of dithering.";
     }
 
+    @Override
     public String[][] getParameterInfo() {
         String[][] info = {
-            {"xaxis", "{RED, GREEN, BLUE, ALPHA, SATURATION}",
-             "The color of the Y axis.  Default is RED."},
-            {"yaxis", "{RED, GREEN, BLUE, ALPHA, SATURATION}",
-             "The color of the X axis.  Default is BLUE."}
+            { "xaxis", "{RED, GREEN, BLUE, ALPHA, SATURATION}",
+                "The color of the Y axis.  Default is RED." },
+            { "yaxis", "{RED, GREEN, BLUE, ALPHA, SATURATION}",
+                "The color of the X axis.  Default is BLUE." }
         };
         return info;
     }
 }
 
+
+@SuppressWarnings("serial")
 class DitherCanvas extends Canvas {
+
     private Image img;
     private static String calcString = "Calculating...";
 
+    @Override
     public void paint(Graphics g) {
         int w = getSize().width;
         int h = getSize().height;
@@ -288,14 +306,17 @@
         }
     }
 
+    @Override
     public void update(Graphics g) {
         paint(g);
     }
 
+    @Override
     public Dimension getMinimumSize() {
         return new Dimension(20, 20);
     }
 
+    @Override
     public Dimension getPreferredSize() {
         return new Dimension(200, 200);
     }
@@ -310,29 +331,29 @@
     }
 }
 
+
+@SuppressWarnings("serial")
 class DitherControls extends Panel implements ActionListener {
+
     private CardinalTextField start;
     private CardinalTextField end;
     private Button button;
     private Choice choice;
     private DitherTest applet;
+    private static LayoutManager dcLayout = new FlowLayout(FlowLayout.CENTER,
+            10, 5);
 
-    private static LayoutManager dcLayout = new FlowLayout(FlowLayout.CENTER,
-                                                           10, 5);
-
-    public DitherControls(DitherTest app, int s, int e, int type,
-                          boolean vertical) {
+    public DitherControls(DitherTest app, int s, int e, DitherMethod type,
+            boolean vertical) {
         applet = app;
         setLayout(dcLayout);
         add(new Label(vertical ? "Vertical" : "Horizontal"));
         add(choice = new Choice());
-        choice.addItem("Noop");
-        choice.addItem("Red");
-        choice.addItem("Green");
-        choice.addItem("Blue");
-        choice.addItem("Alpha");
-        choice.addItem("Saturation");
-        choice.select(type);
+        for (DitherMethod m : DitherMethod.values()) {
+            choice.addItem(m.toString().substring(0, 1)
+                    + m.toString().substring(1).toLowerCase());
+        }
+        choice.select(type.ordinal());
         add(start = new CardinalTextField(Integer.toString(s), 4));
         add(end = new CardinalTextField(Integer.toString(e), 4));
     }
@@ -369,6 +390,7 @@
     }
 
     /* called when user clicks the button */
+    @Override
     public void actionPerformed(ActionEvent e) {
         if (e.getSource() == button) {
             applet.start();
@@ -376,6 +398,8 @@
     }
 }
 
+
+@SuppressWarnings("serial")
 class CardinalTextField extends TextField {
 
     String oldText = null;
@@ -391,6 +415,7 @@
     // function, but this is neater, since ideally, it would prevent
     // the text from appearing at all.  Sigh.  See bugid 4100317/4114565.
     //
+    @Override
     protected void processEvent(AWTEvent evt) {
         int id = evt.getID();
         if (id != KeyEvent.KEY_TYPED) {
@@ -420,6 +445,7 @@
     // Note: it would be easy to extend this to an eight-bit
     // TextField (range 0-255), but I'll leave it as-is.
     //
+    @Override
     protected void processTextEvent(TextEvent te) {
         // The empty string is okay, too
         String newText = getText();
@@ -436,11 +462,8 @@
     // Returns true for Cardinal (non-negative) numbers
     // Note that the empty string is not allowed
     private boolean textIsCardinal(String textToCheck) {
-        int value = -1;
-
         try {
-            value = Integer.parseInt(textToCheck, 10);
-            return (value >= 0);
+            return Integer.parseInt(textToCheck, 10) >= 0;
         } catch (NumberFormatException nfe) {
             return false;
         }
--- a/jdk/src/share/demo/applets/DrawTest/DrawTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/DrawTest/DrawTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,27 +29,46 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
-import java.awt.event.*;
-import java.awt.*;
-import java.applet.*;
+import java.applet.Applet;
+import java.awt.BorderLayout;
+import java.awt.Checkbox;
+import java.awt.CheckboxGroup;
+import java.awt.Choice;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+import java.util.ArrayList;
+import java.util.List;
 
-import java.util.Vector;
 
-public class DrawTest extends Applet{
+@SuppressWarnings("serial")
+public class DrawTest extends Applet {
+
     DrawPanel panel;
     DrawControls controls;
 
+    @Override
     public void init() {
         setLayout(new BorderLayout());
         panel = new DrawPanel();
         controls = new DrawControls(panel);
         add("Center", panel);
-        add("South",controls);
+        add("South", controls);
     }
 
+    @Override
     public void destroy() {
         remove(panel);
         remove(controls);
@@ -63,22 +82,28 @@
 
         f.add("Center", drawTest);
         f.setSize(300, 300);
-        f.show();
+        f.setVisible(true);
     }
+
+    @Override
     public String getAppletInfo() {
         return "A simple drawing program.";
     }
 }
 
+
+@SuppressWarnings("serial")
 class DrawPanel extends Panel implements MouseListener, MouseMotionListener {
+
     public static final int LINES = 0;
     public static final int POINTS = 1;
-    int    mode = LINES;
-    Vector lines = new Vector();
-    Vector colors = new Vector();
-    int x1,y1;
-    int x2,y2;
+    int mode = LINES;
+    List<Rectangle> lines = new ArrayList<Rectangle>();
+    List<Color> colors = new ArrayList<Color>();
+    int x1, y1;
+    int x2, y2;
 
+    @SuppressWarnings("LeakingThisInConstructor")
     public DrawPanel() {
         setBackground(Color.white);
         addMouseMotionListener(this);
@@ -87,16 +112,16 @@
 
     public void setDrawMode(int mode) {
         switch (mode) {
-          case LINES:
-          case POINTS:
-            this.mode = mode;
-            break;
-          default:
-            throw new IllegalArgumentException();
+            case LINES:
+            case POINTS:
+                this.mode = mode;
+                break;
+            default:
+                throw new IllegalArgumentException();
         }
     }
 
-
+    @Override
     public void mouseDragged(MouseEvent e) {
         e.consume();
         switch (mode) {
@@ -106,8 +131,8 @@
                 break;
             case POINTS:
             default:
-                colors.addElement(getForeground());
-                lines.addElement(new Rectangle(x1, y1, e.getX(), e.getY()));
+                colors.add(getForeground());
+                lines.add(new Rectangle(x1, y1, e.getX(), e.getY()));
                 x1 = e.getX();
                 y1 = e.getY();
                 break;
@@ -115,9 +140,11 @@
         repaint();
     }
 
+    @Override
     public void mouseMoved(MouseEvent e) {
     }
 
+    @Override
     public void mousePressed(MouseEvent e) {
         e.consume();
         switch (mode) {
@@ -128,8 +155,8 @@
                 break;
             case POINTS:
             default:
-                colors.addElement(getForeground());
-                lines.addElement(new Rectangle(e.getX(), e.getY(), -1, -1));
+                colors.add(getForeground());
+                lines.add(new Rectangle(e.getX(), e.getY(), -1, -1));
                 x1 = e.getX();
                 y1 = e.getY();
                 repaint();
@@ -137,12 +164,13 @@
         }
     }
 
+    @Override
     public void mouseReleased(MouseEvent e) {
         e.consume();
         switch (mode) {
             case LINES:
-                colors.addElement(getForeground());
-                lines.addElement(new Rectangle(x1, y1, e.getX(), e.getY()));
+                colors.add(getForeground());
+                lines.add(new Rectangle(x1, y1, e.getX(), e.getY()));
                 x2 = -1;
                 break;
             case POINTS:
@@ -152,23 +180,27 @@
         repaint();
     }
 
+    @Override
     public void mouseEntered(MouseEvent e) {
     }
 
+    @Override
     public void mouseExited(MouseEvent e) {
     }
 
+    @Override
     public void mouseClicked(MouseEvent e) {
     }
 
+    @Override
     public void paint(Graphics g) {
         int np = lines.size();
 
         /* draw the current lines */
         g.setColor(getForeground());
-        for (int i=0; i < np; i++) {
-            Rectangle p = (Rectangle)lines.elementAt(i);
-            g.setColor((Color)colors.elementAt(i));
+        for (int i = 0; i < np; i++) {
+            Rectangle p = lines.get(i);
+            g.setColor(colors.get(i));
             if (p.width != -1) {
                 g.drawLine(p.x, p.y, p.width, p.height);
             } else {
@@ -185,9 +217,12 @@
 }
 
 
+@SuppressWarnings("serial")
 class DrawControls extends Panel implements ItemListener {
+
     DrawPanel target;
 
+    @SuppressWarnings("LeakingThisInConstructor")
     public DrawControls(DrawPanel target) {
         this.target = target;
         setLayout(new FlowLayout());
@@ -222,33 +257,35 @@
         add(shapes);
     }
 
+    @Override
     public void paint(Graphics g) {
         Rectangle r = getBounds();
         g.setColor(Color.lightGray);
         g.draw3DRect(0, 0, r.width, r.height, false);
 
         int n = getComponentCount();
-        for(int i=0; i<n; i++) {
+        for (int i = 0; i < n; i++) {
             Component comp = getComponent(i);
             if (comp instanceof Checkbox) {
                 Point loc = comp.getLocation();
                 Dimension d = comp.getSize();
                 g.setColor(comp.getForeground());
-                g.drawRect(loc.x-1, loc.y-1, d.width+1, d.height+1);
+                g.drawRect(loc.x - 1, loc.y - 1, d.width + 1, d.height + 1);
             }
         }
     }
 
-  public void itemStateChanged(ItemEvent e) {
-    if (e.getSource() instanceof Checkbox) {
-      target.setForeground(((Component)e.getSource()).getForeground());
-    } else if (e.getSource() instanceof Choice) {
-      String choice = (String) e.getItem();
-      if (choice.equals("Lines")) {
-        target.setDrawMode(DrawPanel.LINES);
-      } else if (choice.equals("Points")) {
-        target.setDrawMode(DrawPanel.POINTS);
-      }
+    @Override
+    public void itemStateChanged(ItemEvent e) {
+        if (e.getSource() instanceof Checkbox) {
+            target.setForeground(((Component) e.getSource()).getForeground());
+        } else if (e.getSource() instanceof Choice) {
+            String choice = (String) e.getItem();
+            if (choice.equals("Lines")) {
+                target.setDrawMode(DrawPanel.LINES);
+            } else if (choice.equals("Points")) {
+                target.setDrawMode(DrawPanel.POINTS);
+            }
+        }
     }
-  }
 }
--- a/jdk/src/share/demo/applets/Fractal/CLSFractal.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/Fractal/CLSFractal.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,13 +29,13 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
 import java.awt.Graphics;
 import java.util.Stack;
-import java.util.Vector;
 import java.awt.event.*;
+import java.util.ArrayList;
+import java.util.List;
+
 
 /**
  * A (not-yet) Context sensitive L-System Fractal applet class.
@@ -50,9 +50,11 @@
  *
  * @author      Jim Graham
  */
+@SuppressWarnings("serial")
 public class CLSFractal
-    extends java.applet.Applet
-    implements Runnable, MouseListener {
+        extends java.applet.Applet
+        implements Runnable, MouseListener {
+
     Thread kicker;
     ContextLSystem cls;
     int fractLevel = 1;
@@ -67,31 +69,48 @@
     int border;
     boolean normalizescaling;
 
+    @Override
     public void init() {
         String s;
         cls = new ContextLSystem(this);
         s = getParameter("level");
-        if (s != null) fractLevel = Integer.parseInt(s);
+        if (s != null) {
+            fractLevel = Integer.parseInt(s);
+        }
         s = getParameter("incremental");
-        if (s != null) incrementalUpdates = s.equalsIgnoreCase("true");
+        if (s != null) {
+            incrementalUpdates = s.equalsIgnoreCase("true");
+        }
         s = getParameter("delay");
-        if (s != null) repaintDelay = Integer.parseInt(s);
+        if (s != null) {
+            repaintDelay = Integer.parseInt(s);
+        }
         s = getParameter("startAngle");
-        if (s != null) startAngle = Float.valueOf(s).floatValue();
+        if (s != null) {
+            startAngle = Float.valueOf(s).floatValue();
+        }
         s = getParameter("rotAngle");
-        if (s != null) rotAngle = Float.valueOf(s).floatValue();
+        if (s != null) {
+            rotAngle = Float.valueOf(s).floatValue();
+        }
         rotAngle = rotAngle / 360 * 2 * 3.14159265358f;
         s = getParameter("border");
-        if (s != null) border = Integer.parseInt(s);
+        if (s != null) {
+            border = Integer.parseInt(s);
+        }
         s = getParameter("normalizescale");
-        if (s != null) normalizescaling = s.equalsIgnoreCase("true");
+        if (s != null) {
+            normalizescaling = s.equalsIgnoreCase("true");
+        }
         addMouseListener(this);
     }
 
+    @Override
     public void destroy() {
         removeMouseListener(this);
     }
 
+    @Override
     public void run() {
         Thread me = Thread.currentThread();
         boolean needsRepaint = false;
@@ -99,7 +118,10 @@
             cls.generate();
             if (kicker == me && incrementalUpdates) {
                 repaint();
-                try {Thread.sleep(repaintDelay);} catch (InterruptedException e){}
+                try {
+                    Thread.sleep(repaintDelay);
+                } catch (InterruptedException ignored) {
+                }
             } else {
                 needsRepaint = true;
             }
@@ -112,22 +134,27 @@
         }
     }
 
+    @Override
     public void start() {
         kicker = new Thread(this);
         kicker.start();
     }
 
+    @Override
     public void stop() {
         kicker = null;
     }
 
-      /*1.1 event handling */
+    /*1.1 event handling */
+    @Override
     public void mouseClicked(MouseEvent e) {
     }
 
+    @Override
     public void mousePressed(MouseEvent e) {
     }
 
+    @Override
     public void mouseReleased(MouseEvent e) {
         cls = new ContextLSystem(this);
         savedPath = null;
@@ -135,14 +162,16 @@
         e.consume();
     }
 
+    @Override
     public void mouseEntered(MouseEvent e) {
     }
 
+    @Override
     public void mouseExited(MouseEvent e) {
     }
-
     String savedPath;
 
+    @Override
     public void paint(Graphics g) {
         String fractalPath = cls.getPath();
         if (fractalPath == null) {
@@ -155,13 +184,14 @@
         }
 
         for (int i = 0; i < border; i++) {
-            g.draw3DRect(i, i, getSize().width - i * 2, getSize().height - i * 2,false);
+            g.draw3DRect(i, i, getSize().width - i * 2, getSize().height - i * 2,
+                    false);
         }
         render(g, fractalPath);
     }
 
     void render(Graphics g, String path) {
-        Stack turtleStack = new Stack();
+        Stack<CLSTurtle> turtleStack = new Stack<CLSTurtle>();
         CLSTurtle turtle;
 
         if (g == null) {
@@ -172,11 +202,13 @@
             turtle = new CLSTurtle(startAngle, 0, 0, 0, 0, 1, 1);
         } else {
             float frwidth = Xmax - Xmin;
-            if (frwidth == 0)
+            if (frwidth == 0) {
                 frwidth = 1;
+            }
             float frheight = Ymax - Ymin;
-            if (frheight == 0)
+            if (frheight == 0) {
                 frheight = 1;
+            }
             float xscale = (getSize().width - border * 2 - 1) / frwidth;
             float yscale = (getSize().height - border * 2 - 1) / frheight;
             int xoff = border;
@@ -184,83 +216,101 @@
             if (normalizescaling) {
                 if (xscale < yscale) {
                     yoff += ((getSize().height - border * 2)
-                             - ((Ymax - Ymin) * xscale)) / 2;
+                            - ((Ymax - Ymin) * xscale)) / 2;
                     yscale = xscale;
                 } else if (yscale < xscale) {
                     xoff += ((getSize().width - border * 2)
-                             - ((Xmax - Xmin) * yscale)) / 2;
+                            - ((Xmax - Xmin) * yscale)) / 2;
                     xscale = yscale;
                 }
             }
             turtle = new CLSTurtle(startAngle, 0 - Xmin, 0 - Ymin,
-                                   xoff, yoff, xscale, yscale);
+                    xoff, yoff, xscale, yscale);
         }
 
         for (int pos = 0; pos < path.length(); pos++) {
             switch (path.charAt(pos)) {
-            case '+':
-                turtle.rotate(rotAngle);
-                break;
-            case '-':
-                turtle.rotate(-rotAngle);
-                break;
-            case '[':
-                turtleStack.push(turtle);
-                turtle = new CLSTurtle(turtle);
-                break;
-            case ']':
-                turtle = (CLSTurtle) turtleStack.pop();
-                break;
-            case 'f':
-                turtle.jump();
-                break;
-            case 'F':
-                if (g == null) {
-                    includePt(turtle.X, turtle.Y);
+                case '+':
+                    turtle.rotate(rotAngle);
+                    break;
+                case '-':
+                    turtle.rotate(-rotAngle);
+                    break;
+                case '[':
+                    turtleStack.push(turtle);
+                    turtle = new CLSTurtle(turtle);
+                    break;
+                case ']':
+                    turtle = turtleStack.pop();
+                    break;
+                case 'f':
                     turtle.jump();
-                    includePt(turtle.X, turtle.Y);
-                } else {
-                    turtle.draw(g);
-                }
-                break;
-            default:
-                break;
+                    break;
+                case 'F':
+                    if (g == null) {
+                        includePt(turtle.X, turtle.Y);
+                        turtle.jump();
+                        includePt(turtle.X, turtle.Y);
+                    } else {
+                        turtle.draw(g);
+                    }
+                    break;
+                default:
+                    break;
             }
         }
     }
 
     void includePt(float x, float y) {
-        if (x < Xmin)
+        if (x < Xmin) {
             Xmin = x;
-        if (x > Xmax)
+        }
+        if (x > Xmax) {
             Xmax = x;
-        if (y < Ymin)
+        }
+        if (y < Ymin) {
             Ymin = y;
-        if (y > Ymax)
+        }
+        if (y > Ymax) {
             Ymax = y;
+        }
+    }
+
+    @Override
+    public String getAppletInfo() {
+        return "Title: CLSFractal 1.1f, 27 Mar 1995 \nAuthor: Jim Graham \nA "
+                + "(not yet) Context Sensitive L-System production rule. \n"
+                + "This class encapsulates a production rule for a Context "
+                + "Sensitive\n L-System \n(pred, succ, lContext, rContext)."
+                + "  The matches() method, however, does not \n(yet) verify "
+                + "the lContext and rContext parts of the rule.";
     }
 
-  public String getAppletInfo() {
-    return "Title: CLSFractal 1.1f, 27 Mar 1995 \nAuthor: Jim Graham \nA (not yet) Context Sensitive L-System production rule. \nThis class encapsulates a production rule for a Context Sensitive\n L-System \n(pred, succ, lContext, rContext).  The matches() method, however, does not \n(yet) verify the lContext and rContext parts of the rule.";
-  }
+    @Override
+    public String[][] getParameterInfo() {
+        String[][] info = {
+            { "level", "int", "Maximum number of recursions.  Default is 1." },
+            { "incremental", "boolean", "Whether or not to repaint between "
+                + "recursions.  Default is true." },
+            { "delay", "integer", "Sets delay between repaints.  Default is 50." },
+            { "startAngle", "float", "Sets the starting angle.  Default is 0." },
+            { "rotAngle", "float", "Sets the rotation angle.  Default is 45." },
+            { "border", "integer", "Width of border.  Default is 2." },
+            { "normalizeScale", "boolean", "Whether or not to normalize "
+                + "the scaling.  Default is true." },
+            { "pred", "String",
+                "Initializes the rules for Context Sensitive L-Systems." },
+            { "succ", "String",
+                "Initializes the rules for Context Sensitive L-Systems." },
+            { "lContext", "String",
+                "Initializes the rules for Context Sensitive L-Systems." },
+            { "rContext", "String",
+                "Initializes the rules for Context Sensitive L-Systems." }
+        };
+        return info;
+    }
+}
 
-  public String[][] getParameterInfo() {
-    String[][] info = {
-      {"level", "int", "Maximum number of recursions.  Default is 1."},
-      {"incremental","boolean","Whether or not to repaint between recursions.  Default is true."},
-      {"delay","integer","Sets delay between repaints.  Default is 50."},
-      {"startAngle","float","Sets the starting angle.  Default is 0."},
-      {"rotAngle","float","Sets the rotation angle.  Default is 45."},
-      {"border","integer","Width of border.  Default is 2."},
-      {"normalizeScale","boolean","Whether or not to normalize the scaling.  Default is true."},
-      {"pred","String","Initializes the rules for Context Sensitive L-Systems."},
-      {"succ","String","Initializes the rules for Context Sensitive L-Systems."},
-      {"lContext","String","Initializes the rules for Context Sensitive L-Systems."},
-      {"rContext","String","Initializes the rules for Context Sensitive L-Systems."}
-    };
-    return info;
-  }
-}
 
 /**
  * A Logo turtle class designed to support Context sensitive L-Systems.
@@ -271,6 +321,7 @@
  * @author      Jim Graham
  */
 class CLSTurtle {
+
     float angle;
     float X;
     float Y;
@@ -280,7 +331,7 @@
     int yoff;
 
     public CLSTurtle(float ang, float x, float y,
-                     int xorg, int yorg, float sx, float sy) {
+            int xorg, int yorg, float sx, float sy) {
         angle = ang;
         scaleX = sx;
         scaleY = sy;
@@ -313,12 +364,13 @@
         float x = X + (float) Math.cos(angle) * scaleX;
         float y = Y + (float) Math.sin(angle) * scaleY;
         g.drawLine((int) X + xoff, (int) Y + yoff,
-                   (int) x + xoff, (int) y + yoff);
+                (int) x + xoff, (int) y + yoff);
         X = x;
         Y = y;
     }
 }
 
+
 /**
  * A (non-)Context sensitive L-System class.
  *
@@ -330,22 +382,23 @@
  * @author      Jim Graham
  */
 class ContextLSystem {
+
     String axiom;
-    Vector rules = new Vector();
+    List<CLSRule> rules = new ArrayList<CLSRule>();
     int level;
 
     public ContextLSystem(java.applet.Applet app) {
         axiom = app.getParameter("axiom");
         int num = 1;
         while (true) {
-            String pred = app.getParameter("pred"+num);
-            String succ = app.getParameter("succ"+num);
+            String pred = app.getParameter("pred" + num);
+            String succ = app.getParameter("succ" + num);
             if (pred == null || succ == null) {
                 break;
             }
-            rules.addElement(new CLSRule(pred, succ,
-                                         app.getParameter("lContext"+num),
-                                         app.getParameter("rContext"+num)));
+            rules.add(new CLSRule(pred, succ,
+                    app.getParameter("lContext" + num),
+                    app.getParameter("rContext" + num)));
             num++;
         }
         currentPath = new StringBuffer(axiom);
@@ -355,7 +408,6 @@
     public int getLevel() {
         return level;
     }
-
     StringBuffer currentPath;
 
     public synchronized String getPath() {
@@ -385,7 +437,7 @@
 
     public CLSRule findRule(int pos) {
         for (int i = 0; i < rules.size(); i++) {
-            CLSRule rule = (CLSRule) rules.elementAt(i);
+            CLSRule rule = rules.get(i);
             if (rule.matches(currentPath, pos)) {
                 return rule;
             }
@@ -394,6 +446,7 @@
     }
 }
 
+
 /**
  * A Context sensitive L-System production rule.
  *
@@ -405,6 +458,7 @@
  * @author      Jim Graham
  */
 class CLSRule {
+
     String pred;
     String succ;
     String lContext;
--- a/jdk/src/share/demo/applets/Fractal/example1.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/Fractal/example1.html	Wed Apr 20 09:31:11 2011 -0700
@@ -5,7 +5,7 @@
   <body> 
       <h1>Fractals 1.1</h1>
       <hr>
-      <applet applet code="CLSFractal.class" width=500 height=120>
+      <applet code="CLSFractal.class" width=500 height=120>
 	<param name=level value="5">
 	<param name=rotangle value="45">
 	<param name=succ1 value="F-F++F-F">
--- a/jdk/src/share/demo/applets/GraphicsTest/AppletFrame.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/GraphicsTest/AppletFrame.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,8 +29,6 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
 import java.awt.Frame;
 import java.awt.Event;
@@ -38,66 +36,67 @@
 import java.applet.Applet;
 import java.awt.AWTEvent;
 
-// Applet to Application Frame window
-class AppletFrame extends Frame
-{
+
+/**
+ * Applet to Application Frame window
+ */
+@SuppressWarnings("serial")
+class AppletFrame extends Frame {
 
     public static void startApplet(String className,
-                                   String title,
-                                   String args[])
-    {
-       // local variables
-       Applet a;
-       Dimension appletSize;
+            String title,
+            String args[]) {
+        // local variables
+        Applet a;
+        Dimension appletSize;
 
-       try
-       {
-          // create an instance of your applet class
-          a = (Applet) Class.forName(className).newInstance();
-       }
-       catch (ClassNotFoundException e) { return; }
-       catch (InstantiationException e) { return; }
-       catch (IllegalAccessException e) { return; }
+        try {
+            // create an instance of your applet class
+            a = (Applet) Class.forName(className).newInstance();
+        } catch (ClassNotFoundException e) {
+            return;
+        } catch (InstantiationException e) {
+            return;
+        } catch (IllegalAccessException e) {
+            return;
+        }
 
-       // initialize the applet
-       a.init();
-       a.start();
+        // initialize the applet
+        a.init();
+        a.start();
 
-       // create new application frame window
-       AppletFrame f = new AppletFrame(title);
+        // create new application frame window
+        AppletFrame f = new AppletFrame(title);
 
-       // add applet to frame window
-       f.add("Center", a);
+        // add applet to frame window
+        f.add("Center", a);
 
-       // resize frame window to fit applet
-       // assumes that the applet sets its own size
-       // otherwise, you should set a specific size here.
-       appletSize =  a.getSize();
-       f.pack();
-       f.setSize(appletSize);
+        // resize frame window to fit applet
+        // assumes that the applet sets its own size
+        // otherwise, you should set a specific size here.
+        appletSize = a.getSize();
+        f.pack();
+        f.setSize(appletSize);
 
-       // show the window
-       f.show();
+        // show the window
+        f.setVisible(true);
 
     }  // end startApplet()
 
-
     // constructor needed to pass window title to class Frame
-    public AppletFrame(String name)
-    {
-       // call java.awt.Frame(String) constructor
-       super(name);
+    public AppletFrame(String name) {
+        // call java.awt.Frame(String) constructor
+        super(name);
     }
 
     // needed to allow window close
-    public void processEvent(AWTEvent e)
-    {
-       // Window Destroy event
-       if (e.getID() == Event.WINDOW_DESTROY)
-       {
-          // exit the program
-          System.exit(0);
-       }
-   }  // end handleEvent()
+    @Override
+    public void processEvent(AWTEvent e) {
+        // Window Destroy event
+        if (e.getID() == Event.WINDOW_DESTROY) {
+            // exit the program
+            System.exit(0);
+        }
+    }  // end handleEvent()
+}   // end class AppletFrame
 
-}   // end class AppletFrame
--- a/jdk/src/share/demo/applets/GraphicsTest/GraphicsTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/GraphicsTest/GraphicsTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,22 +29,23 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
 import java.awt.*;
 import java.util.*;
 import java.awt.event.*;
 import java.applet.Applet;
 
+
+@SuppressWarnings("serial")
 class GraphicsPanel extends Panel {
+
     ActionListener al;
     ItemListener il;
     public GraphicsCards cards;
 
-     GraphicsPanel(EventListener listener) {
-         al = (ActionListener)listener;
-         il = (ItemListener)listener;
+    GraphicsPanel(EventListener listener) {
+        al = (ActionListener) listener;
+        il = (ItemListener) listener;
 
         setLayout(new BorderLayout());
 
@@ -78,62 +79,75 @@
         setSize(400, 400);
     }
 
+    @Override
     public Dimension getPreferredSize() {
         return new Dimension(200, 100);
     }
 }
 
+
+@SuppressWarnings("serial")
 public class GraphicsTest extends Applet
-implements ActionListener, ItemListener {
+        implements ActionListener, ItemListener {
+
     GraphicsPanel mainPanel;
 
+    @Override
     public void init() {
         setLayout(new BorderLayout());
         add("Center", mainPanel = new GraphicsPanel(this));
     }
 
+    @Override
     public void destroy() {
         remove(mainPanel);
     }
 
+    @Override
     public void actionPerformed(ActionEvent e) {
         String arg = e.getActionCommand();
 
         if ("next".equals(arg)) {
-            ((CardLayout)mainPanel.cards.getLayout()).next(mainPanel.cards);
-        }
-        else if ("previous".equals(arg)) {
-            ((CardLayout)mainPanel.cards.getLayout()).previous(mainPanel.cards);
+            ((CardLayout) mainPanel.cards.getLayout()).next(mainPanel.cards);
+        } else if ("previous".equals(arg)) {
+            ((CardLayout) mainPanel.cards.getLayout()).previous(mainPanel.cards);
         }
     }
 
+    @Override
     public void itemStateChanged(ItemEvent e) {
-        ((CardLayout)mainPanel.cards.getLayout()).show(mainPanel.cards,(String)e.getItem());
+        ((CardLayout) mainPanel.cards.getLayout()).show(mainPanel.cards,
+                (String) e.getItem());
     }
 
     public static void main(String args[]) {
         AppletFrame.startApplet("GraphicsTest", "Graphics Test", args);
     }
 
+    @Override
     public String getAppletInfo() {
         return "An interactive demonstration of some graphics.";
     }
 }   // end class GraphicsTest
 
 
+@SuppressWarnings("serial")
 class GraphicsCards extends Panel {
+
     public GraphicsCards() {
         setLayout(new CardLayout());
         add("Arc", new ArcCard());
-        add("Oval", new ShapeTest( new OvalShape() ) );
-        add("Polygon", new ShapeTest( new PolygonShape() ) );
-        add("Rect", new ShapeTest( new RectShape() ) );
-        add("RoundRect", new ShapeTest( new RoundRectShape() ) );
+        add("Oval", new ShapeTest(new OvalShape()));
+        add("Polygon", new ShapeTest(new PolygonShape()));
+        add("Rect", new ShapeTest(new RectShape()));
+        add("RoundRect", new ShapeTest(new RoundRectShape()));
     }
 }   // end class GraphicsCards
 
 
+@SuppressWarnings("serial")
 class ArcCard extends Panel {
+
     public ArcCard() {
         setLayout(new GridLayout(0, 2));
         add(new ArcPanel(true));
@@ -144,7 +158,9 @@
 }   // end class ArcCard
 
 
+@SuppressWarnings("serial")
 class ArcDegreePanel extends Panel {
+
     boolean filled;
 
     public ArcDegreePanel(boolean filled) {
@@ -152,290 +168,262 @@
     }
 
     void arcSteps(Graphics g,
-                  int step,
-                  int x,
-                  int y,
-                  int w,
-                  int h,
-                  Color c1,
-                  Color c2) {
-    int a1 = 0;
-    int a2 = step;
-    int progress = 0;
-    g.setColor(c1);
-    for (; (a1+a2) <= 360; a1 = a1+a2, a2 += 1) {
-        if (g.getColor() == c1) {
-            g.setColor(c2);
-        }
-        else {
-            g.setColor(c1);
-        }
+            int step,
+            int x,
+            int y,
+            int w,
+            int h,
+            Color c1,
+            Color c2) {
+        int a1 = 0;
+        int a2 = step;
+        int progress = 0;
+        g.setColor(c1);
+        for (; (a1 + a2) <= 360; a1 = a1 + a2, a2 += 1) {
+            if (g.getColor() == c1) {
+                g.setColor(c2);
+            } else {
+                g.setColor(c1);
+            }
 
-        if (filled) {
-            g.fillArc(x, y, w, h, a1, a2);
-        }
-        else {
-            g.drawArc(x, y, w, h, a1, a2);
-        }
+            if (filled) {
+                g.fillArc(x, y, w, h, a1, a2);
+            } else {
+                g.drawArc(x, y, w, h, a1, a2);
+            }
 
-        progress = a1+a2;
-      }  // end for
+            progress = a1 + a2;
+        }  // end for
 
-    if (progress != 360) {
-          if (filled) {
-            g.fillArc(x, y, w, h, a1, 360 - progress);
-          }
-        else {
-            g.drawArc(x, y, w, h, a1, 360 - progress);
-        }
-      }  // end if
-  }  // end arcSteps()
+        if (progress != 360) {
+            if (filled) {
+                g.fillArc(x, y, w, h, a1, 360 - progress);
+            } else {
+                g.drawArc(x, y, w, h, a1, 360 - progress);
+            }
+        }  // end if
+    }  // end arcSteps()
 
+    @Override
     public void paint(Graphics g) {
         Rectangle r = getBounds();
 
         arcSteps(g, 3, 0, 0, r.width, r.height, Color.orange, Color.blue);
 
         arcSteps(g,
-                 2,
-                 r.width / 4,
-                 r.height / 4,
-                 r.width / 2,
-                 r.height / 2,
-                 Color.yellow,
-                 Color.green);
+                2,
+                r.width / 4,
+                r.height / 4,
+                r.width / 2,
+                r.height / 2,
+                Color.yellow,
+                Color.green);
 
         arcSteps(g,
-                 1,
-                 (r.width  * 3) / 8,
-                 (r.height * 3) / 8,
-                 r.width / 4,
-                 r.height / 4,
-                 Color.magenta,
-                 Color.white);
+                1,
+                (r.width * 3) / 8,
+                (r.height * 3) / 8,
+                r.width / 4,
+                r.height / 4,
+                Color.magenta,
+                Color.white);
 
-  }  // end paint()
+    }  // end paint()
 }   // end class ArcDegreePanel
 
 
+@SuppressWarnings("serial")
 class ArcPanel extends Panel {
+
     boolean filled;
 
     public ArcPanel(boolean filled) {
-    this.filled = filled;
-  }
+        this.filled = filled;
+    }
 
-  public void paint(Graphics g)
-  {
-    Rectangle r = getBounds();
+    @Override
+    public void paint(Graphics g) {
+        Rectangle r = getBounds();
 
-    g.setColor(Color.yellow);
-    if (filled)
-      {
-        g.fillArc(0, 0, r.width, r.height, 0, 45);
-      }
-    else
-      {
-        g.drawArc(0, 0, r.width, r.height, 0, 45);
-      }
+        g.setColor(Color.yellow);
+        if (filled) {
+            g.fillArc(0, 0, r.width, r.height, 0, 45);
+        } else {
+            g.drawArc(0, 0, r.width, r.height, 0, 45);
+        }
 
-    g.setColor(Color.green);
-    if (filled)
-      {
-        g.fillArc(0, 0, r.width, r.height, 90, -45);
-      }
-    else
-      {
-        g.drawArc(0, 0, r.width, r.height, 90, -45);
-      }
+        g.setColor(Color.green);
+        if (filled) {
+            g.fillArc(0, 0, r.width, r.height, 90, -45);
+        } else {
+            g.drawArc(0, 0, r.width, r.height, 90, -45);
+        }
 
-    g.setColor(Color.orange);
-    if (filled)
-      {
-        g.fillArc(0, 0, r.width, r.height, 135, -45);
-      }
-    else
-      {
-        g.drawArc(0, 0, r.width, r.height, 135, -45);
-      }
+        g.setColor(Color.orange);
+        if (filled) {
+            g.fillArc(0, 0, r.width, r.height, 135, -45);
+        } else {
+            g.drawArc(0, 0, r.width, r.height, 135, -45);
+        }
 
-    g.setColor(Color.magenta);
+        g.setColor(Color.magenta);
 
-    if (filled)
-      {
-        g.fillArc(0, 0, r.width, r.height, -225, 45);
-      }
-    else
-      {
-        g.drawArc(0, 0, r.width, r.height, -225, 45);
-      }
+        if (filled) {
+            g.fillArc(0, 0, r.width, r.height, -225, 45);
+        } else {
+            g.drawArc(0, 0, r.width, r.height, -225, 45);
+        }
 
-    g.setColor(Color.yellow);
-    if (filled)
-      {
-        g.fillArc(0, 0, r.width, r.height, 225, -45);
-      }
-    else
-      {
-        g.drawArc(0, 0, r.width, r.height, 225, -45);
-      }
+        g.setColor(Color.yellow);
+        if (filled) {
+            g.fillArc(0, 0, r.width, r.height, 225, -45);
+        } else {
+            g.drawArc(0, 0, r.width, r.height, 225, -45);
+        }
 
-    g.setColor(Color.green);
-    if (filled)
-      {
-        g.fillArc(0, 0, r.width, r.height, -135, 45);
-      }
-    else
-      {
-        g.drawArc(0, 0, r.width, r.height, -135, 45);
-      }
+        g.setColor(Color.green);
+        if (filled) {
+            g.fillArc(0, 0, r.width, r.height, -135, 45);
+        } else {
+            g.drawArc(0, 0, r.width, r.height, -135, 45);
+        }
 
-    g.setColor(Color.orange);
-    if (filled)
-      {
-        g.fillArc(0, 0, r.width, r.height, -45, -45);
-      }
-    else
-      {
-        g.drawArc(0, 0, r.width, r.height, -45, -45);
-      }
+        g.setColor(Color.orange);
+        if (filled) {
+            g.fillArc(0, 0, r.width, r.height, -45, -45);
+        } else {
+            g.drawArc(0, 0, r.width, r.height, -45, -45);
+        }
 
-    g.setColor(Color.magenta);
-    if (filled)
-      {
-        g.fillArc(0, 0, r.width, r.height, 315, 45);
-      }
-    else
-      {
-        g.drawArc(0, 0, r.width, r.height, 315, 45);
-      }
+        g.setColor(Color.magenta);
+        if (filled) {
+            g.fillArc(0, 0, r.width, r.height, 315, 45);
+        } else {
+            g.drawArc(0, 0, r.width, r.height, 315, 45);
+        }
 
-  }  // end paint()
-
+    }  // end paint()
 }   // end class ArcPanel
 
 
-abstract class Shape
-{
-  abstract void draw(Graphics g, int x, int y, int w, int h);
-  abstract void fill(Graphics g, int x, int y, int w, int h);
+abstract class Shape {
+
+    abstract void draw(Graphics g, int x, int y, int w, int h);
+
+    abstract void fill(Graphics g, int x, int y, int w, int h);
+}
+
+
+class RectShape extends Shape {
+
+    @Override
+    void draw(Graphics g, int x, int y, int w, int h) {
+        g.drawRect(x, y, w, h);
+    }
+
+    @Override
+    void fill(Graphics g, int x, int y, int w, int h) {
+        g.fillRect(x, y, w, h);
+    }
 }
 
 
-class RectShape extends Shape
-{
-  void draw(Graphics g, int x, int y, int w, int h)
-  {
-    g.drawRect(x, y, w, h);
-  }
+class OvalShape extends Shape {
 
-  void fill(Graphics g, int x, int y, int w, int h)
-  {
-    g.fillRect(x, y, w, h);
-  }
+    @Override
+    void draw(Graphics g, int x, int y, int w, int h) {
+        g.drawOval(x, y, w, h);
+    }
+
+    @Override
+    void fill(Graphics g, int x, int y, int w, int h) {
+        g.fillOval(x, y, w, h);
+    }
 }
 
 
-class OvalShape extends Shape
-{
-  void draw(Graphics g, int x, int y, int w, int h)
-  {
-    g.drawOval(x, y, w, h);
-  }
+class RoundRectShape extends Shape {
 
-  void fill(Graphics g, int x, int y, int w, int h)
-  {
-    g.fillOval(x, y, w, h);
-  }
+    @Override
+    void draw(Graphics g, int x, int y, int w, int h) {
+        g.drawRoundRect(x, y, w, h, 10, 10);
+    }
+
+    @Override
+    void fill(Graphics g, int x, int y, int w, int h) {
+        g.fillRoundRect(x, y, w, h, 10, 10);
+    }
 }
 
 
-class RoundRectShape extends Shape
-{
-  void draw(Graphics g, int x, int y, int w, int h)
-  {
-    g.drawRoundRect(x, y, w, h, 10, 10);
-  }
+class PolygonShape extends Shape {
+    // class variables
 
-  void fill(Graphics g, int x, int y, int w, int h)
-  {
-    g.fillRoundRect(x, y, w, h, 10, 10);
-  }
-}
+    Polygon p;
+    Polygon pBase;
 
-class PolygonShape extends Shape
-{
-  // class variables
-  Polygon p;
-  Polygon pBase;
+    public PolygonShape() {
+        pBase = new Polygon();
+        pBase.addPoint(0, 0);
+        pBase.addPoint(10, 0);
+        pBase.addPoint(5, 15);
+        pBase.addPoint(10, 20);
+        pBase.addPoint(5, 20);
+        pBase.addPoint(0, 10);
+        pBase.addPoint(0, 0);
+    }
 
-  public PolygonShape()
-  {
-    pBase = new Polygon();
-    pBase.addPoint(0, 0);
-    pBase.addPoint(10, 0);
-    pBase.addPoint(5, 15);
-    pBase.addPoint(10, 20);
-    pBase.addPoint(5, 20);
-    pBase.addPoint(0, 10);
-    pBase.addPoint(0, 0);
-  }
+    void scalePolygon(float w, float h) {
+        p = new Polygon();
+        for (int i = 0; i < pBase.npoints; ++i) {
+            p.addPoint((int) (pBase.xpoints[i] * w),
+                    (int) (pBase.ypoints[i] * h));
+        }
 
-  void scalePolygon(float w, float h)
-  {
-    p = new Polygon();
-    for (int i = 0; i < pBase.npoints; ++i)
-      {
-        p.addPoint( (int) (pBase.xpoints[i] * w),
-                    (int) (pBase.ypoints[i] * h) );
-      }
-
-  }
+    }
 
-  void draw(Graphics g, int x, int y, int w, int h)
-  {
-    Graphics ng = g.create();
-    try {
-        ng.translate(x, y);
-        scalePolygon( (float) ( (float) w / (float) 10 ),
-                      (float) ( (float) h / (float) 20 ) );
-        ng.drawPolygon(p);
-    } finally {
-        ng.dispose();
+    @Override
+    void draw(Graphics g, int x, int y, int w, int h) {
+        Graphics ng = g.create();
+        try {
+            ng.translate(x, y);
+            scalePolygon(((float) w / 10f), ((float) h / 20f));
+            ng.drawPolygon(p);
+        } finally {
+            ng.dispose();
+        }
     }
-  }
 
-  void fill(Graphics g, int x, int y, int w, int h)
-  {
-    Graphics ng = g.create();
-    try {
-        ng.translate(x, y);
-        scalePolygon( (float) ( (float) w / (float) 10 ),
-                      (float) ( (float) h / (float) 20 ) );
-        ng.fillPolygon(p);
-    } finally {
-        ng.dispose();
+    @Override
+    void fill(Graphics g, int x, int y, int w, int h) {
+        Graphics ng = g.create();
+        try {
+            ng.translate(x, y);
+            scalePolygon(((float) w / 10f), ((float) h / 20f));
+            ng.fillPolygon(p);
+        } finally {
+            ng.dispose();
+        }
     }
-  }
 }
 
 
-class ShapeTest extends Panel
-{
-  Shape   shape;
-  int       step;
+@SuppressWarnings("serial")
+class ShapeTest extends Panel {
+
+    Shape shape;
+    int step;
 
-  public ShapeTest(Shape shape, int step)
-  {
-    this.shape = shape;
-    this.step = step;
-  }
+    public ShapeTest(Shape shape, int step) {
+        this.shape = shape;
+        this.step = step;
+    }
 
-  public ShapeTest(Shape shape)
-  {
-    this(shape, 10);
-  }
+    public ShapeTest(Shape shape) {
+        this(shape, 10);
+    }
 
+    @Override
     public void paint(Graphics g) {
         Rectangle bounds = getBounds();
 
@@ -443,35 +431,22 @@
 
         Color color;
 
-        for (color=Color.red,
-                 cx=bounds.x,
-                 cy=bounds.y,
-                 cw=bounds.width / 2,
-                 ch=bounds.height;
-             cw > 0 && ch > 0;
-
-             cx+=step,
-                 cy += step,
-                 cw -= (step * 2),
-                 ch -= (step * 2),
-                 color=ColorUtils.darker(color, 0.9) ) {
+        for (color = Color.red, cx = bounds.x, cy = bounds.y,
+                cw = bounds.width / 2, ch = bounds.height;
+                cw > 0 && ch > 0;
+                cx += step, cy += step, cw -= (step * 2), ch -= (step * 2),
+                color = ColorUtils.darker(color, 0.9)) {
             g.setColor(color);
             shape.draw(g, cx, cy, cw, ch);
         }
 
-        for (cx=bounds.x + bounds.width / 2,
-                 cy=bounds.y,
-                 cw=bounds.width / 2, ch=bounds.height;
-             cw > 0 && ch > 0;
-
-             cx+=step,
-                 cy += step,
-                 cw -= (step * 2),
-                 ch -= (step * 2) ) {
+        for (cx = bounds.x + bounds.width / 2, cy = bounds.y,
+                cw = bounds.width / 2, ch = bounds.height;
+                cw > 0 && ch > 0;
+                cx += step, cy += step, cw -= (step * 2), ch -= (step * 2)) {
             if (g.getColor() == Color.red) {
                 g.setColor(Color.blue);
-            }
-            else {
+            } else {
                 g.setColor(Color.red);
             }
 
@@ -480,16 +455,18 @@
     }  // end paint()
 }   // end class ShapeTest
 
+
 class ColorUtils {
+
     static Color brighter(Color c, double factor) {
-        return new Color( Math.min((int)(c.getRed()  *(1/factor)), 255),
-                          Math.min((int)(c.getGreen()*(1/factor)), 255),
-                          Math.min((int)(c.getBlue() *(1/factor)), 255) );
+        return new Color(Math.min((int) (c.getRed() * (1 / factor)), 255),
+                Math.min((int) (c.getGreen() * (1 / factor)), 255),
+                Math.min((int) (c.getBlue() * (1 / factor)), 255));
     }
 
     static Color darker(Color c, double factor) {
-        return new Color( Math.max((int)(c.getRed()  *factor), 0),
-                          Math.max((int)(c.getGreen()*factor), 0),
-                          Math.max((int)(c.getBlue() *factor), 0) );
+        return new Color(Math.max((int) (c.getRed() * factor), 0),
+                Math.max((int) (c.getGreen() * factor), 0),
+                Math.max((int) (c.getBlue() * factor), 0));
     }
 }
--- a/jdk/src/share/demo/applets/MoleculeViewer/Matrix3D.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/MoleculeViewer/Matrix3D.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,22 +29,23 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
 /** A fairly conventional 3D matrix object that can transform sets of
-    3D points and perform a variety of manipulations on the transform */
+3D points and perform a variety of manipulations on the transform */
 class Matrix3D {
+
     float xx, xy, xz, xo;
     float yx, yy, yz, yo;
     float zx, zy, zz, zo;
     static final double pi = 3.14159265;
+
     /** Create a new unit matrix */
-    Matrix3D () {
+    Matrix3D() {
         xx = 1.0f;
         yy = 1.0f;
         zz = 1.0f;
     }
+
     /** Scale by f in all dimensions */
     void scale(float f) {
         xx *= f;
@@ -60,6 +61,7 @@
         zz *= f;
         zo *= f;
     }
+
     /** Scale along each axis independently */
     void scale(float xf, float yf, float zf) {
         xx *= xf;
@@ -75,12 +77,14 @@
         zz *= zf;
         zo *= zf;
     }
+
     /** Translate the origin */
     void translate(float x, float y, float z) {
         xo += x;
         yo += y;
         zo += z;
     }
+
     /** rotate theta degrees about the y axis */
     void yrot(double theta) {
         theta *= (pi / 180);
@@ -106,6 +110,7 @@
         zy = Nzy;
         zz = Nzz;
     }
+
     /** rotate theta degrees about the x axis */
     void xrot(double theta) {
         theta *= (pi / 180);
@@ -131,6 +136,7 @@
         zy = Nzy;
         zz = Nzz;
     }
+
     /** rotate theta degrees about the z axis */
     void zrot(double theta) {
         theta *= (pi / 180);
@@ -156,6 +162,7 @@
         xy = Nxy;
         xz = Nxz;
     }
+
     /** Multiply this matrix by a second: M = M*R */
     void mult(Matrix3D rhs) {
         float lxx = xx * rhs.xx + yx * rhs.xy + zx * rhs.xz;
@@ -204,10 +211,11 @@
         zy = 0;
         zz = 1;
     }
+
     /** Transform nvert points from v into tv.  v contains the input
-        coordinates in floating point.  Three successive entries in
-        the array constitute a point.  tv ends up holding the transformed
-        points as integers; three successive entries per point */
+    coordinates in floating point.  Three successive entries in
+    the array constitute a point.  tv ends up holding the transformed
+    points as integers; three successive entries per point */
     void transform(float v[], int tv[], int nvert) {
         float lxx = xx, lxy = xy, lxz = xz, lxo = xo;
         float lyx = yx, lyy = yy, lyz = yz, lyo = yo;
@@ -216,11 +224,13 @@
             float x = v[i];
             float y = v[i + 1];
             float z = v[i + 2];
-            tv[i    ] = (int) (x * lxx + y * lxy + z * lxz + lxo);
+            tv[i] = (int) (x * lxx + y * lxy + z * lxz + lxo);
             tv[i + 1] = (int) (x * lyx + y * lyy + z * lyz + lyo);
             tv[i + 2] = (int) (x * lzx + y * lzy + z * lzz + lzo);
         }
     }
+
+    @Override
     public String toString() {
         return ("[" + xo + "," + xx + "," + xy + "," + xz + ";"
                 + yo + "," + yx + "," + yy + "," + yz + ";"
--- a/jdk/src/share/demo/applets/MoleculeViewer/XYZApp.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/MoleculeViewer/XYZApp.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,37 +29,43 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
+
+import java.applet.Applet;
+import java.awt.Image;
+import java.awt.Graphics;
+import java.awt.Dimension;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+import java.net.URL;
+import java.awt.image.IndexColorModel;
+import java.awt.image.MemoryImageSource;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.StreamTokenizer;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
 
 /*
  * A set of classes to parse, represent and display Chemical compounds in
  * .xyz format (see http://chem.leeds.ac.uk/Project/MIME.html)
  */
+/** The representation of a Chemical .xyz model */
+final class XYZChemModel {
 
-import java.applet.Applet;
-import java.awt.Image;
-import java.awt.Event;
-import java.awt.Graphics;
-import java.awt.Dimension;
-import java.io.*;
-import java.net.URL;
-import java.util.Hashtable;
-import java.awt.image.IndexColorModel;
-import java.awt.image.ColorModel;
-import java.awt.image.MemoryImageSource;
-import java.awt.event.*;
-
-/** The representation of a Chemical .xyz model */
-class XYZChemModel {
     float vert[];
     Atom atoms[];
     int tvert[];
     int ZsortMap[];
     int nvert, maxvert;
+    static final Map<String, Atom> atomTable = new HashMap<String, Atom>();
+    static Atom defaultAtom;
 
-    static Hashtable atomTable = new Hashtable();
-    static Atom defaultAtom;
     static {
         atomTable.put("c", new Atom(0, 0, 0));
         atomTable.put("h", new Atom(210, 210, 210));
@@ -70,77 +76,72 @@
         atomTable.put("hn", new Atom(150, 255, 150)); /* !!*/
         defaultAtom = new Atom(255, 100, 200);
     }
-
     boolean transformed;
     Matrix3D mat;
-
     float xmin, xmax, ymin, ymax, zmin, zmax;
 
-
-    XYZChemModel () {
+    XYZChemModel() {
         mat = new Matrix3D();
         mat.xrot(20);
         mat.yrot(30);
     }
 
-
-    /** Create a Cehmical model by parsing an input stream */
-    XYZChemModel (InputStream is) throws Exception
-    {
-       this();
-       StreamTokenizer st = new StreamTokenizer(
-               new BufferedReader(new InputStreamReader(is, "UTF-8")));
-       st.eolIsSignificant(true);
-       st.commentChar('#');
-       int slot = 0;
+    /** Create a Chemical model by parsing an input stream */
+    XYZChemModel(InputStream is) throws Exception {
+        this();
+        StreamTokenizer st = new StreamTokenizer(
+                new BufferedReader(new InputStreamReader(is, "UTF-8")));
+        st.eolIsSignificant(true);
+        st.commentChar('#');
 
-       try
-       {
-scan:
-          while (true)
-          {
-             switch ( st.nextToken() )
-             {
-                case StreamTokenizer.TT_EOF:
-                   break scan;
-                default:
-                   break;
-                case StreamTokenizer.TT_WORD:
-                   String name = st.sval;
-                   double x = 0, y = 0, z = 0;
-                   if (st.nextToken() == StreamTokenizer.TT_NUMBER)
-                   {
-                      x = st.nval;
-                      if (st.nextToken() == StreamTokenizer.TT_NUMBER)
-                      {
-                         y = st.nval;
-                         if (st.nextToken() == StreamTokenizer.TT_NUMBER)
-                            z = st.nval;
-                      }
-                   }
-                   addVert(name, (float) x, (float) y, (float) z);
-                   while( st.ttype != StreamTokenizer.TT_EOL &&
-                          st.ttype != StreamTokenizer.TT_EOF )
-                      st.nextToken();
+        try {
+            scan:
+            while (true) {
+                switch (st.nextToken()) {
+                    case StreamTokenizer.TT_EOF:
+                        break scan;
+                    default:
+                        break;
+                    case StreamTokenizer.TT_WORD:
+                        String name = st.sval;
+                        double x = 0,
+                         y = 0,
+                         z = 0;
+                        if (st.nextToken() == StreamTokenizer.TT_NUMBER) {
+                            x = st.nval;
+                            if (st.nextToken() == StreamTokenizer.TT_NUMBER) {
+                                y = st.nval;
+                                if (st.nextToken() == StreamTokenizer.TT_NUMBER) {
+                                    z = st.nval;
+                                }
+                            }
+                        }
+                        addVert(name, (float) x, (float) y, (float) z);
+                        while (st.ttype != StreamTokenizer.TT_EOL
+                                && st.ttype != StreamTokenizer.TT_EOF) {
+                            st.nextToken();
+                        }
 
-             }   // end Switch
+                }   // end Switch
 
-          }  // end while
+            }  // end while
 
-          is.close();
+            is.close();
 
-       }  // end Try
-       catch( IOException e) {}
+        } // end Try
+        catch (IOException e) {
+        }
 
-       if (st.ttype != StreamTokenizer.TT_EOF)
-          throw new Exception(st.toString());
+        if (st.ttype != StreamTokenizer.TT_EOF) {
+            throw new Exception(st.toString());
+        }
 
     }  // end XYZChemModel()
 
     /** Add a vertex to this model */
     int addVert(String name, float x, float y, float z) {
         int i = nvert;
-        if (i >= maxvert)
+        if (i >= maxvert) {
             if (vert == null) {
                 maxvert = 100;
                 vert = new float[maxvert * 3];
@@ -154,8 +155,11 @@
                 System.arraycopy(atoms, 0, na, 0, atoms.length);
                 atoms = na;
             }
-        Atom a = (Atom) atomTable.get(name.toLowerCase());
-        if (a == null) a = defaultAtom;
+        }
+        Atom a = atomTable.get(name.toLowerCase());
+        if (a == null) {
+            a = defaultAtom;
+        }
         atoms[i] = a;
         i *= 3;
         vert[i] = x;
@@ -166,29 +170,32 @@
 
     /** Transform all the points in this model */
     void transform() {
-        if (transformed || nvert <= 0)
+        if (transformed || nvert <= 0) {
             return;
-        if (tvert == null || tvert.length < nvert * 3)
+        }
+        if (tvert == null || tvert.length < nvert * 3) {
             tvert = new int[nvert * 3];
+        }
         mat.transform(vert, tvert, nvert);
         transformed = true;
     }
 
-
     /** Paint this model to a graphics context.  It uses the matrix associated
-        with this model to map from model space to screen space.
-        The next version of the browser should have double buffering,
-        which will make this *much* nicer */
+    with this model to map from model space to screen space.
+    The next version of the browser should have double buffering,
+    which will make this *much* nicer */
     void paint(Graphics g) {
-        if (vert == null || nvert <= 0)
+        if (vert == null || nvert <= 0) {
             return;
+        }
         transform();
         int v[] = tvert;
         int zs[] = ZsortMap;
         if (zs == null) {
             ZsortMap = zs = new int[nvert];
-            for (int i = nvert; --i >= 0;)
+            for (int i = nvert; --i >= 0;) {
                 zs[i] = i * 3;
+            }
         }
 
         /*
@@ -209,24 +216,26 @@
                     flipped = true;
                 }
             }
-            if (!flipped)
+            if (!flipped) {
                 break;
+            }
         }
 
-        int lg = 0;
         int lim = nvert;
-        Atom ls[] = atoms;
-        if (lim <= 0 || nvert <= 0)
+        if (lim <= 0 || nvert <= 0) {
             return;
+        }
         for (int i = 0; i < lim; i++) {
             int j = zs[i];
             int grey = v[j + 2];
-            if (grey < 0)
+            if (grey < 0) {
                 grey = 0;
-            if (grey > 15)
+            }
+            if (grey > 15) {
                 grey = 15;
+            }
             // g.drawString(names[i], v[j], v[j+1]);
-            atoms[j/3].paint(g, v[j], v[j + 1], grey);
+            atoms[j / 3].paint(g, v[j], v[j + 1], grey);
             // g.drawImage(iBall, v[j] - (iBall.width >> 1), v[j + 1] -
             // (iBall.height >> 1));
         }
@@ -234,47 +243,55 @@
 
     /** Find the bounding box of this model */
     void findBB() {
-        if (nvert <= 0)
+        if (nvert <= 0) {
             return;
+        }
         float v[] = vert;
-        float xmin = v[0], xmax = xmin;
-        float ymin = v[1], ymax = ymin;
-        float zmin = v[2], zmax = zmin;
+        float _xmin = v[0], _xmax = _xmin;
+        float _ymin = v[1], _ymax = _ymin;
+        float _zmin = v[2], _zmax = _zmin;
         for (int i = nvert * 3; (i -= 3) > 0;) {
             float x = v[i];
-            if (x < xmin)
-                xmin = x;
-            if (x > xmax)
-                xmax = x;
+            if (x < _xmin) {
+                _xmin = x;
+            }
+            if (x > _xmax) {
+                _xmax = x;
+            }
             float y = v[i + 1];
-            if (y < ymin)
-                ymin = y;
-            if (y > ymax)
-                ymax = y;
+            if (y < _ymin) {
+                _ymin = y;
+            }
+            if (y > _ymax) {
+                _ymax = y;
+            }
             float z = v[i + 2];
-            if (z < zmin)
-                zmin = z;
-            if (z > zmax)
-                zmax = z;
+            if (z < _zmin) {
+                _zmin = z;
+            }
+            if (z > _zmax) {
+                _zmax = z;
+            }
         }
-        this.xmax = xmax;
-        this.xmin = xmin;
-        this.ymax = ymax;
-        this.ymin = ymin;
-        this.zmax = zmax;
-        this.zmin = zmin;
+        this.xmax = _xmax;
+        this.xmin = _xmin;
+        this.ymax = _ymax;
+        this.ymin = _ymin;
+        this.zmax = _zmax;
+        this.zmin = _zmin;
     }
 }
 
+
 /** An applet to put a Chemical model into a page */
-public class XYZApp
-    extends Applet
-    implements Runnable, MouseListener, MouseMotionListener {
+@SuppressWarnings("serial")
+public class XYZApp extends Applet implements Runnable, MouseListener,
+        MouseMotionListener {
+
     XYZChemModel md;
     boolean painted = true;
     float xfac;
     int prevx, prevy;
-    float xtheta, ytheta;
     float scalefudge = 1;
     Matrix3D amat = new Matrix3D(), tmat = new Matrix3D();
     String mdname = null;
@@ -283,7 +300,6 @@
     Graphics backGC;
     Dimension backSize;
 
-
     private synchronized void newBackBuffer() {
         backBuffer = createImage(getSize().width, getSize().height);
         if (backGC != null) {
@@ -293,164 +309,190 @@
         backSize = getSize();
     }
 
+    @Override
     public void init() {
         mdname = getParameter("model");
         try {
             scalefudge = Float.valueOf(getParameter("scale")).floatValue();
-        } catch(Exception e) {
-        };
+        } catch (Exception ignored) {
+        }
         amat.yrot(20);
         amat.xrot(20);
-        if (mdname == null)
+        if (mdname == null) {
             mdname = "model.obj";
+        }
         resize(getSize().width <= 20 ? 400 : getSize().width,
-               getSize().height <= 20 ? 400 : getSize().height);
+                getSize().height <= 20 ? 400 : getSize().height);
         newBackBuffer();
         addMouseListener(this);
         addMouseMotionListener(this);
     }
 
+    @Override
     public void destroy() {
         removeMouseListener(this);
         removeMouseMotionListener(this);
     }
 
+    @Override
     public void run() {
         InputStream is = null;
         try {
             Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
             is = new URL(getDocumentBase(), mdname).openStream();
-            XYZChemModel m = new XYZChemModel (is);
+            XYZChemModel m = new XYZChemModel(is);
             Atom.setApplet(this);
             md = m;
             m.findBB();
             float xw = m.xmax - m.xmin;
             float yw = m.ymax - m.ymin;
             float zw = m.zmax - m.zmin;
-            if (yw > xw)
+            if (yw > xw) {
                 xw = yw;
-            if (zw > xw)
+            }
+            if (zw > xw) {
                 xw = zw;
+            }
             float f1 = getSize().width / xw;
             float f2 = getSize().height / xw;
             xfac = 0.7f * (f1 < f2 ? f1 : f2) * scalefudge;
-        } catch(Exception e) {
-            e.printStackTrace();
+        } catch (Exception e) {
+            Logger.getLogger(XYZApp.class.getName()).log(Level.SEVERE, null, e);
             md = null;
             message = e.toString();
         }
         try {
-            if (is != null)
+            if (is != null) {
                 is.close();
-        } catch(Exception e) {
+            }
+        } catch (Exception ignored) {
         }
         repaint();
     }
+
+    @Override
     public void start() {
-        if (md == null && message == null)
+        if (md == null && message == null) {
             new Thread(this).start();
+        }
     }
+
+    @Override
     public void stop() {
     }
-      /* event handling */
-  public void mouseClicked(MouseEvent e) {
-  }
-  public void mousePressed(MouseEvent e) {
-    prevx = e.getX();
-    prevy = e.getY();
-    e.consume();
-  }
-  public void mouseReleased(MouseEvent e) {
-  }
-  public void mouseEntered(MouseEvent e) {
-  }
-  public void mouseExited(MouseEvent e) {
-  }
-  public void mouseDragged(MouseEvent e) {
-    int x = e.getX();
-    int y = e.getY();
-    tmat.unit();
-    float xtheta = (prevy - y) * (360.0f / getSize().width);
-    float ytheta = (x - prevx) * (360.0f / getSize().height);
-    tmat.xrot(xtheta);
-    tmat.yrot(ytheta);
-    amat.mult(tmat);
-    if (painted) {
-      painted = false;
-      repaint();
+    /* event handling */
+
+    @Override
+    public void mouseClicked(MouseEvent e) {
+    }
+
+    @Override
+    public void mousePressed(MouseEvent e) {
+        prevx = e.getX();
+        prevy = e.getY();
+        e.consume();
+    }
+
+    @Override
+    public void mouseReleased(MouseEvent e) {
+    }
+
+    @Override
+    public void mouseEntered(MouseEvent e) {
+    }
+
+    @Override
+    public void mouseExited(MouseEvent e) {
     }
-    prevx = x;
-    prevy = y;
-    e.consume();
-  }
-  public void mouseMoved(MouseEvent e) {
-  }
 
+    @Override
+    public void mouseDragged(MouseEvent e) {
+        int x = e.getX();
+        int y = e.getY();
+        tmat.unit();
+        float xtheta = (prevy - y) * (360.0f / getSize().width);
+        float ytheta = (x - prevx) * (360.0f / getSize().height);
+        tmat.xrot(xtheta);
+        tmat.yrot(ytheta);
+        amat.mult(tmat);
+        if (painted) {
+            painted = false;
+            repaint();
+        }
+        prevx = x;
+        prevy = y;
+        e.consume();
+    }
+
+    @Override
+    public void mouseMoved(MouseEvent e) {
+    }
+
+    @Override
     public void update(Graphics g) {
-        if (backBuffer == null)
+        if (backBuffer == null) {
             g.clearRect(0, 0, getSize().width, getSize().height);
+        }
         paint(g);
     }
 
+    @Override
     public void paint(Graphics g) {
         if (md != null) {
             md.mat.unit();
             md.mat.translate(-(md.xmin + md.xmax) / 2,
-                             -(md.ymin + md.ymax) / 2,
-                             -(md.zmin + md.zmax) / 2);
+                    -(md.ymin + md.ymax) / 2,
+                    -(md.zmin + md.zmax) / 2);
             md.mat.mult(amat);
             // md.mat.scale(xfac, -xfac, 8 * xfac / getSize().width);
             md.mat.scale(xfac, -xfac, 16 * xfac / getSize().width);
             md.mat.translate(getSize().width / 2, getSize().height / 2, 8);
             md.transformed = false;
             if (backBuffer != null) {
-                if (!backSize.equals(getSize()))
+                if (!backSize.equals(getSize())) {
                     newBackBuffer();
+                }
                 backGC.setColor(getBackground());
-                backGC.fillRect(0,0,getSize().width,getSize().height);
+                backGC.fillRect(0, 0, getSize().width, getSize().height);
                 md.paint(backGC);
                 g.drawImage(backBuffer, 0, 0, this);
+            } else {
+                md.paint(g);
             }
-            else
-                md.paint(g);
             setPainted();
         } else if (message != null) {
             g.drawString("Error in model:", 3, 20);
             g.drawString(message, 10, 40);
         }
     }
+
     private synchronized void setPainted() {
         painted = true;
         notifyAll();
     }
 
-    private synchronized void waitPainted()
-    {
-       while (!painted)
-       {
-          try
-          {
-             wait();
-          }
-          catch (InterruptedException e) {}
-       }
-       painted = false;
+    @Override
+    public String getAppletInfo() {
+        return "Title: XYZApp \nAuthor: James Gosling \nAn applet to put"
+                + " a Chemical model into a page.";
     }
 
-  public String getAppletInfo() {
-    return "Title: XYZApp \nAuthor: James Gosling \nAn applet to put a Chemical model into a page.";
-  }
-
-  public String[][] getParameterInfo() {
-    String[][] info = {
-      {"model", "path string", "The path to the model to be displayed in .xyz format (see http://chem.leeds.ac.uk/Project/MIME.html).  Default is model.obj."},
-      {"scale", "float", "Scale factor.  Default is 1 (i.e. no scale)."}
-    };
-    return info;
-  }
+    @Override
+    public String[][] getParameterInfo() {
+        String[][] info = {
+            { "model", "path string", "The path to the model to be displayed"
+                + " in .xyz format "
+                + "(see http://chem.leeds.ac.uk/Project/MIME.html)."
+                + "  Default is model.obj." },
+            { "scale", "float", "Scale factor.  Default is 1 (i.e. no scale)." }
+        };
+        return info;
+    }
 }   // end class XYZApp
 
+
 class Atom {
+
     private static Applet applet;
     private static byte[] data;
     private final static int R = 40;
@@ -459,7 +501,6 @@
     private final static int bgGrey = 192;
     private final static int nBalls = 16;
     private static int maxr;
-
     private int Rl;
     private int Gl;
     private int Bl;
@@ -475,24 +516,29 @@
                 int x = X + hx;
                 int y = Y - R + hy;
                 int r = (int) (Math.sqrt(x * x + y * y) + 0.5);
-                if (r > mr)
+                if (r > mr) {
                     mr = r;
+                }
                 data[p++] = r <= 0 ? 1 : (byte) r;
             }
         }
         maxr = mr;
     }
+
     static void setApplet(Applet app) {
         applet = app;
     }
+
     Atom(int Rl, int Gl, int Bl) {
         this.Rl = Rl;
         this.Gl = Gl;
         this.Bl = Bl;
     }
-    private final int blend(int fg, int bg, float fgfactor) {
+
+    private int blend(int fg, int bg, float fgfactor) {
         return (int) (bg + (fg - bg) * fgfactor);
     }
+
     private void Setup() {
         balls = new Image[nBalls];
         byte red[] = new byte[256];
@@ -502,7 +548,7 @@
         byte blue[] = new byte[256];
         blue[0] = (byte) bgGrey;
         for (int r = 0; r < nBalls; r++) {
-            float b = (float) (r+1) / nBalls;
+            float b = (float) (r + 1) / nBalls;
             for (int i = maxr; i >= 1; --i) {
                 float d = (float) i / maxr;
                 red[i] = (byte) blend(blend(Rl, 255, d), bgGrey, b);
@@ -510,11 +556,12 @@
                 blue[i] = (byte) blend(blend(Bl, 255, d), bgGrey, b);
             }
             IndexColorModel model = new IndexColorModel(8, maxr + 1,
-                                                        red, green, blue, 0);
+                    red, green, blue, 0);
             balls[r] = applet.createImage(
-                new MemoryImageSource(R*2, R*2, model, data, 0, R*2));
+                    new MemoryImageSource(R * 2, R * 2, model, data, 0, R * 2));
         }
     }
+
     void paint(Graphics gc, int x, int y, int r) {
         Image ba[] = balls;
         if (ba == null) {
--- a/jdk/src/share/demo/applets/MoleculeViewer/example1.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/MoleculeViewer/example1.html	Wed Apr 20 09:31:11 2011 -0700
@@ -6,7 +6,7 @@
       <h1>MoleculeViewer (example 1)</h1>
       <hr>
       <applet code=XYZApp.class width=300 height=300>
-	<param name=model value=models/HyaluronicAcid.xyz>
+	<param name=model value="models/HyaluronicAcid.xyz">
 	alt="Your browser understands the &lt;APPLET&gt; tag but isn't running the applet, for some reason."
 	Your browser is completely ignoring the &lt;APPLET&gt; tag!
       </applet>
--- a/jdk/src/share/demo/applets/MoleculeViewer/example2.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/MoleculeViewer/example2.html	Wed Apr 20 09:31:11 2011 -0700
@@ -6,7 +6,7 @@
       <h1>MoleculeViewer (example 2)</h1>
       <hr>
       <applet code=XYZApp.class width=300 height=300>
-	<param name=model value=models/buckminsterfullerine.xyz>
+	<param name=model value="models/buckminsterfullerine.xyz">
 	  alt="Your browser understands the &lt;APPLET&gt; tag but isn't running the applet, for some reason."
 	  Your browser is completely ignoring the &lt;APPLET&gt; tag!
       </applet>
--- a/jdk/src/share/demo/applets/MoleculeViewer/example3.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/MoleculeViewer/example3.html	Wed Apr 20 09:31:11 2011 -0700
@@ -6,25 +6,25 @@
       <h1>MoleculeViewer (example 3)</h1>
       <hr>
       <applet code=XYZApp.class width=100 height=100>
-	<param name=model value=models/water.xyz>
+	<param name=model value="models/water.xyz">
 	alt="Your browser understands the &lt;APPLET&gt; tag but isn't running the applet, for some reason."
 	Your browser is completely ignoring the &lt;APPLET&gt; tag!
       </applet>
       <p>
 	<applet code=XYZApp.class width=100 height=100>
-	  <param name=model value=models/benzene.xyz>
+          <param name=model value="models/benzene.xyz">
 	  alt="Your browser understands the &lt;APPLET&gt; tag but isn't running the applet, for some reason."
 	  Your browser is completely ignoring the &lt;APPLET&gt; tag!
 	</applet>
       <p>
 	<applet code=XYZApp.class width=100 height=100>
-	  <param name=model value=models/ethane.xyz>
+	  <param name=model value="models/ethane.xyz">
 	  alt="Your browser understands the &lt;APPLET&gt; tag but isn't running the applet, for some reason."
 	  Your browser is completely ignoring the &lt;APPLET&gt; tag!
 	</applet>
       <p>
 	<applet code=XYZApp.class width=100 height=100>
-	  <param name=model value=models/cyclohexane.xyz>
+	  <param name=model value="models/cyclohexane.xyz">
 	  alt="Your browser understands the &lt;APPLET&gt; tag but isn't running the applet, for some reason."
 	  Your browser is completely ignoring the &lt;APPLET&gt; tag!
 	</applet>
--- a/jdk/src/share/demo/applets/NervousText/NervousText.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/NervousText/NervousText.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,37 +29,37 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
-import java.awt.event.*;
 import java.awt.Graphics;
 import java.awt.Font;
 import java.applet.Applet;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+
 
 /**
  * An applet that displays jittering text on the screen.
  *
  * @author Daniel Wyszynski 04/12/95
- * @modified 05/09/95 kwalrath Changed string; added thread suspension
- * @modified 02/06/98 madbot removed use of suspend and resume and cleaned up
+ * @author 05/09/95 kwalrath Changed string; added thread suspension
+ * @author 02/06/98 madbot removed use of suspend and resume and cleaned up
  */
+@SuppressWarnings("serial")
+public class NervousText extends Applet implements Runnable, MouseListener {
 
-public class NervousText extends Applet implements Runnable, MouseListener {
     String banner;              // The text to be displayed
     char bannerChars[];         // The same text as an array of characters
     char attributes[];          // Character attributes ('^' for superscript)
     Thread runner = null;       // The thread that is displaying the text
     boolean threadSuspended;    // True when thread suspended (via mouse click)
-
     static final int REGULAR_WD = 15;
     static final int REGULAR_HT = 36;
     static final int SMALL_WD = 12;
     static final int SMALL_HT = 24;
-
     Font regularFont = new Font("Serif", Font.BOLD, REGULAR_HT);
     Font smallFont = new Font("Serif", Font.BOLD, SMALL_HT);
 
+    @Override
     public void init() {
         banner = getParameter("text");
         if (banner == null) {
@@ -67,8 +67,8 @@
         }
 
         int bannerLength = banner.length();
-        StringBuffer bc = new StringBuffer(bannerLength);
-        StringBuffer attrs = new StringBuffer(bannerLength);
+        StringBuilder bc = new StringBuilder(bannerLength);
+        StringBuilder attrs = new StringBuilder(bannerLength);
         int wd = 0;
         for (int i = 0; i < bannerLength; i++) {
             char c = banner.charAt(i);
@@ -89,7 +89,7 @@
         }
 
         bannerLength = bc.length();
-        bannerChars =  new char[bannerLength];
+        bannerChars = new char[bannerLength];
         attributes = new char[bannerLength];
         bc.getChars(0, bannerLength, bannerChars, 0);
         attrs.getChars(0, bannerLength, attributes, 0);
@@ -99,15 +99,18 @@
         addMouseListener(this);
     }
 
+    @Override
     public void destroy() {
         removeMouseListener(this);
     }
 
+    @Override
     public void start() {
         runner = new Thread(this);
         runner.start();
     }
 
+    @Override
     public synchronized void stop() {
         runner = null;
         if (threadSuspended) {
@@ -116,22 +119,24 @@
         }
     }
 
+    @Override
     public void run() {
         Thread me = Thread.currentThread();
         while (runner == me) {
             try {
                 Thread.sleep(100);
-                synchronized(this) {
+                synchronized (this) {
                     while (threadSuspended) {
                         wait();
                     }
                 }
-            } catch (InterruptedException e){
+            } catch (InterruptedException e) {
             }
             repaint();
         }
     }
 
+    @Override
     public void paint(Graphics g) {
         int length = bannerChars.length;
         for (int i = 0, x = 0; i < length; i++) {
@@ -152,33 +157,41 @@
         }
     }
 
+    @Override
     public synchronized void mousePressed(MouseEvent e) {
         e.consume();
         threadSuspended = !threadSuspended;
-        if (!threadSuspended)
+        if (!threadSuspended) {
             notify();
+        }
     }
 
+    @Override
     public void mouseReleased(MouseEvent e) {
     }
 
+    @Override
     public void mouseEntered(MouseEvent e) {
     }
 
+    @Override
     public void mouseExited(MouseEvent e) {
     }
 
+    @Override
     public void mouseClicked(MouseEvent e) {
     }
 
+    @Override
     public String getAppletInfo() {
-        return "Title: NervousText\nAuthor: Daniel Wyszynski\nDisplays a text banner that jitters.";
+        return "Title: NervousText\nAuthor: Daniel Wyszynski\n"
+                + "Displays a text banner that jitters.";
     }
 
+    @Override
     public String[][] getParameterInfo() {
         String pinfo[][] = {
-            {"text", "string", "Text to display"},
-        };
+            { "text", "string", "Text to display" }, };
         return pinfo;
     }
 }
--- a/jdk/src/share/demo/applets/SimpleGraph/GraphApplet.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/SimpleGraph/GraphApplet.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,22 +29,26 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
 import java.awt.Graphics;
 
+
+@SuppressWarnings("serial")
 public class GraphApplet extends java.applet.Applet {
+
     double f(double x) {
-        return (Math.cos(x/5) + Math.sin(x/7) + 2) * getSize().height / 4;
+        return (Math.cos(x / 5) + Math.sin(x / 7) + 2) * getSize().height / 4;
     }
 
+    @Override
     public void paint(Graphics g) {
-        for (int x = 0 ; x < getSize().width ; x++) {
-            g.drawLine(x, (int)f(x), x + 1, (int)f(x + 1));
+        for (int x = 0; x < getSize().width; x++) {
+            g.drawLine(x, (int) f(x), x + 1, (int) f(x + 1));
         }
     }
-  public String getAppletInfo() {
-    return "Draws a sin graph.";
-  }
+
+    @Override
+    public String getAppletInfo() {
+        return "Draws a sin graph.";
+    }
 }
--- a/jdk/src/share/demo/applets/SortDemo/BidirBubbleSortAlgorithm.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/SortDemo/BidirBubbleSortAlgorithm.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,8 +29,6 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
 /**
  * A bi-directional bubble sort demonstration algorithm
@@ -39,6 +37,8 @@
  * @author James Gosling
  */
 class BidirBubbleSortAlgorithm extends SortAlgorithm {
+
+    @Override
     void sort(int a[]) throws Exception {
         int j;
         int limit = a.length;
@@ -61,9 +61,9 @@
             }
             if (!swapped) {
                 return;
+            } else {
+                swapped = false;
             }
-            else
-                swapped = false;
             for (j = limit; --j >= st;) {
                 if (stopRequested) {
                     return;
--- a/jdk/src/share/demo/applets/SortDemo/BubbleSortAlgorithm.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/SortDemo/BubbleSortAlgorithm.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,8 +29,6 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
 /**
  * A bubble sort demonstration algorithm
@@ -39,23 +37,26 @@
  * @author James Gosling
  */
 class BubbleSortAlgorithm extends SortAlgorithm {
+
+    @Override
     void sort(int a[]) throws Exception {
-        for (int i = a.length; --i>=0; ) {
+        for (int i = a.length; --i >= 0;) {
             boolean swapped = false;
-            for (int j = 0; j<i; j++) {
+            for (int j = 0; j < i; j++) {
                 if (stopRequested) {
                     return;
                 }
-                if (a[j] > a[j+1]) {
+                if (a[j] > a[j + 1]) {
                     int T = a[j];
-                    a[j] = a[j+1];
-                    a[j+1] = T;
+                    a[j] = a[j + 1];
+                    a[j + 1] = T;
                     swapped = true;
                 }
-                pause(i,j);
+                pause(i, j);
             }
-            if (!swapped)
+            if (!swapped) {
                 return;
+            }
         }
     }
 }
--- a/jdk/src/share/demo/applets/SortDemo/QSortAlgorithm.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/SortDemo/QSortAlgorithm.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,8 +29,6 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
 /**
  * A quick sort demonstration algorithm
@@ -39,8 +37,7 @@
  * @author James Gosling
  * @author Kevin A. Smith
  */
-public class QSortAlgorithm extends SortAlgorithm
-{
+public class QSortAlgorithm extends SortAlgorithm {
 
     /**
      * A version of pause() that makes it easier to ensure that we pause
@@ -51,84 +48,83 @@
         return true;
     }
 
-   /** This is a generic version of C.A.R Hoare's Quick Sort
-    * algorithm.  This will handle arrays that are already
-    * sorted, and arrays with duplicate keys.<BR>
-    *
-    * If you think of a one dimensional array as going from
-    * the lowest index on the left to the highest index on the right
-    * then the parameters to this function are lowest index or
-    * left and highest index or right.  The first time you call
-    * this function it will be with the parameters 0, a.length - 1.
-    *
-    * @param a       an integer array
-    * @param lo0     left boundary of array partition
-    * @param hi0     right boundary of array partition
-    */
-   void QuickSort(int a[], int lo0, int hi0) throws Exception
-   {
-      int lo = lo0;
-      int hi = hi0;
-      int mid;
+    /** This is a generic version of C.A.R Hoare's Quick Sort
+     * algorithm.  This will handle arrays that are already
+     * sorted, and arrays with duplicate keys.<BR>
+     *
+     * If you think of a one dimensional array as going from
+     * the lowest index on the left to the highest index on the right
+     * then the parameters to this function are lowest index or
+     * left and highest index or right.  The first time you call
+     * this function it will be with the parameters 0, a.length - 1.
+     *
+     * @param a       an integer array
+     * @param lo0     left boundary of array partition
+     * @param hi0     right boundary of array partition
+     */
+    void QuickSort(int a[], int lo0, int hi0) throws Exception {
+        int lo = lo0;
+        int hi = hi0;
+        int mid;
 
-      if ( hi0 > lo0)
-      {
-
-         /* Arbitrarily establishing partition element as the midpoint of
-          * the array.
-          */
-         mid = a[ ( lo0 + hi0 ) / 2 ];
+        if (hi0 > lo0) {
 
-         // loop through the array until indices cross
-         while( lo <= hi )
-         {
-            /* find the first element that is greater than or equal to
-             * the partition element starting from the left Index.
-             */
-             while( ( lo < hi0 ) && pauseTrue(lo0, hi0) && ( a[lo] < mid ))
-                 ++lo;
-
-            /* find an element that is smaller than or equal to
-             * the partition element starting from the right Index.
+            /* Arbitrarily establishing partition element as the midpoint of
+             * the array.
              */
-             while( ( hi > lo0 ) && pauseTrue(lo0, hi0) && ( a[hi] > mid ))
-                 --hi;
+            mid = a[(lo0 + hi0) / 2];
+
+            // loop through the array until indices cross
+            while (lo <= hi) {
+                /* find the first element that is greater than or equal to
+                 * the partition element starting from the left Index.
+                 */
+                while ((lo < hi0) && pauseTrue(lo0, hi0) && (a[lo] < mid)) {
+                    ++lo;
+                }
 
-            // if the indexes have not crossed, swap
-            if( lo <= hi )
-            {
-               swap(a, lo, hi);
-               ++lo;
-               --hi;
+                /* find an element that is smaller than or equal to
+                 * the partition element starting from the right Index.
+                 */
+                while ((hi > lo0) && pauseTrue(lo0, hi0) && (a[hi] > mid)) {
+                    --hi;
+                }
+
+                // if the indexes have not crossed, swap
+                if (lo <= hi) {
+                    swap(a, lo, hi);
+                    ++lo;
+                    --hi;
+                }
             }
-         }
-
-         /* If the right index has not reached the left side of array
-          * must now sort the left partition.
-          */
-         if( lo0 < hi )
-            QuickSort( a, lo0, hi );
 
-         /* If the left index has not reached the right side of array
-          * must now sort the right partition.
-          */
-         if( lo < hi0 )
-            QuickSort( a, lo, hi0 );
+            /* If the right index has not reached the left side of array
+             * must now sort the left partition.
+             */
+            if (lo0 < hi) {
+                QuickSort(a, lo0, hi);
+            }
 
-      }
-   }
+            /* If the left index has not reached the right side of array
+             * must now sort the right partition.
+             */
+            if (lo < hi0) {
+                QuickSort(a, lo, hi0);
+            }
 
-   private void swap(int a[], int i, int j)
-   {
-      int T;
-      T = a[i];
-      a[i] = a[j];
-      a[j] = T;
+        }
+    }
 
-   }
+    private void swap(int a[], int i, int j) {
+        int T;
+        T = a[i];
+        a[i] = a[j];
+        a[j] = T;
 
-   public void sort(int a[]) throws Exception
-   {
-      QuickSort(a, 0, a.length - 1);
-   }
+    }
+
+    @Override
+    public void sort(int a[]) throws Exception {
+        QuickSort(a, 0, a.length - 1);
+    }
 }
--- a/jdk/src/share/demo/applets/SortDemo/SortAlgorithm.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/SortDemo/SortAlgorithm.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,8 +29,6 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
 /**
  * A generic sort demonstration algorithm
@@ -38,13 +36,12 @@
  *
  * @author James Gosling
  */
+class SortAlgorithm {
 
-class SortAlgorithm {
     /**
      * The sort item.
      */
     private SortItem parent;
-
     /**
      * When true stop sorting.
      */
--- a/jdk/src/share/demo/applets/SortDemo/SortItem.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/SortDemo/SortItem.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,57 +29,50 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
-import java.awt.*;
-import java.awt.event.*;
-import java.io.InputStream;
-import java.util.Hashtable;
-import java.net.*;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+
 
 /**
  * A simple applet class to demonstrate a sort algorithm.
  * You can specify a sorting algorithm using the "alg"
- * attribyte. When you click on the applet, a thread is
+ * attribute. When you click on the applet, a thread is
  * forked which animates the sorting algorithm.
  *
  * @author James Gosling
  */
-public class SortItem
-    extends java.applet.Applet
-    implements Runnable, MouseListener {
+@SuppressWarnings("serial")
+public class SortItem extends java.applet.Applet implements Runnable,
+        MouseListener {
 
     /**
      * The thread that is sorting (or null).
      */
     private Thread kicker;
-
     /**
      * The array that is being sorted.
      */
     int arr[];
-
     /**
      * The high water mark.
      */
     int h1 = -1;
-
     /**
      * The low water mark.
      */
     int h2 = -1;
-
     /**
      * The name of the algorithm.
      */
     String algName;
-
     /**
      * The sorting algorithm (or null).
      */
     SortAlgorithm algorithm;
-
     Dimension initialSize = null;
 
     /**
@@ -91,10 +84,10 @@
         double f = initialSize.width / (double) a.length;
 
         for (int i = a.length; --i >= 0;) {
-            a[i] = (int)(i * f);
+            a[i] = (int) (i * f);
         }
         for (int i = a.length; --i >= 0;) {
-            int j = (int)(i * Math.random());
+            int j = (int) (i * Math.random());
             int t = a[i];
             a[i] = a[j];
             a[j] = t;
@@ -128,12 +121,16 @@
         if (kicker != null) {
             repaint();
         }
-        try {Thread.sleep(20);} catch (InterruptedException e){}
+        try {
+            Thread.sleep(20);
+        } catch (InterruptedException e) {
+        }
     }
 
     /**
      * Initialize the applet.
      */
+    @Override
     public void init() {
         String at = getParameter("alg");
         if (at == null) {
@@ -147,6 +144,7 @@
         addMouseListener(this);
     }
 
+    @Override
     public void start() {
         h1 = h2 = -1;
         scramble();
@@ -157,6 +155,7 @@
     /**
      * Deallocate resources of applet.
      */
+    @Override
     public void destroy() {
         removeMouseListener(this);
     }
@@ -165,10 +164,11 @@
      * Paint the array of numbers as a list
      * of horizontal lines of varying lengths.
      */
+    @Override
     public void paint(Graphics g) {
         int a[] = arr;
         int y = 0;
-        int deltaY = 0, deltaX = 0, evenY = 0, evenX = 0;
+        int deltaY = 0, deltaX = 0, evenY = 0;
 
         Dimension currentSize = getSize();
         int currentHeight = currentSize.height;
@@ -184,7 +184,6 @@
         // even size.
         if (!currentSize.equals(initialSize)) {
             evenY = (currentHeight - initialSize.height) % 2;
-            evenX = (currentWidth - initialSize.width) % 2;
             deltaY = (currentHeight - initialSize.height) / 2;
             deltaX = (currentWidth - initialSize.width) / 2;
 
@@ -194,7 +193,6 @@
             }
             if (deltaX < 0) {
                 deltaX = 0;
-                evenX = 0;
             }
         }
 
@@ -227,6 +225,7 @@
     /**
      * Update without erasing the background.
      */
+    @Override
     public void update(Graphics g) {
         paint(g);
     }
@@ -238,15 +237,16 @@
      * @see java.lang.Thread#run
      * @see SortItem#mouseUp
      */
+    @Override
     public void run() {
         try {
             if (algorithm == null) {
-                algorithm = (SortAlgorithm)Class.forName(algName).newInstance();
+                algorithm = (SortAlgorithm) Class.forName(algName).newInstance();
                 algorithm.setParent(this);
             }
             algorithm.init();
             algorithm.sort(arr);
-        } catch(Exception e) {
+        } catch (Exception e) {
         }
     }
 
@@ -254,8 +254,9 @@
      * Stop the applet. Kill any sorting algorithm that
      * is still sorting.
      */
+    @Override
     public synchronized void stop() {
-        if (algorithm != null){
+        if (algorithm != null) {
             try {
                 algorithm.stop();
             } catch (IllegalThreadStateException e) {
@@ -279,35 +280,42 @@
         }
     }
 
-
+    @Override
     public void mouseClicked(MouseEvent e) {
         showStatus(getParameter("alg"));
     }
 
+    @Override
     public void mousePressed(MouseEvent e) {
     }
 
     /**
      * The user clicked in the applet. Start the clock!
      */
+    @Override
     public void mouseReleased(MouseEvent e) {
         startSort();
         e.consume();
     }
 
+    @Override
     public void mouseEntered(MouseEvent e) {
     }
 
+    @Override
     public void mouseExited(MouseEvent e) {
     }
 
+    @Override
     public String getAppletInfo() {
         return "Title: SortDemo \nAuthor: James Gosling 1.17f, 10 Apr 1995 \nA simple applet class to demonstrate a sort algorithm.  \nYou can specify a sorting algorithm using the 'alg' attribute.  \nWhen you click on the applet, a thread is forked which animates \nthe sorting algorithm.";
     }
 
+    @Override
     public String[][] getParameterInfo() {
         String[][] info = {
-          {"alg", "string", "The name of the algorithm to run.  You can choose from the provided algorithms or suppply your own, as long as the classes are runnable as threads and their names end in 'Algorithm.'  BubbleSort is the default.  Example:  Use 'QSort' to run the QSortAlgorithm class."}
+            { "alg", "string",
+                "The name of the algorithm to run.  You can choose from the provided algorithms or suppply your own, as long as the classes are runnable as threads and their names end in 'Algorithm.'  BubbleSort is the default.  Example:  Use 'QSort' to run the QSortAlgorithm class." }
         };
         return info;
     }
--- a/jdk/src/share/demo/applets/SortDemo/example1.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/SortDemo/example1.html	Wed Apr 20 09:31:11 2011 -0700
@@ -6,7 +6,7 @@
       <h1>The Sorting Algorithm Demo (1.1)</h1>
       <hr>
 
-      <table cols=3 width="340">
+      <table width="340">
       <tr>
       <th><strong>Bubble Sort</strong></th>
       <th><strong>Bidirectional Bubble Sort</strong></th>
--- a/jdk/src/share/demo/applets/SpreadSheet/SpreadSheet.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/SpreadSheet/SpreadSheet.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,39 +29,38 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
 import java.applet.Applet;
 import java.awt.*;
 import java.awt.event.*;
 import java.io.*;
-import java.lang.*;
 import java.net.*;
 
-public class SpreadSheet
-    extends Applet
-    implements MouseListener, KeyListener {
-    String              title;
-    Font                titleFont;
-    Color               cellColor;
-    Color               inputColor;
-    int                 cellWidth = 100;
-    int                 cellHeight = 15;
-    int                 titleHeight = 15;
-    int                 rowLabelWidth = 15;
-    Font                inputFont;
-    boolean             isStopped = false;
-    boolean             fullUpdate = true;
-    int                 rows;
-    int                 columns;
-    int                 currentKey = -1;
-    int                 selectedRow = -1;
-    int                 selectedColumn = -1;
-    SpreadSheetInput    inputArea;
-    Cell                cells[][];
-    Cell                current = null;
+
+@SuppressWarnings("serial")
+public class SpreadSheet extends Applet implements MouseListener, KeyListener {
 
+    String title;
+    Font titleFont;
+    Color cellColor;
+    Color inputColor;
+    int cellWidth = 100;
+    int cellHeight = 15;
+    int titleHeight = 15;
+    int rowLabelWidth = 15;
+    Font inputFont;
+    boolean isStopped = false;
+    boolean fullUpdate = true;
+    int rows;
+    int columns;
+    int currentKey = -1;
+    int selectedRow = -1;
+    int selectedColumn = -1;
+    SpreadSheetInput inputArea;
+    Cell cells[][];
+    Cell current = null;
+
+    @Override
     public synchronized void init() {
         String rs;
 
@@ -87,17 +86,17 @@
         }
         cells = new Cell[rows][columns];
         char l[] = new char[1];
-        for (int i=0; i < rows; i++) {
-            for (int j=0; j < columns; j++) {
+        for (int i = 0; i < rows; i++) {
+            for (int j = 0; j < columns; j++) {
 
                 cells[i][j] = new Cell(this,
-                                       Color.lightGray,
-                                       Color.black,
-                                       cellColor,
-                                       cellWidth - 2,
-                                       cellHeight - 2);
-                l[0] = (char)((int)'a' + j);
-                rs = getParameter("" + new String(l) + (i+1));
+                        Color.lightGray,
+                        Color.black,
+                        cellColor,
+                        cellWidth - 2,
+                        cellHeight - 2);
+                l[0] = (char) ((int) 'a' + j);
+                rs = getParameter("" + new String(l) + (i + 1));
                 if (rs != null) {
                     cells[i][j].setUnparsedValue(rs);
                 }
@@ -106,9 +105,9 @@
 
         Dimension d = getSize();
         inputArea = new SpreadSheetInput(null, this, d.width - 2, cellHeight - 1,
-                                         inputColor, Color.white);
+                inputColor, Color.white);
         resize(columns * cellWidth + rowLabelWidth,
-               (rows + 3) * cellHeight + titleHeight);
+                (rows + 3) * cellHeight + titleHeight);
         addMouseListener(this);
         addKeyListener(this);
     }
@@ -121,19 +120,22 @@
         repaint();
     }
 
+    @Override
     public void stop() {
         isStopped = true;
     }
 
+    @Override
     public void start() {
         isStopped = false;
     }
 
+    @Override
     public void destroy() {
-        for (int i=0; i < rows; i++) {
-            for (int j=0; j < columns; j++) {
+        for (int i = 0; i < rows; i++) {
+            for (int j = 0; j < columns; j++) {
                 if (cells[i][j].type == Cell.URL) {
-                    cells[i][j].updaterThread.stop();
+                    cells[i][j].updaterThread.run = false;
                 }
             }
         }
@@ -147,16 +149,17 @@
         repaint();
     }
 
+    @Override
     public void update(Graphics g) {
-        if (! fullUpdate) {
+        if (!fullUpdate) {
             int cx, cy;
 
             g.setFont(titleFont);
-            for (int i=0; i < rows; i++) {
-                for (int j=0; j < columns; j++) {
+            for (int i = 0; i < rows; i++) {
+                for (int j = 0; j < columns; j++) {
                     if (cells[i][j].needRedisplay) {
                         cx = (j * cellWidth) + 2 + rowLabelWidth;
-                        cy = ((i+1) * cellHeight) + 2 + titleHeight;
+                        cy = ((i + 1) * cellHeight) + 2 + titleHeight;
                         cells[i][j].paint(g, cx, cy);
                     }
                 }
@@ -168,13 +171,14 @@
     }
 
     public void recalculate() {
-        int     i,j;
+        int i, j;
 
         //System.out.println("SpreadSheet.recalculate");
-        for (i=0; i < rows; i++) {
-            for (j=0; j < columns; j++) {
+        for (i = 0; i < rows; i++) {
+            for (j = 0; j < columns; j++) {
                 if (cells[i][j] != null && cells[i][j].type == Cell.FORMULA) {
-                    cells[i][j].setRawValue(evaluateFormula(cells[i][j].parseRoot));
+                    cells[i][j].setRawValue(evaluateFormula(
+                            cells[i][j].parseRoot));
                     cells[i][j].needRedisplay = true;
                 }
             }
@@ -182,8 +186,8 @@
         repaint();
     }
 
-    public float evaluateFormula(Node n) {
-        float   val = 0.0f;
+    float evaluateFormula(Node n) {
+        float val = 0.0f;
 
         //System.out.println("evaluateFormula:");
         //n.print(3);
@@ -192,43 +196,40 @@
             return val;
         }
         switch (n.type) {
-          case Node.OP:
-            val = evaluateFormula(n.left);
-            switch (n.op) {
-              case '+':
-                val += evaluateFormula(n.right);
-                break;
-              case '*':
-                val *= evaluateFormula(n.right);
-                break;
-              case '-':
-                val -= evaluateFormula(n.right);
+            case Node.OP:
+                val = evaluateFormula(n.left);
+                switch (n.op) {
+                    case '+':
+                        val += evaluateFormula(n.right);
+                        break;
+                    case '*':
+                        val *= evaluateFormula(n.right);
+                        break;
+                    case '-':
+                        val -= evaluateFormula(n.right);
+                        break;
+                    case '/':
+                        val /= evaluateFormula(n.right);
+                        break;
+                }
                 break;
-              case '/':
-                val /= evaluateFormula(n.right);
-                break;
-            }
-            break;
-          case Node.VALUE:
-            //System.out.println("=>" + n.value);
-            return n.value;
-          case Node.CELL:
-            if (n == null) {
-                //System.out.println("NULL at 192");
-            } else {
+            case Node.VALUE:
+                //System.out.println("=>" + n.value);
+                return n.value;
+            case Node.CELL:
                 if (cells[n.row][n.column] == null) {
                     //System.out.println("NULL at 193");
                 } else {
                     //System.out.println("=>" + cells[n.row][n.column].value);
                     return cells[n.row][n.column].value;
                 }
-            }
         }
 
         //System.out.println("=>" + val);
         return val;
     }
 
+    @Override
     public synchronized void paint(Graphics g) {
         int i, j;
         int cx, cy;
@@ -240,40 +241,40 @@
         g.setFont(titleFont);
         i = g.getFontMetrics().stringWidth(title);
         g.drawString((title == null) ? "Spreadsheet" : title,
-                     (d.width - i) / 2, 12);
+                (d.width - i) / 2, 12);
         g.setColor(inputColor);
         g.fillRect(0, cellHeight, d.width, cellHeight);
         g.setFont(titleFont);
-        for (i=0; i < rows+1; i++) {
-            cy = (i+2) * cellHeight;
+        for (i = 0; i < rows + 1; i++) {
+            cy = (i + 2) * cellHeight;
             g.setColor(getBackground());
             g.draw3DRect(0, cy, d.width, 2, true);
             if (i < rows) {
                 g.setColor(Color.red);
-                g.drawString("" + (i+1), 2, cy + 12);
+                g.drawString("" + (i + 1), 2, cy + 12);
             }
         }
 
         g.setColor(Color.red);
-        cy = (rows+3) * cellHeight + (cellHeight / 2);
-        for (i=0; i < columns; i++) {
+        cy = (rows + 3) * cellHeight + (cellHeight / 2);
+        for (i = 0; i < columns; i++) {
             cx = i * cellWidth;
             g.setColor(getBackground());
             g.draw3DRect(cx + rowLabelWidth,
-                          2 * cellHeight, 1, d.height, true);
+                    2 * cellHeight, 1, d.height, true);
             if (i < columns) {
                 g.setColor(Color.red);
-                l[0] = (char)((int)'A' + i);
+                l[0] = (char) ((int) 'A' + i);
                 g.drawString(new String(l),
-                             cx + rowLabelWidth + (cellWidth / 2),
-                             cy);
+                        cx + rowLabelWidth + (cellWidth / 2),
+                        cy);
             }
         }
 
-        for (i=0; i < rows; i++) {
-            for (j=0; j < columns; j++) {
+        for (i = 0; i < rows; i++) {
+            for (j = 0; j < columns; j++) {
                 cx = (j * cellWidth) + 2 + rowLabelWidth;
-                cy = ((i+1) * cellHeight) + 2 + titleHeight;
+                cy = ((i + 1) * cellHeight) + 2 + titleHeight;
                 if (cells[i][j] != null) {
                     cells[i][j].paint(g, cx, cy);
                 }
@@ -282,141 +283,152 @@
 
         g.setColor(getBackground());
         g.draw3DRect(0, titleHeight,
-                      d.width,
-                      d.height - titleHeight,
-                      false);
+                d.width,
+                d.height - titleHeight,
+                false);
         inputArea.paint(g, 1, titleHeight + 1);
     }
 
-      //1.1 event handling
-
-  public void mouseClicked(MouseEvent e)
-  {}
-
-  public void mousePressed(MouseEvent e)
-  {
-    int x = e.getX();
-    int y = e.getY();
-    Cell cell;
-    if (y < (titleHeight + cellHeight)) {
-      selectedRow = -1;
-      if (y <= titleHeight && current != null) {
-        current.deselect();
-        current = null;
-      }
-      e.consume();
+    //1.1 event handling
+    @Override
+    public void mouseClicked(MouseEvent e) {
     }
-    if (x < rowLabelWidth) {
-      selectedRow = -1;
-      if (current != null) {
-        current.deselect();
+
+    @Override
+    public void mousePressed(MouseEvent e) {
+        int x = e.getX();
+        int y = e.getY();
+        Cell cell;
+        if (y < (titleHeight + cellHeight)) {
+            selectedRow = -1;
+            if (y <= titleHeight && current != null) {
+                current.deselect();
+                current = null;
+            }
+            e.consume();
+        }
+        if (x < rowLabelWidth) {
+            selectedRow = -1;
+            if (current != null) {
+                current.deselect();
                 current = null;
-      }
-      e.consume();
+            }
+            e.consume();
 
+        }
+        selectedRow = ((y - cellHeight - titleHeight) / cellHeight);
+        selectedColumn = (x - rowLabelWidth) / cellWidth;
+        if (selectedRow > rows
+                || selectedColumn >= columns) {
+            selectedRow = -1;
+            if (current != null) {
+                current.deselect();
+                current = null;
+            }
+        } else {
+            if (selectedRow >= rows) {
+                selectedRow = -1;
+                if (current != null) {
+                    current.deselect();
+                    current = null;
+                }
+                e.consume();
+            }
+            if (selectedRow != -1) {
+                cell = cells[selectedRow][selectedColumn];
+                inputArea.setText(cell.getPrintString());
+                if (current != null) {
+                    current.deselect();
+                }
+                current = cell;
+                current.select();
+                requestFocus();
+                fullUpdate = true;
+                repaint();
+            }
+            e.consume();
+        }
     }
-    selectedRow = ((y - cellHeight - titleHeight) / cellHeight);
-    selectedColumn = (x - rowLabelWidth) / cellWidth;
-    if (selectedRow > rows ||
-        selectedColumn >= columns) {
-      selectedRow = -1;
-      if (current != null) {
-        current.deselect();
-        current = null;
-      }
-    } else {
-      if (selectedRow >= rows) {
-        selectedRow = -1;
-        if (current != null) {
-          current.deselect();
-          current = null;
-        }
+
+    @Override
+    public void mouseReleased(MouseEvent e) {
+    }
+
+    @Override
+    public void mouseEntered(MouseEvent e) {
+    }
+
+    @Override
+    public void mouseExited(MouseEvent e) {
+    }
+
+    @Override
+    public void keyPressed(KeyEvent e) {
+    }
+
+    @Override
+    public void keyTyped(KeyEvent e) {
+        fullUpdate = true;
+        inputArea.processKey(e);
         e.consume();
-      }
-      if (selectedRow != -1) {
-        cell = cells[selectedRow][selectedColumn];
-        inputArea.setText(new String(cell.getPrintString()));
-        if (current != null) {
-          current.deselect();
-        }
-        current = cell;
-        current.select();
-        requestFocus();
-        fullUpdate = true;
-        repaint();
-      }
-      e.consume();
+    }
+
+    @Override
+    public void keyReleased(KeyEvent e) {
     }
-  }
 
-  public void mouseReleased(MouseEvent e)
-  {}
-
-  public void mouseEntered(MouseEvent e)
-  {}
-
-  public void mouseExited(MouseEvent e)
-  {}
+    @Override
+    public String getAppletInfo() {
+        return "Title: SpreadSheet \nAuthor: Sami Shaio \nA simple spread sheet.";
+    }
 
-  public void keyPressed(KeyEvent e)
-  {
-  }
-
-  public void keyTyped(KeyEvent e) {
-    fullUpdate=true;
-    inputArea.processKey(e);
-    e.consume();
-  }
-
-  public void keyReleased(KeyEvent e)
-  {}
-
-  public String getAppletInfo() {
-    return "Title: SpreadSheet \nAuthor: Sami Shaio \nA simple spread sheet.";
-  }
-
-  public String[][] getParameterInfo() {
-    String[][] info = {
-      {"title", "string", "The title of the spread sheet.  Default is 'Spreadsheet'"},
-      {"rows", "int", "The number of rows.  Default is 9."},
-      {"columns", "int", "The number of columns.  Default is 5."}
-    };
-    return info;
-  }
+    @Override
+    public String[][] getParameterInfo() {
+        String[][] info = {
+            { "title", "string",
+                "The title of the spread sheet.  Default is 'Spreadsheet'" },
+            { "rows", "int", "The number of rows.  Default is 9." },
+            { "columns", "int", "The number of columns.  Default is 5." }
+        };
+        return info;
+    }
+}
 
 
-}
+class CellUpdater extends Thread {
 
-class CellUpdater extends Thread {
-    Cell        target;
+    Cell target;
     InputStream dataStream = null;
     StreamTokenizer tokenStream;
+    public volatile boolean run = true;
 
     public CellUpdater(Cell c) {
         super("cell updater");
         target = c;
     }
 
+    @Override
     public void run() {
         try {
             dataStream = new URL(target.app.getDocumentBase(),
-                                 target.getValueString()).openStream();
-            tokenStream = new StreamTokenizer(new BufferedReader(new InputStreamReader(dataStream)));
+                    target.getValueString()).openStream();
+            tokenStream = new StreamTokenizer(new BufferedReader(
+                    new InputStreamReader(dataStream)));
             tokenStream.eolIsSignificant(false);
 
-            while (true) {
+            while (run) {
                 switch (tokenStream.nextToken()) {
-                case StreamTokenizer.TT_EOF:
-                    dataStream.close();
-                    return;
-                default:
-                    break;
-                case StreamTokenizer.TT_NUMBER:
-                    target.setTransientValue((float)tokenStream.nval);
-                    if (! target.app.isStopped && ! target.paused) {
-                        target.app.repaint();
-                    }
-                    break;
+                    case StreamTokenizer.TT_EOF:
+                        dataStream.close();
+                        return;
+                    default:
+                        break;
+                    case StreamTokenizer.TT_NUMBER:
+                        target.setTransientValue((float) tokenStream.nval);
+                        if (!target.app.isStopped && !target.paused) {
+                            target.app.repaint();
+                        }
+                        break;
                 }
                 try {
                     Thread.sleep(2000);
@@ -430,35 +442,36 @@
     }
 }
 
+
 class Cell {
+
     public static final int VALUE = 0;
     public static final int LABEL = 1;
-    public static final int URL   = 2;
+    public static final int URL = 2;
     public static final int FORMULA = 3;
-
-    Node        parseRoot;
-    boolean     needRedisplay;
+    Node parseRoot;
+    boolean needRedisplay;
     boolean selected = false;
     boolean transientValue = false;
-    public int  type = Cell.VALUE;
-    String      valueString = "";
-    String      printString = "v";
-    float       value;
-    Color       bgColor;
-    Color       fgColor;
-    Color       highlightColor;
-    int         width;
-    int         height;
+    public int type = Cell.VALUE;
+    String valueString = "";
+    String printString = "v";
+    float value;
+    Color bgColor;
+    Color fgColor;
+    Color highlightColor;
+    int width;
+    int height;
     SpreadSheet app;
     CellUpdater updaterThread;
-    boolean     paused = false;
+    boolean paused = false;
 
     public Cell(SpreadSheet app,
-                Color bgColor,
-                Color fgColor,
-                Color highlightColor,
-                int width,
-                int height) {
+            Color bgColor,
+            Color fgColor,
+            Color highlightColor,
+            int width,
+            int height) {
         this.app = app;
         this.bgColor = bgColor;
         this.fgColor = fgColor;
@@ -472,6 +485,7 @@
         valueString = Float.toString(f);
         value = f;
     }
+
     public void setValue(float f) {
         setRawValue(f);
         printString = "v" + valueString;
@@ -490,18 +504,18 @@
 
     public void setUnparsedValue(String s) {
         switch (s.charAt(0)) {
-          case 'v':
-            setValue(Cell.VALUE, s.substring(1));
-            break;
-          case 'f':
-            setValue(Cell.FORMULA, s.substring(1));
-            break;
-          case 'l':
-            setValue(Cell.LABEL, s.substring(1));
-            break;
-          case 'u':
-            setValue(Cell.URL, s.substring(1));
-            break;
+            case 'v':
+                setValue(Cell.VALUE, s.substring(1));
+                break;
+            case 'f':
+                setValue(Cell.FORMULA, s.substring(1));
+                break;
+            case 'l':
+                setValue(Cell.LABEL, s.substring(1));
+                break;
+            case 'u':
+                setValue(Cell.URL, s.substring(1));
+                break;
         }
     }
 
@@ -519,8 +533,6 @@
     public String parseFormula(String formula, Node node) {
         String subformula;
         String restFormula;
-        float value;
-        int length = formula.length();
         Node left;
         Node right;
         char op;
@@ -534,52 +546,53 @@
             //System.out.println("Parse succeeded");
             return null;
         }
-        if (subformula == formula) {
+        if (subformula.equals(formula)) {
             //System.out.println("Parse failed");
             return formula;
         }
 
         // parse an operator and then another value
         switch (op = subformula.charAt(0)) {
-          case 0:
-            //System.out.println("Parse succeeded");
-            return null;
-          case ')':
-            //System.out.println("Returning subformula=" + subformula);
-            return subformula;
-          case '+':
-          case '*':
-          case '-':
-          case '/':
-            restFormula = subformula.substring(1);
-            subformula = parseValue(restFormula, right=new Node());
-            //System.out.println("subformula(2) = " + subformula);
-            if (subformula != restFormula) {
+            case 0:
                 //System.out.println("Parse succeeded");
-                left = new Node(node);
-                node.left = left;
-                node.right = right;
-                node.op = op;
-                node.type = Node.OP;
-                //node.print(3);
+                return null;
+            case ')':
+                //System.out.println("Returning subformula=" + subformula);
                 return subformula;
-            } else {
-                //System.out.println("Parse failed");
+            case '+':
+            case '*':
+            case '-':
+            case '/':
+                restFormula = subformula.substring(1);
+                subformula = parseValue(restFormula, right = new Node());
+                //System.out.println("subformula(2) = " + subformula);
+                if (subformula == null ? restFormula != null : !subformula.
+                        equals(restFormula)) {
+                    //System.out.println("Parse succeeded");
+                    left = new Node(node);
+                    node.left = left;
+                    node.right = right;
+                    node.op = op;
+                    node.type = Node.OP;
+                    //node.print(3);
+                    return subformula;
+                } else {
+                    //System.out.println("Parse failed");
+                    return formula;
+                }
+            default:
+                //System.out.println("Parse failed (bad operator): " + subformula);
                 return formula;
-            }
-          default:
-            //System.out.println("Parse failed (bad operator): " + subformula);
-            return formula;
         }
     }
 
     public String parseValue(String formula, Node node) {
-        char    c = formula.charAt(0);
-        String  subformula;
-        String  restFormula;
-        float   value;
-        int     row;
-        int     column;
+        char c = formula.charAt(0);
+        String subformula;
+        String restFormula;
+        float _value;
+        int row;
+        int column;
 
         //System.out.println("parseValue: " + formula);
         restFormula = formula;
@@ -588,11 +601,11 @@
             restFormula = formula.substring(1);
             subformula = parseFormula(restFormula, node);
             //System.out.println("rest=(" + subformula + ")");
-            if (subformula == null ||
-                subformula.length() == restFormula.length()) {
+            if (subformula == null
+                    || subformula.length() == restFormula.length()) {
                 //System.out.println("Failed");
                 return formula;
-            } else if (! (subformula.charAt(0) == ')')) {
+            } else if (!(subformula.charAt(0) == ')')) {
                 //System.out.println("Failed (missing parentheses)");
                 return formula;
             }
@@ -601,31 +614,31 @@
             int i;
 
             //System.out.println("formula=" + formula);
-            for (i=0; i < formula.length(); i++) {
+            for (i = 0; i < formula.length(); i++) {
                 c = formula.charAt(i);
                 if ((c < '0' || c > '9') && c != '.') {
                     break;
                 }
             }
             try {
-                value = Float.valueOf(formula.substring(0, i)).floatValue();
+                _value = Float.valueOf(formula.substring(0, i)).floatValue();
             } catch (NumberFormatException e) {
                 //System.out.println("Failed (number format error)");
                 return formula;
             }
             node.type = Node.VALUE;
-            node.value = value;
+            node.value = _value;
             //node.print(3);
             restFormula = formula.substring(i);
             //System.out.println("value= " + value + " i=" + i +
-                //                     " rest = " + restFormula);
+            //                     " rest = " + restFormula);
             return restFormula;
         } else if (c >= 'A' && c <= 'Z') {
             int i;
 
             column = c - 'A';
             restFormula = formula.substring(1);
-            for (i=0; i < restFormula.length(); i++) {
+            for (i = 0; i < restFormula.length(); i++) {
                 c = restFormula.charAt(i);
                 if (c < '0' || c > '9') {
                     break;
@@ -650,33 +663,32 @@
         return restFormula;
     }
 
-
     public void setValue(int type, String s) {
         paused = false;
         if (this.type == Cell.URL) {
-            updaterThread.stop();
+            updaterThread.run = false;
             updaterThread = null;
         }
 
-        valueString = new String(s);
+        valueString = s;
         this.type = type;
         needRedisplay = true;
         switch (type) {
-          case Cell.VALUE:
-            setValue(Float.valueOf(s).floatValue());
-            break;
-          case Cell.LABEL:
-            printString = "l" + valueString;
-            break;
-          case Cell.URL:
-            printString = "u" + valueString;
-            updaterThread = new CellUpdater(this);
-            updaterThread.start();
-            break;
-          case Cell.FORMULA:
-            parseFormula(valueString, parseRoot = new Node());
-            printString = "f" + valueString;
-            break;
+            case Cell.VALUE:
+                setValue(Float.valueOf(s).floatValue());
+                break;
+            case Cell.LABEL:
+                printString = "l" + valueString;
+                break;
+            case Cell.URL:
+                printString = "u" + valueString;
+                updaterThread = new CellUpdater(this);
+                updaterThread.start();
+                break;
+            case Cell.FORMULA:
+                parseFormula(valueString, parseRoot = new Node());
+                printString = "f" + valueString;
+                break;
         }
         app.recalculate();
     }
@@ -693,12 +705,14 @@
         selected = true;
         paused = true;
     }
+
     public void deselect() {
         selected = false;
         paused = false;
         needRedisplay = true;
         app.repaint();
     }
+
     public void paint(Graphics g, int x, int y) {
         if (selected) {
             g.setColor(highlightColor);
@@ -708,23 +722,23 @@
         g.fillRect(x, y, width - 1, height);
         if (valueString != null) {
             switch (type) {
-              case Cell.VALUE:
-              case Cell.LABEL:
-                g.setColor(fgColor);
-                break;
-              case Cell.FORMULA:
-                g.setColor(Color.red);
-                break;
-              case Cell.URL:
-                g.setColor(Color.blue);
-                break;
+                case Cell.VALUE:
+                case Cell.LABEL:
+                    g.setColor(fgColor);
+                    break;
+                case Cell.FORMULA:
+                    g.setColor(Color.red);
+                    break;
+                case Cell.URL:
+                    g.setColor(Color.blue);
+                    break;
             }
-            if (transientValue){
+            if (transientValue) {
                 g.drawString("" + value, x, y + (height / 2) + 5);
             } else {
                 if (valueString.length() > 14) {
                     g.drawString(valueString.substring(0, 14),
-                                 x, y + (height / 2) + 5);
+                            x, y + (height / 2) + 5);
                 } else {
                     g.drawString(valueString, x, y + (height / 2) + 5);
                 }
@@ -734,18 +748,19 @@
     }
 }
 
+
 class Node {
+
     public static final int OP = 0;
     public static final int VALUE = 1;
     public static final int CELL = 2;
-
-    int         type;
-    Node        left;
-    Node        right;
-    int         row;
-    int         column;
-    float       value;
-    char        op;
+    int type;
+    Node left;
+    Node right;
+    int row;
+    int column;
+    float value;
+    char op;
 
     public Node() {
         left = null;
@@ -756,6 +771,7 @@
         op = 0;
         type = Node.VALUE;
     }
+
     public Node(Node n) {
         left = n.left;
         right = n.right;
@@ -765,47 +781,51 @@
         op = n.op;
         type = n.type;
     }
+
     public void indent(int ind) {
         for (int i = 0; i < ind; i++) {
             System.out.print(" ");
         }
     }
+
     public void print(int indentLevel) {
         char l[] = new char[1];
         indent(indentLevel);
         System.out.println("NODE type=" + type);
         indent(indentLevel);
         switch (type) {
-          case Node.VALUE:
-            System.out.println(" value=" + value);
-            break;
-          case Node.CELL:
-            l[0] = (char)((int)'A' + column);
-            System.out.println(" cell=" + new String(l) + (row+1));
-            break;
-          case Node.OP:
-            System.out.println(" op=" + op);
-            left.print(indentLevel + 3);
-            right.print(indentLevel + 3);
-            break;
+            case Node.VALUE:
+                System.out.println(" value=" + value);
+                break;
+            case Node.CELL:
+                l[0] = (char) ((int) 'A' + column);
+                System.out.println(" cell=" + new String(l) + (row + 1));
+                break;
+            case Node.OP:
+                System.out.println(" op=" + op);
+                left.print(indentLevel + 3);
+                right.print(indentLevel + 3);
+                break;
         }
     }
 }
 
+
 class InputField {
-    int         maxchars = 50;
-    int         cursorPos = 0;
-    Applet      app;
-    String      sval;
-    char        buffer[];
-    int         nChars;
-    int         width;
-    int         height;
-    Color       bgColor;
-    Color       fgColor;
+
+    int maxchars = 50;
+    int cursorPos = 0;
+    Applet app;
+    String sval;
+    char buffer[];
+    int nChars;
+    int width;
+    int height;
+    Color bgColor;
+    Color fgColor;
 
     public InputField(String initValue, Applet app, int width, int height,
-                      Color bgColor, Color fgColor) {
+            Color bgColor, Color fgColor) {
         this.width = width;
         this.height = height;
         this.bgColor = bgColor;
@@ -823,7 +843,7 @@
     public void setText(String val) {
         int i;
 
-        for (i=0; i < maxchars; i++) {
+        for (i = 0; i < maxchars; i++) {
             buffer[i] = 0;
         }
         if (val == null) {
@@ -876,47 +896,52 @@
     }
 }
 
+
 class SpreadSheetInput
-    extends InputField {
+        extends InputField {
 
-  public SpreadSheetInput(String initValue,
-                          SpreadSheet app,
-                          int width,
-                          int height,
-                          Color bgColor,
-                          Color fgColor) {
-    super(initValue, app, width, height, bgColor, fgColor);
-  }
+    public SpreadSheetInput(String initValue,
+            SpreadSheet app,
+            int width,
+            int height,
+            Color bgColor,
+            Color fgColor) {
+        super(initValue, app, width, height, bgColor, fgColor);
+    }
 
+    @Override
     public void selected() {
         float f;
-        sval = ("".equals(sval)) ? "v":sval;
+        sval = ("".equals(sval)) ? "v" : sval;
         switch (sval.charAt(0)) {
-          case 'v':
-              String s= sval.substring(1);
-            try {
-                int i;
-                for (i = 0; i < s.length(); i++) {
-                    char c = s.charAt(i);
-                    if (c < '0' || c > '9')
-                        break;
+            case 'v':
+                String s = sval.substring(1);
+                try {
+                    int i;
+                    for (i = 0; i < s.length(); i++) {
+                        char c = s.charAt(i);
+                        if (c < '0' || c > '9') {
+                            break;
+                        }
+                    }
+                    s = s.substring(0, i);
+                    f = Float.valueOf(s).floatValue();
+                    ((SpreadSheet) app).setCurrentValue(f);
+                } catch (NumberFormatException e) {
+                    System.out.println("Not a float: '" + s + "'");
                 }
-                s = s.substring(0, i);
-                f = Float.valueOf(s).floatValue();
-                ((SpreadSheet)app).setCurrentValue(f);
-            } catch (NumberFormatException e) {
-                System.out.println("Not a float: '" + s + "'");
-            }
-            break;
-          case 'l':
-            ((SpreadSheet)app).setCurrentValue(Cell.LABEL, sval.substring(1));
-            break;
-          case 'u':
-            ((SpreadSheet)app).setCurrentValue(Cell.URL, sval.substring(1));
-            break;
-          case 'f':
-            ((SpreadSheet)app).setCurrentValue(Cell.FORMULA, sval.substring(1));
-            break;
+                break;
+            case 'l':
+                ((SpreadSheet) app).setCurrentValue(Cell.LABEL,
+                        sval.substring(1));
+                break;
+            case 'u':
+                ((SpreadSheet) app).setCurrentValue(Cell.URL, sval.substring(1));
+                break;
+            case 'f':
+                ((SpreadSheet) app).setCurrentValue(Cell.FORMULA,
+                        sval.substring(1));
+                break;
         }
     }
 }
--- a/jdk/src/share/demo/applets/WireFrame/Matrix3D.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/WireFrame/Matrix3D.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,22 +29,23 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
 /** A fairly conventional 3D matrix object that can transform sets of
-    3D points and perform a variety of manipulations on the transform */
+3D points and perform a variety of manipulations on the transform */
 class Matrix3D {
+
     float xx, xy, xz, xo;
     float yx, yy, yz, yo;
     float zx, zy, zz, zo;
     static final double pi = 3.14159265;
+
     /** Create a new unit matrix */
-    Matrix3D () {
+    Matrix3D() {
         xx = 1.0f;
         yy = 1.0f;
         zz = 1.0f;
     }
+
     /** Scale by f in all dimensions */
     void scale(float f) {
         xx *= f;
@@ -60,6 +61,7 @@
         zz *= f;
         zo *= f;
     }
+
     /** Scale along each axis independently */
     void scale(float xf, float yf, float zf) {
         xx *= xf;
@@ -75,12 +77,14 @@
         zz *= zf;
         zo *= zf;
     }
+
     /** Translate the origin */
     void translate(float x, float y, float z) {
         xo += x;
         yo += y;
         zo += z;
     }
+
     /** rotate theta degrees about the y axis */
     void yrot(double theta) {
         theta *= (pi / 180);
@@ -106,6 +110,7 @@
         zy = Nzy;
         zz = Nzz;
     }
+
     /** rotate theta degrees about the x axis */
     void xrot(double theta) {
         theta *= (pi / 180);
@@ -131,6 +136,7 @@
         zy = Nzy;
         zz = Nzz;
     }
+
     /** rotate theta degrees about the z axis */
     void zrot(double theta) {
         theta *= (pi / 180);
@@ -156,6 +162,7 @@
         xy = Nxy;
         xz = Nxz;
     }
+
     /** Multiply this matrix by a second: M = M*R */
     void mult(Matrix3D rhs) {
         float lxx = xx * rhs.xx + yx * rhs.xy + zx * rhs.xz;
@@ -204,10 +211,11 @@
         zy = 0;
         zz = 1;
     }
+
     /** Transform nvert points from v into tv.  v contains the input
-        coordinates in floating point.  Three successive entries in
-        the array constitute a point.  tv ends up holding the transformed
-        points as integers; three successive entries per point */
+    coordinates in floating point.  Three successive entries in
+    the array constitute a point.  tv ends up holding the transformed
+    points as integers; three successive entries per point */
     void transform(float v[], int tv[], int nvert) {
         float lxx = xx, lxy = xy, lxz = xz, lxo = xo;
         float lyx = yx, lyy = yy, lyz = yz, lyo = yo;
@@ -216,11 +224,13 @@
             float x = v[i];
             float y = v[i + 1];
             float z = v[i + 2];
-            tv[i    ] = (int) (x * lxx + y * lxy + z * lxz + lxo);
+            tv[i] = (int) (x * lxx + y * lxy + z * lxz + lxo);
             tv[i + 1] = (int) (x * lyx + y * lyy + z * lyz + lyo);
             tv[i + 2] = (int) (x * lzx + y * lzy + z * lzz + lzo);
         }
     }
+
+    @Override
     public String toString() {
         return ("[" + xo + "," + xx + "," + xy + "," + xz + ";"
                 + yo + "," + yx + "," + yy + "," + yz + ";"
--- a/jdk/src/share/demo/applets/WireFrame/ThreeD.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/WireFrame/ThreeD.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,28 +29,29 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
-
-/* A set of classes to parse, represent and display 3D wireframe models
-   represented in Wavefront .obj format. */
 
 import java.applet.Applet;
 import java.awt.Graphics;
 import java.awt.Color;
-import java.awt.Event;
 import java.awt.event.*;
 import java.io.*;
 import java.net.URL;
 
+
+/* A set of classes to parse, represent and display 3D wireframe models
+represented in Wavefront .obj format. */
+@SuppressWarnings("serial")
 class FileFormatException extends Exception {
+
     public FileFormatException(String s) {
         super(s);
     }
 }
 
+
 /** The representation of a 3D model */
-class Model3D {
+final class Model3D {
+
     float vert[];
     int tvert[];
     int nvert, maxvert;
@@ -58,78 +59,90 @@
     int ncon, maxcon;
     boolean transformed;
     Matrix3D mat;
-
     float xmin, xmax, ymin, ymax, zmin, zmax;
 
-    Model3D () {
-        mat = new Matrix3D ();
+    Model3D() {
+        mat = new Matrix3D();
         mat.xrot(20);
         mat.yrot(30);
     }
+
     /** Create a 3D model by parsing an input stream */
-    Model3D (InputStream is) throws IOException, FileFormatException {
-      this();
-      StreamTokenizer st = new StreamTokenizer(
-              new BufferedReader(new InputStreamReader(is, "UTF-8")));
-      st.eolIsSignificant(true);
-      st.commentChar('#');
-    scan:
+    Model3D(InputStream is) throws IOException, FileFormatException {
+        this();
+        StreamTokenizer st = new StreamTokenizer(
+                new BufferedReader(new InputStreamReader(is, "UTF-8")));
+        st.eolIsSignificant(true);
+        st.commentChar('#');
+        scan:
         while (true) {
             switch (st.nextToken()) {
-              default:
-                break scan;
-              case StreamTokenizer.TT_EOL:
-                break;
-              case StreamTokenizer.TT_WORD:
-                if ("v".equals(st.sval)) {
-                    double x = 0, y = 0, z = 0;
-                    if (st.nextToken() == StreamTokenizer.TT_NUMBER) {
-                        x = st.nval;
+                default:
+                    break scan;
+                case StreamTokenizer.TT_EOL:
+                    break;
+                case StreamTokenizer.TT_WORD:
+                    if ("v".equals(st.sval)) {
+                        double x = 0, y = 0, z = 0;
                         if (st.nextToken() == StreamTokenizer.TT_NUMBER) {
-                            y = st.nval;
-                            if (st.nextToken() == StreamTokenizer.TT_NUMBER)
-                                z = st.nval;
+                            x = st.nval;
+                            if (st.nextToken() == StreamTokenizer.TT_NUMBER) {
+                                y = st.nval;
+                                if (st.nextToken() == StreamTokenizer.TT_NUMBER) {
+                                    z = st.nval;
+                                }
+                            }
+                        }
+                        addVert((float) x, (float) y, (float) z);
+                        while (st.ttype != StreamTokenizer.TT_EOL && st.ttype
+                                != StreamTokenizer.TT_EOF) {
+                            st.nextToken();
+                        }
+                    } else if ("f".equals(st.sval) || "fo".equals(st.sval) || "l".
+                            equals(st.sval)) {
+                        int start = -1;
+                        int prev = -1;
+                        int n = -1;
+                        while (true) {
+                            if (st.nextToken() == StreamTokenizer.TT_NUMBER) {
+                                n = (int) st.nval;
+                                if (prev >= 0) {
+                                    add(prev - 1, n - 1);
+                                }
+                                if (start < 0) {
+                                    start = n;
+                                }
+                                prev = n;
+                            } else if (st.ttype == '/') {
+                                st.nextToken();
+                            } else {
+                                break;
+                            }
+                        }
+                        if (start >= 0) {
+                            add(start - 1, prev - 1);
+                        }
+                        if (st.ttype != StreamTokenizer.TT_EOL) {
+                            break scan;
+                        }
+                    } else {
+                        while (st.nextToken() != StreamTokenizer.TT_EOL
+                                && st.ttype != StreamTokenizer.TT_EOF) {
+                            // no-op
                         }
                     }
-                    addVert((float) x, (float) y, (float) z);
-                    while (st.ttype != StreamTokenizer.TT_EOL &&
-                            st.ttype != StreamTokenizer.TT_EOF)
-                        st.nextToken();
-                } else if ("f".equals(st.sval) || "fo".equals(st.sval) || "l".equals(st.sval)) {
-                    int start = -1;
-                    int prev = -1;
-                    int n = -1;
-                    while (true)
-                        if (st.nextToken() == StreamTokenizer.TT_NUMBER) {
-                            n = (int) st.nval;
-                            if (prev >= 0)
-                                add(prev - 1, n - 1);
-                            if (start < 0)
-                                start = n;
-                            prev = n;
-                        } else if (st.ttype == '/')
-                            st.nextToken();
-                        else
-                            break;
-                    if (start >= 0)
-                        add(start - 1, prev - 1);
-                    if (st.ttype != StreamTokenizer.TT_EOL)
-                        break scan;
-                } else {
-                    while (st.nextToken() != StreamTokenizer.TT_EOL
-                            && st.ttype != StreamTokenizer.TT_EOF);
-                }
             }
         }
         is.close();
-        if (st.ttype != StreamTokenizer.TT_EOF)
+        if (st.ttype != StreamTokenizer.TT_EOF) {
             throw new FileFormatException(st.toString());
+        }
     }
 
     /** Add a vertex to this model */
     int addVert(float x, float y, float z) {
         int i = nvert;
-        if (i >= maxvert)
+        if (i >= maxvert) {
             if (vert == null) {
                 maxvert = 100;
                 vert = new float[maxvert * 3];
@@ -139,18 +152,21 @@
                 System.arraycopy(vert, 0, nv, 0, vert.length);
                 vert = nv;
             }
+        }
         i *= 3;
         vert[i] = x;
         vert[i + 1] = y;
         vert[i + 2] = z;
         return nvert++;
     }
+
     /** Add a line from vertex p1 to vertex p2 */
     void add(int p1, int p2) {
         int i = ncon;
-        if (p1 >= nvert || p2 >= nvert)
+        if (p1 >= nvert || p2 >= nvert) {
             return;
-        if (i >= maxcon)
+        }
+        if (i >= maxcon) {
             if (con == null) {
                 maxcon = 100;
                 con = new int[maxcon];
@@ -160,6 +176,7 @@
                 System.arraycopy(con, 0, nv, 0, con.length);
                 con = nv;
             }
+        }
         if (p1 > p2) {
             int t = p1;
             p1 = p2;
@@ -168,79 +185,79 @@
         con[i] = (p1 << 16) | p2;
         ncon = i + 1;
     }
+
     /** Transform all the points in this model */
     void transform() {
-        if (transformed || nvert <= 0)
+        if (transformed || nvert <= 0) {
             return;
-        if (tvert == null || tvert.length < nvert * 3)
-            tvert = new int[nvert*3];
+        }
+        if (tvert == null || tvert.length < nvert * 3) {
+            tvert = new int[nvert * 3];
+        }
         mat.transform(vert, tvert, nvert);
         transformed = true;
     }
 
-   /* Quick Sort implementation
-    */
-   private void quickSort(int a[], int left, int right)
-   {
-      int leftIndex = left;
-      int rightIndex = right;
-      int partionElement;
-      if ( right > left)
-      {
+    /* Quick Sort implementation
+     */
+    private void quickSort(int a[], int left, int right) {
+        int leftIndex = left;
+        int rightIndex = right;
+        int partionElement;
+        if (right > left) {
 
-         /* Arbitrarily establishing partition element as the midpoint of
-          * the array.
-          */
-         partionElement = a[ ( left + right ) / 2 ];
+            /* Arbitrarily establishing partition element as the midpoint of
+             * the array.
+             */
+            partionElement = a[(left + right) / 2];
 
-         // loop through the array until indices cross
-         while( leftIndex <= rightIndex )
-         {
-            /* find the first element that is greater than or equal to
-             * the partionElement starting from the leftIndex.
-             */
-            while( ( leftIndex < right ) && ( a[leftIndex] < partionElement ) )
-               ++leftIndex;
+            // loop through the array until indices cross
+            while (leftIndex <= rightIndex) {
+                /* find the first element that is greater than or equal to
+                 * the partionElement starting from the leftIndex.
+                 */
+                while ((leftIndex < right) && (a[leftIndex] < partionElement)) {
+                    ++leftIndex;
+                }
 
-            /* find an element that is smaller than or equal to
-             * the partionElement starting from the rightIndex.
-             */
-            while( ( rightIndex > left ) &&
-                   ( a[rightIndex] > partionElement ) )
-               --rightIndex;
+                /* find an element that is smaller than or equal to
+                 * the partionElement starting from the rightIndex.
+                 */
+                while ((rightIndex > left) && (a[rightIndex] > partionElement)) {
+                    --rightIndex;
+                }
 
-            // if the indexes have not crossed, swap
-            if( leftIndex <= rightIndex )
-            {
-               swap(a, leftIndex, rightIndex);
-               ++leftIndex;
-               --rightIndex;
+                // if the indexes have not crossed, swap
+                if (leftIndex <= rightIndex) {
+                    swap(a, leftIndex, rightIndex);
+                    ++leftIndex;
+                    --rightIndex;
+                }
             }
-         }
 
-         /* If the right index has not reached the left side of array
-          * must now sort the left partition.
-          */
-         if( left < rightIndex )
-            quickSort( a, left, rightIndex );
+            /* If the right index has not reached the left side of array
+             * must now sort the left partition.
+             */
+            if (left < rightIndex) {
+                quickSort(a, left, rightIndex);
+            }
 
-         /* If the left index has not reached the right side of array
-          * must now sort the right partition.
-          */
-         if( leftIndex < right )
-            quickSort( a, leftIndex, right );
-
-      }
-   }
+            /* If the left index has not reached the right side of array
+             * must now sort the right partition.
+             */
+            if (leftIndex < right) {
+                quickSort(a, leftIndex, right);
+            }
 
-   private void swap(int a[], int i, int j)
-   {
-      int T;
-      T = a[i];
-      a[i] = a[j];
-      a[j] = T;
-   }
+        }
+    }
 
+    private void swap(int a[], int i, int j) {
+        int T;
+        T = a[i];
+        a[i] = a[j];
+        a[j] = T;
+    }
 
     /** eliminate duplicate lines */
     void compress() {
@@ -259,21 +276,21 @@
         }
         ncon = d;
     }
-
     static Color gr[];
 
     /** Paint this model to a graphics context.  It uses the matrix associated
-        with this model to map from model space to screen space.
-        The next version of the browser should have double buffering,
-        which will make this *much* nicer */
+    with this model to map from model space to screen space.
+    The next version of the browser should have double buffering,
+    which will make this *much* nicer */
     void paint(Graphics g) {
-        if (vert == null || nvert <= 0)
+        if (vert == null || nvert <= 0) {
             return;
+        }
         transform();
         if (gr == null) {
             gr = new Color[16];
             for (int i = 0; i < 16; i++) {
-                int grey = (int) (170*(1-Math.pow(i/15.0, 2.3)));
+                int grey = (int) (170 * (1 - Math.pow(i / 15.0, 2.3)));
                 gr[i] = new Color(grey, grey, grey);
             }
         }
@@ -281,151 +298,181 @@
         int lim = ncon;
         int c[] = con;
         int v[] = tvert;
-        if (lim <= 0 || nvert <= 0)
+        if (lim <= 0 || nvert <= 0) {
             return;
+        }
         for (int i = 0; i < lim; i++) {
             int T = c[i];
             int p1 = ((T >> 16) & 0xFFFF) * 3;
             int p2 = (T & 0xFFFF) * 3;
             int grey = v[p1 + 2] + v[p2 + 2];
-            if (grey < 0)
+            if (grey < 0) {
                 grey = 0;
-            if (grey > 15)
+            }
+            if (grey > 15) {
                 grey = 15;
+            }
             if (grey != lg) {
                 lg = grey;
                 g.setColor(gr[grey]);
             }
             g.drawLine(v[p1], v[p1 + 1],
-                       v[p2], v[p2 + 1]);
+                    v[p2], v[p2 + 1]);
         }
     }
 
     /** Find the bounding box of this model */
     void findBB() {
-        if (nvert <= 0)
+        if (nvert <= 0) {
             return;
+        }
         float v[] = vert;
-        float xmin = v[0], xmax = xmin;
-        float ymin = v[1], ymax = ymin;
-        float zmin = v[2], zmax = zmin;
+        float _xmin = v[0], _xmax = _xmin;
+        float _ymin = v[1], _ymax = _ymin;
+        float _zmin = v[2], _zmax = _zmin;
         for (int i = nvert * 3; (i -= 3) > 0;) {
             float x = v[i];
-            if (x < xmin)
-                xmin = x;
-            if (x > xmax)
-                xmax = x;
+            if (x < _xmin) {
+                _xmin = x;
+            }
+            if (x > _xmax) {
+                _xmax = x;
+            }
             float y = v[i + 1];
-            if (y < ymin)
-                ymin = y;
-            if (y > ymax)
-                ymax = y;
+            if (y < _ymin) {
+                _ymin = y;
+            }
+            if (y > _ymax) {
+                _ymax = y;
+            }
             float z = v[i + 2];
-            if (z < zmin)
-                zmin = z;
-            if (z > zmax)
-                zmax = z;
+            if (z < _zmin) {
+                _zmin = z;
+            }
+            if (z > _zmax) {
+                _zmax = z;
+            }
         }
-        this.xmax = xmax;
-        this.xmin = xmin;
-        this.ymax = ymax;
-        this.ymin = ymin;
-        this.zmax = zmax;
-        this.zmin = zmin;
+        this.xmax = _xmax;
+        this.xmin = _xmin;
+        this.ymax = _ymax;
+        this.ymin = _ymin;
+        this.zmax = _zmax;
+        this.zmin = _zmin;
     }
 }
 
+
 /** An applet to put a 3D model into a page */
+@SuppressWarnings("serial")
 public class ThreeD extends Applet
-  implements Runnable, MouseListener, MouseMotionListener {
+        implements Runnable, MouseListener, MouseMotionListener {
+
     Model3D md;
     boolean painted = true;
     float xfac;
     int prevx, prevy;
-    float xtheta, ytheta;
     float scalefudge = 1;
     Matrix3D amat = new Matrix3D(), tmat = new Matrix3D();
     String mdname = null;
     String message = null;
 
+    @Override
     public void init() {
         mdname = getParameter("model");
         try {
             scalefudge = Float.valueOf(getParameter("scale")).floatValue();
-        }catch(Exception e){};
+        } catch (Exception ignored) {
+            // fall back to default scalefudge = 1
+        }
         amat.yrot(20);
         amat.xrot(20);
-        if (mdname == null)
+        if (mdname == null) {
             mdname = "model.obj";
+        }
         resize(getSize().width <= 20 ? 400 : getSize().width,
-               getSize().height <= 20 ? 400 : getSize().height);
+                getSize().height <= 20 ? 400 : getSize().height);
         addMouseListener(this);
         addMouseMotionListener(this);
     }
 
+    @Override
     public void destroy() {
         removeMouseListener(this);
         removeMouseMotionListener(this);
     }
 
+    @Override
     public void run() {
         InputStream is = null;
         try {
             Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
             is = new URL(getDocumentBase(), mdname).openStream();
-            Model3D m = new Model3D (is);
+            Model3D m = new Model3D(is);
             md = m;
             m.findBB();
             m.compress();
             float xw = m.xmax - m.xmin;
             float yw = m.ymax - m.ymin;
             float zw = m.zmax - m.zmin;
-            if (yw > xw)
+            if (yw > xw) {
                 xw = yw;
-            if (zw > xw)
+            }
+            if (zw > xw) {
                 xw = zw;
+            }
             float f1 = getSize().width / xw;
             float f2 = getSize().height / xw;
             xfac = 0.7f * (f1 < f2 ? f1 : f2) * scalefudge;
-        } catch(Exception e) {
+        } catch (Exception e) {
             md = null;
             message = e.toString();
         }
         try {
-            if (is != null)
+            if (is != null) {
                 is.close();
-        } catch(Exception e) {
+            }
+        } catch (Exception e) {
         }
         repaint();
     }
 
+    @Override
     public void start() {
-        if (md == null && message == null)
+        if (md == null && message == null) {
             new Thread(this).start();
+        }
     }
 
+    @Override
     public void stop() {
     }
 
-    public  void mouseClicked(MouseEvent e) {
+    @Override
+    public void mouseClicked(MouseEvent e) {
     }
 
-    public  void mousePressed(MouseEvent e) {
+    @Override
+    public void mousePressed(MouseEvent e) {
         prevx = e.getX();
         prevy = e.getY();
         e.consume();
     }
 
-    public  void mouseReleased(MouseEvent e) {
+    @Override
+    public void mouseReleased(MouseEvent e) {
     }
 
-    public  void mouseEntered(MouseEvent e) {
+    @Override
+    public void mouseEntered(MouseEvent e) {
     }
 
-    public  void mouseExited(MouseEvent e) {
+    @Override
+    public void mouseExited(MouseEvent e) {
     }
 
-    public  void mouseDragged(MouseEvent e) {
+    @Override
+    public void mouseDragged(MouseEvent e) {
         int x = e.getX();
         int y = e.getY();
 
@@ -444,15 +491,17 @@
         e.consume();
     }
 
-    public  void mouseMoved(MouseEvent e) {
+    @Override
+    public void mouseMoved(MouseEvent e) {
     }
 
+    @Override
     public void paint(Graphics g) {
         if (md != null) {
             md.mat.unit();
             md.mat.translate(-(md.xmin + md.xmax) / 2,
-                             -(md.ymin + md.ymax) / 2,
-                             -(md.zmin + md.zmax) / 2);
+                    -(md.ymin + md.ymax) / 2,
+                    -(md.zmin + md.zmax) / 2);
             md.mat.mult(amat);
             md.mat.scale(xfac, -xfac, 16 * xfac / getSize().width);
             md.mat.translate(getSize().width / 2, getSize().height / 2, 8);
@@ -469,20 +518,18 @@
         painted = true;
         notifyAll();
     }
-//    private synchronized void waitPainted() {
-//      while (!painted)
-//          wait();
-//      painted = false;
-//    }
 
+    @Override
     public String getAppletInfo() {
-        return "Title: ThreeD \nAuthor: James Gosling? \nAn applet to put a 3D model into a page.";
+        return "Title: ThreeD \nAuthor: James Gosling? \n"
+                + "An applet to put a 3D model into a page.";
     }
 
+    @Override
     public String[][] getParameterInfo() {
         String[][] info = {
-            {"model", "path string", "The path to the model to be displayed."},
-            {"scale", "float", "The scale of the model.  Default is 1."}
+            { "model", "path string", "The path to the model to be displayed." },
+            { "scale", "float", "The scale of the model.  Default is 1." }
         };
         return info;
     }
--- a/jdk/src/share/demo/applets/WireFrame/example1.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/WireFrame/example1.html	Wed Apr 20 09:31:11 2011 -0700
@@ -6,7 +6,7 @@
     <h1>3D Model: Cube</h1>
       <hr>
       <applet code=ThreeD.class width=100 height=100>
-	<param name=model value=models/cube.obj>
+	<param name=model value="models/cube.obj">
 	  alt="Your browser understands the &lt;APPLET&gt; tag but isn't running the applet, for some reason."
 	  Your browser is completely ignoring the &lt;APPLET&gt; tag!
       </applet>
--- a/jdk/src/share/demo/applets/WireFrame/example2.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/WireFrame/example2.html	Wed Apr 20 09:31:11 2011 -0700
@@ -6,7 +6,7 @@
       <h1>3D Model: Dinosaur</h1>
       <hr>
       <applet code=ThreeD.class width=300 height=300>
-	<param name=model value=models/dinasaur.obj>
+	<param name=model value="models/dinasaur.obj">
 	  alt="Your browser understands the &lt;APPLET&gt; tag but isn't running the applet, for some reason."
 	  Your browser is completely ignoring the &lt;APPLET&gt; tag!
       </applet>
--- a/jdk/src/share/demo/applets/WireFrame/example3.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/WireFrame/example3.html	Wed Apr 20 09:31:11 2011 -0700
@@ -6,7 +6,7 @@
       <h1>3D Model: Hughes</h1>
       <hr>
       <applet code=ThreeD.class width=300 height=300>
-	<param name=model value=models/hughes_500.obj>
+	<param name=model value="models/hughes_500.obj">
 	  alt="Your browser understands the &lt;APPLET&gt; tag but isn't running the applet, for some reason."
 	  Your browser is completely ignoring the &lt;APPLET&gt; tag!
       </applet>
--- a/jdk/src/share/demo/applets/WireFrame/example4.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/applets/WireFrame/example4.html	Wed Apr 20 09:31:11 2011 -0700
@@ -6,7 +6,7 @@
       <h1>3D Model: knoxS</h1>
       <hr>
       <applet code=ThreeD.class width=300 height=300>
-	<param name=model value=models/knoxS.obj>      
+	<param name=model value="models/knoxS.obj">
 	  alt="Your browser understands the &lt;APPLET&gt; tag but isn't running the applet, for some reason."
 	  Your browser is completely ignoring the &lt;APPLET&gt; tag!
       </applet>
--- a/jdk/src/share/demo/jfc/CodePointIM/CodePointIM.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/CodePointIM/CodePointIM.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,12 +29,12 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
+
 import java.util.Locale;
 import java.util.MissingResourceException;
 import java.util.ResourceBundle;
 
+
 public class CodePointIM {
 
     // Actually, the main method is not required for InputMethod.
@@ -42,11 +42,11 @@
     // not correct and encourage their reading README.txt.
     public static void main(String[] args) {
         try {
-            ResourceBundle resource = ResourceBundle.getBundle("resources.codepoint",
-                                                          Locale.getDefault());
+            ResourceBundle resource = ResourceBundle.getBundle(
+                    "resources.codepoint",
+                    Locale.getDefault());
             System.err.println(resource.getString("warning"));
-        }
-        catch (MissingResourceException e) {
+        } catch (MissingResourceException e) {
             System.err.println(e.toString());
         }
 
--- a/jdk/src/share/demo/jfc/CodePointIM/CodePointInputMethod.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/CodePointIM/CodePointInputMethod.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -28,13 +28,8 @@
  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
-
-/*
- */
+package com.sun.inputmethods.internal.codepointim;
 
-package com.sun.inputmethods.internal.codepointim;
-import java.text.AttributedCharacterIterator;
-import java.util.Map;
 
 import java.awt.AWTEvent;
 import java.awt.Toolkit;
@@ -50,6 +45,7 @@
 import java.text.AttributedString;
 import java.util.Locale;
 
+
 /**
  * The Code Point Input Method is a simple input method that allows Unicode
  * characters to be entered using their code point or code unit values. See the
@@ -59,18 +55,16 @@
  */
 public class CodePointInputMethod implements InputMethod {
 
-    private static final int UNSET           = 0;
-    private static final int ESCAPE          = 1; // \u0000       - \uFFFF
-    private static final int SPECIAL_ESCAPE  = 2; // \U000000     - \U10FFFF
-    private static final int SURROGATE_PAIR  = 3; // \uD800\uDC00 - \uDBFF\uDFFF
-
+    private static final int UNSET = 0;
+    private static final int ESCAPE = 1; // \u0000       - \uFFFF
+    private static final int SPECIAL_ESCAPE = 2; // \U000000     - \U10FFFF
+    private static final int SURROGATE_PAIR = 3; // \uD800\uDC00 - \uDBFF\uDFFF
     private InputMethodContext context;
     private Locale locale;
     private StringBuffer buffer;
     private int insertionPoint;
     private int format = UNSET;
 
-
     public CodePointInputMethod() throws IOException {
     }
 
@@ -90,7 +84,7 @@
 
         if (eventID == KeyEvent.KEY_PRESSED) {
             // If we are not in composition mode, pass through
-            if (notInCompositionMode)  {
+            if (notInCompositionMode) {
                 return;
             }
 
@@ -106,7 +100,7 @@
             char c = e.getKeyChar();
 
             // If we are not in composition mode, wait a back slash
-            if (notInCompositionMode)  {
+            if (notInCompositionMode) {
                 // If the type character is not a back slash, pass through
                 if (c != '\\') {
                     return;
@@ -115,30 +109,30 @@
                 startComposition();     // Enter to composition mode
             } else {
                 switch (c) {
-                case ' ':       // Exit from composition mode
-                    finishComposition();
-                    break;
-                case '\u007f':  // Delete
-                    deleteCharacter();
-                    break;
-                case '\b':      // BackSpace
-                    deletePreviousCharacter();
-                    break;
-                case '\u001b':  // Escape
-                    cancelComposition();
-                    break;
-                case '\n':      // Return
-                case '\t':      // Tab
-                    sendCommittedText();
-                    break;
-                default:
-                    composeUnicodeEscape(c);
-                    break;
+                    case ' ':       // Exit from composition mode
+                        finishComposition();
+                        break;
+                    case '\u007f':  // Delete
+                        deleteCharacter();
+                        break;
+                    case '\b':      // BackSpace
+                        deletePreviousCharacter();
+                        break;
+                    case '\u001b':  // Escape
+                        cancelComposition();
+                        break;
+                    case '\n':      // Return
+                    case '\t':      // Tab
+                        sendCommittedText();
+                        break;
+                    default:
+                        composeUnicodeEscape(c);
+                        break;
                 }
             }
         } else {  // KeyEvent.KEY_RELEASED
             // If we are not in composition mode, pass through
-            if (notInCompositionMode)  {
+            if (notInCompositionMode) {
                 return;
             }
         }
@@ -148,7 +142,7 @@
 
     private void composeUnicodeEscape(char c) {
         switch (buffer.length()) {
-            case  1:  // \\
+            case 1:  // \\
                 waitEscapeCharacter(c);
                 break;
             case 2:  // \\u or \\U
@@ -221,7 +215,7 @@
     private void waitDigit2(char c) {
         if (Character.digit(c, 16) != -1) {
             buffer.insert(insertionPoint++, c);
-            char codePoint = (char)getCodePoint(buffer, 2, 5);
+            char codePoint = (char) getCodePoint(buffer, 2, 5);
             if (Character.isHighSurrogate(codePoint)) {
                 format = SURROGATE_PAIR;
                 buffer.append("\\u");
@@ -261,11 +255,11 @@
     private void sendComposedText() {
         AttributedString as = new AttributedString(buffer.toString());
         as.addAttribute(TextAttribute.INPUT_METHOD_HIGHLIGHT,
-                        InputMethodHighlight.SELECTED_RAW_TEXT_HIGHLIGHT);
+                InputMethodHighlight.SELECTED_RAW_TEXT_HIGHLIGHT);
         context.dispatchInputMethodEvent(
-                                  InputMethodEvent.INPUT_METHOD_TEXT_CHANGED,
-                                  as.getIterator(), 0,
-                                  TextHitInfo.leading(insertionPoint), null);
+                InputMethodEvent.INPUT_METHOD_TEXT_CHANGED,
+                as.getIterator(), 0,
+                TextHitInfo.leading(insertionPoint), null);
     }
 
     /**
@@ -274,9 +268,9 @@
     private void sendCommittedText() {
         AttributedString as = new AttributedString(buffer.toString());
         context.dispatchInputMethodEvent(
-                                  InputMethodEvent.INPUT_METHOD_TEXT_CHANGED,
-                                  as.getIterator(), buffer.length(),
-                                  TextHitInfo.leading(insertionPoint), null);
+                InputMethodEvent.INPUT_METHOD_TEXT_CHANGED,
+                as.getIterator(), buffer.length(),
+                TextHitInfo.leading(insertionPoint), null);
 
         buffer.setLength(0);
         insertionPoint = 0;
@@ -298,9 +292,9 @@
         }
 
         context.dispatchInputMethodEvent(
-                                  InputMethodEvent.CARET_POSITION_CHANGED,
-                                  null, 0,
-                                  TextHitInfo.leading(insertionPoint), null);
+                InputMethodEvent.CARET_POSITION_CHANGED,
+                null, 0,
+                TextHitInfo.leading(insertionPoint), null);
     }
 
     /**
@@ -314,9 +308,9 @@
         }
 
         context.dispatchInputMethodEvent(
-                                  InputMethodEvent.CARET_POSITION_CHANGED,
-                                  null, 0,
-                                  TextHitInfo.leading(insertionPoint), null);
+                InputMethodEvent.CARET_POSITION_CHANGED,
+                null, 0,
+                TextHitInfo.leading(insertionPoint), null);
     }
 
     /**
@@ -383,7 +377,7 @@
     private void finishComposition() {
         int len = buffer.length();
         if (len == 6 && format != SPECIAL_ESCAPE) {
-            char codePoint = (char)getCodePoint(buffer, 2, 5);
+            char codePoint = (char) getCodePoint(buffer, 2, 5);
             if (Character.isValidCodePoint(codePoint) && codePoint != 0xFFFF) {
                 buffer.setLength(0);
                 buffer.append(codePoint);
@@ -400,11 +394,11 @@
             }
         } else if (len == 12 && format == SURROGATE_PAIR) {
             char[] codePoint = {
-                (char)getCodePoint(buffer, 2, 5),
-                (char)getCodePoint(buffer, 8, 11)
+                (char) getCodePoint(buffer, 2, 5),
+                (char) getCodePoint(buffer, 8, 11)
             };
-            if (Character.isHighSurrogate(codePoint[0]) &&
-                Character.isLowSurrogate(codePoint[1])) {
+            if (Character.isHighSurrogate(codePoint[0]) && Character.
+                    isLowSurrogate(codePoint[1])) {
                 buffer.setLength(0);
                 buffer.append(codePoint);
                 sendCommittedText();
@@ -418,7 +412,7 @@
     private int getCodePoint(StringBuffer sb, int from, int to) {
         int value = 0;
         for (int i = from; i <= to; i++) {
-            value = (value<<4) + Character.digit(sb.charAt(i), 16);
+            value = (value << 4) + Character.digit(sb.charAt(i), 16);
         }
         return value;
     }
@@ -427,7 +421,6 @@
         Toolkit.getDefaultToolkit().beep();
     }
 
-
     public void activate() {
         if (buffer == null) {
             buffer = new StringBuffer(12);
--- a/jdk/src/share/demo/jfc/CodePointIM/CodePointInputMethodDescriptor.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/CodePointIM/CodePointInputMethodDescriptor.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -28,17 +28,15 @@
  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
+package com.sun.inputmethods.internal.codepointim;
 
-/*
- */
-
-package com.sun.inputmethods.internal.codepointim;
 
 import java.awt.Image;
 import java.awt.im.spi.InputMethodDescriptor;
 import java.awt.im.spi.InputMethod;
 import java.util.Locale;
 
+
 /**
  * The CodePointInputMethod is a simple input method that allows Unicode
  * characters to be entered via their hexadecimal code point values.
@@ -68,12 +66,12 @@
      */
     public Locale[] getAvailableLocales() {
         Locale[] locales = {
-            new Locale("","",""),
-        };
+            new Locale("", "", ""), };
         return locales;
     }
 
-    public synchronized String getInputMethodDisplayName(Locale inputLocale, Locale displayLanguage) {
+    public synchronized String getInputMethodDisplayName(Locale inputLocale,
+            Locale displayLanguage) {
         return "CodePoint Input Method";
     }
 
--- a/jdk/src/share/demo/jfc/FileChooserDemo/ExampleFileSystemView.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/FileChooserDemo/ExampleFileSystemView.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,13 +29,12 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
 import java.io.File;
 import java.io.IOException;
 import javax.swing.filechooser.FileSystemView;
 
+
 /**
  * This is a simple example that uses the FileSystemView class.
  * You can provide a superclass of the FileSystemView class with your own functionality.
@@ -43,6 +42,7 @@
  * @author Pavel Porvatov
  */
 public class ExampleFileSystemView extends FileSystemView {
+
     /**
      * Creates a new folder with the default name "New folder". This method is invoked
      * when the user presses the "New folder" button.
@@ -65,8 +65,9 @@
      * Returns a list which appears in a drop-down list of the FileChooser component.
      * In this implementation only the home directory is returned.
      */
+    @Override
     public File[] getRoots() {
-        return new File[]{getHomeDirectory()};
+        return new File[] { getHomeDirectory() };
     }
 
     /**
@@ -74,9 +75,11 @@
      * A string with all upper case letters is returned for a directory.
      * A string with all lower case letters is returned for a file.
      */
+    @Override
     public String getSystemDisplayName(File f) {
         String displayName = super.getSystemDisplayName(f);
 
-        return f.isDirectory() ? displayName.toUpperCase() : displayName.toLowerCase();
+        return f.isDirectory() ? displayName.toUpperCase() : displayName.
+                toLowerCase();
     }
 }
--- a/jdk/src/share/demo/jfc/FileChooserDemo/ExampleFileView.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/FileChooserDemo/ExampleFileView.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,14 +29,13 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
 import javax.swing.*;
 import javax.swing.filechooser.*;
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
 
-import java.io.File;
-import java.util.Hashtable;
 
 /**
  * A convenience implementation of the FileView interface that
@@ -61,15 +60,19 @@
  * @author Jeff Dinkins
  */
 public class ExampleFileView extends FileView {
-    private final Hashtable<String, Icon> icons = new Hashtable<String, Icon>();
-    private final Hashtable<File, String> fileDescriptions = new Hashtable<File, String>();
-    private final Hashtable<String, String> typeDescriptions = new Hashtable<String, String>();
+
+    private final Map<String, Icon> icons = new HashMap<String, Icon>();
+    private final Map<File, String> fileDescriptions =
+            new HashMap<File, String>();
+    private final Map<String, String> typeDescriptions =
+            new HashMap<String, String>();
 
     /**
      * The name of the file.  Do nothing special here. Let
      * the system file view handle this.
      * @see FileView#getName
      */
+    @Override
     public String getName(File f) {
         return null;
     }
@@ -86,6 +89,7 @@
      *
      * @see FileView#getDescription
      */
+    @Override
     public String getDescription(File f) {
         return fileDescriptions.get(f);
     }
@@ -112,6 +116,7 @@
      *
      * @see FileView#getTypeDescription
      */
+    @Override
     public String getTypeDescription(File f) {
         return typeDescriptions.get(getExtension(f));
     }
@@ -122,12 +127,12 @@
      */
     private String getExtension(File f) {
         String name = f.getName();
-        if(name != null) {
+        if (name != null) {
             int extensionIndex = name.lastIndexOf('.');
-            if(extensionIndex < 0) {
+            if (extensionIndex < 0) {
                 return null;
             }
-            return name.substring(extensionIndex+1).toLowerCase();
+            return name.substring(extensionIndex + 1).toLowerCase();
         }
         return null;
     }
@@ -147,10 +152,11 @@
      *
      * @see FileView#getIcon
      */
+    @Override
     public Icon getIcon(File f) {
         Icon icon = null;
         String extension = getExtension(f);
-        if(extension != null) {
+        if (extension != null) {
             icon = icons.get(extension);
         }
         return icon;
@@ -168,11 +174,11 @@
      *
      * @see FileView#isTraversable
      */
+    @Override
     public Boolean isTraversable(File f) {
         // if (some_reason) {
         //    return Boolean.FALSE;
         // }
         return null;    // Use default from FileSystemView
     }
-
 }
--- a/jdk/src/share/demo/jfc/FileChooserDemo/FileChooserDemo.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/FileChooserDemo/FileChooserDemo.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,21 +29,56 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
-import javax.swing.*;
-import javax.swing.filechooser.*;
+import java.lang.reflect.InvocationTargetException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.swing.UIManager.LookAndFeelInfo;
+import java.awt.BorderLayout;
+import java.awt.CardLayout;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+import javax.swing.BorderFactory;
+import javax.swing.Box;
+import javax.swing.BoxLayout;
+import javax.swing.ButtonGroup;
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JComponent;
+import javax.swing.JDialog;
+import javax.swing.JFileChooser;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.JTextField;
+import javax.swing.JToggleButton;
+import javax.swing.LookAndFeel;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.WindowConstants;
+import javax.swing.filechooser.FileFilter;
+import javax.swing.filechooser.FileNameExtensionFilter;
+import javax.swing.filechooser.FileSystemView;
+import java.util.ArrayList;
 import javax.swing.plaf.FileChooserUI;
 import javax.swing.plaf.basic.BasicFileChooserUI;
+import java.io.File;
+import static javax.swing.JFileChooser.*;
 
-import java.awt.*;
-import java.io.File;
-import java.awt.event.*;
-import java.beans.*;
-import java.util.Vector;
-
-import static javax.swing.JFileChooser.*;
 
 /**
  *
@@ -51,12 +86,18 @@
  *
  * @author Jeff Dinkins
  */
+@SuppressWarnings("serial")
 public class FileChooserDemo extends JPanel implements ActionListener {
+
+    public static final String NIMBUS_LAF_NAME = "Nimbus";
     private static JFrame frame;
+    private final List<SupportedLaF> supportedLaFs =
+            new ArrayList<SupportedLaF>();
+    private static SupportedLaF nimbusLaF;
 
-    private final Vector<SupportedLaF> supportedLaFs = new Vector();
 
     private static class SupportedLaF {
+
         private final String name;
         private final LookAndFeel laf;
 
@@ -65,18 +106,15 @@
             this.laf = laf;
         }
 
+        @Override
         public String toString() {
             return name;
         }
     }
-
-
     private JButton showButton;
-
     private JCheckBox showAllFilesFilterCheckBox;
     private JCheckBox showImageFilesFilterCheckBox;
     private JCheckBox showFullDescriptionCheckBox;
-
     private JCheckBox useFileViewCheckBox;
     private JCheckBox useFileSystemViewCheckBox;
     private JCheckBox accessoryCheckBox;
@@ -84,46 +122,44 @@
     private JCheckBox useEmbedInWizardCheckBox;
     private JCheckBox useControlsCheckBox;
     private JCheckBox enableDragCheckBox;
-
     private JRadioButton singleSelectionRadioButton;
     private JRadioButton multiSelectionRadioButton;
-
     private JRadioButton openRadioButton;
     private JRadioButton saveRadioButton;
     private JRadioButton customButton;
-
     private JComboBox lafComboBox;
-
     private JRadioButton justFilesRadioButton;
     private JRadioButton justDirectoriesRadioButton;
     private JRadioButton bothFilesAndDirectoriesRadioButton;
-
     private JTextField customField;
-
     private final ExampleFileView fileView;
-
     private final ExampleFileSystemView fileSystemView;
-
-    private final static Dimension hpad10 = new Dimension(10,1);
-    private final static Dimension vpad20 = new Dimension(1,20);
+    private final static Dimension hpad10 = new Dimension(10, 1);
+    private final static Dimension vpad20 = new Dimension(1, 20);
     private final static Dimension vpad7 = new Dimension(1, 7);
     private final static Dimension vpad4 = new Dimension(1, 4);
     private final static Insets insets = new Insets(5, 10, 0, 10);
-
     private final FilePreviewer previewer;
     private final JFileChooser chooser;
 
+    @SuppressWarnings("LeakingThisInConstructor")
     public FileChooserDemo() {
-        UIManager.LookAndFeelInfo[] installedLafs = UIManager.getInstalledLookAndFeels();
+        UIManager.LookAndFeelInfo[] installedLafs = UIManager.
+                getInstalledLookAndFeels();
         for (UIManager.LookAndFeelInfo lafInfo : installedLafs) {
             try {
-                Class lnfClass = Class.forName(lafInfo.getClassName());
-                LookAndFeel laf = (LookAndFeel)(lnfClass.newInstance());
+                Class<?> lnfClass = Class.forName(lafInfo.getClassName());
+                LookAndFeel laf = (LookAndFeel) (lnfClass.newInstance());
                 if (laf.isSupportedLookAndFeel()) {
                     String name = lafInfo.getName();
-                    supportedLaFs.add(new SupportedLaF(name, laf));
+                    SupportedLaF supportedLaF = new SupportedLaF(name, laf);
+                    supportedLaFs.add(supportedLaF);
+                    if (NIMBUS_LAF_NAME.equals(name)) {
+                        nimbusLaF = supportedLaF;
+                    }
                 }
-            } catch (Exception e) { // If ANYTHING weird happens, don't add it
+            } catch (Exception ignored) {
+                // If ANYTHING weird happens, don't add this L&F
             }
         }
 
@@ -134,8 +170,10 @@
 
         // Create Custom FileView
         fileView = new ExampleFileView();
-        fileView.putIcon("jpg", new ImageIcon(getClass().getResource("/resources/images/jpgIcon.jpg")));
-        fileView.putIcon("gif", new ImageIcon(getClass().getResource("/resources/images/gifIcon.gif")));
+        fileView.putIcon("jpg", new ImageIcon(getClass().getResource(
+                "/resources/images/jpgIcon.jpg")));
+        fileView.putIcon("gif", new ImageIcon(getClass().getResource(
+                "/resources/images/gifIcon.gif")));
 
         // Create Custom FileSystemView
         fileSystemView = new ExampleFileSystemView();
@@ -155,8 +193,11 @@
         customButton.addActionListener(optionListener);
 
         customField = new JTextField(8) {
+
+            @Override
             public Dimension getMaximumSize() {
-                return new Dimension(getPreferredSize().width, getPreferredSize().height);
+                return new Dimension(getPreferredSize().width,
+                        getPreferredSize().height);
             }
         };
         customField.setText("Doit");
@@ -220,7 +261,8 @@
         group3.add(justDirectoriesRadioButton);
         justDirectoriesRadioButton.addActionListener(optionListener);
 
-        bothFilesAndDirectoriesRadioButton = new JRadioButton("Select Files or Directories");
+        bothFilesAndDirectoriesRadioButton = new JRadioButton(
+                "Select Files or Directories");
         group3.add(bothFilesAndDirectoriesRadioButton);
         bothFilesAndDirectoriesRadioButton.addActionListener(optionListener);
 
@@ -241,7 +283,8 @@
         showButton.setMnemonic('s');
 
         // Create laf combo box
-        lafComboBox = new JComboBox(supportedLaFs);
+        lafComboBox = new JComboBox(supportedLaFs.toArray());
+        lafComboBox.setSelectedItem(nimbusLaF);
         lafComboBox.setEditable(false);
         lafComboBox.addActionListener(optionListener);
 
@@ -317,7 +360,8 @@
         // ************* File & Directory Options *****************
         // ********************************************************
         JPanel control4 = new InsetPanel(insets);
-        control4.setBorder(BorderFactory.createTitledBorder("File and Directory Options"));
+        control4.setBorder(BorderFactory.createTitledBorder(
+                "File and Directory Options"));
         control4.setLayout(new BoxLayout(control4, BoxLayout.Y_AXIS));
         control4.add(Box.createRigidArea(vpad20));
         control4.add(justFilesRadioButton);
@@ -379,7 +423,7 @@
         // clear the preview from the previous display of the chooser
         JComponent accessory = chooser.getAccessory();
         if (accessory != null) {
-            ((FilePreviewer)accessory).loadImage(null);
+            ((FilePreviewer) accessory).loadImage(null);
         }
 
         if (useEmbedInWizardCheckBox.isSelected()) {
@@ -393,25 +437,28 @@
         if (retval == APPROVE_OPTION) {
             JOptionPane.showMessageDialog(frame, getResultString());
         } else if (retval == CANCEL_OPTION) {
-            JOptionPane.showMessageDialog(frame, "User cancelled operation. No file was chosen.");
+            JOptionPane.showMessageDialog(frame,
+                    "User cancelled operation. No file was chosen.");
         } else if (retval == ERROR_OPTION) {
-            JOptionPane.showMessageDialog(frame, "An error occured. No file was chosen.");
+            JOptionPane.showMessageDialog(frame,
+                    "An error occured. No file was chosen.");
         } else {
             JOptionPane.showMessageDialog(frame, "Unknown operation occured.");
         }
     }
 
     private void resetFileFilters(boolean enableFilters,
-                                  boolean showExtensionInDescription) {
+            boolean showExtensionInDescription) {
         chooser.resetChoosableFileFilters();
         if (enableFilters) {
-            FileFilter jpgFilter = createFileFilter("JPEG Compressed Image Files",
-                                         showExtensionInDescription, "jpg");
+            FileFilter jpgFilter = createFileFilter(
+                    "JPEG Compressed Image Files",
+                    showExtensionInDescription, "jpg");
             FileFilter gifFilter = createFileFilter("GIF Image Files",
-                                         showExtensionInDescription, "gif");
+                    showExtensionInDescription, "gif");
             FileFilter bothFilter = createFileFilter("JPEG and GIF Image Files",
-                                          showExtensionInDescription, "jpg",
-                                          "gif");
+                    showExtensionInDescription, "jpg",
+                    "gif");
             chooser.addChoosableFileFilter(bothFilter);
             chooser.addChoosableFileFilter(jpgFilter);
             chooser.addChoosableFileFilter(gifFilter);
@@ -419,7 +466,7 @@
     }
 
     private FileFilter createFileFilter(String description,
-            boolean showExtensionInDescription, String...extensions) {
+            boolean showExtensionInDescription, String... extensions) {
         if (showExtensionInDescription) {
             description = createFileNameFilterDescriptionFromExtensions(
                     description, extensions);
@@ -429,8 +476,8 @@
 
     private String createFileNameFilterDescriptionFromExtensions(
             String description, String[] extensions) {
-        String fullDescription = (description == null) ?
-                "(" : description + " (";
+        String fullDescription = (description == null) ? "(" : description
+                + " (";
         // build the description from the extension list
         fullDescription += "." + extensions[0];
         for (int i = 1; i < extensions.length; i++) {
@@ -441,12 +488,15 @@
         return fullDescription;
     }
 
+
     private class WizardDialog extends JDialog implements ActionListener {
+
         CardLayout cardLayout;
         JPanel cardPanel;
         JLabel messageLabel;
         JButton backButton, nextButton, closeButton;
 
+        @SuppressWarnings("LeakingThisInConstructor")
         WizardDialog(JFrame frame, boolean modal) {
             super(frame, "Embedded JFileChooser Demo", modal);
 
@@ -494,15 +544,16 @@
                     // Workaround for bug 4528663. This is necessary to
                     // pick up the contents of the file chooser text field.
                     // This will trigger an APPROVE_SELECTION action.
-                    ((BasicFileChooserUI)ui).getApproveSelectionAction().actionPerformed(null);
+                    ((BasicFileChooserUI) ui).getApproveSelectionAction().
+                            actionPerformed(null);
                 } else {
                     next();
                 }
             } else if (src == closeButton) {
                 close();
-            } else if (cmd == APPROVE_SELECTION) {
+            } else if (APPROVE_SELECTION.equals(cmd)) {
                 next();
-            } else if (cmd == CANCEL_SELECTION) {
+            } else if (CANCEL_SELECTION.equals(cmd)) {
                 close();
             }
         }
@@ -528,6 +579,7 @@
             setVisible(false);
         }
 
+        @Override
         public void dispose() {
             chooser.removeActionListener(this);
 
@@ -542,13 +594,18 @@
 
     private String getResultString() {
         String resultString;
-        String filter = chooser.getFileFilter().getDescription();
+        String filter;
+        if (chooser.getFileFilter() == null) {
+            filter = "";
+        } else {
+            filter = chooser.getFileFilter().getDescription();
+        }
         String path = null;
         boolean isDirMode = (chooser.getFileSelectionMode() == DIRECTORIES_ONLY);
         boolean isMulti = chooser.isMultiSelectionEnabled();
 
         if (isMulti) {
-            File [] files = chooser.getSelectedFiles();
+            File[] files = chooser.getSelectedFiles();
             if (files != null && files.length > 0) {
                 path = "";
                 for (File file : files) {
@@ -565,11 +622,10 @@
             path = path.replace(" ", "&nbsp;");
             filter = filter.replace(" ", "&nbsp;");
             resultString =
-                "<html>You chose " + (isMulti ? "these" : "this") + " " +
-                (isDirMode ? (isMulti ? "directories" : "directory")
-                           : (isMulti ? "files" : "file")) +
-                ": <code>" + path +
-                "</code><br><br>with filter: <br><code>" + filter;
+                    "<html>You chose " + (isMulti ? "these" : "this") + " " + (isDirMode ? (isMulti
+                    ? "directories" : "directory")
+                    : (isMulti ? "files" : "file")) + ": <code>" + path
+                    + "</code><br><br>with filter: <br><code>" + filter;
         } else {
             resultString = "Nothing was chosen";
         }
@@ -577,15 +633,14 @@
     }
 
 
-
-
     /** An ActionListener that listens to the radio buttons. */
     private class OptionListener implements ActionListener {
+
         public void actionPerformed(ActionEvent e) {
             JComponent c = (JComponent) e.getSource();
             boolean selected = false;
             if (c instanceof JToggleButton) {
-                selected = ((JToggleButton)c).isSelected();
+                selected = ((JToggleButton) c).isSelected();
             }
 
             if (c == openRadioButton) {
@@ -612,7 +667,7 @@
                 chooser.setAcceptAllFileFilterUsed(selected);
             } else if (c == showImageFilesFilterCheckBox) {
                 resetFileFilters(selected,
-                                 showFullDescriptionCheckBox.isSelected());
+                        showFullDescriptionCheckBox.isSelected());
                 showFullDescriptionCheckBox.setEnabled(selected);
             } else if (c == setHiddenCheckBox) {
                 chooser.setFileHidingEnabled(!selected);
@@ -637,7 +692,7 @@
                 }
             } else if (c == showFullDescriptionCheckBox) {
                 resetFileFilters(showImageFilesFilterCheckBox.isSelected(),
-                                 selected);
+                        selected);
             } else if (c == justFilesRadioButton) {
                 chooser.setFileSelectionMode(FILES_ONLY);
             } else if (c == justDirectoriesRadioButton) {
@@ -653,27 +708,33 @@
                     chooser.setMultiSelectionEnabled(true);
                 }
             } else if (c == lafComboBox) {
-                SupportedLaF supportedLaF = ((SupportedLaF)lafComboBox.getSelectedItem());
+                SupportedLaF supportedLaF = ((SupportedLaF) lafComboBox.
+                        getSelectedItem());
                 LookAndFeel laf = supportedLaF.laf;
                 try {
                     UIManager.setLookAndFeel(laf);
                     SwingUtilities.updateComponentTreeUI(frame);
-                    if(chooser != null) {
+                    if (chooser != null) {
                         SwingUtilities.updateComponentTreeUI(chooser);
                     }
                     frame.pack();
                 } catch (UnsupportedLookAndFeelException exc) {
                     // This should not happen because we already checked
-                    ((DefaultComboBoxModel)lafComboBox.getModel()).removeElement(supportedLaF);
+                    ((DefaultComboBoxModel) lafComboBox.getModel()).
+                            removeElement(supportedLaF);
                 }
             }
 
         }
     }
 
-    private class FilePreviewer extends JComponent implements PropertyChangeListener {
+
+    private class FilePreviewer extends JComponent implements
+            PropertyChangeListener {
+
         ImageIcon thumbnail = null;
 
+        @SuppressWarnings("LeakingThisInConstructor")
         public FilePreviewer(JFileChooser fc) {
             setPreferredSize(new Dimension(100, 50));
             fc.addPropertyChangeListener(this);
@@ -684,9 +745,10 @@
                 thumbnail = null;
             } else {
                 ImageIcon tmpIcon = new ImageIcon(f.getPath());
-                if(tmpIcon.getIconWidth() > 90) {
+                if (tmpIcon.getIconWidth() > 90) {
                     thumbnail = new ImageIcon(
-                        tmpIcon.getImage().getScaledInstance(90, -1, Image.SCALE_DEFAULT));
+                            tmpIcon.getImage().getScaledInstance(90, -1,
+                            Image.SCALE_DEFAULT));
                 } else {
                     thumbnail = tmpIcon;
                 }
@@ -695,23 +757,24 @@
 
         public void propertyChange(PropertyChangeEvent e) {
             String prop = e.getPropertyName();
-            if (prop == SELECTED_FILE_CHANGED_PROPERTY) {
-                if(isShowing()) {
+            if (SELECTED_FILE_CHANGED_PROPERTY.equals(prop)) {
+                if (isShowing()) {
                     loadImage((File) e.getNewValue());
                     repaint();
                 }
             }
         }
 
+        @Override
         public void paint(Graphics g) {
-            if(thumbnail != null) {
-                int x = getWidth()/2 - thumbnail.getIconWidth()/2;
-                int y = getHeight()/2 - thumbnail.getIconHeight()/2;
-                if(y < 0) {
+            if (thumbnail != null) {
+                int x = getWidth() / 2 - thumbnail.getIconWidth() / 2;
+                int y = getHeight() / 2 - thumbnail.getIconHeight() / 2;
+                if (y < 0) {
                     y = 0;
                 }
 
-                if(x < 5) {
+                if (x < 5) {
                     x = 5;
                 }
                 thumbnail.paintIcon(this, g, x, y);
@@ -720,46 +783,57 @@
     }
 
     public static void main(String s[]) {
-        /*
-           NOTE: By default, the look and feel will be set to the
-           Cross Platform Look and Feel (which is currently Metal).
-           The user may someday be able to override the default
-           via a system property. If you as the developer want to
-           be sure that a particular L&F is set, you can do so
-           by calling UIManager.setLookAndFeel(). For example, the
-           first code snippet below forcibly sets the UI to be the
-           System Look and Feel. The second code snippet forcibly
-           sets the look and feel to the Cross Platform L&F.
+        try {
+            SwingUtilities.invokeAndWait(new Runnable() {
 
-           Snippet 1:
-           try {
-              UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
-           } catch (Exception exc) {
-              System.err.println("Error loading L&F: " + exc);
-           }
+                public void run() {
+                    /*
+                     * NOTE: By default, the look and feel will be set to the
+                     * Cross Platform Look and Feel (which is currently Metal).
+                     * The following code tries to set the Look and Feel to Nimbus.
+                     * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/nimbus.html
+                     */
+                    try {
+                        for (LookAndFeelInfo info : UIManager.
+                                getInstalledLookAndFeels()) {
+                            if (NIMBUS_LAF_NAME.equals(info.getName())) {
+                                UIManager.setLookAndFeel(info.getClassName());
+                                break;
+                            }
+                        }
+                    } catch (Exception ignored) {
+                    }
 
-           Snippet 2:
-           try {
-              UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
-           } catch (Exception exc) {
-              System.err.println("Error loading L&F: " + exc);
-           }
-        */
+                    FileChooserDemo panel = new FileChooserDemo();
 
-        FileChooserDemo panel = new FileChooserDemo();
-
-        frame = new JFrame("FileChooserDemo");
-        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
-        frame.getContentPane().add("Center", panel);
-        frame.pack();
-        frame.setVisible(true);
+                    frame = new JFrame("FileChooserDemo");
+                    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
+                    frame.getContentPane().add("Center", panel);
+                    frame.pack();
+                    frame.setVisible(true);
+                }
+            });
+        } catch (InterruptedException ex) {
+            Logger.getLogger(FileChooserDemo.class.getName()).log(Level.SEVERE,
+                    null,
+                    ex);
+        } catch (InvocationTargetException ex) {
+            Logger.getLogger(FileChooserDemo.class.getName()).log(Level.SEVERE,
+                    null,
+                    ex);
+        }
     }
 
+
     private static class InsetPanel extends JPanel {
+
         Insets i;
+
         InsetPanel(Insets i) {
             this.i = i;
         }
+
+        @Override
         public Insets getInsets() {
             return i;
         }
--- a/jdk/src/share/demo/jfc/Font2DTest/README.txt	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Font2DTest/README.txt	Wed Apr 20 09:31:11 2011 -0700
@@ -7,7 +7,7 @@
     or 
 % appletviewer Font2DTest.html
 
-These instructions assume that the 1.5 versions of the java
+These instructions assume that the 1.7 versions of the java
 and appletviewer commands are in your path.  If they aren't,
 then you should either specify the complete path to the commands
 or update your PATH environment variable as described in the
--- a/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -41,6 +41,9 @@
 
 import javax.swing.*;
 
+import java.util.*;
+import java.util.regex.*;
+
 /**
  * RangeMenu.java
  *
@@ -52,358 +55,8 @@
 
 public final class RangeMenu extends JComboBox implements ActionListener {
 
-    /// Painfully extracted from java.lang.Character.UnicodeBlock.  Arrrgh!
-    /// Unicode 5.1.0 data.
-
-    private final int[][] UNICODE_RANGES = {
-        { 0x000000, 0x00007f }, /// BASIC_LATIN
-        { 0x000080, 0x0000ff }, /// LATIN_1_SUPPLEMENT
-        { 0x000100, 0x00017f }, /// LATIN_EXTENDED_A
-        { 0x000180, 0x00024f }, /// LATIN_EXTENDED_B
-        { 0x000250, 0x0002af }, /// IPA_EXTENSIONS
-        { 0x0002b0, 0x0002ff }, /// SPACING_MODIFIER_LETTERS
-        { 0x000300, 0x00036f }, /// COMBINING_DIACRITICAL_MARKS
-        { 0x000370, 0x0003ff }, /// GREEK_AND_COPTIC
-        { 0x000400, 0x0004ff }, /// CYRILLIC
-        { 0x000500, 0x00052f }, /// CYRILLIC_SUPPLEMENTARY
-        { 0x000530, 0x00058f }, /// ARMENIAN
-        { 0x000590, 0x0005ff }, /// HEBREW
-        { 0x000600, 0x0006ff }, /// ARABIC
-        { 0x000700, 0x00074f }, /// SYRIAC
-        { 0x000750, 0x00077f }, /// ARABIC_SUPPLEMENT
-        { 0x000780, 0x0007bf }, /// THAANA
-        { 0x0007c0, 0x0007ff }, /// NKO
-        { 0x000900, 0x00097f }, /// DEVANAGARI
-        { 0x000980, 0x0009ff }, /// BENGALI
-        { 0x000a00, 0x000a7f }, /// GURMUKHI
-        { 0x000a80, 0x000aff }, /// GUJARATI
-        { 0x000b00, 0x000b7f }, /// ORIYA
-        { 0x000b80, 0x000bff }, /// TAMIL
-        { 0x000c00, 0x000c7f }, /// TELUGU
-        { 0x000c80, 0x000cff }, /// KANNADA
-        { 0x000d00, 0x000d7f }, /// MALAYALAM
-        { 0x000d80, 0x000dff }, /// SINHALA
-        { 0x000e00, 0x000e7f }, /// THAI
-        { 0x000e80, 0x000eff }, /// LAO
-        { 0x000f00, 0x000fff }, /// TIBETAN
-        { 0x001000, 0x00109f }, /// MYANMAR
-        { 0x0010a0, 0x0010ff }, /// GEORGIAN
-        { 0x001100, 0x0011ff }, /// HANGUL_JAMO
-        { 0x001200, 0x00137f }, /// ETHIOPIC
-        { 0x001380, 0x00139f }, /// ETHIOPIC_SUPPLEMENT
-        { 0x0013a0, 0x0013ff }, /// CHEROKEE
-        { 0x001400, 0x00167f }, /// UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS
-        { 0x001680, 0x00169f }, /// OGHAM
-        { 0x0016a0, 0x0016ff }, /// RUNIC
-        { 0x001700, 0x00171f }, /// TAGALOG
-        { 0x001720, 0x00173f }, /// HANUNOO
-        { 0x001740, 0x00175f }, /// BUHID
-        { 0x001760, 0x00177f }, /// TAGBANWA
-        { 0x001780, 0x0017ff }, /// KHMER
-        { 0x001800, 0x0018af }, /// MONGOLIAN
-        { 0x001900, 0x00194f }, /// LIMBU
-        { 0x001950, 0x00197f }, /// TAI_LE
-        { 0x001980, 0x0019df }, /// NEW_TAI_LE
-        { 0x0019e0, 0x0019ff }, /// KHMER_SYMBOLS
-        { 0x001a00, 0x001a1f }, /// BUGINESE
-        { 0x001b00, 0x001b7f }, /// BALINESE
-        { 0x001b80, 0x001bbf }, /// SUNDANESE
-        { 0x001c00, 0x001c4f }, /// LEPCHA
-        { 0x001c50, 0x001c7f }, /// OL_CHIKI
-        { 0x001d00, 0x001d7f }, /// PHONETIC_EXTENSIONS
-        { 0x001d80, 0x001dbf }, /// PHONEITC EXTENSIONS SUPPLEMENT
-        { 0x001dc0, 0x001dff }, /// COMBINING_DIACRITICAL_MAKRS_SUPPLEMENT
-        { 0x001e00, 0x001eff }, /// LATIN_EXTENDED_ADDITIONAL
-        { 0x001f00, 0x001fff }, /// GREEK_EXTENDED
-        { 0x002000, 0x00206f }, /// GENERAL_PUNCTUATION
-        { 0x002070, 0x00209f }, /// SUPERSCRIPTS_AND_SUBSCRIPTS
-        { 0x0020a0, 0x0020cf }, /// CURRENCY_SYMBOLS
-        { 0x0020d0, 0x0020ff }, /// COMBINING_MARKS_FOR_SYMBOLS
-        { 0x002100, 0x00214f }, /// LETTERLIKE_SYMBOLS
-        { 0x002150, 0x00218f }, /// NUMBER_FORMS
-        { 0x002190, 0x0021ff }, /// ARROWS
-        { 0x002200, 0x0022ff }, /// MATHEMATICAL_OPERATORS
-        { 0x002300, 0x0023ff }, /// MISCELLANEOUS_TECHNICAL
-        { 0x002400, 0x00243f }, /// CONTROL_PICTURES
-        { 0x002440, 0x00245f }, /// OPTICAL_CHARACTER_RECOGNITION
-        { 0x002460, 0x0024ff }, /// ENCLOSED_ALPHANUMERICS
-        { 0x002500, 0x00257f }, /// BOX_DRAWING
-        { 0x002580, 0x00259f }, /// BLOCK_ELEMENTS
-        { 0x0025a0, 0x0025ff }, /// GEOMETRIC_SHAPES
-        { 0x002600, 0x0026ff }, /// MISCELLANEOUS_SYMBOLS
-        { 0x002700, 0x0027bf }, /// DINGBATS
-        { 0x0027c0, 0x0027ef }, /// MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A
-        { 0x0027f0, 0x0027ff }, /// SUPPLEMENTAL_ARROWS_A
-        { 0x002800, 0x0028ff }, /// BRAILLE_PATTERNS
-        { 0x002900, 0x00297f }, /// SUPPLEMENTAL_ARROWS_B
-        { 0x002980, 0x0029ff }, /// MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B
-        { 0x002a00, 0x002aff }, /// SUPPLEMENTAL_MATHEMATICAL_OPERATORS
-        { 0x002b00, 0x002bff }, /// MISCELLANEOUS_SYMBOLS_AND_ARROWS
-        { 0x002c00, 0x002c5f }, /// GLAGOLITIC
-        { 0x002c60, 0x002c7f }, /// LATIN_EXTENDED-C
-        { 0x002c80, 0x002cff }, /// COPTIC
-        { 0x002d00, 0x002d2f }, /// GEORGIAN_SUPPLEMENT
-        { 0x002d30, 0x002d7f }, /// TIFINAGH
-        { 0x002d80, 0x002ddf }, /// ETHIOPIC_EXTENDED
-        { 0x002de0, 0x002dff }, /// CYRILLIC_EXTENDED-A
-        { 0x002e00, 0x002e7f }, /// SUPPLEMENTAL_PUNCTUATION
-        { 0x002e80, 0x002eff }, /// CJK_RADICALS_SUPPLEMENT
-        { 0x002f00, 0x002fdf }, /// KANGXI_RADICALS
-        { 0x002ff0, 0x002fff }, /// IDEOGRAPHIC_DESCRIPTION_CHARACTERS
-        { 0x003000, 0x00303f }, /// CJK_SYMBOLS_AND_PUNCTUATION
-        { 0x003040, 0x00309f }, /// HIRAGANA
-        { 0x0030a0, 0x0030ff }, /// KATAKANA
-        { 0x003100, 0x00312f }, /// BOPOMOFO
-        { 0x003130, 0x00318f }, /// HANGUL_COMPATIBILITY_JAMO
-        { 0x003190, 0x00319f }, /// KANBUN
-        { 0x0031a0, 0x0031bf }, /// BOPOMOFO_EXTENDED
-        { 0x0031c0, 0x0031ef }, /// CJK_STROKES
-        { 0x0031f0, 0x0031ff }, /// KATAKANA_PHONETIC_EXTENSIONS
-        { 0x003200, 0x0032ff }, /// ENCLOSED_CJK_LETTERS_AND_MONTHS
-        { 0x003300, 0x0033ff }, /// CJK_COMPATIBILITY
-        { 0x003400, 0x004dbf }, /// CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
-        { 0x004dc0, 0x004dff }, /// YIJING_HEXAGRAM_SYMBOLS
-        { 0x004e00, 0x009fff }, /// CJK_UNIFIED_IDEOGRAPHS
-        { 0x00a000, 0x00a48f }, /// YI_SYLLABLES
-        { 0x00a490, 0x00a4cf }, /// YI_RADICALS
-        { 0x00a500, 0x00a63f }, /// YAI
-        { 0x00a640, 0x00a69f }, /// CYRILLIC_EXTENDED-B
-        { 0x00a700, 0x00a71f }, /// MODIFIER_TONE_LETTERS
-        { 0x00a720, 0x00a7ff }, /// LATIN_EXTENDED-D
-        { 0x00a800, 0x00a82f }, /// SYLOTI_NAGRI
-        { 0x00a840, 0x00a87f }, /// PHAGS-PA
-        { 0x00a880, 0x00a8df }, /// SAURASHTRA
-        { 0x00a900, 0x00a92f }, /// KAYAH_LI
-        { 0x00a930, 0x00a95f }, /// REJANG
-        { 0x00aa00, 0x00aa5f }, /// CHAM
-        { 0x00ac00, 0x00d7af }, /// HANGUL_SYLLABLES
-        { 0x00d800, 0x00db7f }, /// HIGH_SURROGATES_AREA
-        { 0x00db80, 0x00dbff }, /// HIGH_PRIVATE_USE_SURROGATES_AREA
-        { 0x00dc00, 0x00dfff }, /// LOW_SURROGATES_AREA
-        { 0x00e000, 0x00f8ff }, /// PRIVATE_USE_AREA
-        { 0x00f900, 0x00faff }, /// CJK_COMPATIBILITY_IDEOGRAPHS
-        { 0x00fb00, 0x00fb4f }, /// ALPHABETIC_PRESENTATION_FORMS
-        { 0x00fb50, 0x00fdff }, /// ARABIC_PRESENTATION_FORMS_A
-        { 0x00fe00, 0x00fe0f }, /// VARIATION_SELECTORS
-        { 0x00fe10, 0x00fe1f }, /// VERTICAL_FORMS
-        { 0x00fe20, 0x00fe2f }, /// COMBINING_HALF_MARKS
-        { 0x00fe30, 0x00fe4f }, /// CJK_COMPATIBILITY_FORMS
-        { 0x00fe50, 0x00fe6f }, /// SMALL_FORM_VARIANTS
-        { 0x00fe70, 0x00feff }, /// ARABIC_PRESENTATION_FORMS_B
-        { 0x00ff00, 0x00ffef }, /// HALFWIDTH_AND_FULLWIDTH_FORMS
-        { 0x00fff0, 0x00ffff }, /// SPECIALS
-        { 0x010000, 0x01007f }, /// LINEAR_B_SYLLABARY
-        { 0x010080, 0x0100ff }, /// LINEAR_B_IDEOGRAMS
-        { 0x010100, 0x01013f }, /// AEGEAN_NUMBERS
-        { 0x010140, 0x01018f }, /// ANCIENT_GREEK_NUMBERS
-        { 0x010190, 0x0101cf }, /// ANCIENT_SYMBOLS
-        { 0x0101d0, 0x0101ff }, /// PHAISTOS_DISC
-        { 0x010280, 0x01029f }, /// LYCIAN
-        { 0x0102a0, 0x0102df }, /// CARIAN
-        { 0x010300, 0x01032f }, /// OLD_ITALIC
-        { 0x010330, 0x01034f }, /// GOTHIC
-        { 0x010380, 0x01039f }, /// UGARITIC
-        { 0x0103a0, 0x0103df }, /// OLD_PERSIAN
-        { 0x010400, 0x01044f }, /// DESERET
-        { 0x010450, 0x01047f }, /// SHAVIAN
-        { 0x010480, 0x0104af }, /// OSMANYA
-        { 0x010800, 0x01083f }, /// CYPRIOT_SYLLABARY
-        { 0x010900, 0x01091f }, /// PHOENICIAN
-        { 0x010920, 0x01093f }, /// LYDIAN
-        { 0x010a00, 0x010a5f }, /// KHAROSHTHI
-        { 0x012000, 0x0123ff }, /// CUNEIFORM
-        { 0x012400, 0x01247f }, /// CUNEIFORM_NUMBERS_AND_PUNCTUATION
-        { 0x01d000, 0x01d0ff }, /// BYZANTINE_MUSICAL_SYMBOLS
-        { 0x01d100, 0x01d1ff }, /// MUSICAL_SYMBOLS
-        { 0x01d200, 0x01d24f }, /// ANCIENT_GREEK_MUSICAL_NOTATION
-        { 0x01d300, 0x01d35f }, /// TAI_XUAN_JING_SYMBOLS
-        { 0x01d360, 0x01d37f }, /// COUNTING_ROD_NUMERALS
-        { 0x01d400, 0x01d7ff }, /// MATHEMATICAL_ALPHANUMERIC_SYMBOLS
-        { 0x01f000, 0x01f02f }, /// MAHJONG_TILES
-        { 0x01f030, 0x01f09f }, /// DOMINO_TILES
-        { 0x020000, 0x02a6df }, /// CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
-        { 0x02f800, 0x02fa1f }, /// CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT
-        { 0x0e0000, 0x0e007f }, /// TAGS
-        { 0x0e0100, 0x0e01ef }, /// VARIATION_SELECTORS_SUPPLEMENT
-        { 0x0f0000, 0x0fffff }, /// SUPPLEMENTARY_PRIVATE_USE_AREA_A
-        { 0x100000, 0x10ffff }, /// SUPPLEMENTARY_PRIVATE_USE_AREA_B
-        { 0x000000, 0x00007f }, /// OTHER [USER DEFINED RANGE]
-     };
-
-    private final String[] UNICODE_RANGE_NAMES = {
-        "Basic Latin",
-        "Latin-1 Supplement",
-        "Latin Extended-A",
-        "Latin Extended-B",
-        "IPA Extensions",
-        "Spacing Modifier Letters",
-        "Combining Diacritical Marks",
-        "Greek and Coptic",
-        "Cyrillic",
-        "Cyrillic Supplement",
-        "Armenian",
-        "Hebrew",
-        "Arabic",
-        "Syriac",
-        "Arabic Supplement",
-        "Thaana",
-        "NKo",
-        "Devanagari",
-        "Bengali",
-        "Gurmukhi",
-        "Gujarati",
-        "Oriya",
-        "Tamil",
-        "Telugu",
-        "Kannada",
-        "Malayalam",
-        "Sinhala",
-        "Thai",
-        "Lao",
-        "Tibetan",
-        "Myanmar",
-        "Georgian",
-        "Hangul Jamo",
-        "Ethiopic",
-        "Ethiopic Supplement",
-        "Cherokee",
-        "Unified Canadian Aboriginal Syllabics",
-        "Ogham",
-        "Runic",
-        "Tagalog",
-        "Hanunoo",
-        "Buhid",
-        "Tagbanwa",
-        "Khmer",
-        "Mongolian",
-        "Limbu",
-        "Tai Le",
-        "New Tai Lue",
-        "Khmer Symbols",
-        "Buginese",
-        "Balinese",
-        "Sundanese",
-        "Lepcha",
-        "Ol Chiki",
-        "Phonetic Extensions",
-        "Phonetic Extensions Supplement",
-        "Combining Diacritical Marks Supplement",
-        "Latin Extended Additional",
-        "Greek Extended",
-        "General Punctuation",
-        "Superscripts and Subscripts",
-        "Currency Symbols",
-        "Combining Diacritical Marks for Symbols",
-        "Letterlike Symbols",
-        "Number Forms",
-        "Arrows",
-        "Mathematical Operators",
-        "Miscellaneous Technical",
-        "Control Pictures",
-        "Optical Character Recognition",
-        "Enclosed Alphanumerics",
-        "Box Drawing",
-        "Block Elements",
-        "Geometric Shapes",
-        "Miscellaneous Symbols",
-        "Dingbats",
-        "Miscellaneous Mathematical Symbols-A",
-        "Supplemental Arrows-A",
-        "Braille Patterns",
-        "Supplemental Arrows-B",
-        "Miscellaneous Mathematical Symbols-B",
-        "Supplemental Mathematical Operators",
-        "Miscellaneous Symbols and Arrows",
-        "Glagolitic",
-        "Latin Extended-C",
-        "Coptic",
-        "Georgian Supplement",
-        "Tifinagh",
-        "Ethiopic Extended",
-        "Cyrillic Extended-A",
-        "Supplemental Punctuation",
-        "CJK Radicals Supplement",
-        "Kangxi Radicals",
-        "Ideographic Description Characters",
-        "CJK Symbols and Punctuation",
-        "Hiragana",
-        "Katakana",
-        "Bopomofo",
-        "Hangul Compatibility Jamo",
-        "Kanbun",
-        "Bopomofo Extended",
-        "CJK Strokes",
-        "Katakana Phonetic Extensions",
-        "Enclosed CJK Letters and Months",
-        "CJK Compatibility",
-        "CJK Unified Ideographs Extension A",
-        "Yijing Hexagram Symbols",
-        "CJK Unified Ideographs",
-        "Yi Syllables",
-        "Yi Radicals",
-        "Vai",
-        "Cyrillic Extended-B",
-        "Modifier Tone Letters",
-        "Latin Extended-D",
-        "Syloti Nagri",
-        "Phags-pa",
-        "Saurashtra",
-        "Kayah Li",
-        "Rejang",
-        "Cham",
-        "Hangul Syllables",
-        "High Surrogates",
-        "High Private Use Surrogates",
-        "Low Surrogates",
-        "Private Use Area",
-        "CJK Compatibility Ideographs",
-        "Alphabetic Presentation Forms",
-        "Arabic Presentation Forms-A",
-        "Variation Selectors",
-        "Vertical Forms",
-        "Combining Half Marks",
-        "CJK Compatibility Forms",
-        "Small Form Variants",
-        "Arabic Presentation Forms-B",
-        "Halfwidth and Fullwidth Forms",
-        "Specials",
-        "Linear B Syllabary",
-        "Linear B Ideograms",
-        "Aegean Numbers",
-        "Ancient Greek Numbers",
-        "Ancient Symbols",
-        "Phaistos Disc",
-        "Lycian",
-        "Carian",
-        "Old Italic",
-        "Gothic",
-        "Ugaritic",
-        "Old Persian",
-        "Deseret",
-        "Shavian",
-        "Osmanya",
-        "Cypriot Syllabary",
-        "Phoenician",
-        "Lydian",
-        "Kharoshthi",
-        "Cuneiform",
-        "Cuneiform Numbers and Punctuation",
-        "Byzantine Musical Symbols",
-        "Musical Symbols",
-        "Ancient Greek Musical Notation",
-        "Tai Xuan Jing Symbols",
-        "Counting Rod Numerals",
-        "Mathematical Alphanumeric Symbols",
-        "Mahjong Tiles",
-        "Domino Tiles",
-        "CJK Unified Ideographs Extension B",
-        "CJK Compatibility Ideographs Supplement",
-        "Tags",
-        "Variation Selectors Supplement",
-        "Supplementary Private Use Area-A",
-        "Supplementary Private Use Area-B",
-        "Custom...",
-    };
+    private static final int[][] UNICODE_RANGES = getUnicodeRanges();
+    private static final String[] UNICODE_RANGE_NAMES = getUnicodeRangeNames();
 
     private boolean useCustomRange = false;
     private int[] customRange = { 0x0000, 0x007f };
@@ -536,4 +189,61 @@
                 customRangeDialog.hide();
         }
     }
+
+    private static int[][] getUnicodeRanges() {
+        List<Integer> ranges = new ArrayList<>();
+        ranges.add(0);
+        Character.UnicodeBlock currentBlock = Character.UnicodeBlock.of(0);
+        for (int cp = 0x000001; cp < 0x110000; cp++ ) {
+            Character.UnicodeBlock ub = Character.UnicodeBlock.of(cp);
+            if (currentBlock == null) {
+                if (ub != null) {
+                    ranges.add(cp);
+                    currentBlock = ub;
+                }
+            } else {  // being in some unicode range
+                if (ub == null) {
+                    ranges.add(cp - 1);
+                    currentBlock = null;
+                } else if (cp == 0x10ffff) {  // end of last block
+                    ranges.add(cp);
+                } else if (! ub.equals(currentBlock)) {
+                    ranges.add(cp - 1);
+                    ranges.add(cp);
+                    currentBlock = ub;
+                }
+            }
+        }
+        ranges.add(0x00);  // for user defined range.
+        ranges.add(0x7f);  // for user defined range.
+
+        int[][] returnval = new int[ranges.size() / 2][2];
+        for (int i = 0 ; i < ranges.size() / 2 ; i++ ) {
+            returnval[i][0] = ranges.get(2*i);
+            returnval[i][1] = ranges.get(2*i + 1);
+        }
+        return returnval;
+    }
+
+    private static String[] getUnicodeRangeNames() {
+        String[] names = new String[UNICODE_RANGES.length];
+        for (int i = 0 ; i < names.length ; i++ ) {
+            names[i] = titleCase(
+                Character.UnicodeBlock.of(UNICODE_RANGES[i][0]).toString());
+        }
+        names[names.length - 1] = "Custom...";
+        return names;
+    }
+
+    private static String titleCase(String str) {
+        str = str.replaceAll("_", " ");
+        Pattern p = Pattern.compile("(^|\\W)([a-z])");
+        Matcher m = p.matcher(str.toLowerCase(Locale.ROOT));
+        StringBuffer sb = new StringBuffer();
+        while (m.find()) {
+            m.appendReplacement(sb, m.group(1) + m.group(2).toUpperCase(Locale.ROOT));
+        }
+        m.appendTail(sb);
+        return sb.toString().replace("Cjk", "CJK").replace("Nko", "NKo");
+    }
 }
--- a/jdk/src/share/demo/jfc/Metalworks/AquaMetalTheme.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Metalworks/AquaMetalTheme.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,31 +29,39 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
-
 
-import javax.swing.plaf.*;
-import javax.swing.plaf.metal.*;
-import javax.swing.*;
-import javax.swing.border.*;
-import java.awt.*;
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+
 
 /**
  * This class describes a theme using "blue-green" colors.
  *
  * @author Steve Wilson
+ * @author Alexander Kouznetsov
  */
 public class AquaMetalTheme extends DefaultMetalTheme {
 
-    public String getName() { return "Oxide"; }
-
+    @Override
+    public String getName() {
+        return "Oxide";
+    }
     private final ColorUIResource primary1 = new ColorUIResource(102, 153, 153);
     private final ColorUIResource primary2 = new ColorUIResource(128, 192, 192);
     private final ColorUIResource primary3 = new ColorUIResource(159, 235, 235);
 
-    protected ColorUIResource getPrimary1() { return primary1; }
-    protected ColorUIResource getPrimary2() { return primary2; }
-    protected ColorUIResource getPrimary3() { return primary3; }
+    @Override
+    protected ColorUIResource getPrimary1() {
+        return primary1;
+    }
 
+    @Override
+    protected ColorUIResource getPrimary2() {
+        return primary2;
+    }
+
+    @Override
+    protected ColorUIResource getPrimary3() {
+        return primary3;
+    }
 }
--- a/jdk/src/share/demo/jfc/Metalworks/BigContrastMetalTheme.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Metalworks/BigContrastMetalTheme.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,9 +29,6 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
-
 
 import javax.swing.plaf.*;
 import javax.swing.plaf.metal.*;
@@ -39,54 +36,91 @@
 import javax.swing.border.*;
 import java.awt.*;
 
+
 /**
  * This class describes a theme using "green" colors.
  *
  * @author Steve Wilson
+ * @author Alexander Kouznetsov
  */
 public class BigContrastMetalTheme extends ContrastMetalTheme {
 
-    public String getName() { return "Low Vision"; }
+    @Override
+    public String getName() {
+        return "Low Vision";
+    }
+    private final FontUIResource controlFont = new FontUIResource("Dialog",
+            Font.BOLD, 24);
+    private final FontUIResource systemFont = new FontUIResource("Dialog",
+            Font.PLAIN, 24);
+    private final FontUIResource windowTitleFont = new FontUIResource("Dialog",
+            Font.BOLD, 24);
+    private final FontUIResource userFont = new FontUIResource("SansSerif",
+            Font.PLAIN, 24);
+    private final FontUIResource smallFont = new FontUIResource("Dialog",
+            Font.PLAIN, 20);
+
+    @Override
+    public FontUIResource getControlTextFont() {
+        return controlFont;
+    }
+
+    @Override
+    public FontUIResource getSystemTextFont() {
+        return systemFont;
+    }
 
-    private final FontUIResource controlFont = new FontUIResource("Dialog", Font.BOLD, 24);
-    private final FontUIResource systemFont = new FontUIResource("Dialog", Font.PLAIN, 24);
-    private final FontUIResource windowTitleFont = new FontUIResource("Dialog", Font.BOLD, 24);
-    private final FontUIResource userFont = new FontUIResource("SansSerif", Font.PLAIN, 24);
-    private final FontUIResource smallFont = new FontUIResource("Dialog", Font.PLAIN, 20);
+    @Override
+    public FontUIResource getUserTextFont() {
+        return userFont;
+    }
+
+    @Override
+    public FontUIResource getMenuTextFont() {
+        return controlFont;
+    }
+
+    @Override
+    public FontUIResource getWindowTitleFont() {
+        return windowTitleFont;
+    }
+
+    @Override
+    public FontUIResource getSubTextFont() {
+        return smallFont;
+    }
+
+    @Override
+    public void addCustomEntriesToTable(UIDefaults table) {
+        super.addCustomEntriesToTable(table);
+
+        final int internalFrameIconSize = 30;
+        table.put("InternalFrame.closeIcon", MetalIconFactory.
+                getInternalFrameCloseIcon(internalFrameIconSize));
+        table.put("InternalFrame.maximizeIcon", MetalIconFactory.
+                getInternalFrameMaximizeIcon(internalFrameIconSize));
+        table.put("InternalFrame.iconifyIcon", MetalIconFactory.
+                getInternalFrameMinimizeIcon(internalFrameIconSize));
+        table.put("InternalFrame.minimizeIcon", MetalIconFactory.
+                getInternalFrameAltMaximizeIcon(internalFrameIconSize));
 
 
-    public FontUIResource getControlTextFont() { return controlFont;}
-    public FontUIResource getSystemTextFont() { return systemFont;}
-    public FontUIResource getUserTextFont() { return userFont;}
-    public FontUIResource getMenuTextFont() { return controlFont;}
-    public FontUIResource getWindowTitleFont() { return windowTitleFont;}
-    public FontUIResource getSubTextFont() { return smallFont;}
+        Border blackLineBorder = new BorderUIResource(new MatteBorder(2, 2, 2, 2,
+                Color.black));
+        Border textBorder = blackLineBorder;
 
-    public void addCustomEntriesToTable(UIDefaults table) {
-         super.addCustomEntriesToTable(table);
-
-         final int internalFrameIconSize = 30;
-         table.put("InternalFrame.closeIcon", MetalIconFactory.getInternalFrameCloseIcon(internalFrameIconSize));
-         table.put("InternalFrame.maximizeIcon", MetalIconFactory.getInternalFrameMaximizeIcon(internalFrameIconSize));
-         table.put("InternalFrame.iconifyIcon", MetalIconFactory.getInternalFrameMinimizeIcon(internalFrameIconSize));
-         table.put("InternalFrame.minimizeIcon", MetalIconFactory.getInternalFrameAltMaximizeIcon(internalFrameIconSize));
+        table.put("ToolTip.border", blackLineBorder);
+        table.put("TitledBorder.border", blackLineBorder);
 
 
-        Border blackLineBorder = new BorderUIResource( new MatteBorder( 2,2,2,2, Color.black) );
-        Border textBorder = blackLineBorder;
-
-        table.put( "ToolTip.border", blackLineBorder);
-        table.put( "TitledBorder.border", blackLineBorder);
-
+        table.put("TextField.border", textBorder);
+        table.put("PasswordField.border", textBorder);
+        table.put("TextArea.border", textBorder);
+        table.put("TextPane.font", textBorder);
 
-        table.put( "TextField.border", textBorder);
-        table.put( "PasswordField.border", textBorder);
-        table.put( "TextArea.border", textBorder);
-        table.put( "TextPane.font", textBorder);
+        table.put("ScrollPane.border", blackLineBorder);
 
-        table.put( "ScrollPane.border", blackLineBorder);
-
-        table.put( "ScrollBar.width", new Integer(25) );
+        table.put("ScrollBar.width", 25);
 
 
 
--- a/jdk/src/share/demo/jfc/Metalworks/ContrastMetalTheme.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Metalworks/ContrastMetalTheme.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,75 +29,131 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
-import javax.swing.plaf.*;
-import javax.swing.plaf.basic.*;
-import javax.swing.plaf.metal.*;
-import javax.swing.*;
-import javax.swing.border.*;
-import java.awt.*;
+import javax.swing.UIDefaults;
+import javax.swing.border.Border;
+import javax.swing.border.CompoundBorder;
+import javax.swing.border.LineBorder;
+import javax.swing.plaf.BorderUIResource;
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.basic.BasicBorders;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+
 
 /**
  * This class describes a higher-contrast Metal Theme.
  *
  * @author Michael C. Albers
+ * @author Alexander Kouznetsov
  */
-
 public class ContrastMetalTheme extends DefaultMetalTheme {
 
-    public String getName() { return "Contrast"; }
-
+    @Override
+    public String getName() {
+        return "Contrast";
+    }
     private final ColorUIResource primary1 = new ColorUIResource(0, 0, 0);
     private final ColorUIResource primary2 = new ColorUIResource(204, 204, 204);
     private final ColorUIResource primary3 = new ColorUIResource(255, 255, 255);
-    private final ColorUIResource primaryHighlight = new ColorUIResource(102,102,102);
+    private final ColorUIResource primaryHighlight = new ColorUIResource(102,
+            102, 102);
+    private final ColorUIResource secondary2 =
+            new ColorUIResource(204, 204, 204);
+    private final ColorUIResource secondary3 =
+            new ColorUIResource(255, 255, 255);
+
+    @Override
+    protected ColorUIResource getPrimary1() {
+        return primary1;
+    }
+
+    @Override
+    protected ColorUIResource getPrimary2() {
+        return primary2;
+    }
 
-    private final ColorUIResource secondary2 = new ColorUIResource(204, 204, 204);
-    private final ColorUIResource secondary3 = new ColorUIResource(255, 255, 255);
-    private final ColorUIResource controlHighlight = new ColorUIResource(102,102,102);
+    @Override
+    protected ColorUIResource getPrimary3() {
+        return primary3;
+    }
+
+    @Override
+    public ColorUIResource getPrimaryControlHighlight() {
+        return primaryHighlight;
+    }
 
-    protected ColorUIResource getPrimary1() { return primary1; }
-    protected ColorUIResource getPrimary2() { return primary2; }
-    protected ColorUIResource getPrimary3() { return primary3; }
-    public ColorUIResource getPrimaryControlHighlight() { return primaryHighlight;}
+    @Override
+    protected ColorUIResource getSecondary2() {
+        return secondary2;
+    }
+
+    @Override
+    protected ColorUIResource getSecondary3() {
+        return secondary3;
+    }
 
-    protected ColorUIResource getSecondary2() { return secondary2; }
-    protected ColorUIResource getSecondary3() { return secondary3; }
-    public ColorUIResource getControlHighlight() { return super.getSecondary3(); }
+    @Override
+    public ColorUIResource getControlHighlight() {
+        return super.getSecondary3();
+    }
+
+    @Override
+    public ColorUIResource getFocusColor() {
+        return getBlack();
+    }
 
-    public ColorUIResource getFocusColor() { return getBlack(); }
+    @Override
+    public ColorUIResource getTextHighlightColor() {
+        return getBlack();
+    }
+
+    @Override
+    public ColorUIResource getHighlightedTextColor() {
+        return getWhite();
+    }
 
-    public ColorUIResource getTextHighlightColor() { return getBlack(); }
-    public ColorUIResource getHighlightedTextColor() { return getWhite(); }
+    @Override
+    public ColorUIResource getMenuSelectedBackground() {
+        return getBlack();
+    }
+
+    @Override
+    public ColorUIResource getMenuSelectedForeground() {
+        return getWhite();
+    }
 
-    public ColorUIResource getMenuSelectedBackground() { return getBlack(); }
-    public ColorUIResource getMenuSelectedForeground() { return getWhite(); }
-    public ColorUIResource getAcceleratorForeground() { return getBlack(); }
-    public ColorUIResource getAcceleratorSelectedForeground() { return getWhite(); }
+    @Override
+    public ColorUIResource getAcceleratorForeground() {
+        return getBlack();
+    }
 
+    @Override
+    public ColorUIResource getAcceleratorSelectedForeground() {
+        return getWhite();
+    }
 
+    @Override
     public void addCustomEntriesToTable(UIDefaults table) {
 
-        Border blackLineBorder = new BorderUIResource(new LineBorder( getBlack() ));
-        Border whiteLineBorder = new BorderUIResource(new LineBorder( getWhite() ));
+        Border blackLineBorder =
+                new BorderUIResource(new LineBorder(getBlack()));
+        Border whiteLineBorder =
+                new BorderUIResource(new LineBorder(getWhite()));
 
-        Object textBorder = new BorderUIResource( new CompoundBorder(
-                                                       blackLineBorder,
-                                                       new BasicBorders.MarginBorder()));
+        Object textBorder = new BorderUIResource(new CompoundBorder(
+                blackLineBorder,
+                new BasicBorders.MarginBorder()));
 
-        table.put( "ToolTip.border", blackLineBorder);
-        table.put( "TitledBorder.border", blackLineBorder);
-        table.put( "Table.focusCellHighlightBorder", whiteLineBorder);
-        table.put( "Table.focusCellForeground", getWhite());
+        table.put("ToolTip.border", blackLineBorder);
+        table.put("TitledBorder.border", blackLineBorder);
+        table.put("Table.focusCellHighlightBorder", whiteLineBorder);
+        table.put("Table.focusCellForeground", getWhite());
 
-        table.put( "TextField.border", textBorder);
-        table.put( "PasswordField.border", textBorder);
-        table.put( "TextArea.border", textBorder);
-        table.put( "TextPane.font", textBorder);
+        table.put("TextField.border", textBorder);
+        table.put("PasswordField.border", textBorder);
+        table.put("TextArea.border", textBorder);
+        table.put("TextPane.font", textBorder);
 
 
     }
-
 }
--- a/jdk/src/share/demo/jfc/Metalworks/DemoMetalTheme.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Metalworks/DemoMetalTheme.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,15 +29,13 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
-
 
-import javax.swing.plaf.*;
-import javax.swing.plaf.metal.*;
-import javax.swing.*;
-import javax.swing.border.*;
-import java.awt.*;
+import java.awt.Font;
+import javax.swing.UIDefaults;
+import javax.swing.plaf.FontUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalIconFactory;
+
 
 /**
  * This class describes a theme using large fonts.
@@ -45,37 +43,71 @@
  * where people will have trouble seeing what you're doing.
  *
  * @author Steve Wilson
+ * @author Alexander Kouznetsov
  */
 public class DemoMetalTheme extends DefaultMetalTheme {
 
-    public String getName() { return "Presentation"; }
+    @Override
+    public String getName() {
+        return "Presentation";
+    }
+    private final FontUIResource controlFont = new FontUIResource("Dialog",
+            Font.BOLD, 18);
+    private final FontUIResource systemFont = new FontUIResource("Dialog",
+            Font.PLAIN, 18);
+    private final FontUIResource userFont = new FontUIResource("SansSerif",
+            Font.PLAIN, 18);
+    private final FontUIResource smallFont = new FontUIResource("Dialog",
+            Font.PLAIN, 14);
 
-    private final FontUIResource controlFont = new FontUIResource("Dialog", Font.BOLD, 18);
-    private final FontUIResource systemFont = new FontUIResource("Dialog", Font.PLAIN, 18);
-    private final FontUIResource userFont = new FontUIResource("SansSerif", Font.PLAIN, 18);
-    private final FontUIResource smallFont = new FontUIResource("Dialog", Font.PLAIN, 14);
+    @Override
+    public FontUIResource getControlTextFont() {
+        return controlFont;
+    }
+
+    @Override
+    public FontUIResource getSystemTextFont() {
+        return systemFont;
+    }
+
+    @Override
+    public FontUIResource getUserTextFont() {
+        return userFont;
+    }
 
-    public FontUIResource getControlTextFont() { return controlFont;}
-    public FontUIResource getSystemTextFont() { return systemFont;}
-    public FontUIResource getUserTextFont() { return userFont;}
-    public FontUIResource getMenuTextFont() { return controlFont;}
-    public FontUIResource getWindowTitleFont() { return controlFont;}
-    public FontUIResource getSubTextFont() { return smallFont;}
+    @Override
+    public FontUIResource getMenuTextFont() {
+        return controlFont;
+    }
 
+    @Override
+    public FontUIResource getWindowTitleFont() {
+        return controlFont;
+    }
+
+    @Override
+    public FontUIResource getSubTextFont() {
+        return smallFont;
+    }
+
+    @Override
     public void addCustomEntriesToTable(UIDefaults table) {
-         super.addCustomEntriesToTable(table);
+        super.addCustomEntriesToTable(table);
 
-         final int internalFrameIconSize = 22;
-         table.put("InternalFrame.closeIcon", MetalIconFactory.getInternalFrameCloseIcon(internalFrameIconSize));
-         table.put("InternalFrame.maximizeIcon", MetalIconFactory.getInternalFrameMaximizeIcon(internalFrameIconSize));
-         table.put("InternalFrame.iconifyIcon", MetalIconFactory.getInternalFrameMinimizeIcon(internalFrameIconSize));
-         table.put("InternalFrame.minimizeIcon", MetalIconFactory.getInternalFrameAltMaximizeIcon(internalFrameIconSize));
+        final int internalFrameIconSize = 22;
+        table.put("InternalFrame.closeIcon", MetalIconFactory.
+                getInternalFrameCloseIcon(internalFrameIconSize));
+        table.put("InternalFrame.maximizeIcon", MetalIconFactory.
+                getInternalFrameMaximizeIcon(internalFrameIconSize));
+        table.put("InternalFrame.iconifyIcon", MetalIconFactory.
+                getInternalFrameMinimizeIcon(internalFrameIconSize));
+        table.put("InternalFrame.minimizeIcon", MetalIconFactory.
+                getInternalFrameAltMaximizeIcon(internalFrameIconSize));
 
 
-         table.put( "ScrollBar.width", new Integer(21) );
+        table.put("ScrollBar.width", 21);
 
 
 
     }
-
 }
--- a/jdk/src/share/demo/jfc/Metalworks/GreenMetalTheme.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Metalworks/GreenMetalTheme.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,32 +29,40 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
-
 
-import javax.swing.plaf.*;
-import javax.swing.plaf.metal.*;
-import javax.swing.*;
-import javax.swing.border.*;
-import java.awt.*;
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+
 
 /**
  * This class describes a theme using "green" colors.
  *
  * @author Steve Wilson
+ * @author Alexander Kouznetsov
  */
 public class GreenMetalTheme extends DefaultMetalTheme {
 
-    public String getName() { return "Emerald"; }
-
-  // greenish colors
+    @Override
+    public String getName() {
+        return "Emerald";
+    }
+    // greenish colors
     private final ColorUIResource primary1 = new ColorUIResource(51, 102, 51);
     private final ColorUIResource primary2 = new ColorUIResource(102, 153, 102);
     private final ColorUIResource primary3 = new ColorUIResource(153, 204, 153);
 
-    protected ColorUIResource getPrimary1() { return primary1; }
-    protected ColorUIResource getPrimary2() { return primary2; }
-    protected ColorUIResource getPrimary3() { return primary3; }
+    @Override
+    protected ColorUIResource getPrimary1() {
+        return primary1;
+    }
 
+    @Override
+    protected ColorUIResource getPrimary2() {
+        return primary2;
+    }
+
+    @Override
+    protected ColorUIResource getPrimary3() {
+        return primary3;
+    }
 }
--- a/jdk/src/share/demo/jfc/Metalworks/KhakiMetalTheme.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Metalworks/KhakiMetalTheme.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,39 +29,60 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
-
 
-import javax.swing.plaf.*;
-import javax.swing.plaf.metal.*;
-import javax.swing.*;
-import javax.swing.border.*;
-import java.awt.*;
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+
 
 /**
  * This class describes a theme using "khaki" colors.
  *
  * @author Steve Wilson
+ * @author Alexander Kouznetsov
  */
 public class KhakiMetalTheme extends DefaultMetalTheme {
 
-    public String getName() { return "Sandstone"; }
-
-    private final ColorUIResource primary1 = new ColorUIResource( 87,  87,  47);
+    @Override
+    public String getName() {
+        return "Sandstone";
+    }
+    private final ColorUIResource primary1 = new ColorUIResource(87, 87, 47);
     private final ColorUIResource primary2 = new ColorUIResource(159, 151, 111);
     private final ColorUIResource primary3 = new ColorUIResource(199, 183, 143);
+    private final ColorUIResource secondary1 =
+            new ColorUIResource(111, 111, 111);
+    private final ColorUIResource secondary2 =
+            new ColorUIResource(159, 159, 159);
+    private final ColorUIResource secondary3 =
+            new ColorUIResource(231, 215, 183);
 
-    private final ColorUIResource secondary1 = new ColorUIResource( 111,  111,  111);
-    private final ColorUIResource secondary2 = new ColorUIResource(159, 159, 159);
-    private final ColorUIResource secondary3 = new ColorUIResource(231, 215, 183);
+    @Override
+    protected ColorUIResource getPrimary1() {
+        return primary1;
+    }
+
+    @Override
+    protected ColorUIResource getPrimary2() {
+        return primary2;
+    }
 
-    protected ColorUIResource getPrimary1() { return primary1; }
-    protected ColorUIResource getPrimary2() { return primary2; }
-    protected ColorUIResource getPrimary3() { return primary3; }
+    @Override
+    protected ColorUIResource getPrimary3() {
+        return primary3;
+    }
+
+    @Override
+    protected ColorUIResource getSecondary1() {
+        return secondary1;
+    }
 
-    protected ColorUIResource getSecondary1() { return secondary1; }
-    protected ColorUIResource getSecondary2() { return secondary2; }
-    protected ColorUIResource getSecondary3() { return secondary3; }
+    @Override
+    protected ColorUIResource getSecondary2() {
+        return secondary2;
+    }
 
+    @Override
+    protected ColorUIResource getSecondary3() {
+        return secondary3;
+    }
 }
--- a/jdk/src/share/demo/jfc/Metalworks/MetalThemeMenu.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Metalworks/MetalThemeMenu.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,51 +29,57 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
-
 
-import javax.swing.plaf.metal.*;
-import javax.swing.*;
-import javax.swing.border.*;
-import java.awt.*;
-import java.awt.event.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import javax.swing.ButtonGroup;
+import javax.swing.JMenu;
+import javax.swing.JRadioButtonMenuItem;
+import javax.swing.UIManager;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+import javax.swing.plaf.metal.MetalTheme;
+
 
 /**
  * This class describes a theme using "green" colors.
  *
  * @author Steve Wilson
+ * @author Alexander Kouznetsov
  */
-public class MetalThemeMenu extends JMenu implements ActionListener{
+@SuppressWarnings("serial")
+public class MetalThemeMenu extends JMenu implements ActionListener {
+
+    MetalTheme[] themes;
 
-  MetalTheme[] themes;
-  public MetalThemeMenu(String name, MetalTheme[] themeArray) {
-    super(name);
-    themes = themeArray;
-    ButtonGroup group = new ButtonGroup();
-    for (int i = 0; i < themes.length; i++) {
-        JRadioButtonMenuItem item = new JRadioButtonMenuItem( themes[i].getName() );
-        group.add(item);
-        add( item );
-        item.setActionCommand(i+"");
-        item.addActionListener(this);
-        if ( i == 0)
-            item.setSelected(true);
+    @SuppressWarnings("LeakingThisInConstructor")
+    public MetalThemeMenu(String name, MetalTheme[] themeArray) {
+        super(name);
+        themes = themeArray;
+        ButtonGroup group = new ButtonGroup();
+        for (int i = 0; i < themes.length; i++) {
+            JRadioButtonMenuItem item = new JRadioButtonMenuItem(themes[i].
+                    getName());
+            group.add(item);
+            add(item);
+            item.setActionCommand(i + "");
+            item.addActionListener(this);
+            if (i == 0) {
+                item.setSelected(true);
+            }
+        }
+
     }
 
-  }
+    public void actionPerformed(ActionEvent e) {
+        String numStr = e.getActionCommand();
+        MetalTheme selectedTheme = themes[Integer.parseInt(numStr)];
+        MetalLookAndFeel.setCurrentTheme(selectedTheme);
+        try {
+            UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
+        } catch (Exception ex) {
+            System.out.println("Failed loading Metal");
+            System.out.println(ex);
+        }
 
-  public void actionPerformed(ActionEvent e) {
-    String numStr = e.getActionCommand();
-    MetalTheme selectedTheme = themes[ Integer.parseInt(numStr) ];
-    MetalLookAndFeel.setCurrentTheme(selectedTheme);
-    try {
-        UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
-    } catch (Exception ex) {
-        System.out.println("Failed loading Metal");
-        System.out.println(ex);
     }
-
-  }
-
 }
--- a/jdk/src/share/demo/jfc/Metalworks/Metalworks.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Metalworks/Metalworks.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,34 +29,35 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
-
-import java.awt.*;
-import javax.swing.*;
-import javax.swing.border.*;
+import java.awt.Toolkit;
+import javax.swing.JDialog;
+import javax.swing.JFrame;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
 import javax.swing.plaf.metal.MetalLookAndFeel;
 
+
 /**
-  * This application is a demo of the Metal Look & Feel
-  *
-  * @author Steve Wilson
-  */
+ * This application is a demo of the Metal Look & Feel
+ *
+ * @author Steve Wilson
+ * @author Alexander Kouznetsov
+ */
 public class Metalworks {
 
-    public static void main( String[] args ) {
+    public static void main(String[] args) {
         UIManager.put("swing.boldMetal", Boolean.FALSE);
         JDialog.setDefaultLookAndFeelDecorated(true);
         JFrame.setDefaultLookAndFeelDecorated(true);
         Toolkit.getDefaultToolkit().setDynamicLayout(true);
-        System.setProperty("sun.awt.noerasebackground","true");
-
+        System.setProperty("sun.awt.noerasebackground", "true");
         try {
             UIManager.setLookAndFeel(new MetalLookAndFeel());
-        }
-        catch ( UnsupportedLookAndFeelException e ) {
-            System.out.println ("Metal Look & Feel not supported on this platform. \nProgram Terminated");
+        } catch (UnsupportedLookAndFeelException e) {
+            System.out.println(
+                    "Metal Look & Feel not supported on this platform. \n"
+                    + "Program Terminated");
             System.exit(0);
         }
         JFrame frame = new MetalworksFrame();
--- a/jdk/src/share/demo/jfc/Metalworks/MetalworksDocumentFrame.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Metalworks/MetalworksDocumentFrame.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,21 +29,32 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
-import java.awt.*;
-import java.awt.event.*;
-import java.util.*;
-import javax.swing.*;
-import javax.swing.border.*;
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.Insets;
+import java.awt.LayoutManager;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import javax.swing.JComponent;
+import javax.swing.JInternalFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+import javax.swing.border.EmptyBorder;
 
 
 /**
-  * This is a subclass of JInternalFrame which displays documents.
-  *
-  * @author Steve Wilson
-  */
+ * This is a subclass of JInternalFrame which displays documents.
+ *
+ * @author Steve Wilson
+ */
+@SuppressWarnings("serial")
 public class MetalworksDocumentFrame extends JInternalFrame {
 
     static int openFrameCount = 0;
@@ -59,27 +70,27 @@
         top.setLayout(new BorderLayout());
         top.add(buildAddressPanel(), BorderLayout.NORTH);
 
-        JTextArea content = new JTextArea( 15, 30 );
-        content.setBorder( new EmptyBorder(0,5 ,0, 5) );
+        JTextArea content = new JTextArea(15, 30);
+        content.setBorder(new EmptyBorder(0, 5, 0, 5));
         content.setLineWrap(true);
 
 
 
         JScrollPane textScroller = new JScrollPane(content,
-                                                   JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
-                                                   JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED );
-        top.add( textScroller, BorderLayout.CENTER);
+                JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+        top.add(textScroller, BorderLayout.CENTER);
 
 
         setContentPane(top);
         pack();
-        setLocation( offset * openFrameCount, offset *openFrameCount);
+        setLocation(offset * openFrameCount, offset * openFrameCount);
 
     }
 
     private JPanel buildAddressPanel() {
         JPanel p = new JPanel();
-        p.setLayout( new LabeledPairLayout() );
+        p.setLayout(new LabeledPairLayout());
 
 
         JLabel toLabel = new JLabel("To: ", JLabel.RIGHT);
@@ -103,83 +114,79 @@
 
     }
 
+
     class LabeledPairLayout implements LayoutManager {
 
-      Vector labels = new Vector();
-      Vector fields = new Vector();
-
-      int yGap = 2;
-      int xGap = 2;
+        List<Component> labels = new ArrayList<Component>();
+        List<Component> fields = new ArrayList<Component>();
+        int yGap = 2;
+        int xGap = 2;
 
-      public void addLayoutComponent(String s, Component c) {
-          if (s.equals("label")) {
-              labels.addElement(c);
-          }  else {
-              fields.addElement(c);
-          }
-      }
+        public void addLayoutComponent(String s, Component c) {
+            if (s.equals("label")) {
+                labels.add(c);
+            } else {
+                fields.add(c);
+            }
+        }
 
-      public void layoutContainer(Container c) {
-          Insets insets = c.getInsets();
+        public void layoutContainer(Container c) {
+            Insets insets = c.getInsets();
 
-          int labelWidth = 0;
-          Enumeration labelIter = labels.elements();
-          while(labelIter.hasMoreElements()) {
-              JComponent comp = (JComponent)labelIter.nextElement();
-              labelWidth = Math.max( labelWidth, comp.getPreferredSize().width );
-          }
+            int labelWidth = 0;
+            for (Component comp : labels) {
+                labelWidth = Math.max(labelWidth, comp.getPreferredSize().width);
+            }
 
-          int yPos = insets.top;
+            int yPos = insets.top;
 
-          Enumeration fieldIter = fields.elements();
-          labelIter = labels.elements();
-          while(labelIter.hasMoreElements() && fieldIter.hasMoreElements()) {
-              JComponent label = (JComponent)labelIter.nextElement();
-              JComponent field = (JComponent)fieldIter.nextElement();
-              int height = Math.max(label.getPreferredSize().height, field.getPreferredSize().height);
-              label.setBounds( insets.left, yPos, labelWidth, height );
-              field.setBounds( insets.left + labelWidth + xGap,
-                                 yPos,
-                                 c.getSize().width - (labelWidth +xGap + insets.left + insets.right),
-                                 height );
-              yPos += (height + yGap);
-          }
+            Iterator<Component> fieldIter = fields.listIterator();
+            Iterator<Component> labelIter = labels.listIterator();
+            while (labelIter.hasNext() && fieldIter.hasNext()) {
+                JComponent label = (JComponent) labelIter.next();
+                JComponent field = (JComponent) fieldIter.next();
+                int height = Math.max(label.getPreferredSize().height, field.
+                        getPreferredSize().height);
+                label.setBounds(insets.left, yPos, labelWidth, height);
+                field.setBounds(insets.left + labelWidth + xGap,
+                        yPos,
+                        c.getSize().width - (labelWidth + xGap + insets.left
+                        + insets.right),
+                        height);
+                yPos += (height + yGap);
+            }
 
-      }
-
+        }
 
-      public Dimension minimumLayoutSize(Container c) {
-          Insets insets = c.getInsets();
+        public Dimension minimumLayoutSize(Container c) {
+            Insets insets = c.getInsets();
 
-          int labelWidth = 0;
-          Enumeration labelIter = labels.elements();
-          while(labelIter.hasMoreElements()) {
-              JComponent comp = (JComponent)labelIter.nextElement();
-              labelWidth = Math.max( labelWidth, comp.getPreferredSize().width );
-          }
+            int labelWidth = 0;
+            for (Component comp : labels) {
+                labelWidth = Math.max(labelWidth, comp.getPreferredSize().width);
+            }
 
-          int yPos = insets.top;
+            int yPos = insets.top;
 
-          labelIter = labels.elements();
-          Enumeration fieldIter = fields.elements();
-          while(labelIter.hasMoreElements() && fieldIter.hasMoreElements()) {
-              JComponent label = (JComponent)labelIter.nextElement();
-              JComponent field = (JComponent)fieldIter.nextElement();
-              int height = Math.max(label.getPreferredSize().height, field.getPreferredSize().height);
-              yPos += (height + yGap);
-          }
-          return new Dimension( labelWidth * 3 , yPos );
-      }
+            Iterator<Component> labelIter = labels.listIterator();
+            Iterator<Component> fieldIter = fields.listIterator();
+            while (labelIter.hasNext() && fieldIter.hasNext()) {
+                Component label = labelIter.next();
+                Component field = fieldIter.next();
+                int height = Math.max(label.getPreferredSize().height, field.
+                        getPreferredSize().height);
+                yPos += (height + yGap);
+            }
+            return new Dimension(labelWidth * 3, yPos);
+        }
 
-      public Dimension preferredLayoutSize(Container c) {
-          Dimension d = minimumLayoutSize(c);
-          d.width *= 2;
-          return d;
-      }
+        public Dimension preferredLayoutSize(Container c) {
+            Dimension d = minimumLayoutSize(c);
+            d.width *= 2;
+            return d;
+        }
 
-      public void removeLayoutComponent(Component c) {}
-
+        public void removeLayoutComponent(Component c) {
+        }
+    }
 }
-
-
-}
--- a/jdk/src/share/demo/jfc/Metalworks/MetalworksFrame.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Metalworks/MetalworksFrame.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,50 +29,70 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
-import java.awt.*;
-import java.io.*;
-import java.awt.event.*;
-import java.beans.*;
-import javax.swing.*;
-import javax.swing.border.*;
-
-import javax.swing.plaf.metal.*;
+import java.awt.Dimension;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.InputStream;
+import javax.swing.ButtonGroup;
+import javax.swing.JCheckBoxMenuItem;
+import javax.swing.JComponent;
+import javax.swing.JDesktopPane;
+import javax.swing.JFileChooser;
+import javax.swing.JFrame;
+import javax.swing.JInternalFrame;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JRadioButtonMenuItem;
+import javax.swing.UIManager;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalTheme;
+import javax.swing.plaf.metal.OceanTheme;
 
 
 /**
-  * This is the main container frame for the Metalworks demo app
-  *
-  * @author Steve Wilson
-  */
-public class MetalworksFrame extends JFrame {
+ * This is the main container frame for the Metalworks demo app
+ *
+ * @author Steve Wilson
+ * @author Alexander Kouznetsov
+ */
+@SuppressWarnings("serial")
+public final class MetalworksFrame extends JFrame {
 
     JMenuBar menuBar;
     JDesktopPane desktop;
     JInternalFrame toolPalette;
     JCheckBoxMenuItem showToolPaletteMenuItem;
-
-    static final Integer DOCLAYER = new Integer(5);
-    static final Integer TOOLLAYER = new Integer(6);
-    static final Integer HELPLAYER = new Integer(7);
-
-    static final String ABOUTMSG = "Metalworks \n \nAn application written to show off the Java Look & Feel. \n \nWritten by the JavaSoft Look & Feel Team \n  Michael Albers\n  Tom Santos\n  Jeff Shapiro\n  Steve Wilson";
-
+    static final Integer DOCLAYER = 5;
+    static final Integer TOOLLAYER = 6;
+    static final Integer HELPLAYER = 7;
+    static final String ABOUTMSG = "Metalworks \n \nAn application written to "
+            + "show off the Java Look & Feel. \n \nWritten by the JavaSoft "
+            + "Look & Feel Team \n  Michael Albers\n  Tom Santos\n  "
+            + "Jeff Shapiro\n  Steve Wilson";
 
     public MetalworksFrame() {
         super("Metalworks");
         final int inset = 50;
         Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
-        setBounds ( inset, inset, screenSize.width - inset*2, screenSize.height - inset*2 );
+        setBounds(inset, inset, screenSize.width - inset * 2, screenSize.height - inset
+                * 2);
         buildContent();
         buildMenus();
         this.addWindowListener(new WindowAdapter() {
-                               public void windowClosing(WindowEvent e) {
-                                   quit();
-                               }});
-        UIManager.addPropertyChangeListener(new UISwitchListener((JComponent)getRootPane()));
+
+            @Override
+            public void windowClosing(WindowEvent e) {
+                quit();
+            }
+        });
+        UIManager.addPropertyChangeListener(new UISwitchListener(
+                (JComponent) getRootPane()));
     }
 
     protected void buildMenus() {
@@ -87,20 +107,23 @@
         // load a theme from a text file
         MetalTheme myTheme = null;
         try {
-            InputStream istream = getClass().getResourceAsStream("/resources/MyTheme.theme");
-            myTheme =  new PropertiesMetalTheme(istream);
-        } catch (NullPointerException e) {System.out.println(e);}
+            InputStream istream = getClass().getResourceAsStream(
+                    "/resources/MyTheme.theme");
+            myTheme = new PropertiesMetalTheme(istream);
+        } catch (NullPointerException e) {
+            System.out.println(e);
+        }
 
         // build an array of themes
         MetalTheme[] themes = { new OceanTheme(),
-                                new DefaultMetalTheme(),
-                                new GreenMetalTheme(),
-                                new AquaMetalTheme(),
-                                new KhakiMetalTheme(),
-                                new DemoMetalTheme(),
-                                new ContrastMetalTheme(),
-                                new BigContrastMetalTheme(),
-                                myTheme };
+            new DefaultMetalTheme(),
+            new GreenMetalTheme(),
+            new AquaMetalTheme(),
+            new KhakiMetalTheme(),
+            new DemoMetalTheme(),
+            new ContrastMetalTheme(),
+            new BigContrastMetalTheme(),
+            myTheme };
 
         // put the themes in a menu
         JMenu themeMenu = new MetalThemeMenu("Theme", themes);
@@ -121,19 +144,25 @@
         JMenuItem quit = new JMenuItem("Quit");
 
         newWin.addActionListener(new ActionListener() {
-                               public void actionPerformed(ActionEvent e) {
-                                   newDocument();
-                               }});
+
+            public void actionPerformed(ActionEvent e) {
+                newDocument();
+            }
+        });
 
         open.addActionListener(new ActionListener() {
-                               public void actionPerformed(ActionEvent e) {
-                                   openDocument();
-                               }});
+
+            public void actionPerformed(ActionEvent e) {
+                openDocument();
+            }
+        });
 
         quit.addActionListener(new ActionListener() {
-                               public void actionPerformed(ActionEvent e) {
-                                   quit();
-                               }});
+
+            public void actionPerformed(ActionEvent e) {
+                quit();
+            }
+        });
 
         file.add(newWin);
         file.add(open);
@@ -156,9 +185,11 @@
         paste.setEnabled(false);
 
         prefs.addActionListener(new ActionListener() {
-                               public void actionPerformed(ActionEvent e) {
-                                   openPrefsWindow();
-                               }});
+
+            public void actionPerformed(ActionEvent e) {
+                openPrefsWindow();
+            }
+        });
 
         edit.add(undo);
         edit.addSeparator();
@@ -178,16 +209,18 @@
         outBox.setEnabled(false);
 
         inBox.addActionListener(new ActionListener() {
-                               public void actionPerformed(ActionEvent e) {
-                                   openInBox();
-                               }});
+
+            public void actionPerformed(ActionEvent e) {
+                openInBox();
+            }
+        });
 
         views.add(inBox);
         views.add(outBox);
         return views;
     }
 
-     protected JMenu buildSpeedMenu() {
+    protected JMenu buildSpeedMenu() {
         JMenu speed = new JMenu("Drag");
 
         JRadioButtonMenuItem live = new JRadioButtonMenuItem("Live");
@@ -203,28 +236,37 @@
 
         live.setSelected(true);
 
-        slow.addActionListener(new ActionListener(){
-                               public void actionPerformed(ActionEvent e){
-                                // for right now I'm saying if you set the mode
-                                 // to something other than a specified mode
-                                 // it will revert to the old way
-                                 // This is mostly for comparison's sake
-                               desktop.setDragMode(-1);}});
+        slow.addActionListener(new ActionListener() {
+
+            public void actionPerformed(ActionEvent e) {
+                // for right now I'm saying if you set the mode
+                // to something other than a specified mode
+                // it will revert to the old way
+                // This is mostly for comparison's sake
+                desktop.setDragMode(-1);
+            }
+        });
 
-        live.addActionListener(new ActionListener(){
-                         public void actionPerformed(ActionEvent e){
-                         desktop.setDragMode(JDesktopPane.LIVE_DRAG_MODE);}});
+        live.addActionListener(new ActionListener() {
+
+            public void actionPerformed(ActionEvent e) {
+                desktop.setDragMode(JDesktopPane.LIVE_DRAG_MODE);
+            }
+        });
 
-        outline.addActionListener(new ActionListener(){
-                         public void actionPerformed(ActionEvent e){
-                         desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);}});
+        outline.addActionListener(new ActionListener() {
+
+            public void actionPerformed(ActionEvent e) {
+                desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
+            }
+        });
 
 
         speed.add(live);
         speed.add(outline);
         speed.add(slow);
         return speed;
-     }
+    }
 
     protected JMenu buildHelpMenu() {
         JMenu help = new JMenu("Help");
@@ -232,15 +274,18 @@
         JMenuItem openHelp = new JMenuItem("Open Help Window");
 
         about.addActionListener(new ActionListener() {
+
             public void actionPerformed(ActionEvent e) {
                 showAboutBox();
             }
         });
 
         openHelp.addActionListener(new ActionListener() {
-                               public void actionPerformed(ActionEvent e) {
-                                   openHelpWindow();
-                               }});
+
+            public void actionPerformed(ActionEvent e) {
+                openHelpWindow();
+            }
+        });
 
         help.add(about);
         help.add(openHelp);
@@ -263,7 +308,8 @@
         try {
             doc.setVisible(true);
             doc.setSelected(true);
-        } catch (java.beans.PropertyVetoException e2) {}
+        } catch (java.beans.PropertyVetoException e2) {
+        }
     }
 
     public void openDocument() {
@@ -277,7 +323,8 @@
         try {
             help.setVisible(true);
             help.setSelected(true);
-        } catch (java.beans.PropertyVetoException e2) {}
+        } catch (java.beans.PropertyVetoException e2) {
+        }
     }
 
     public void showAboutBox() {
@@ -286,7 +333,7 @@
 
     public void openPrefsWindow() {
         MetalworksPrefs dialog = new MetalworksPrefs(this);
-        dialog.show();
+        dialog.setVisible(true);
 
     }
 
@@ -296,6 +343,7 @@
         try {
             doc.setVisible(true);
             doc.setSelected(true);
-        } catch (java.beans.PropertyVetoException e2) {}
+        } catch (java.beans.PropertyVetoException e2) {
+        }
     }
 }
--- a/jdk/src/share/demo/jfc/Metalworks/MetalworksHelp.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Metalworks/MetalworksHelp.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,8 +29,6 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
 import javax.swing.*;
 import java.awt.*;
@@ -40,26 +38,31 @@
 import javax.swing.text.*;
 import javax.swing.event.*;
 
-/*
+
+/**
  * @author Steve Wilson
+ * @author Alexander Kouznetsov
  */
+@SuppressWarnings("serial")
 public class MetalworksHelp extends JInternalFrame {
 
     public MetalworksHelp() {
         super("Help", true, true, true, true);
 
-        setFrameIcon( (Icon)UIManager.get("Tree.openIcon")); // PENDING(steve) need more general palce to get this icon
-        setBounds( 200, 25, 400, 400);
+        setFrameIcon((Icon) UIManager.get("Tree.openIcon")); // PENDING(steve) need more general place to get this icon
+        setBounds(200, 25, 400, 400);
         HtmlPane html = new HtmlPane();
         setContentPane(html);
     }
-
 }
 
 
+@SuppressWarnings("serial")
 class HtmlPane extends JScrollPane implements HyperlinkListener {
+
     JEditorPane html;
 
+    @SuppressWarnings("LeakingThisInConstructor")
     public HtmlPane() {
         try {
             URL url = getClass().getResource("/resources/HelpFiles/toc.html");
@@ -67,7 +70,7 @@
             html.setEditable(false);
             html.addHyperlinkListener(this);
             html.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES,
-                                   Boolean.TRUE);
+                    Boolean.TRUE);
             JViewport vp = getViewport();
             vp.add(html);
         } catch (MalformedURLException e) {
@@ -106,6 +109,7 @@
         SwingUtilities.invokeLater(new PageLoader(u, c));
     }
 
+
     /**
      * temporary class that loads synchronously (although
      * later than the request so that a cursor change
@@ -142,9 +146,7 @@
                 }
             }
         }
-
         URL url;
         Cursor cursor;
     }
-
 }
--- a/jdk/src/share/demo/jfc/Metalworks/MetalworksInBox.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Metalworks/MetalworksInBox.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,22 +29,20 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
-import java.awt.*;
-import java.awt.event.*;
-import java.util.*;
-import javax.swing.*;
-import javax.swing.border.*;
-import javax.swing.tree.*;
+import javax.swing.JInternalFrame;
+import javax.swing.JScrollPane;
+import javax.swing.JTree;
+import javax.swing.tree.DefaultMutableTreeNode;
 
 
 /**
-  * This is a subclass of JInternalFrame which displays a tree.
-  *
-  * @author Steve Wilson
-  */
+ * This is a subclass of JInternalFrame which displays a tree.
+ *
+ * @author Steve Wilson
+ * @author Alexander Kouznetsov
+ */
+@SuppressWarnings("serial")
 public class MetalworksInBox extends JInternalFrame {
 
     public MetalworksInBox() {
@@ -57,49 +55,47 @@
 
         DefaultMutableTreeNode top = new DefaultMutableTreeNode("Mail Boxes");
 
-        top.add( unread = new DefaultMutableTreeNode("Unread Mail") );
-        top.add( personal = new DefaultMutableTreeNode("Personal") );
-        top.add( business = new DefaultMutableTreeNode("Business") );
-        top.add( spam = new DefaultMutableTreeNode("Spam") );
+        top.add(unread = new DefaultMutableTreeNode("Unread Mail"));
+        top.add(personal = new DefaultMutableTreeNode("Personal"));
+        top.add(business = new DefaultMutableTreeNode("Business"));
+        top.add(spam = new DefaultMutableTreeNode("Spam"));
 
-        unread.add( new DefaultMutableTreeNode("Buy Stuff Now") );
-        unread.add( new DefaultMutableTreeNode("Read Me Now") );
-        unread.add( new DefaultMutableTreeNode("Hot Offer") );
-        unread.add( new DefaultMutableTreeNode("Re: Re: Thank You") );
-        unread.add( new DefaultMutableTreeNode("Fwd: Good Joke") );
+        unread.add(new DefaultMutableTreeNode("Buy Stuff Now"));
+        unread.add(new DefaultMutableTreeNode("Read Me Now"));
+        unread.add(new DefaultMutableTreeNode("Hot Offer"));
+        unread.add(new DefaultMutableTreeNode("Re: Re: Thank You"));
+        unread.add(new DefaultMutableTreeNode("Fwd: Good Joke"));
 
-        personal.add( new DefaultMutableTreeNode("Hi") );
-        personal.add( new DefaultMutableTreeNode("Good to hear from you") );
-        personal.add( new DefaultMutableTreeNode("Re: Thank You") );
+        personal.add(new DefaultMutableTreeNode("Hi"));
+        personal.add(new DefaultMutableTreeNode("Good to hear from you"));
+        personal.add(new DefaultMutableTreeNode("Re: Thank You"));
 
-        business.add( new DefaultMutableTreeNode("Thanks for your order") );
-        business.add( new DefaultMutableTreeNode("Price Quote") );
-        business.add( new DefaultMutableTreeNode("Here is the invoice") );
-        business.add( new DefaultMutableTreeNode("Project Metal: delivered on time") );
-        business.add( new DefaultMutableTreeNode("Your salary raise approved") );
+        business.add(new DefaultMutableTreeNode("Thanks for your order"));
+        business.add(new DefaultMutableTreeNode("Price Quote"));
+        business.add(new DefaultMutableTreeNode("Here is the invoice"));
+        business.add(new DefaultMutableTreeNode(
+                "Project Metal: delivered on time"));
+        business.add(new DefaultMutableTreeNode("Your salary raise approved"));
 
-        spam.add( new DefaultMutableTreeNode("Buy Now") );
-        spam.add( new DefaultMutableTreeNode("Make $$$ Now") );
-        spam.add( new DefaultMutableTreeNode("HOT HOT HOT") );
-        spam.add( new DefaultMutableTreeNode("Buy Now") );
-        spam.add( new DefaultMutableTreeNode("Don't Miss This") );
-        spam.add( new DefaultMutableTreeNode("Opportunity in Precious Metals") );
-        spam.add( new DefaultMutableTreeNode("Buy Now") );
-        spam.add( new DefaultMutableTreeNode("Last Chance") );
-        spam.add( new DefaultMutableTreeNode("Buy Now") );
-        spam.add( new DefaultMutableTreeNode("Make $$$ Now") );
-        spam.add( new DefaultMutableTreeNode("To Hot To Handle") );
-        spam.add( new DefaultMutableTreeNode("I'm waiting for your call") );
+        spam.add(new DefaultMutableTreeNode("Buy Now"));
+        spam.add(new DefaultMutableTreeNode("Make $$$ Now"));
+        spam.add(new DefaultMutableTreeNode("HOT HOT HOT"));
+        spam.add(new DefaultMutableTreeNode("Buy Now"));
+        spam.add(new DefaultMutableTreeNode("Don't Miss This"));
+        spam.add(new DefaultMutableTreeNode("Opportunity in Precious Metals"));
+        spam.add(new DefaultMutableTreeNode("Buy Now"));
+        spam.add(new DefaultMutableTreeNode("Last Chance"));
+        spam.add(new DefaultMutableTreeNode("Buy Now"));
+        spam.add(new DefaultMutableTreeNode("Make $$$ Now"));
+        spam.add(new DefaultMutableTreeNode("To Hot To Handle"));
+        spam.add(new DefaultMutableTreeNode("I'm waiting for your call"));
 
         JTree tree = new JTree(top);
         JScrollPane treeScroller = new JScrollPane(tree);
         treeScroller.setBackground(tree.getBackground());
         setContentPane(treeScroller);
-        setSize( 325, 200);
-        setLocation( 75, 75);
+        setSize(325, 200);
+        setLocation(75, 75);
 
     }
-
-
-
 }
--- a/jdk/src/share/demo/jfc/Metalworks/MetalworksPrefs.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Metalworks/MetalworksPrefs.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,50 +29,70 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
-import java.awt.*;
-import java.awt.event.*;
-import java.beans.*;
-import javax.swing.*;
-import javax.swing.border.*;
-import javax.swing.plaf.metal.*;
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.GridLayout;
+import java.awt.Insets;
+import java.awt.LayoutManager;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import javax.swing.ButtonGroup;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JDialog;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.JTabbedPane;
+import javax.swing.UIManager;
+import javax.swing.border.TitledBorder;
 
 
 /**
-  * This is dialog which allows users to choose preferences
-  *
-  * @author Steve Wilson
-  */
-public class MetalworksPrefs extends JDialog {
+ * This is dialog which allows users to choose preferences
+ *
+ * @author Steve Wilson
+ * @author Alexander Kouznetsov
+ */
+@SuppressWarnings("serial")
+public final class MetalworksPrefs extends JDialog {
 
     public MetalworksPrefs(JFrame f) {
         super(f, "Preferences", true);
         JPanel container = new JPanel();
-        container.setLayout( new BorderLayout() );
+        container.setLayout(new BorderLayout());
 
         JTabbedPane tabs = new JTabbedPane();
         JPanel filters = buildFilterPanel();
         JPanel conn = buildConnectingPanel();
-        tabs.addTab( "Filters", null, filters );
-        tabs.addTab( "Connecting", null, conn );
+        tabs.addTab("Filters", null, filters);
+        tabs.addTab("Connecting", null, conn);
 
 
         JPanel buttonPanel = new JPanel();
-        buttonPanel.setLayout ( new FlowLayout(FlowLayout.RIGHT) );
+        buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
         JButton cancel = new JButton("Cancel");
         cancel.addActionListener(new ActionListener() {
-                               public void actionPerformed(ActionEvent e) {
-                                   CancelPressed();
-                               }});
-        buttonPanel.add( cancel );
+
+            public void actionPerformed(ActionEvent e) {
+                CancelPressed();
+            }
+        });
+        buttonPanel.add(cancel);
         JButton ok = new JButton("OK");
         ok.addActionListener(new ActionListener() {
-                               public void actionPerformed(ActionEvent e) {
-                                   OKPressed();
-                               }});
-        buttonPanel.add( ok );
+
+            public void actionPerformed(ActionEvent e) {
+                OKPressed();
+            }
+        });
+        buttonPanel.add(ok);
         getRootPane().setDefaultButton(ok);
 
         container.add(tabs, BorderLayout.CENTER);
@@ -85,12 +105,12 @@
 
     public JPanel buildFilterPanel() {
         JPanel filters = new JPanel();
-        filters.setLayout( new GridLayout(1, 0) );
+        filters.setLayout(new GridLayout(1, 0));
 
         JPanel spamPanel = new JPanel();
 
         spamPanel.setLayout(new ColumnLayout());
-        spamPanel.setBorder( new TitledBorder("Spam") );
+        spamPanel.setBorder(new TitledBorder("Spam"));
         ButtonGroup spamGroup = new ButtonGroup();
         JRadioButton file = new JRadioButton("File in Spam Folder");
         JRadioButton delete = new JRadioButton("Auto Delete");
@@ -106,7 +126,7 @@
 
         JPanel autoRespond = new JPanel();
         autoRespond.setLayout(new ColumnLayout());
-        autoRespond.setBorder( new TitledBorder("Auto Response") );
+        autoRespond.setBorder(new TitledBorder("Auto Response"));
 
         ButtonGroup respondGroup = new ButtonGroup();
         JRadioButton none = new JRadioButton("None");
@@ -129,10 +149,10 @@
 
     public JPanel buildConnectingPanel() {
         JPanel connectPanel = new JPanel();
-        connectPanel.setLayout( new ColumnLayout() );
+        connectPanel.setLayout(new ColumnLayout());
 
         JPanel protoPanel = new JPanel();
-        JLabel protoLabel = new JLabel ("Protocol");
+        JLabel protoLabel = new JLabel("Protocol");
         JComboBox protocol = new JComboBox();
         protocol.addItem("SMTP");
         protocol.addItem("IMAP");
@@ -141,7 +161,7 @@
         protoPanel.add(protocol);
 
         JPanel attachmentPanel = new JPanel();
-        JLabel attachmentLabel = new JLabel ("Attachments");
+        JLabel attachmentLabel = new JLabel("Attachments");
         JComboBox attach = new JComboBox();
         attach.addItem("Download Always");
         attach.addItem("Ask size > 1 Meg");
@@ -152,7 +172,7 @@
 
         JCheckBox autoConn = new JCheckBox("Auto Connect");
         JCheckBox compress = new JCheckBox("Use Compression");
-        autoConn.setSelected( true );
+        autoConn.setSelected(true);
 
         connectPanel.add(protoPanel);
         connectPanel.add(attachmentPanel);
@@ -161,18 +181,16 @@
         return connectPanel;
     }
 
-
-
     protected void centerDialog() {
         Dimension screenSize = this.getToolkit().getScreenSize();
         Dimension size = this.getSize();
-        screenSize.height = screenSize.height/2;
-        screenSize.width = screenSize.width/2;
-        size.height = size.height/2;
-        size.width = size.width/2;
+        screenSize.height = screenSize.height / 2;
+        screenSize.width = screenSize.width / 2;
+        size.height = size.height / 2;
+        size.width = size.width / 2;
         int y = screenSize.height - size.height;
         int x = screenSize.width - size.width;
-        this.setLocation(x,y);
+        this.setLocation(x, y);
     }
 
     public void CancelPressed() {
@@ -182,52 +200,54 @@
     public void OKPressed() {
         this.setVisible(false);
     }
+}
 
-}
 
 class ColumnLayout implements LayoutManager {
 
-  int xInset = 5;
-  int yInset = 5;
-  int yGap = 2;
+    int xInset = 5;
+    int yInset = 5;
+    int yGap = 2;
 
-  public void addLayoutComponent(String s, Component c) {}
+    public void addLayoutComponent(String s, Component c) {
+    }
 
-  public void layoutContainer(Container c) {
-      Insets insets = c.getInsets();
-      int height = yInset + insets.top;
+    public void layoutContainer(Container c) {
+        Insets insets = c.getInsets();
+        int height = yInset + insets.top;
 
-      Component[] children = c.getComponents();
-      Dimension compSize = null;
-      for (int i = 0; i < children.length; i++) {
-          compSize = children[i].getPreferredSize();
-          children[i].setSize(compSize.width, compSize.height);
-          children[i].setLocation( xInset + insets.left, height);
-          height += compSize.height + yGap;
-      }
+        Component[] children = c.getComponents();
+        Dimension compSize = null;
+        for (Component child : children) {
+            compSize = child.getPreferredSize();
+            child.setSize(compSize.width, compSize.height);
+            child.setLocation(xInset + insets.left, height);
+            height += compSize.height + yGap;
+        }
 
-  }
+    }
 
-  public Dimension minimumLayoutSize(Container c) {
-      Insets insets = c.getInsets();
-      int height = yInset + insets.top;
-      int width = 0 + insets.left + insets.right;
+    public Dimension minimumLayoutSize(Container c) {
+        Insets insets = c.getInsets();
+        int height = yInset + insets.top;
+        int width = 0 + insets.left + insets.right;
 
-      Component[] children = c.getComponents();
-      Dimension compSize = null;
-      for (int i = 0; i < children.length; i++) {
-          compSize = children[i].getPreferredSize();
-          height += compSize.height + yGap;
-          width = Math.max(width, compSize.width + insets.left + insets.right + xInset*2);
-      }
-      height += insets.bottom;
-      return new Dimension( width, height);
-  }
+        Component[] children = c.getComponents();
+        Dimension compSize = null;
+        for (Component child : children) {
+            compSize = child.getPreferredSize();
+            height += compSize.height + yGap;
+            width = Math.max(width, compSize.width + insets.left + insets.right + xInset
+                    * 2);
+        }
+        height += insets.bottom;
+        return new Dimension(width, height);
+    }
 
-  public Dimension preferredLayoutSize(Container c) {
-      return minimumLayoutSize(c);
-  }
+    public Dimension preferredLayoutSize(Container c) {
+        return minimumLayoutSize(c);
+    }
 
-  public void removeLayoutComponent(Component c) {}
-
+    public void removeLayoutComponent(Component c) {
+    }
 }
--- a/jdk/src/share/demo/jfc/Metalworks/PropertiesMetalTheme.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Metalworks/PropertiesMetalTheme.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,17 +29,15 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
-
 
-import javax.swing.plaf.*;
-import javax.swing.plaf.metal.*;
-import javax.swing.*;
-import javax.swing.border.*;
-import java.awt.*;
-import java.io.*;
-import java.util.*;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+import java.util.StringTokenizer;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+
 
 /**
  * This class allows you to load a theme from a file.
@@ -57,36 +55,33 @@
  * but it could easily be extended to load fonts -  or even icons.
  *
  * @author Steve Wilson
+ * @author Alexander Kouznetsov
  */
 public class PropertiesMetalTheme extends DefaultMetalTheme {
 
     private String name = "Custom Theme";
-
     private ColorUIResource primary1;
     private ColorUIResource primary2;
     private ColorUIResource primary3;
-
     private ColorUIResource secondary1;
     private ColorUIResource secondary2;
     private ColorUIResource secondary3;
-
     private ColorUIResource black;
     private ColorUIResource white;
 
-
     /**
-      * pass an inputstream pointing to a properties file.
-      * Colors will be initialized to be the same as the DefaultMetalTheme,
-      * and then any colors provided in the properties file will override that.
-      */
-    public PropertiesMetalTheme( InputStream stream ) {
+     * pass an inputstream pointing to a properties file.
+     * Colors will be initialized to be the same as the DefaultMetalTheme,
+     * and then any colors provided in the properties file will override that.
+     */
+    public PropertiesMetalTheme(InputStream stream) {
         initColors();
         loadProperties(stream);
     }
 
     /**
-      * Initialize all colors to be the same as the DefaultMetalTheme.
-      */
+     * Initialize all colors to be the same as the DefaultMetalTheme.
+     */
     private void initColors() {
         primary1 = super.getPrimary1();
         primary2 = super.getPrimary2();
@@ -101,9 +96,9 @@
     }
 
     /**
-      * Load the theme name and colors from the properties file
-      * Items not defined in the properties file are ignored
-      */
+     * Load the theme name and colors from the properties file
+     * Items not defined in the properties file are ignored
+     */
     private void loadProperties(InputStream stream) {
         Properties prop = new Properties();
         try {
@@ -120,7 +115,7 @@
         Object colorString = null;
 
         colorString = prop.get("primary1");
-        if (colorString != null){
+        if (colorString != null) {
             primary1 = parseColor(colorString.toString());
         }
 
@@ -161,22 +156,54 @@
 
     }
 
-    public String getName() { return name; }
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    @Override
+    protected ColorUIResource getPrimary1() {
+        return primary1;
+    }
 
-    protected ColorUIResource getPrimary1() { return primary1; }
-    protected ColorUIResource getPrimary2() { return primary2; }
-    protected ColorUIResource getPrimary3() { return primary3; }
+    @Override
+    protected ColorUIResource getPrimary2() {
+        return primary2;
+    }
+
+    @Override
+    protected ColorUIResource getPrimary3() {
+        return primary3;
+    }
 
-    protected ColorUIResource getSecondary1() { return secondary1; }
-    protected ColorUIResource getSecondary2() { return secondary2; }
-    protected ColorUIResource getSecondary3() { return secondary3; }
+    @Override
+    protected ColorUIResource getSecondary1() {
+        return secondary1;
+    }
+
+    @Override
+    protected ColorUIResource getSecondary2() {
+        return secondary2;
+    }
 
-    protected ColorUIResource getBlack() { return black; }
-    protected ColorUIResource getWhite() { return white; }
+    @Override
+    protected ColorUIResource getSecondary3() {
+        return secondary3;
+    }
+
+    @Override
+    protected ColorUIResource getBlack() {
+        return black;
+    }
+
+    @Override
+    protected ColorUIResource getWhite() {
+        return white;
+    }
 
     /**
-      * parse a comma delimited list of 3 strings into a Color
-      */
+     * parse a comma delimited list of 3 strings into a Color
+     */
     private ColorUIResource parseColor(String s) {
         int red = 0;
         int green = 0;
--- a/jdk/src/share/demo/jfc/Metalworks/UISwitchListener.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Metalworks/UISwitchListener.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,22 +29,21 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
-import java.awt.*;
-import java.beans.*;
-import java.awt.event.*;
-import javax.swing.*;
-import javax.swing.event.*;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import javax.swing.JComponent;
+import javax.swing.SwingUtilities;
 
 
 /**
-  * This class listens for UISwitches, and updates a given component.
-  *
-  * @author Steve Wilson
-  */
+ * This class listens for UISwitches, and updates a given component.
+ *
+ * @author Steve Wilson
+ * @author Alexander Kouznetsov
+ */
 public class UISwitchListener implements PropertyChangeListener {
+
     JComponent componentToSwitch;
 
     public UISwitchListener(JComponent c) {
--- a/jdk/src/share/demo/jfc/Metalworks/resources/HelpFiles/credits.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Metalworks/resources/HelpFiles/credits.html	Wed Apr 20 09:31:11 2011 -0700
@@ -5,9 +5,9 @@
 </HEAD>
 <BODY>
 
-<H1>Java L&F Credits</H1>
+<H1>Java L&amp;F Credits</H1>
 
-<P>The Java L&F Engineering team:</P>
+<P>The Java L&amp;F Engineering team:</P>
 
 <UL>
   <LI>Mike Albers
@@ -22,12 +22,12 @@
   <LI>Harry Vertelney
 </UL>
 
-<P>The Java L&F Designer:</P>
+<P>The Java L&amp;F Designer:</P>
 
 <UL>
   <LI>Chris Ryan
 </UL>
 
-<P><A HREF="toc.html"><IMG SRC="back.gif" WIDTH="42" HEIGHT="22" ALIGN="BOTTOM" NATURALSIZEFLAG="3" BORDER="0">Back</A>
+<P><A HREF="toc.html"><IMG alt="Back" SRC="back.gif" WIDTH="42" HEIGHT="22" ALIGN="BOTTOM" BORDER="0">Back</A>
 </BODY>
 </HTML>
--- a/jdk/src/share/demo/jfc/Metalworks/resources/HelpFiles/metal.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Metalworks/resources/HelpFiles/metal.html	Wed Apr 20 09:31:11 2011 -0700
@@ -7,11 +7,11 @@
 <BODY>
 
 <H1>
-About the Java L&F</H1>
-The Java Look and Feel is a cross-platform look & feel being provided by Javasoft.
-Here is some information about the Java L&F you might find useful.
+About the Java L&amp;F</H1>
+The Java Look and Feel is a cross-platform look &amp; feel being provided by Javasoft.
+Here is some information about the Java L&amp;F you might find useful.
 
-<P>The Java L&F implements all of the basic Swing functionality,
+<P>The Java L&amp;F implements all of the basic Swing functionality,
 but also extends it in several areas including:
 <UL>
 <LI>
@@ -27,27 +27,27 @@
 Trees</LI>
 </UL>
 
-</P>
+<P/>
 <H1>
 Themes</H1>
-<P>One of the first things we learned while implementing the Java L&F
+<P>One of the first things we learned while implementing the Java L&amp;F
 was than many developers feel very strongly about how colors are used in
 their software. To help accommodate this we created a Theme mechanism
 which allows a developer to easily specify the default colors, fonts and
-icons used by the L&F.</P>
+icons used by the L&amp;F.</P>
 
 <P>The theme mechanism is designed to allow developers to create
 their own themes. For an example of this, see the themes
-which are included with Metalworks. Note, like all of the L&F packages, 
+which are included with Metalworks. Note, like all of the L&amp;F packages,
 the metal package is not yet frozen and the theme mechanism may change as 
 we get developer feedback on how to improve it.</P>
 
 <H1>
 Sliders</H1>
-<P>There are several areas where the Java L&F introduces some optional
+<P>There are several areas where the Java L&amp;F introduces some optional
 "value-added" features above the base line capabilities of swing.&nbsp;
 One is the option of Filled Sliders. These are ideal for things like
-volume controls. To access the Java L&F "value-added" features you
+volume controls. To access the Java L&amp;F "value-added" features you
 pass in a token to the component's putClientProperty method.&nbsp;Here
 is an example:</P>
 
@@ -60,12 +60,12 @@
 <P>Note that if a UI such as Windows or Motif encounters a property such as
 JSlider.fill which is does not understand that property will be ignored.&nbsp;
 Thus you don't have to worry about problems which could arise if you switch
-to a different L&F.</P>
+to a different L&amp;F.</P>
 
 <H1>
 ToolBars</H1>
 <P>Many popular applications support "roll-over" effects on buttons in toolbars. 
-The Java L&F provides an easy way to do this. Here is a code snippit:</P>
+The Java L&amp;F provides an easy way to do this. Here is a code snippit:</P>
 
 <PRE>
 JToolBar toolbar = new JToolBar();<BR>
@@ -82,7 +82,7 @@
 
 <H1>
 Trees</H1>
-<P>Java L&F allows you to control the line style used in the JTree component. Here are some code snippits:</P>
+<P>Java L&amp;F allows you to control the line style used in the JTree component. Here are some code snippits:</P>
 
 <PRE>
 JTree myTree = new JTree();
@@ -101,6 +101,6 @@
                          "Horizontal"); 
 </PRE>
 
-<P><A HREF="toc.html"><IMG SRC="back.gif" BORDER=0 NATURALSIZEFLAG="3" HEIGHT=22 WIDTH=42 ALIGN=BOTTOM>Back</A>
+<P><A HREF="toc.html"><IMG alt="Back"  SRC="back.gif" BORDER=0 HEIGHT=22 WIDTH=42 ALIGN=BOTTOM>Back</A>
 </BODY>
 </HTML>
--- a/jdk/src/share/demo/jfc/Metalworks/resources/HelpFiles/metalworks.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Metalworks/resources/HelpFiles/metalworks.html	Wed Apr 20 09:31:11 2011 -0700
@@ -8,7 +8,7 @@
 
 <H1>
 About Metalworks</H1>
-Metalworks is a simple Swing-based simulated email application.  It shows off several features of Swing including: JInternalFrame, JTabbedPane, JFileChooser, JEditorPane and JRadioButtonMenuItem.  It is optimized to work with the Java Look & Feel and shows use of several Java L&F specific features including themes.
+Metalworks is a simple Swing-based simulated email application.  It shows off several features of Swing including: JInternalFrame, JTabbedPane, JFileChooser, JEditorPane and JRadioButtonMenuItem.  It is optimized to work with the Java Look &amp; Feel and shows use of several Java L&amp;F specific features including themes.
 <H1>
 Metalworks Features</H1>
 The functionality of the Metalworks demo is minimal, and many controls are non-functional.  They are only intended to show how to construct the UI for such interfaces.  Things that do work in the Metalworks demo include:
@@ -28,6 +28,6 @@
 
 &nbsp;
 
-<P><A HREF="toc.html"><IMG SRC="back.gif" BORDER=0 NATURALSIZEFLAG="3" HEIGHT=22 WIDTH=42 ALIGN=BOTTOM>Back</A>
+<P><A HREF="toc.html"><IMG alt="Back"  SRC="back.gif" BORDER=0 HEIGHT=22 WIDTH=42 ALIGN=BOTTOM>Back</A>
 </BODY>
 </HTML>
--- a/jdk/src/share/demo/jfc/Metalworks/resources/HelpFiles/swing.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Metalworks/resources/HelpFiles/swing.html	Wed Apr 20 09:31:11 2011 -0700
@@ -5,7 +5,7 @@
 </HEAD>
 <BODY>
 
-<H1><IMG SRC="duke.gif" WIDTH="98" HEIGHT="98" ALIGN="MIDDLE" NATURALSIZEFLAG="3">About Swing</H1>
+    <H1><IMG alt="About Swing"  SRC="duke.gif" WIDTH="98" HEIGHT="98" ALIGN="MIDDLE">About Swing</H1>
 
 <P>&nbsp;</P>
 
@@ -17,6 +17,6 @@
 without restarting it and without the developer having to subclass the entire
 component set.</P>
 
-<P><A HREF="toc.html"><IMG SRC="back.gif" WIDTH="42" HEIGHT="22" ALIGN="BOTTOM" NATURALSIZEFLAG="3" BORDER="0">Back</A>
+<P><A HREF="toc.html"><IMG alt="Back"  SRC="back.gif" WIDTH="42" HEIGHT="22" ALIGN="BOTTOM" BORDER="0">Back</A>
 </BODY>
 </HTML>
--- a/jdk/src/share/demo/jfc/Metalworks/resources/HelpFiles/toc.html	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Metalworks/resources/HelpFiles/toc.html	Wed Apr 20 09:31:11 2011 -0700
@@ -5,7 +5,7 @@
 </HEAD>
 <BODY>
 
-<H1><IMG SRC="javalogo.gif" WIDTH="52" HEIGHT="88" ALIGN="MIDDLE" NATURALSIZEFLAG="3">Metalworks Help</H1>
+    <H1><IMG alt="Help" SRC="javalogo.gif" WIDTH="52" HEIGHT="88" ALIGN="MIDDLE">Metalworks Help</H1>
 
 <P>Welcome to the Metalworks Help files. These are actually HTML files which
 you are viewing with the Swing JEditorPane component. Pretty cool, eh? Were
@@ -18,7 +18,7 @@
 
 <UL>
   <LI><A HREF="metalworks.html">About Metalworks</A>
-  <LI><A HREF="metal.html">About Java L&F</A>
+  <LI><A HREF="metal.html">About Java L&amp;F</A>
   <LI><A HREF="swing.html">About Swing</A>
   <LI><A HREF="credits.html">Credits</A>
 </UL>
--- a/jdk/src/share/demo/jfc/Notepad/ElementTreePanel.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Notepad/ElementTreePanel.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,17 +29,36 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
-import javax.swing.*;
-import javax.swing.event.*;
-import javax.swing.text.*;
-import javax.swing.tree.*;
-import javax.swing.undo.*;
-import java.awt.*;
-import java.beans.*;
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
 import java.util.*;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTree;
+import javax.swing.SwingConstants;
+import javax.swing.event.CaretEvent;
+import javax.swing.event.CaretListener;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.event.TreeSelectionListener;
+import javax.swing.text.AttributeSet;
+import javax.swing.text.Document;
+import javax.swing.text.Element;
+import javax.swing.text.JTextComponent;
+import javax.swing.text.StyleConstants;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeCellRenderer;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreeModel;
+import javax.swing.tree.TreeNode;
+import javax.swing.tree.TreePath;
+
 
 /**
  * Displays a tree showing all the elements in a text Document. Selecting
@@ -49,16 +68,20 @@
  *
  * @author Scott Violet
  */
-public class ElementTreePanel extends JPanel implements CaretListener, DocumentListener, PropertyChangeListener, TreeSelectionListener {
+@SuppressWarnings("serial")
+public class ElementTreePanel extends JPanel implements CaretListener,
+        DocumentListener, PropertyChangeListener, TreeSelectionListener {
+
     /** Tree showing the documents element structure. */
-    protected JTree             tree;
+    protected JTree tree;
     /** Text component showing elemenst for. */
-    protected JTextComponent    editor;
+    protected JTextComponent editor;
     /** Model for the tree. */
-    protected ElementTreeModel  treeModel;
+    protected ElementTreeModel treeModel;
     /** Set to true when updatin the selection. */
-    protected boolean           updatingSelection;
+    protected boolean updatingSelection;
 
+    @SuppressWarnings("LeakingThisInConstructor")
     public ElementTreePanel(JTextComponent editor) {
         this.editor = editor;
 
@@ -67,25 +90,28 @@
         // Create the tree.
         treeModel = new ElementTreeModel(document);
         tree = new JTree(treeModel) {
+
+            @Override
             public String convertValueToText(Object value, boolean selected,
-                                             boolean expanded, boolean leaf,
-                                             int row, boolean hasFocus) {
+                    boolean expanded, boolean leaf,
+                    int row, boolean hasFocus) {
                 // Should only happen for the root
-                if(!(value instanceof Element))
+                if (!(value instanceof Element)) {
                     return value.toString();
+                }
 
-                Element        e = (Element)value;
-                AttributeSet   as = e.getAttributes().copyAttributes();
-                String         asString;
+                Element e = (Element) value;
+                AttributeSet as = e.getAttributes().copyAttributes();
+                String asString;
 
-                if(as != null) {
-                    StringBuffer       retBuffer = new StringBuffer("[");
-                    Enumeration        names = as.getAttributeNames();
+                if (as != null) {
+                    StringBuilder retBuffer = new StringBuilder("[");
+                    Enumeration names = as.getAttributeNames();
 
-                    while(names.hasMoreElements()) {
-                        Object        nextName = names.nextElement();
+                    while (names.hasMoreElements()) {
+                        Object nextName = names.nextElement();
 
-                        if(nextName != StyleConstants.ResolveAttribute) {
+                        if (nextName != StyleConstants.ResolveAttribute) {
                             retBuffer.append(" ");
                             retBuffer.append(nextName);
                             retBuffer.append("=");
@@ -94,16 +120,16 @@
                     }
                     retBuffer.append(" ]");
                     asString = retBuffer.toString();
+                } else {
+                    asString = "[ ]";
                 }
-                else
-                    asString = "[ ]";
 
-                if(e.isLeaf())
-                    return e.getName() + " [" + e.getStartOffset() +
-                        ", " + e.getEndOffset() +"] Attributes: " + asString;
-                return e.getName() + " [" + e.getStartOffset() +
-                    ", " + e.getEndOffset() + "] Attributes: " +
-                        asString;
+                if (e.isLeaf()) {
+                    return e.getName() + " [" + e.getStartOffset() + ", " + e.
+                            getEndOffset() + "] Attributes: " + asString;
+                }
+                return e.getName() + " [" + e.getStartOffset() + ", " + e.
+                        getEndOffset() + "] Attributes: " + asString;
             }
         };
         tree.addTreeSelectionListener(this);
@@ -117,10 +143,13 @@
         // This is a temporary workaround, increase the needed size by 15,
         // hoping that will be enough.
         tree.setCellRenderer(new DefaultTreeCellRenderer() {
+
+            @Override
             public Dimension getPreferredSize() {
                 Dimension retValue = super.getPreferredSize();
-                if(retValue != null)
+                if (retValue != null) {
                     retValue.width += 15;
+                }
                 return retValue;
             }
         });
@@ -139,7 +168,8 @@
         add(new JScrollPane(tree), BorderLayout.CENTER);
 
         // Add a label above tree to describe what is being shown
-        JLabel     label = new JLabel("Elements that make up the current document", SwingConstants.CENTER);
+        JLabel label = new JLabel("Elements that make up the current document",
+                SwingConstants.CENTER);
 
         label.setFont(new Font("Dialog", Font.BOLD, 14));
         add(label, BorderLayout.NORTH);
@@ -157,7 +187,7 @@
         }
 
         if (this.editor != null) {
-            Document      oldDoc = this.editor.getDocument();
+            Document oldDoc = this.editor.getDocument();
 
             oldDoc.removeDocumentListener(this);
             this.editor.removePropertyChangeListener(this);
@@ -167,9 +197,8 @@
         if (editor == null) {
             treeModel = null;
             tree.setModel(null);
-        }
-        else {
-            Document   newDoc = editor.getDocument();
+        } else {
+            Document newDoc = editor.getDocument();
 
             newDoc.addDocumentListener(this);
             editor.addPropertyChangeListener(this);
@@ -180,17 +209,15 @@
     }
 
     // PropertyChangeListener
-
     /**
      * Invoked when a property changes. We are only interested in when the
      * Document changes to reset the DocumentListener.
      */
     public void propertyChange(PropertyChangeEvent e) {
-        if (e.getSource() == getEditor() &&
-            e.getPropertyName().equals("document")) {
-            JTextComponent      editor = getEditor();
-            Document            oldDoc = (Document)e.getOldValue();
-            Document            newDoc = (Document)e.getNewValue();
+        if (e.getSource() == getEditor() && e.getPropertyName().equals(
+                "document")) {
+            Document oldDoc = (Document) e.getOldValue();
+            Document newDoc = (Document) e.getNewValue();
 
             // Reset the DocumentListener
             oldDoc.removeDocumentListener(this);
@@ -202,9 +229,7 @@
         }
     }
 
-
     // DocumentListener
-
     /**
      * Gives notification that there was an insert into the document.  The
      * given range bounds the freshly inserted region.
@@ -236,53 +261,50 @@
     }
 
     // CaretListener
-
     /**
      * Messaged when the selection in the editor has changed. Will update
      * the selection in the tree.
      */
     public void caretUpdate(CaretEvent e) {
-        if(!updatingSelection) {
-            JTextComponent     editor = getEditor();
-            int                selBegin = Math.min(e.getDot(), e.getMark());
-            int                end = Math.max(e.getDot(), e.getMark());
-            Vector             paths = new Vector();
-            TreeModel          model = getTreeModel();
-            Object             root = model.getRoot();
-            int                rootCount = model.getChildCount(root);
+        if (!updatingSelection) {
+            int selBegin = Math.min(e.getDot(), e.getMark());
+            int end = Math.max(e.getDot(), e.getMark());
+            List<TreePath> paths = new ArrayList<TreePath>();
+            TreeModel model = getTreeModel();
+            Object root = model.getRoot();
+            int rootCount = model.getChildCount(root);
 
             // Build an array of all the paths to all the character elements
             // in the selection.
-            for(int counter = 0; counter < rootCount; counter++) {
-                int            start = selBegin;
+            for (int counter = 0; counter < rootCount; counter++) {
+                int start = selBegin;
 
-                while(start <= end) {
-                    TreePath    path = getPathForIndex(start, root,
-                                       (Element)model.getChild(root, counter));
-                    Element     charElement = (Element)path.
-                                               getLastPathComponent();
+                while (start <= end) {
+                    TreePath path = getPathForIndex(start, root,
+                            (Element) model.getChild(root, counter));
+                    Element charElement = (Element) path.getLastPathComponent();
 
-                    paths.addElement(path);
-                    if(start >= charElement.getEndOffset())
+                    paths.add(path);
+                    if (start >= charElement.getEndOffset()) {
                         start++;
-                    else
+                    } else {
                         start = charElement.getEndOffset();
+                    }
                 }
             }
 
             // If a path was found, select it (them).
-            int               numPaths = paths.size();
+            int numPaths = paths.size();
 
-            if(numPaths > 0) {
-                TreePath[]    pathArray = new TreePath[numPaths];
+            if (numPaths > 0) {
+                TreePath[] pathArray = new TreePath[numPaths];
 
-                paths.copyInto(pathArray);
+                paths.toArray(pathArray);
                 updatingSelection = true;
                 try {
                     getTree().setSelectionPaths(pathArray);
                     getTree().scrollPathToVisible(pathArray[0]);
-                }
-                finally {
+                } finally {
                     updatingSelection = false;
                 }
             }
@@ -290,27 +312,24 @@
     }
 
     // TreeSelectionListener
-
     /**
-      * Called whenever the value of the selection changes.
-      * @param e the event that characterizes the change.
-      */
+     * Called whenever the value of the selection changes.
+     * @param e the event that characterizes the change.
+     */
     public void valueChanged(TreeSelectionEvent e) {
-        JTree       tree = getTree();
 
-        if(!updatingSelection && tree.getSelectionCount() == 1) {
-            TreePath      selPath = tree.getSelectionPath();
-            Object        lastPathComponent = selPath.getLastPathComponent();
+        if (!updatingSelection && tree.getSelectionCount() == 1) {
+            TreePath selPath = tree.getSelectionPath();
+            Object lastPathComponent = selPath.getLastPathComponent();
 
-            if(!(lastPathComponent instanceof DefaultMutableTreeNode)) {
-                Element       selElement = (Element)lastPathComponent;
+            if (!(lastPathComponent instanceof DefaultMutableTreeNode)) {
+                Element selElement = (Element) lastPathComponent;
 
                 updatingSelection = true;
                 try {
                     getEditor().select(selElement.getStartOffset(),
-                                       selElement.getEndOffset());
-                }
-                finally {
+                            selElement.getEndOffset());
+                } finally {
                     updatingSelection = false;
                 }
             }
@@ -318,7 +337,6 @@
     }
 
     // Local methods
-
     /**
      * @return tree showing elements.
      */
@@ -347,15 +365,14 @@
     protected void updateTree(DocumentEvent event) {
         updatingSelection = true;
         try {
-            TreeModel        model = getTreeModel();
-            Object           root = model.getRoot();
+            TreeModel model = getTreeModel();
+            Object root = model.getRoot();
 
-            for(int counter = model.getChildCount(root) - 1; counter >= 0;
-                counter--) {
-                updateTree(event, (Element)model.getChild(root, counter));
+            for (int counter = model.getChildCount(root) - 1; counter >= 0;
+                    counter--) {
+                updateTree(event, (Element) model.getChild(root, counter));
             }
-        }
-        finally {
+        } finally {
             updatingSelection = false;
         }
     }
@@ -372,53 +389,50 @@
         DocumentEvent.ElementChange ec = event.getChange(element);
 
         if (ec != null) {
-            Element[]       removed = ec.getChildrenRemoved();
-            Element[]       added = ec.getChildrenAdded();
-            int             startIndex = ec.getIndex();
+            Element[] removed = ec.getChildrenRemoved();
+            Element[] added = ec.getChildrenAdded();
+            int startIndex = ec.getIndex();
 
             // Check for removed.
-            if(removed != null && removed.length > 0) {
-                int[]            indices = new int[removed.length];
+            if (removed != null && removed.length > 0) {
+                int[] indices = new int[removed.length];
 
-                for(int counter = 0; counter < removed.length; counter++) {
+                for (int counter = 0; counter < removed.length; counter++) {
                     indices[counter] = startIndex + counter;
                 }
-                getTreeModel().nodesWereRemoved((TreeNode)element, indices,
-                                                removed);
+                getTreeModel().nodesWereRemoved((TreeNode) element, indices,
+                        removed);
             }
             // check for added
-            if(added != null && added.length > 0) {
-                int[]            indices = new int[added.length];
+            if (added != null && added.length > 0) {
+                int[] indices = new int[added.length];
 
-                for(int counter = 0; counter < added.length; counter++) {
+                for (int counter = 0; counter < added.length; counter++) {
                     indices[counter] = startIndex + counter;
                 }
-                getTreeModel().nodesWereInserted((TreeNode)element, indices);
+                getTreeModel().nodesWereInserted((TreeNode) element, indices);
             }
         }
-        if(!element.isLeaf()) {
-            int        startIndex = element.getElementIndex
-                                       (event.getOffset());
-            int        elementCount = element.getElementCount();
-            int        endIndex = Math.min(elementCount - 1,
-                                           element.getElementIndex
-                                     (event.getOffset() + event.getLength()));
+        if (!element.isLeaf()) {
+            int startIndex = element.getElementIndex(event.getOffset());
+            int elementCount = element.getElementCount();
+            int endIndex = Math.min(elementCount - 1,
+                    element.getElementIndex(event.getOffset()
+                    + event.getLength()));
 
-            if(startIndex > 0 && startIndex < elementCount &&
-               element.getElement(startIndex).getStartOffset() ==
-               event.getOffset()) {
+            if (startIndex > 0 && startIndex < elementCount && element.
+                    getElement(startIndex).getStartOffset() == event.getOffset()) {
                 // Force checking the previous element.
                 startIndex--;
             }
-            if(startIndex != -1 && endIndex != -1) {
-                for(int counter = startIndex; counter <= endIndex; counter++) {
+            if (startIndex != -1 && endIndex != -1) {
+                for (int counter = startIndex; counter <= endIndex; counter++) {
                     updateTree(event, element.getElement(counter));
                 }
             }
-        }
-        else {
+        } else {
             // Element is a leaf, assume it changed
-            getTreeModel().nodeChanged((TreeNode)element);
+            getTreeModel().nodeChanged((TreeNode) element);
         }
     }
 
@@ -426,14 +440,14 @@
      * Returns a TreePath to the element at <code>position</code>.
      */
     protected TreePath getPathForIndex(int position, Object root,
-                                       Element rootElement) {
-        TreePath         path = new TreePath(root);
-        Element          child = rootElement.getElement
-                                    (rootElement.getElementIndex(position));
+            Element rootElement) {
+        TreePath path = new TreePath(root);
+        Element child = rootElement.getElement(rootElement.getElementIndex(
+                position));
 
         path = path.pathByAddingChild(rootElement);
         path = path.pathByAddingChild(child);
-        while(!child.isLeaf()) {
+        while (!child.isLeaf()) {
             child = child.getElement(child.getElementIndex(position));
             path = path.pathByAddingChild(child);
         }
@@ -456,7 +470,8 @@
      * methods have been subclassed, primarily to special case the root.
      */
     public static class ElementTreeModel extends DefaultTreeModel {
-        protected Element[]         rootElements;
+
+        protected Element[] rootElements;
 
         public ElementTreeModel(Document document) {
             super(new DefaultMutableTreeNode("root"), false);
@@ -474,13 +489,14 @@
          * @param   parent  a node in the tree, obtained from this data source
          * @return  the child of <I>parent</I> at index <I>index</I>
          */
+        @Override
         public Object getChild(Object parent, int index) {
-            if(parent == root)
+            if (parent == root) {
                 return rootElements[index];
+            }
             return super.getChild(parent, index);
         }
 
-
         /**
          * Returns the number of children of <I>parent</I>.  Returns 0
          * if the node is a leaf or if it has no children.
@@ -490,13 +506,14 @@
          * @param   parent  a node in the tree, obtained from this data source
          * @return  the number of children of the node <I>parent</I>
          */
+        @Override
         public int getChildCount(Object parent) {
-            if(parent == root)
+            if (parent == root) {
                 return rootElements.length;
+            }
             return super.getChildCount(parent);
         }
 
-
         /**
          * Returns true if <I>node</I> is a leaf.  It is possible for
          * this method to return false even if <I>node</I> has no
@@ -507,21 +524,25 @@
          * @param   node    a node in the tree, obtained from this data source
          * @return  true if <I>node</I> is a leaf
          */
+        @Override
         public boolean isLeaf(Object node) {
-            if(node == root)
+            if (node == root) {
                 return false;
+            }
             return super.isLeaf(node);
         }
 
         /**
          * Returns the index of child in parent.
          */
+        @Override
         public int getIndexOfChild(Object parent, Object child) {
-            if(parent == root) {
-                for(int counter = rootElements.length - 1; counter >= 0;
-                    counter--) {
-                    if(rootElements[counter] == child)
+            if (parent == root) {
+                for (int counter = rootElements.length - 1; counter >= 0;
+                        counter--) {
+                    if (rootElements[counter] == child) {
                         return counter;
+                    }
                 }
                 return -1;
             }
@@ -532,18 +553,19 @@
          * Invoke this method after you've changed how node is to be
          * represented in the tree.
          */
+        @Override
         public void nodeChanged(TreeNode node) {
-            if(listenerList != null && node != null) {
-                TreeNode         parent = node.getParent();
+            if (listenerList != null && node != null) {
+                TreeNode parent = node.getParent();
 
-                if(parent == null && node != root) {
+                if (parent == null && node != root) {
                     parent = root;
                 }
-                if(parent != null) {
-                    int        anIndex = getIndexOfChild(parent, node);
+                if (parent != null) {
+                    int anIndex = getIndexOfChild(parent, node);
 
-                    if(anIndex != -1) {
-                        int[]        cIndexs = new int[1];
+                    if (anIndex != -1) {
+                        int[] cIndexs = new int[1];
 
                         cIndexs[0] = anIndex;
                         nodesChanged(parent, cIndexs);
@@ -555,26 +577,28 @@
         /**
          * Returns the path to a particluar node. This is recursive.
          */
+        @Override
         protected TreeNode[] getPathToRoot(TreeNode aNode, int depth) {
-            TreeNode[]              retNodes;
+            TreeNode[] retNodes;
 
             /* Check for null, in case someone passed in a null node, or
-               they passed in an element that isn't rooted at root. */
-            if(aNode == null) {
-                if(depth == 0)
+            they passed in an element that isn't rooted at root. */
+            if (aNode == null) {
+                if (depth == 0) {
                     return null;
-                else
+                } else {
                     retNodes = new TreeNode[depth];
-            }
-            else {
+                }
+            } else {
                 depth++;
-                if(aNode == root)
+                if (aNode == root) {
                     retNodes = new TreeNode[depth];
-                else {
+                } else {
                     TreeNode parent = aNode.getParent();
 
-                    if(parent == null)
+                    if (parent == null) {
                         parent = root;
+                    }
                     retNodes = getPathToRoot(parent, depth);
                 }
                 retNodes[retNodes.length - depth] = aNode;
--- a/jdk/src/share/demo/jfc/Notepad/Notepad.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/Notepad/Notepad.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,20 +29,73 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
-import java.awt.*;
-import java.awt.event.*;
-import java.beans.*;
-import java.io.*;
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.FileDialog;
+import java.awt.Font;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.Writer;
 import java.net.URL;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.StringTokenizer;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.BorderFactory;
+import javax.swing.Box;
+import javax.swing.BoxLayout;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JFileChooser;
+import javax.swing.JFrame;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JProgressBar;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.JToolBar;
+import javax.swing.JViewport;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.UIManager.LookAndFeelInfo;
+import javax.swing.event.UndoableEditEvent;
+import javax.swing.event.UndoableEditListener;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Document;
+import javax.swing.text.JTextComponent;
+import javax.swing.text.PlainDocument;
+import javax.swing.text.Segment;
+import javax.swing.text.TextAction;
+import javax.swing.undo.CannotRedoException;
+import javax.swing.undo.CannotUndoException;
+import javax.swing.undo.UndoManager;
 
-import javax.swing.text.*;
-import javax.swing.undo.*;
-import javax.swing.event.*;
-import javax.swing.*;
 
 /**
  * Sample application using the simple text editor component that
@@ -50,22 +103,24 @@
  *
  * @author  Timothy Prinzing
  */
+@SuppressWarnings("serial")
 class Notepad extends JPanel {
 
     private static ResourceBundle resources;
-    private final static String EXIT_AFTER_PAINT = new String("-exit");
+    private final static String EXIT_AFTER_PAINT = "-exit";
     private static boolean exitAfterFirstPaint;
 
     static {
         try {
             resources = ResourceBundle.getBundle("resources.Notepad",
-                                                 Locale.getDefault());
+                    Locale.getDefault());
         } catch (MissingResourceException mre) {
             System.err.println("resources/Notepad.properties not found");
             System.exit(1);
         }
     }
 
+    @Override
     public void paintChildren(Graphics g) {
         super.paintChildren(g);
         if (exitAfterFirstPaint) {
@@ -73,17 +128,19 @@
         }
     }
 
+    @SuppressWarnings("OverridableMethodCallInConstructor")
     Notepad() {
         super(true);
 
-        // Force SwingSet to come up in the Cross Platform L&F
+        // Trying to set Nimbus look and feel
         try {
-            UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
-            // If you want the System L&F instead, comment out the above line and
-            // uncomment the following:
-            // UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
-        } catch (Exception exc) {
-            System.err.println("Error loading L&F: " + exc);
+            for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
+                if ("Nimbus".equals(info.getName())) {
+                    UIManager.setLookAndFeel(info.getClassName());
+                    break;
+                }
+            }
+        } catch (Exception ignored) {
         }
 
         setBorder(BorderFactory.createEtchedBorder());
@@ -95,7 +152,7 @@
         editor.getDocument().addUndoableEditListener(undoHandler);
 
         // install the command table
-        commands = new Hashtable();
+        commands = new HashMap<Object, Action>();
         Action[] actions = getActions();
         for (int i = 0; i < actions.length; i++) {
             Action a = actions[i];
@@ -109,15 +166,17 @@
         try {
             String vpFlag = resources.getString("ViewportBackingStore");
             Boolean bs = Boolean.valueOf(vpFlag);
-            port.setBackingStoreEnabled(bs.booleanValue());
-        } catch (MissingResourceException mre) {
+            port.setScrollMode(bs.booleanValue()
+                    ? JViewport.BACKINGSTORE_SCROLL_MODE
+                    : JViewport.BLIT_SCROLL_MODE);
+        } catch (MissingResourceException ignored) {
             // just use the viewport default
         }
 
-        menuItems = new Hashtable();
+        menuItems = new HashMap<String, JMenuItem>();
         JPanel panel = new JPanel();
         panel.setLayout(new BorderLayout());
-        panel.add("North",createToolbar());
+        panel.add("North", createToolbar());
         panel.add("Center", scroller);
         add("Center", panel);
         add("South", createStatusbar());
@@ -125,28 +184,28 @@
 
     public static void main(String[] args) {
         try {
-        String vers = System.getProperty("java.version");
-        if (vers.compareTo("1.1.2") < 0) {
-            System.out.println("!!!WARNING: Swing must be run with a " +
-                               "1.1.2 or higher version VM!!!");
-        }
-        if (args.length > 0 && args[0].equals(EXIT_AFTER_PAINT)) {
-            exitAfterFirstPaint = true;
-        }
-        JFrame frame = new JFrame();
-        frame.setTitle(resources.getString("Title"));
-        frame.setBackground(Color.lightGray);
-        frame.getContentPane().setLayout(new BorderLayout());
-        Notepad notepad = new Notepad();
-        frame.getContentPane().add("Center", notepad);
-        frame.setJMenuBar(notepad.createMenubar());
-        frame.addWindowListener(new AppCloser());
-        frame.pack();
-        frame.setSize(500, 600);
-        frame.show();
+            if (args.length > 0 && args[0].equals(EXIT_AFTER_PAINT)) {
+                exitAfterFirstPaint = true;
+            }
+            SwingUtilities.invokeAndWait(new Runnable() {
+
+                public void run() {
+                    JFrame frame = new JFrame();
+                    frame.setTitle(resources.getString("Title"));
+                    frame.setBackground(Color.lightGray);
+                    frame.getContentPane().setLayout(new BorderLayout());
+                    Notepad notepad = new Notepad();
+                    frame.getContentPane().add("Center", notepad);
+                    frame.setJMenuBar(notepad.createMenubar());
+                    frame.addWindowListener(new AppCloser());
+                    frame.pack();
+                    frame.setSize(500, 600);
+                    frame.setVisible(true);
+                }
+            });
         } catch (Throwable t) {
-            System.out.println("uncaught exception: " + t);
-            t.printStackTrace();
+            Logger.getLogger(Notepad.class.getName()).log(Level.SEVERE,
+                    "uncaught exception", t);
         }
     }
 
@@ -177,6 +236,7 @@
         return editor;
     }
 
+
     /**
      * To shutdown when run as an application.  This is a
      * fairly lame implementation.   A more self-respecting
@@ -184,6 +244,8 @@
      * was needed.
      */
     protected static final class AppCloser extends WindowAdapter {
+
+        @Override
         public void windowClosing(WindowEvent e) {
             System.exit(0);
         }
@@ -239,11 +301,11 @@
      *  if one wasn't created.
      */
     protected JMenuItem getMenuItem(String cmd) {
-        return (JMenuItem) menuItems.get(cmd);
+        return menuItems.get(cmd);
     }
 
     protected Action getAction(String cmd) {
-        return (Action) commands.get(cmd);
+        return commands.get(cmd);
     }
 
     protected String getResourceString(String nm) {
@@ -328,10 +390,14 @@
     protected JButton createToolbarButton(String key) {
         URL url = getResource(key + imageSuffix);
         JButton b = new JButton(new ImageIcon(url)) {
-            public float getAlignmentY() { return 0.5f; }
+
+            @Override
+            public float getAlignmentY() {
+                return 0.5f;
+            }
         };
         b.setRequestFocusEnabled(false);
-        b.setMargin(new Insets(1,1,1,1));
+        b.setMargin(new Insets(1, 1, 1, 1));
 
         String astr = getResourceString(key + actionSuffix);
         if (astr == null) {
@@ -360,15 +426,17 @@
      * resource file.
      */
     protected String[] tokenize(String input) {
-        Vector v = new Vector();
+        List<String> v = new ArrayList<String>();
         StringTokenizer t = new StringTokenizer(input);
         String cmd[];
 
-        while (t.hasMoreTokens())
-            v.addElement(t.nextToken());
+        while (t.hasMoreTokens()) {
+            v.add(t.nextToken());
+        }
         cmd = new String[v.size()];
-        for (int i = 0; i < cmd.length; i++)
-            cmd[i] = (String) v.elementAt(i);
+        for (int i = 0; i < cmd.length; i++) {
+            cmd[i] = v.get(i);
+        }
 
         return cmd;
     }
@@ -416,13 +484,16 @@
     }
 
     // Yarked from JMenu, ideally this would be public.
+
     private class ActionChangedListener implements PropertyChangeListener {
+
         JMenuItem menuItem;
 
         ActionChangedListener(JMenuItem mi) {
             super();
             this.menuItem = mi;
         }
+
         public void propertyChange(PropertyChangeEvent e) {
             String propertyName = e.getPropertyName();
             if (e.getPropertyName().equals(Action.NAME)) {
@@ -434,56 +505,48 @@
             }
         }
     }
-
     private JTextComponent editor;
-    private Hashtable commands;
-    private Hashtable menuItems;
+    private Map<Object, Action> commands;
+    private Map<String, JMenuItem> menuItems;
     private JMenuBar menubar;
     private JToolBar toolbar;
     private JComponent status;
     private JFrame elementTreeFrame;
     protected ElementTreePanel elementTreePanel;
-
     protected FileDialog fileDialog;
-
     /**
      * Listener for the edits on the current document.
      */
     protected UndoableEditListener undoHandler = new UndoHandler();
-
     /** UndoManager that we add edits to. */
     protected UndoManager undo = new UndoManager();
-
     /**
      * Suffix applied to the key used in resource file
      * lookups for an image.
      */
     public static final String imageSuffix = "Image";
-
     /**
      * Suffix applied to the key used in resource file
      * lookups for a label.
      */
     public static final String labelSuffix = "Label";
-
     /**
      * Suffix applied to the key used in resource file
      * lookups for an action.
      */
     public static final String actionSuffix = "Action";
-
     /**
      * Suffix applied to the key used in resource file
      * lookups for tooltip text.
      */
     public static final String tipSuffix = "Tooltip";
-
     public static final String openAction = "open";
-    public static final String newAction  = "new";
+    public static final String newAction = "new";
     public static final String saveAction = "save";
     public static final String exitAction = "exit";
     public static final String showElementTreeAction = "showElementTree";
 
+
     class UndoHandler implements UndoableEditListener {
 
         /**
@@ -497,6 +560,7 @@
         }
     }
 
+
     /**
      * FIXME - I'm not very useful yet
      */
@@ -507,17 +571,14 @@
             setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
         }
 
+        @Override
         public void paint(Graphics g) {
             super.paint(g);
         }
-
     }
-
     // --- action implementations -----------------------------------
-
     private UndoAction undoAction = new UndoAction();
     private RedoAction redoAction = new RedoAction();
-
     /**
      * Actions defined by the Notepad class
      */
@@ -531,7 +592,9 @@
         redoAction
     };
 
+
     class UndoAction extends AbstractAction {
+
         public UndoAction() {
             super("Undo");
             setEnabled(false);
@@ -541,26 +604,27 @@
             try {
                 undo.undo();
             } catch (CannotUndoException ex) {
-                System.out.println("Unable to undo: " + ex);
-                ex.printStackTrace();
+                Logger.getLogger(UndoAction.class.getName()).log(Level.SEVERE,
+                        "Unable to undo", ex);
             }
             update();
             redoAction.update();
         }
 
         protected void update() {
-            if(undo.canUndo()) {
+            if (undo.canUndo()) {
                 setEnabled(true);
                 putValue(Action.NAME, undo.getUndoPresentationName());
-            }
-            else {
+            } else {
                 setEnabled(false);
                 putValue(Action.NAME, "Undo");
             }
         }
     }
 
+
     class RedoAction extends AbstractAction {
+
         public RedoAction() {
             super("Redo");
             setEnabled(false);
@@ -570,31 +634,32 @@
             try {
                 undo.redo();
             } catch (CannotRedoException ex) {
-                System.out.println("Unable to redo: " + ex);
-                ex.printStackTrace();
+                Logger.getLogger(RedoAction.class.getName()).log(Level.SEVERE,
+                        "Unable to redo", ex);
             }
             update();
             undoAction.update();
         }
 
         protected void update() {
-            if(undo.canRedo()) {
+            if (undo.canRedo()) {
                 setEnabled(true);
                 putValue(Action.NAME, undo.getRedoPresentationName());
-            }
-            else {
+            } else {
                 setEnabled(false);
                 putValue(Action.NAME, "Redo");
             }
         }
     }
 
+
     class OpenAction extends NewAction {
 
         OpenAction() {
             super(openAction);
         }
 
+        @Override
         public void actionPerformed(ActionEvent e) {
             Frame frame = getFrame();
             JFileChooser chooser = new JFileChooser();
@@ -607,8 +672,9 @@
             File f = chooser.getSelectedFile();
             if (f.isFile() && f.canRead()) {
                 Document oldDoc = getEditor().getDocument();
-                if(oldDoc != null)
+                if (oldDoc != null) {
                     oldDoc.removeUndoableEditListener(undoHandler);
+                }
                 if (elementTreePanel != null) {
                     elementTreePanel.setEditor(null);
                 }
@@ -625,6 +691,7 @@
         }
     }
 
+
     class SaveAction extends AbstractAction {
 
         SaveAction() {
@@ -647,6 +714,7 @@
         }
     }
 
+
     class NewAction extends AbstractAction {
 
         NewAction() {
@@ -659,8 +727,9 @@
 
         public void actionPerformed(ActionEvent e) {
             Document oldDoc = getEditor().getDocument();
-            if(oldDoc != null)
+            if (oldDoc != null) {
                 oldDoc.removeUndoableEditListener(undoHandler);
+            }
             getEditor().setDocument(new PlainDocument());
             getEditor().getDocument().addUndoableEditListener(undoHandler);
             resetUndoManager();
@@ -669,6 +738,7 @@
         }
     }
 
+
     /**
      * Really lame implementation of an exit command
      */
@@ -683,6 +753,7 @@
         }
     }
 
+
     /**
      * Action that brings up a JFrame with a JTree showing the structure
      * of the document.
@@ -698,18 +769,19 @@
         }
 
         public void actionPerformed(ActionEvent e) {
-            if(elementTreeFrame == null) {
+            if (elementTreeFrame == null) {
                 // Create a frame containing an instance of
                 // ElementTreePanel.
                 try {
-                    String    title = resources.getString
-                                        ("ElementTreeFrameTitle");
+                    String title = resources.getString("ElementTreeFrameTitle");
                     elementTreeFrame = new JFrame(title);
                 } catch (MissingResourceException mre) {
                     elementTreeFrame = new JFrame();
                 }
 
                 elementTreeFrame.addWindowListener(new WindowAdapter() {
+
+                    @Override
                     public void windowClosing(WindowEvent weeee) {
                         elementTreeFrame.setVisible(false);
                     }
@@ -721,10 +793,11 @@
                 fContentPane.add(elementTreePanel);
                 elementTreeFrame.pack();
             }
-            elementTreeFrame.show();
+            elementTreeFrame.setVisible(true);
         }
     }
 
+
     /**
      * Thread to load a file into the text storage model
      */
@@ -736,6 +809,7 @@
             this.doc = doc;
         }
 
+        @Override
         public void run() {
             try {
                 // initialize the statusbar
@@ -751,22 +825,22 @@
                 char[] buff = new char[4096];
                 int nch;
                 while ((nch = in.read(buff, 0, buff.length)) != -1) {
-                    doc.insertString(doc.getLength(), new String(buff, 0, nch), null);
+                    doc.insertString(doc.getLength(), new String(buff, 0, nch),
+                            null);
                     progress.setValue(progress.getValue() + nch);
                 }
-            }
-            catch (IOException e) {
+            } catch (IOException e) {
                 final String msg = e.getMessage();
                 SwingUtilities.invokeLater(new Runnable() {
+
                     public void run() {
                         JOptionPane.showMessageDialog(getFrame(),
                                 "Could not open file: " + msg,
                                 "Error opening file",
                                 JOptionPane.ERROR_MESSAGE);
-            }
+                    }
                 });
-            }
-            catch (BadLocationException e) {
+            } catch (BadLocationException e) {
                 System.err.println(e.getMessage());
             }
             doc.addUndoableEditListener(undoHandler);
@@ -778,21 +852,23 @@
 
             if (elementTreePanel != null) {
                 SwingUtilities.invokeLater(new Runnable() {
+
                     public void run() {
                         elementTreePanel.setEditor(getEditor());
                     }
                 });
             }
         }
-
         Document doc;
         File f;
     }
 
+
     /**
      * Thread to save a document to file
      */
     class FileSaver extends Thread {
+
         Document doc;
         File f;
 
@@ -802,13 +878,15 @@
             this.doc = doc;
         }
 
+        @Override
+        @SuppressWarnings("SleepWhileHoldingLock")
         public void run() {
             try {
                 // initialize the statusbar
                 status.removeAll();
                 JProgressBar progress = new JProgressBar();
                 progress.setMinimum(0);
-                progress.setMaximum((int) doc.getLength());
+                progress.setMaximum(doc.getLength());
                 status.add(progress);
                 status.revalidate();
 
@@ -827,24 +905,25 @@
                     try {
                         Thread.sleep(10);
                     } catch (InterruptedException e) {
-                        e.printStackTrace();
+                        Logger.getLogger(FileSaver.class.getName()).log(
+                                Level.SEVERE,
+                                null, e);
                     }
                 }
                 out.flush();
                 out.close();
-            }
-            catch (IOException e) {
+            } catch (IOException e) {
                 final String msg = e.getMessage();
                 SwingUtilities.invokeLater(new Runnable() {
+
                     public void run() {
                         JOptionPane.showMessageDialog(getFrame(),
                                 "Could not save file: " + msg,
                                 "Error saving file",
                                 JOptionPane.ERROR_MESSAGE);
-            }
+                    }
                 });
-            }
-            catch (BadLocationException e) {
+            } catch (BadLocationException e) {
                 System.err.println(e.getMessage());
             }
             // we are done... get rid of progressbar
--- a/jdk/src/share/demo/jfc/SampleTree/DynamicTreeNode.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/SampleTree/DynamicTreeNode.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,154 +29,154 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
-import javax.swing.tree.DefaultMutableTreeNode;
 import java.awt.Color;
 import java.awt.Font;
-import java.awt.Toolkit;
+import java.awt.GraphicsEnvironment;
 import java.util.Random;
+import javax.swing.tree.DefaultMutableTreeNode;
+
 
 /**
-  * DynamicTreeNode illustrates one of the possible ways in which dynamic
-  * loading can be used in tree.  The basic premise behind this is that
-  * getChildCount() will be messaged from JTreeModel before any children
-  * are asked for.  So, the first time getChildCount() is issued the
-  * children are loaded.<p>
-  * It should be noted that isLeaf will also be messaged from the model.
-  * The default behavior of TreeNode is to message getChildCount to
-  * determine this. As such, isLeaf is subclassed to always return false.<p>
-  * There are others ways this could be accomplished as well.  Instead of
-  * subclassing TreeNode you could subclass JTreeModel and do the same
-  * thing in getChildCount().  Or, if you aren't using TreeNode you could
-  * write your own TreeModel implementation.
-  * Another solution would be to listen for TreeNodeExpansion events and
-  * the first time a node has been expanded post the appropriate insertion
-  * events.  I would not recommend this approach though, the other two
-  * are much simpler and cleaner (and are faster from the perspective of
-  * how tree deals with it).
-  *
-  * NOTE: getAllowsChildren() can be messaged before getChildCount().
-  *       For this example the nodes always allow children, so it isn't
-  *       a problem, but if you do support true leaf nodes you may want
-  *       to check for loading in getAllowsChildren too.
-  *
-  * @author Scott Violet
-  */
+ * DynamicTreeNode illustrates one of the possible ways in which dynamic
+ * loading can be used in tree.  The basic premise behind this is that
+ * getChildCount() will be messaged from JTreeModel before any children
+ * are asked for.  So, the first time getChildCount() is issued the
+ * children are loaded.<p>
+ * It should be noted that isLeaf will also be messaged from the model.
+ * The default behavior of TreeNode is to message getChildCount to
+ * determine this. As such, isLeaf is subclassed to always return false.<p>
+ * There are others ways this could be accomplished as well.  Instead of
+ * subclassing TreeNode you could subclass JTreeModel and do the same
+ * thing in getChildCount().  Or, if you aren't using TreeNode you could
+ * write your own TreeModel implementation.
+ * Another solution would be to listen for TreeNodeExpansion events and
+ * the first time a node has been expanded post the appropriate insertion
+ * events.  I would not recommend this approach though, the other two
+ * are much simpler and cleaner (and are faster from the perspective of
+ * how tree deals with it).
+ *
+ * NOTE: getAllowsChildren() can be messaged before getChildCount().
+ *       For this example the nodes always allow children, so it isn't
+ *       a problem, but if you do support true leaf nodes you may want
+ *       to check for loading in getAllowsChildren too.
+ *
+ * @author Scott Violet
+ */
+@SuppressWarnings("serial")
+public class DynamicTreeNode extends DefaultMutableTreeNode {
+    // Class stuff.
 
-public class DynamicTreeNode extends DefaultMutableTreeNode
-{
-    // Class stuff.
     /** Number of names. */
-    static protected float                    nameCount;
-
+    protected static float nameCount;
     /** Names to use for children. */
-    static protected String[]                 names;
-
+    protected static final String[] NAMES;
     /** Potential fonts used to draw with. */
-    static protected Font[]                   fonts;
-
+    protected static Font[] fonts;
     /** Used to generate the names. */
-    static protected Random                   nameGen;
-
+    protected static Random nameGen;
     /** Number of children to create for each node. */
-    static protected final int                DefaultChildrenCount = 7;
+    protected static final int DEFAULT_CHILDREN_COUNT = 7;
 
     static {
-        String[]            fontNames;
+        String[] fontNames;
 
         try {
-            fontNames = Toolkit.getDefaultToolkit().getFontList();
+            fontNames = GraphicsEnvironment.getLocalGraphicsEnvironment().
+                    getAvailableFontFamilyNames();
+
         } catch (Exception e) {
             fontNames = null;
         }
-        if(fontNames == null || fontNames.length == 0) {
-            names = new String[] {"Mark Andrews", "Tom Ball", "Alan Chung",
-                                      "Rob Davis", "Jeff Dinkins",
-                                      "Amy Fowler", "James Gosling",
-                                      "David Karlton", "Dave Kloba",
-                                      "Dave Moore", "Hans Muller",
-                                      "Rick Levenson", "Tim Prinzing",
-                                      "Chester Rose", "Ray Ryan",
-                                      "Georges Saab", "Scott Violet",
-                                      "Kathy Walrath", "Arnaud Weber" };
-        }
-        else {
+        if (fontNames == null || fontNames.length == 0) {
+            NAMES = new String[] { "Mark Andrews", "Tom Ball", "Alan Chung",
+                        "Rob Davis", "Jeff Dinkins",
+                        "Amy Fowler", "James Gosling",
+                        "David Karlton", "Dave Kloba",
+                        "Dave Moore", "Hans Muller",
+                        "Rick Levenson", "Tim Prinzing",
+                        "Chester Rose", "Ray Ryan",
+                        "Georges Saab", "Scott Violet",
+                        "Kathy Walrath", "Arnaud Weber" };
+        } else {
             /* Create the Fonts, creating fonts is slow, much better to
-               do it once. */
-            int              fontSize = 12;
+            do it once. */
+            int fontSize = 12;
 
-            names = fontNames;
-            fonts = new Font[names.length];
-            for(int counter = 0, maxCounter = names.length;
-                counter < maxCounter; counter++) {
+            NAMES = fontNames;
+            fonts = new Font[NAMES.length];
+            for (int counter = 0, maxCounter = NAMES.length;
+                    counter < maxCounter; counter++) {
                 try {
                     fonts[counter] = new Font(fontNames[counter], 0, fontSize);
-                }
-                catch (Exception e) {
+                } catch (Exception e) {
                     fonts[counter] = null;
                 }
                 fontSize = ((fontSize + 2 - 12) % 12) + 12;
             }
         }
-        nameCount = (float)names.length;
+        nameCount = (float) NAMES.length;
         nameGen = new Random(System.currentTimeMillis());
     }
-
-
     /** Have the children of this node been loaded yet? */
-    protected boolean           hasLoaded;
+    protected boolean hasLoaded;
 
     /**
-      * Constructs a new DynamicTreeNode instance with o as the user
-      * object.
-      */
+     * Constructs a new DynamicTreeNode instance with o as the user
+     * object.
+     */
     public DynamicTreeNode(Object o) {
         super(o);
     }
 
+    @Override
     public boolean isLeaf() {
         return false;
     }
 
     /**
-      * If hasLoaded is false, meaning the children have not yet been
-      * loaded, loadChildren is messaged and super is messaged for
-      * the return value.
-      */
+     * If hasLoaded is false, meaning the children have not yet been
+     * loaded, loadChildren is messaged and super is messaged for
+     * the return value.
+     */
+    @Override
     public int getChildCount() {
-        if(!hasLoaded) {
+        if (!hasLoaded) {
             loadChildren();
         }
         return super.getChildCount();
     }
 
     /**
-      * Messaged the first time getChildCount is messaged.  Creates
-      * children with random names from names.
-      */
+     * Messaged the first time getChildCount is messaged.  Creates
+     * children with random names from names.
+     */
     protected void loadChildren() {
-        DynamicTreeNode             newNode;
-        Font                        font;
-        int                         randomIndex;
-        SampleData                  data;
+        DynamicTreeNode newNode;
+        Font font;
+        int randomIndex;
+        SampleData data;
 
-        for(int counter = 0; counter < DynamicTreeNode.DefaultChildrenCount;
-            counter++) {
-            randomIndex = (int)(nameGen.nextFloat() * nameCount);
-            if(fonts != null)
+        for (int counter = 0; counter < DynamicTreeNode.DEFAULT_CHILDREN_COUNT;
+                counter++) {
+            randomIndex = (int) (nameGen.nextFloat() * nameCount);
+            String displayString = NAMES[randomIndex];
+            if (fonts == null || fonts[randomIndex].canDisplayUpTo(displayString)
+                    != -1) {
+                font = null;
+            } else {
                 font = fonts[randomIndex];
-            else
-                font = null;
-            if(counter % 2 == 0)
-                data = new SampleData(font, Color.red, names[randomIndex]);
-            else
-                data = new SampleData(font, Color.blue, names[randomIndex]);
+            }
+
+            if (counter % 2 == 0) {
+                data = new SampleData(font, Color.red, displayString);
+            } else {
+                data = new SampleData(font, Color.blue, displayString);
+            }
             newNode = new DynamicTreeNode(data);
             /* Don't use add() here, add calls insert(newNode, getChildCount())
-               so if you want to use add, just be sure to set hasLoaded = true
-               first. */
+            so if you want to use add, just be sure to set hasLoaded = true
+            first. */
             insert(newNode, counter);
         }
         /* This node has now been loaded, mark it so. */
--- a/jdk/src/share/demo/jfc/SampleTree/SampleData.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/SampleTree/SampleData.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,32 +29,27 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
 import java.awt.Color;
 import java.awt.Font;
 
+
 /**
-  * @author Scott Violet
-  */
+ * @author Scott Violet
+ */
+public class SampleData extends Object {
 
-public class SampleData extends Object
-{
     /** Font used for drawing. */
-    protected Font          font;
-
+    protected Font font;
     /** Color used for text. */
-    protected Color         color;
-
+    protected Color color;
     /** Value to display. */
-    protected String        string;
-
+    protected String string;
 
     /**
-      * Constructs a new instance of SampleData with the passed in
-      * arguments.
-      */
+     * Constructs a new instance of SampleData with the passed in
+     * arguments.
+     */
     public SampleData(Font newFont, Color newColor, String newString) {
         font = newFont;
         color = newColor;
@@ -62,47 +57,48 @@
     }
 
     /**
-      * Sets the font that is used to represent this object.
-      */
+     * Sets the font that is used to represent this object.
+     */
     public void setFont(Font newFont) {
         font = newFont;
     }
 
     /**
-      * Returns the Font used to represent this object.
-      */
+     * Returns the Font used to represent this object.
+     */
     public Font getFont() {
         return font;
     }
 
     /**
-      * Sets the color used to draw the text.
-      */
+     * Sets the color used to draw the text.
+     */
     public void setColor(Color newColor) {
         color = newColor;
     }
 
     /**
-      * Returns the color used to draw the text.
-      */
+     * Returns the color used to draw the text.
+     */
     public Color getColor() {
         return color;
     }
 
     /**
-      * Sets the string to display for this object.
-      */
+     * Sets the string to display for this object.
+     */
     public void setString(String newString) {
         string = newString;
     }
 
     /**
-      * Returnes the string to display for this object.
-      */
+     * Returnes the string to display for this object.
+     */
     public String string() {
         return string;
     }
 
+    @Override
     public String toString() {
         return string;
     }
--- a/jdk/src/share/demo/jfc/SampleTree/SampleTree.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/SampleTree/SampleTree.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,9 +29,10 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
+import java.lang.reflect.InvocationTargetException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import javax.swing.*;
 import javax.swing.event.*;
 import java.awt.BorderLayout;
@@ -40,58 +41,57 @@
 import java.awt.FlowLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
 import java.util.*;
+import javax.swing.UIManager.LookAndFeelInfo;
 import javax.swing.border.*;
 import javax.swing.tree.*;
 
+
 /**
-  * A demo for illustrating how to do different things with JTree.
-  * The data that this displays is rather boring, that is each node will
-  * have 7 children that have random names based on the fonts.  Each node
-  * is then drawn with that font and in a different color.
-  * While the data isn't interesting the example illustrates a number
-  * of things:
-  *
-  * For an example of dynamicaly loading children refer to DynamicTreeNode.
-  * For an example of adding/removing/inserting/reloading refer to the inner
-  *     classes of this class, AddAction, RemovAction, InsertAction and
-  *     ReloadAction.
-  * For an example of creating your own cell renderer refer to
-  *     SampleTreeCellRenderer.
-  * For an example of subclassing JTreeModel for editing refer to
-  *     SampleTreeModel.
-  *
-  * @author Scott Violet
-  */
+ * A demo for illustrating how to do different things with JTree.
+ * The data that this displays is rather boring, that is each node will
+ * have 7 children that have random names based on the fonts.  Each node
+ * is then drawn with that font and in a different color.
+ * While the data isn't interesting the example illustrates a number
+ * of things:
+ *
+ * For an example of dynamicaly loading children refer to DynamicTreeNode.
+ * For an example of adding/removing/inserting/reloading refer to the inner
+ *     classes of this class, AddAction, RemovAction, InsertAction and
+ *     ReloadAction.
+ * For an example of creating your own cell renderer refer to
+ *     SampleTreeCellRenderer.
+ * For an example of subclassing JTreeModel for editing refer to
+ *     SampleTreeModel.
+ *
+ * @author Scott Violet
+ */
+public final class SampleTree {
 
-public class SampleTree
-{
     /** Window for showing Tree. */
-    protected JFrame            frame;
+    protected JFrame frame;
     /** Tree used for the example. */
-    protected JTree             tree;
+    protected JTree tree;
     /** Tree model. */
-    protected DefaultTreeModel        treeModel;
+    protected DefaultTreeModel treeModel;
 
     /**
-      * Constructs a new instance of SampleTree.
-      */
+     * Constructs a new instance of SampleTree.
+     */
     public SampleTree() {
-        // Force SampleTree to come up in the Cross Platform L&F
+        // Trying to set Nimbus look and feel
         try {
-            UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
-            // If you want the System L&F instead, comment out the above line and
-            // uncomment the following:
-            // UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
-        } catch (Exception exc) {
-            System.err.println("Error loading L&F: " + exc);
+            for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
+                if ("Nimbus".equals(info.getName())) {
+                    UIManager.setLookAndFeel(info.getClassName());
+                    break;
+                }
+            }
+        } catch (Exception ignored) {
         }
 
-
-        JMenuBar         menuBar = constructMenuBar();
-        JPanel           panel = new JPanel(true);
+        JMenuBar menuBar = constructMenuBar();
+        JPanel panel = new JPanel(true);
 
         frame = new JFrame("SampleTree");
         frame.getContentPane().add("Center", panel);
@@ -106,18 +106,18 @@
         tree = new JTree(treeModel);
 
         /* Enable tool tips for the tree, without this tool tips will not
-           be picked up. */
+        be picked up. */
         ToolTipManager.sharedInstance().registerComponent(tree);
 
         /* Make the tree use an instance of SampleTreeCellRenderer for
-           drawing. */
+        drawing. */
         tree.setCellRenderer(new SampleTreeCellRenderer());
 
         /* Make tree ask for the height of each row. */
         tree.setRowHeight(-1);
 
         /* Put the Tree in a scroller. */
-        JScrollPane        sp = new JScrollPane();
+        JScrollPane sp = new JScrollPane();
         sp.setPreferredSize(new Dimension(300, 300));
         sp.getViewport().add(tree);
 
@@ -126,19 +126,18 @@
         panel.add("Center", sp);
         panel.add("South", constructOptionsPanel());
 
-        frame.addWindowListener( new WindowAdapter() {
-            public void windowClosing(WindowEvent e) {System.exit(0);}});
-
+        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.pack();
-        frame.show();
+        frame.setVisible(true);
     }
 
     /** Constructs a JPanel containing check boxes for the different
-      * options that tree supports. */
+     * options that tree supports. */
+    @SuppressWarnings("serial")
     private JPanel constructOptionsPanel() {
-        JCheckBox               aCheckbox;
-        JPanel           retPanel = new JPanel(false);
-        JPanel           borderPane = new JPanel(false);
+        JCheckBox aCheckbox;
+        JPanel retPanel = new JPanel(false);
+        JPanel borderPane = new JPanel(false);
 
         borderPane.setLayout(new BorderLayout());
         retPanel.setLayout(new FlowLayout());
@@ -162,39 +161,54 @@
         borderPane.add(retPanel, BorderLayout.CENTER);
 
         /* Create a set of radio buttons that dictate what selection should
-           be allowed in the tree. */
-        ButtonGroup           group = new ButtonGroup();
-        JPanel         buttonPane = new JPanel(false);
-        JRadioButton          button;
+        be allowed in the tree. */
+        ButtonGroup group = new ButtonGroup();
+        JPanel buttonPane = new JPanel(false);
+        JRadioButton button;
 
         buttonPane.setLayout(new FlowLayout());
         buttonPane.setBorder(new TitledBorder("Selection Mode"));
         button = new JRadioButton("Single");
         button.addActionListener(new AbstractAction() {
-            public boolean isEnabled() { return true; }
+
+            @Override
+            public boolean isEnabled() {
+                return true;
+            }
+
             public void actionPerformed(ActionEvent e) {
-                tree.getSelectionModel().setSelectionMode
-                    (TreeSelectionModel.SINGLE_TREE_SELECTION);
+                tree.getSelectionModel().setSelectionMode(
+                        TreeSelectionModel.SINGLE_TREE_SELECTION);
             }
         });
         group.add(button);
         buttonPane.add(button);
         button = new JRadioButton("Contiguous");
         button.addActionListener(new AbstractAction() {
-            public boolean isEnabled() { return true; }
+
+            @Override
+            public boolean isEnabled() {
+                return true;
+            }
+
             public void actionPerformed(ActionEvent e) {
-                tree.getSelectionModel().setSelectionMode
-                    (TreeSelectionModel.CONTIGUOUS_TREE_SELECTION);
+                tree.getSelectionModel().setSelectionMode(
+                        TreeSelectionModel.CONTIGUOUS_TREE_SELECTION);
             }
         });
         group.add(button);
         buttonPane.add(button);
         button = new JRadioButton("Discontiguous");
         button.addActionListener(new AbstractAction() {
-            public boolean isEnabled() { return true; }
+
+            @Override
+            public boolean isEnabled() {
+                return true;
+            }
+
             public void actionPerformed(ActionEvent e) {
-                tree.getSelectionModel().setSelectionMode
-                    (TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);
+                tree.getSelectionModel().setSelectionMode(
+                        TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);
             }
         });
         button.setSelected(true);
@@ -209,33 +223,33 @@
 /*
         JPanel               clickPanel = new JPanel();
         Object[]             values = { "Never", new Integer(1),
-                                        new Integer(2), new Integer(3) };
+        new Integer(2), new Integer(3) };
         final JComboBox      clickCBox = new JComboBox(values);
 
         clickPanel.setLayout(new FlowLayout());
         clickPanel.add(new JLabel("Click count to expand:"));
         clickCBox.setSelectedIndex(2);
         clickCBox.addActionListener(new ActionListener() {
-            public void actionPerformed(ActionEvent ae) {
-                Object       selItem = clickCBox.getSelectedItem();
+        public void actionPerformed(ActionEvent ae) {
+        Object       selItem = clickCBox.getSelectedItem();
 
-                if(selItem instanceof Integer)
-                    tree.setToggleClickCount(((Integer)selItem).intValue());
-                else // Don't toggle
-                    tree.setToggleClickCount(0);
-            }
+        if(selItem instanceof Integer)
+        tree.setToggleClickCount(((Integer)selItem).intValue());
+        else // Don't toggle
+        tree.setToggleClickCount(0);
+        }
         });
         clickPanel.add(clickCBox);
         borderPane.add(clickPanel, BorderLayout.NORTH);
-*/
+         */
         return borderPane;
     }
 
     /** Construct a menu. */
     private JMenuBar constructMenuBar() {
-        JMenu            menu;
-        JMenuBar         menuBar = new JMenuBar();
-        JMenuItem        menuItem;
+        JMenu menu;
+        JMenuBar menuBar = new JMenuBar();
+        JMenuItem menuItem;
 
         /* Good ol exit. */
         menu = new JMenu("File");
@@ -243,9 +257,11 @@
 
         menuItem = menu.add(new JMenuItem("Exit"));
         menuItem.addActionListener(new ActionListener() {
+
             public void actionPerformed(ActionEvent e) {
                 System.exit(0);
-            }});
+            }
+        });
 
         /* Tree related stuff. */
         menu = new JMenu("Tree");
@@ -267,14 +283,15 @@
     }
 
     /**
-      * Returns the TreeNode instance that is selected in the tree.
-      * If nothing is selected, null is returned.
-      */
+     * Returns the TreeNode instance that is selected in the tree.
+     * If nothing is selected, null is returned.
+     */
     protected DefaultMutableTreeNode getSelectedNode() {
-        TreePath   selPath = tree.getSelectionPath();
+        TreePath selPath = tree.getSelectionPath();
 
-        if(selPath != null)
-            return (DefaultMutableTreeNode)selPath.getLastPathComponent();
+        if (selPath != null) {
+            return (DefaultMutableTreeNode) selPath.getLastPathComponent();
+        }
         return null;
     }
 
@@ -290,133 +307,136 @@
         return new DynamicTreeNode(new SampleData(null, Color.black, name));
     }
 
+
     /**
-      * AddAction is used to add a new item after the selected item.
-      */
-    class AddAction extends Object implements ActionListener
-    {
+     * AddAction is used to add a new item after the selected item.
+     */
+    class AddAction extends Object implements ActionListener {
+
         /** Number of nodes that have been added. */
-        public int               addCount;
+        public int addCount;
 
         /**
-          * Messaged when the user clicks on the Add menu item.
-          * Determines the selection from the Tree and adds an item
-          * after that.  If nothing is selected, an item is added to
-          * the root.
-          */
+         * Messaged when the user clicks on the Add menu item.
+         * Determines the selection from the Tree and adds an item
+         * after that.  If nothing is selected, an item is added to
+         * the root.
+         */
         public void actionPerformed(ActionEvent e) {
-            DefaultMutableTreeNode          lastItem = getSelectedNode();
-            DefaultMutableTreeNode          parent;
+            DefaultMutableTreeNode lastItem = getSelectedNode();
+            DefaultMutableTreeNode parent;
 
             /* Determine where to create the new node. */
-            if(lastItem != null) {
-                parent = (DefaultMutableTreeNode)lastItem.getParent();
-                if(parent == null) {
-                    parent = (DefaultMutableTreeNode)treeModel.getRoot();
+            if (lastItem != null) {
+                parent = (DefaultMutableTreeNode) lastItem.getParent();
+                if (parent == null) {
+                    parent = (DefaultMutableTreeNode) treeModel.getRoot();
                     lastItem = null;
                 }
+            } else {
+                parent = (DefaultMutableTreeNode) treeModel.getRoot();
             }
-            else
-                parent = (DefaultMutableTreeNode)treeModel.getRoot();
             if (parent == null) {
                 // new root
-                treeModel.setRoot(createNewNode("Added " +
-                                                Integer.toString(addCount++)));
-            }
-            else {
-                int               newIndex;
-                if(lastItem == null)
+                treeModel.setRoot(createNewNode("Added " + Integer.toString(
+                        addCount++)));
+            } else {
+                int newIndex;
+                if (lastItem == null) {
                     newIndex = treeModel.getChildCount(parent);
-                else
+                } else {
                     newIndex = parent.getIndex(lastItem) + 1;
+                }
 
                 /* Let the treemodel know. */
-                treeModel.insertNodeInto(createNewNode("Added " +
-                                    Integer.toString(addCount++)),
-                                    parent, newIndex);
+                treeModel.insertNodeInto(createNewNode("Added " + Integer.
+                        toString(addCount++)),
+                        parent, newIndex);
             }
         }
     } // End of SampleTree.AddAction
 
 
     /**
-      * InsertAction is used to insert a new item before the selected item.
-      */
-    class InsertAction extends Object implements ActionListener
-    {
+     * InsertAction is used to insert a new item before the selected item.
+     */
+    class InsertAction extends Object implements ActionListener {
+
         /** Number of nodes that have been added. */
-        public int               insertCount;
+        public int insertCount;
 
         /**
-          * Messaged when the user clicks on the Insert menu item.
-          * Determines the selection from the Tree and inserts an item
-          * after that.  If nothing is selected, an item is added to
-          * the root.
-          */
+         * Messaged when the user clicks on the Insert menu item.
+         * Determines the selection from the Tree and inserts an item
+         * after that.  If nothing is selected, an item is added to
+         * the root.
+         */
         public void actionPerformed(ActionEvent e) {
-            DefaultMutableTreeNode          lastItem = getSelectedNode();
-            DefaultMutableTreeNode          parent;
+            DefaultMutableTreeNode lastItem = getSelectedNode();
+            DefaultMutableTreeNode parent;
 
             /* Determine where to create the new node. */
-            if(lastItem != null) {
-                parent = (DefaultMutableTreeNode)lastItem.getParent();
-                if(parent == null) {
-                    parent = (DefaultMutableTreeNode)treeModel.getRoot();
+            if (lastItem != null) {
+                parent = (DefaultMutableTreeNode) lastItem.getParent();
+                if (parent == null) {
+                    parent = (DefaultMutableTreeNode) treeModel.getRoot();
                     lastItem = null;
                 }
+            } else {
+                parent = (DefaultMutableTreeNode) treeModel.getRoot();
             }
-            else
-                parent = (DefaultMutableTreeNode)treeModel.getRoot();
             if (parent == null) {
                 // new root
-                treeModel.setRoot(createNewNode("Inserted " +
-                                             Integer.toString(insertCount++)));
-            }
-            else {
-                int               newIndex;
+                treeModel.setRoot(createNewNode("Inserted " + Integer.toString(
+                        insertCount++)));
+            } else {
+                int newIndex;
 
-                if(lastItem == null)
+                if (lastItem == null) {
                     newIndex = treeModel.getChildCount(parent);
-                else
+                } else {
                     newIndex = parent.getIndex(lastItem);
+                }
 
                 /* Let the treemodel know. */
-                treeModel.insertNodeInto(createNewNode("Inserted " +
-                                         Integer.toString(insertCount++)),
-                                         parent, newIndex);
+                treeModel.insertNodeInto(createNewNode("Inserted " + Integer.
+                        toString(insertCount++)),
+                        parent, newIndex);
             }
         }
     } // End of SampleTree.InsertAction
 
 
     /**
-      * ReloadAction is used to reload from the selected node.  If nothing
-      * is selected, reload is not issued.
-      */
-    class ReloadAction extends Object implements ActionListener
-    {
+     * ReloadAction is used to reload from the selected node.  If nothing
+     * is selected, reload is not issued.
+     */
+    class ReloadAction extends Object implements ActionListener {
+
         /**
-          * Messaged when the user clicks on the Reload menu item.
-          * Determines the selection from the Tree and asks the treemodel
-          * to reload from that node.
-          */
+         * Messaged when the user clicks on the Reload menu item.
+         * Determines the selection from the Tree and asks the treemodel
+         * to reload from that node.
+         */
         public void actionPerformed(ActionEvent e) {
-            DefaultMutableTreeNode          lastItem = getSelectedNode();
+            DefaultMutableTreeNode lastItem = getSelectedNode();
 
-            if(lastItem != null)
+            if (lastItem != null) {
                 treeModel.reload(lastItem);
+            }
         }
     } // End of SampleTree.ReloadAction
 
+
     /**
-      * RemoveAction removes the selected node from the tree.  If
-      * The root or nothing is selected nothing is removed.
-      */
-    class RemoveAction extends Object implements ActionListener
-    {
+     * RemoveAction removes the selected node from the tree.  If
+     * The root or nothing is selected nothing is removed.
+     */
+    class RemoveAction extends Object implements ActionListener {
+
         /**
-          * Removes the selected item as long as it isn't root.
-          */
+         * Removes the selected item as long as it isn't root.
+         */
         public void actionPerformed(ActionEvent e) {
             TreePath[] selected = getSelectedPaths();
 
@@ -451,19 +471,17 @@
                     paths[counter] = null;
                 }
                 treeModel.setRoot(null);
-            }
-            else {
+            } else {
                 // Find the siblings of path.
                 TreePath parent = path.getParentPath();
-                MutableTreeNode parentNode = (MutableTreeNode)parent.
-                                getLastPathComponent();
-                ArrayList toRemove = new ArrayList();
-                int depth = parent.getPathCount();
+                MutableTreeNode parentNode = (MutableTreeNode) parent.
+                        getLastPathComponent();
+                ArrayList<TreePath> toRemove = new ArrayList<TreePath>();
 
                 // First pass, find paths with a parent TreePath of parent
                 for (int counter = paths.length - 1; counter >= 0; counter--) {
-                    if (paths[counter] != null && paths[counter].
-                              getParentPath().equals(parent)) {
+                    if (paths[counter] != null && paths[counter].getParentPath().
+                            equals(parent)) {
                         toRemove.add(paths[counter]);
                         paths[counter] = null;
                     }
@@ -477,9 +495,9 @@
                 for (int counter = paths.length - 1; counter >= 0; counter--) {
                     if (paths[counter] != null) {
                         for (int rCounter = rCount - 1; rCounter >= 0;
-                             rCounter--) {
-                            if (((TreePath)toRemove.get(rCounter)).
-                                           isDescendant(paths[counter])) {
+                                rCounter--) {
+                            if ((toRemove.get(rCounter)).isDescendant(
+                                    paths[counter])) {
                                 paths[counter] = null;
                             }
                         }
@@ -493,10 +511,10 @@
                 int[] indices = new int[rCount];
                 Object[] removedNodes = new Object[rCount];
                 for (int counter = rCount - 1; counter >= 0; counter--) {
-                    removedNodes[counter] = ((TreePath)toRemove.get(counter)).
-                                getLastPathComponent();
-                    indices[counter] = treeModel.getIndexOfChild
-                                        (parentNode, removedNodes[counter]);
+                    removedNodes[counter] = (toRemove.get(counter)).
+                            getLastPathComponent();
+                    indices[counter] = treeModel.getIndexOfChild(parentNode,
+                            removedNodes[counter]);
                     parentNode.remove(indices[counter]);
                 }
                 treeModel.nodesWereRemoved(parentNode, indices, removedNodes);
@@ -522,8 +540,7 @@
                                 return shallowestPath;
                             }
                         }
-                    }
-                    else {
+                    } else {
                         shallowestPath = paths[counter];
                         shallowest = paths[counter].getPathCount();
                     }
@@ -540,67 +557,70 @@
          * This is actually rather expensive, it would be more efficient
          * to extract the indices and then do the comparision.
          */
-        private class PositionComparator implements Comparator {
-            public int compare(Object o1, Object o2) {
-                TreePath p1 = (TreePath)o1;
-                int o1Index = treeModel.getIndexOfChild(p1.getParentPath().
-                          getLastPathComponent(), p1.getLastPathComponent());
-                TreePath p2 = (TreePath)o2;
-                int o2Index = treeModel.getIndexOfChild(p2.getParentPath().
-                          getLastPathComponent(), p2.getLastPathComponent());
-                return o1Index - o2Index;
-            }
+        private class PositionComparator implements Comparator<TreePath> {
 
-            public boolean equals(Object obj) {
-                return super.equals(obj);
+            public int compare(TreePath p1, TreePath p2) {
+                int p1Index = treeModel.getIndexOfChild(p1.getParentPath().
+                        getLastPathComponent(), p1.getLastPathComponent());
+                int p2Index = treeModel.getIndexOfChild(p2.getParentPath().
+                        getLastPathComponent(), p2.getLastPathComponent());
+                return p1Index - p2Index;
             }
         }
-
     } // End of SampleTree.RemoveAction
 
 
     /**
-      * ShowHandlesChangeListener implements the ChangeListener interface
-      * to toggle the state of showing the handles in the tree.
-      */
-    class ShowHandlesChangeListener extends Object implements ChangeListener
-    {
+     * ShowHandlesChangeListener implements the ChangeListener interface
+     * to toggle the state of showing the handles in the tree.
+     */
+    class ShowHandlesChangeListener extends Object implements ChangeListener {
+
         public void stateChanged(ChangeEvent e) {
-            tree.setShowsRootHandles(((JCheckBox)e.getSource()).isSelected());
+            tree.setShowsRootHandles(((JCheckBox) e.getSource()).isSelected());
         }
-
     } // End of class SampleTree.ShowHandlesChangeListener
 
 
     /**
-      * ShowRootChangeListener implements the ChangeListener interface
-      * to toggle the state of showing the root node in the tree.
-      */
-    class ShowRootChangeListener extends Object implements ChangeListener
-    {
+     * ShowRootChangeListener implements the ChangeListener interface
+     * to toggle the state of showing the root node in the tree.
+     */
+    class ShowRootChangeListener extends Object implements ChangeListener {
+
         public void stateChanged(ChangeEvent e) {
-            tree.setRootVisible(((JCheckBox)e.getSource()).isSelected());
+            tree.setRootVisible(((JCheckBox) e.getSource()).isSelected());
         }
-
     } // End of class SampleTree.ShowRootChangeListener
 
 
     /**
-      * TreeEditableChangeListener implements the ChangeListener interface
-      * to toggle between allowing editing and now allowing editing in
-      * the tree.
-      */
-    class TreeEditableChangeListener extends Object implements ChangeListener
-    {
+     * TreeEditableChangeListener implements the ChangeListener interface
+     * to toggle between allowing editing and now allowing editing in
+     * the tree.
+     */
+    class TreeEditableChangeListener extends Object implements ChangeListener {
+
         public void stateChanged(ChangeEvent e) {
-            tree.setEditable(((JCheckBox)e.getSource()).isSelected());
+            tree.setEditable(((JCheckBox) e.getSource()).isSelected());
         }
-
     } // End of class SampleTree.TreeEditableChangeListener
 
+    public static void main(String args[]) {
+        try {
+            SwingUtilities.invokeAndWait(new Runnable() {
 
-    static public void main(String args[]) {
-        new SampleTree();
+                @SuppressWarnings(value = "ResultOfObjectAllocationIgnored")
+                public void run() {
+                    new SampleTree();
+                }
+            });
+        } catch (InterruptedException ex) {
+            Logger.getLogger(SampleTree.class.getName()).log(Level.SEVERE, null,
+                    ex);
+        } catch (InvocationTargetException ex) {
+            Logger.getLogger(SampleTree.class.getName()).log(Level.SEVERE, null,
+                    ex);
+        }
     }
-
 }
--- a/jdk/src/share/demo/jfc/SampleTree/SampleTreeCellRenderer.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/SampleTree/SampleTreeCellRenderer.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,8 +29,6 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
 import javax.swing.Icon;
 import javax.swing.ImageIcon;
@@ -42,48 +40,56 @@
 import java.awt.Color;
 import java.awt.Font;
 import java.awt.Graphics;
+import javax.swing.UIManager;
 
-public class SampleTreeCellRenderer extends JLabel implements TreeCellRenderer
-{
+
+@SuppressWarnings("serial")
+public class SampleTreeCellRenderer extends JLabel implements TreeCellRenderer {
+
     /** Font used if the string to be displayed isn't a font. */
-    static protected Font             defaultFont;
+    protected static Font defaultFont;
     /** Icon to use when the item is collapsed. */
-    static protected ImageIcon        collapsedIcon;
+    protected static ImageIcon collapsedIcon;
     /** Icon to use when the item is expanded. */
-    static protected ImageIcon        expandedIcon;
-
+    protected static ImageIcon expandedIcon;
     /** Color to use for the background when selected. */
-    static protected final Color SelectedBackgroundColor = Color.yellow;//new Color(0, 0, 128);
+    protected static final Color SELECTED_BACKGROUND_COLOR;
 
-    static
-    {
+    static {
+        if ("Nimbus".equals(UIManager.getLookAndFeel().getName())) {
+            SELECTED_BACKGROUND_COLOR = new Color(0, 0,
+                0, 0);
+        } else {
+            SELECTED_BACKGROUND_COLOR = Color.YELLOW;
+        }
         try {
             defaultFont = new Font("SansSerif", 0, 12);
-        } catch (Exception e) {}
+        } catch (Exception e) {
+        }
         try {
-            collapsedIcon = new ImageIcon(SampleTreeCellRenderer.class.getResource("/resources/images/collapsed.gif"));
-            expandedIcon = new ImageIcon(SampleTreeCellRenderer.class.getResource("/resources/images/expanded.gif"));
+            collapsedIcon = new ImageIcon(SampleTreeCellRenderer.class.
+                    getResource("/resources/images/collapsed.gif"));
+            expandedIcon = new ImageIcon(SampleTreeCellRenderer.class.
+                    getResource("/resources/images/expanded.gif"));
         } catch (Exception e) {
             System.out.println("Couldn't load images: " + e);
         }
     }
-
     /** Whether or not the item that was last configured is selected. */
-    protected boolean            selected;
+    protected boolean selected;
 
     /**
-      * This is messaged from JTree whenever it needs to get the size
-      * of the component or it wants to draw it.
-      * This attempts to set the font based on value, which will be
-      * a TreeNode.
-      */
+     * This is messaged from JTree whenever it needs to get the size
+     * of the component or it wants to draw it.
+     * This attempts to set the font based on value, which will be
+     * a TreeNode.
+     */
     public Component getTreeCellRendererComponent(JTree tree, Object value,
-                                          boolean selected, boolean expanded,
-                                          boolean leaf, int row,
-                                                  boolean hasFocus) {
-        Font            font;
-        String          stringValue = tree.convertValueToText(value, selected,
-                                           expanded, leaf, row, hasFocus);
+            boolean selected, boolean expanded,
+            boolean leaf, int row,
+            boolean hasFocus) {
+        String stringValue = tree.convertValueToText(value, selected,
+                expanded, leaf, row, hasFocus);
 
         /* Set the text. */
         setText(stringValue);
@@ -91,24 +97,27 @@
         setToolTipText(stringValue);
 
         /* Set the image. */
-        if(expanded)
+        if (expanded) {
             setIcon(expandedIcon);
-        else if(!leaf)
+        } else if (!leaf) {
             setIcon(collapsedIcon);
-        else
+        } else {
             setIcon(null);
+        }
 
         /* Set the color and the font based on the SampleData userObject. */
-        SampleData         userObject = (SampleData)((DefaultMutableTreeNode)value)
-                                        .getUserObject();
-        if(hasFocus)
-            setForeground(Color.cyan);
-        else
+        SampleData userObject = (SampleData) ((DefaultMutableTreeNode) value).
+                getUserObject();
+        if (hasFocus) {
+            setForeground(UIManager.getColor("Tree.selectionForeground"));
+        } else {
             setForeground(userObject.getColor());
-        if(userObject.getFont() == null)
+        }
+        if (userObject.getFont() == null) {
             setFont(defaultFont);
-        else
+        } else {
             setFont(userObject.getFont());
+        }
 
         /* Update the selected flag for the next paint. */
         this.selected = selected;
@@ -117,36 +126,36 @@
     }
 
     /**
-      * paint is subclassed to draw the background correctly.  JLabel
-      * currently does not allow backgrounds other than white, and it
-      * will also fill behind the icon.  Something that isn't desirable.
-      */
+     * paint is subclassed to draw the background correctly.  JLabel
+     * currently does not allow backgrounds other than white, and it
+     * will also fill behind the icon.  Something that isn't desirable.
+     */
+    @Override
     public void paint(Graphics g) {
-        Color            bColor;
-        Icon             currentI = getIcon();
+        Color bColor;
+        Icon currentI = getIcon();
 
-        if(selected)
-            bColor = SelectedBackgroundColor;
-        else if(getParent() != null)
-            /* Pick background color up from parent (which will come from
-               the JTree we're contained in). */
+        if (selected) {
+            bColor = SELECTED_BACKGROUND_COLOR;
+        } else if (getParent() != null) /* Pick background color up from parent (which will come from
+        the JTree we're contained in). */ {
             bColor = getParent().getBackground();
-        else
+        } else {
             bColor = getBackground();
+        }
         g.setColor(bColor);
-        if(currentI != null && getText() != null) {
-            int          offset = (currentI.getIconWidth() + getIconTextGap());
+        if (currentI != null && getText() != null) {
+            int offset = (currentI.getIconWidth() + getIconTextGap());
 
             if (getComponentOrientation().isLeftToRight()) {
                 g.fillRect(offset, 0, getWidth() - 1 - offset,
-                           getHeight() - 1);
-            }
-            else {
+                        getHeight() - 1);
+            } else {
                 g.fillRect(0, 0, getWidth() - 1 - offset, getHeight() - 1);
             }
+        } else {
+            g.fillRect(0, 0, getWidth() - 1, getHeight() - 1);
         }
-        else
-            g.fillRect(0, 0, getWidth()-1, getHeight()-1);
         super.paint(g);
     }
 }
--- a/jdk/src/share/demo/jfc/SampleTree/SampleTreeModel.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/SampleTree/SampleTreeModel.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,8 +29,6 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
 import javax.swing.tree.DefaultTreeModel;
 import javax.swing.tree.TreeNode;
@@ -38,40 +36,43 @@
 import javax.swing.tree.DefaultMutableTreeNode;
 import java.awt.Color;
 
+
 /**
-  * SampleTreeModel extends JTreeModel to extends valueForPathChanged.
-  * This method is called as a result of the user editing a value in
-  * the tree.  If you allow editing in your tree, are using TreeNodes
-  * and the user object of the TreeNodes is not a String, then you're going
-  * to have to subclass JTreeModel as this example does.
-  *
-  * @author Scott Violet
-  */
+ * SampleTreeModel extends JTreeModel to extends valueForPathChanged.
+ * This method is called as a result of the user editing a value in
+ * the tree.  If you allow editing in your tree, are using TreeNodes
+ * and the user object of the TreeNodes is not a String, then you're going
+ * to have to subclass JTreeModel as this example does.
+ *
+ * @author Scott Violet
+ */
+@SuppressWarnings("serial")
+public class SampleTreeModel extends DefaultTreeModel {
 
-public class SampleTreeModel extends DefaultTreeModel
-{
     /**
-      * Creates a new instance of SampleTreeModel with newRoot set
-      * to the root of this model.
-      */
+     * Creates a new instance of SampleTreeModel with newRoot set
+     * to the root of this model.
+     */
     public SampleTreeModel(TreeNode newRoot) {
         super(newRoot);
     }
 
     /**
-      * Subclassed to message setString() to the changed path item.
-      */
+     * Subclassed to message setString() to the changed path item.
+     */
+    @Override
     public void valueForPathChanged(TreePath path, Object newValue) {
         /* Update the user object. */
-        DefaultMutableTreeNode      aNode = (DefaultMutableTreeNode)path.getLastPathComponent();
-        SampleData    sampleData = (SampleData)aNode.getUserObject();
+        DefaultMutableTreeNode aNode = (DefaultMutableTreeNode) path.
+                getLastPathComponent();
+        SampleData sampleData = (SampleData) aNode.getUserObject();
 
-        sampleData.setString((String)newValue);
+        sampleData.setString((String) newValue);
         /* UUUhhhhh, pretty colors. */
         sampleData.setColor(Color.green);
 
         /* Since we've changed how the data is to be displayed, message
-           nodeChanged. */
+        nodeChanged. */
         nodeChanged(aNode);
     }
 }
--- a/jdk/src/share/demo/jfc/SwingApplet/SwingApplet.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/SwingApplet/SwingApplet.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,42 +29,59 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
-import java.awt.*;
-import java.awt.event.*;
-import java.net.*;
-import java.applet.*;
-import javax.swing.*;
+import java.awt.FlowLayout;
+import java.lang.reflect.InvocationTargetException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.swing.JApplet;
+import javax.swing.JButton;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+
 
 /**
  * A very simple applet.
  */
+@SuppressWarnings("serial")
 public class SwingApplet extends JApplet {
 
     JButton button;
 
-    public void init() {
-
-        // Force SwingApplet to come up in the System L&F
-        String laf = UIManager.getSystemLookAndFeelClassName();
+    private void initUI() {
+        // Trying to set Nimbus look and feel
         try {
-            UIManager.setLookAndFeel(laf);
-            // If you want the Cross Platform L&F instead, comment out the above line and
-            // uncomment the following:
-            // UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
-        } catch (UnsupportedLookAndFeelException exc) {
-            System.err.println("Warning: UnsupportedLookAndFeel: " + laf);
-        } catch (Exception exc) {
-            System.err.println("Error loading " + laf + ": " + exc);
+            UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
+        } catch (Exception ex) {
+            Logger.getLogger(SwingApplet.class.getName()).
+                    log(Level.SEVERE, "Failed to apply Nimbus look and feel", ex);
         }
-
         getContentPane().setLayout(new FlowLayout());
         button = new JButton("Hello, I'm a Swing Button!");
         getContentPane().add(button);
+        getContentPane().doLayout();
     }
 
+    @Override
+    public void init() {
+        try {
+            SwingUtilities.invokeAndWait(new Runnable() {
+
+                @Override
+                public void run() {
+                    initUI();
+                }
+            });
+        } catch (InterruptedException ex) {
+            Logger.getLogger(SwingApplet.class.getName()).
+                    log(Level.SEVERE, null, ex);
+        } catch (InvocationTargetException ex) {
+            Logger.getLogger(SwingApplet.class.getName()).
+                    log(Level.SEVERE, null, ex);
+        }
+    }
+
+    @Override
     public void stop() {
         if (button != null) {
             getContentPane().remove(button);
--- a/jdk/src/share/demo/jfc/TableExample/JDBCAdapter.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/TableExample/JDBCAdapter.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,46 +29,50 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.sql.Types;
+import java.util.ArrayList;
+import java.util.List;
+import javax.swing.table.AbstractTableModel;
+
 
 /**
  * An adaptor, transforming the JDBC interface to the TableModel interface.
  *
  * @author Philip Milne
  */
-
-import java.util.Vector;
-import java.sql.*;
-import javax.swing.table.AbstractTableModel;
-import javax.swing.event.TableModelEvent;
-
+@SuppressWarnings("serial")
 public class JDBCAdapter extends AbstractTableModel {
-    Connection          connection;
-    Statement           statement;
-    ResultSet           resultSet;
-    String[]            columnNames = {};
-    Vector              rows = new Vector();
-    ResultSetMetaData   metaData;
+
+    Connection connection;
+    Statement statement;
+    ResultSet resultSet;
+    String[] columnNames = {};
+    List<List<Object>> rows = new ArrayList<List<Object>>();
+    ResultSetMetaData metaData;
 
     public JDBCAdapter(String url, String driverName,
-                       String user, String passwd) {
+            String user, String passwd) {
         try {
             Class.forName(driverName);
             System.out.println("Opening db connection");
 
             connection = DriverManager.getConnection(url, user, passwd);
             statement = connection.createStatement();
-        }
-        catch (ClassNotFoundException ex) {
+        } catch (ClassNotFoundException ex) {
             System.err.println("Cannot find the database driver classes.");
             System.err.println(ex);
-        }
-        catch (SQLException ex) {
+        } catch (SQLException ex) {
             System.err.println("Cannot connect to this database.");
             System.err.println(ex);
         }
-     }
+    }
 
     public void executeQuery(String query) {
         if (connection == null || statement == null) {
@@ -79,27 +83,28 @@
             resultSet = statement.executeQuery(query);
             metaData = resultSet.getMetaData();
 
-            int numberOfColumns =  metaData.getColumnCount();
+            int numberOfColumns = metaData.getColumnCount();
             columnNames = new String[numberOfColumns];
             // Get the column names and cache them.
             // Then we can close the connection.
-            for(int column = 0; column < numberOfColumns; column++) {
-                columnNames[column] = metaData.getColumnLabel(column+1);
+            for (int column = 0; column < numberOfColumns; column++) {
+                columnNames[column] = metaData.getColumnLabel(column + 1);
             }
 
             // Get all rows.
-            rows = new Vector();
+            rows = new ArrayList<List<Object>>();
             while (resultSet.next()) {
-                Vector newRow = new Vector();
+                List<Object> newRow = new ArrayList<Object>();
                 for (int i = 1; i <= getColumnCount(); i++) {
-                    newRow.addElement(resultSet.getObject(i));
+                    newRow.add(resultSet.getObject(i));
                 }
-                rows.addElement(newRow);
+                rows.add(newRow);
             }
             //  close(); Need to copy the metaData, bug in jdbc:odbc driver.
-            fireTableChanged(null); // Tell the listeners a new table has arrived.
-        }
-        catch (SQLException ex) {
+
+            // Tell the listeners a new table has arrived.
+            fireTableChanged(null);
+        } catch (SQLException ex) {
             System.err.println(ex);
         }
     }
@@ -111,6 +116,7 @@
         connection.close();
     }
 
+    @Override
     protected void finalize() throws Throwable {
         close();
         super.finalize();
@@ -121,9 +127,8 @@
     //             Implementation of the TableModel Interface
     //
     //////////////////////////////////////////////////////////////////////////
-
     // MetaData
-
+    @Override
     public String getColumnName(int column) {
         if (columnNames[column] != null) {
             return columnNames[column];
@@ -132,49 +137,49 @@
         }
     }
 
-    public Class getColumnClass(int column) {
+    @Override
+    public Class<?> getColumnClass(int column) {
         int type;
         try {
-            type = metaData.getColumnType(column+1);
-        }
-        catch (SQLException e) {
+            type = metaData.getColumnType(column + 1);
+        } catch (SQLException e) {
             return super.getColumnClass(column);
         }
 
-        switch(type) {
-        case Types.CHAR:
-        case Types.VARCHAR:
-        case Types.LONGVARCHAR:
-            return String.class;
+        switch (type) {
+            case Types.CHAR:
+            case Types.VARCHAR:
+            case Types.LONGVARCHAR:
+                return String.class;
 
-        case Types.BIT:
-            return Boolean.class;
+            case Types.BIT:
+                return Boolean.class;
 
-        case Types.TINYINT:
-        case Types.SMALLINT:
-        case Types.INTEGER:
-            return Integer.class;
+            case Types.TINYINT:
+            case Types.SMALLINT:
+            case Types.INTEGER:
+                return Integer.class;
 
-        case Types.BIGINT:
-            return Long.class;
+            case Types.BIGINT:
+                return Long.class;
 
-        case Types.FLOAT:
-        case Types.DOUBLE:
-            return Double.class;
+            case Types.FLOAT:
+            case Types.DOUBLE:
+                return Double.class;
 
-        case Types.DATE:
-            return java.sql.Date.class;
+            case Types.DATE:
+                return java.sql.Date.class;
 
-        default:
-            return Object.class;
+            default:
+                return Object.class;
         }
     }
 
+    @Override
     public boolean isCellEditable(int row, int column) {
         try {
-            return metaData.isWritable(column+1);
-        }
-        catch (SQLException e) {
+            return metaData.isWritable(column + 1);
+        } catch (SQLException e) {
             return false;
         }
     }
@@ -184,14 +189,13 @@
     }
 
     // Data methods
-
     public int getRowCount() {
         return rows.size();
     }
 
     public Object getValueAt(int aRow, int aColumn) {
-        Vector row = (Vector)rows.elementAt(aRow);
-        return row.elementAt(aColumn);
+        List<Object> row = rows.get(aRow);
+        return row.get(aColumn);
     }
 
     public String dbRepresentation(int column, Object value) {
@@ -202,43 +206,42 @@
         }
 
         try {
-            type = metaData.getColumnType(column+1);
-        }
-        catch (SQLException e) {
+            type = metaData.getColumnType(column + 1);
+        } catch (SQLException e) {
             return value.toString();
         }
 
-        switch(type) {
-        case Types.INTEGER:
-        case Types.DOUBLE:
-        case Types.FLOAT:
-            return value.toString();
-        case Types.BIT:
-            return ((Boolean)value).booleanValue() ? "1" : "0";
-        case Types.DATE:
-            return value.toString(); // This will need some conversion.
-        default:
-            return "\""+value.toString()+"\"";
+        switch (type) {
+            case Types.INTEGER:
+            case Types.DOUBLE:
+            case Types.FLOAT:
+                return value.toString();
+            case Types.BIT:
+                return ((Boolean) value).booleanValue() ? "1" : "0";
+            case Types.DATE:
+                return value.toString(); // This will need some conversion.
+            default:
+                return "\"" + value.toString() + "\"";
         }
 
     }
 
+    @Override
     public void setValueAt(Object value, int row, int column) {
         try {
-            String tableName = metaData.getTableName(column+1);
+            String tableName = metaData.getTableName(column + 1);
             // Some of the drivers seem buggy, tableName should not be null.
             if (tableName == null) {
                 System.out.println("Table name returned null.");
             }
             String columnName = getColumnName(column);
             String query =
-                "update "+tableName+
-                " set "+columnName+" = "+dbRepresentation(column, value)+
-                " where ";
+                    "update " + tableName + " set " + columnName + " = "
+                    + dbRepresentation(column, value) + " where ";
             // We don't have a model of the schema so we don't know the
             // primary keys or which columns to lock on. To demonstrate
             // that editing is possible, we'll just lock on everything.
-            for(int col = 0; col<getColumnCount(); col++) {
+            for (int col = 0; col < getColumnCount(); col++) {
                 String colName = getColumnName(col);
                 if (colName.equals("")) {
                     continue;
@@ -246,19 +249,18 @@
                 if (col != 0) {
                     query = query + " and ";
                 }
-                query = query + colName +" = "+
-                    dbRepresentation(col, getValueAt(row, col));
+                query = query + colName + " = " + dbRepresentation(col,
+                        getValueAt(row, col));
             }
             System.out.println(query);
             System.out.println("Not sending update to database");
             // statement.executeQuery(query);
-        }
-        catch (SQLException e) {
+        } catch (SQLException e) {
             //     e.printStackTrace();
             System.err.println("Update failed");
         }
-        Vector dataRow = (Vector)rows.elementAt(row);
-        dataRow.setElementAt(value, column);
+        List<Object> dataRow = rows.get(row);
+        dataRow.set(column, value);
 
     }
 }
--- a/jdk/src/share/demo/jfc/TableExample/OldJTable.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/TableExample/OldJTable.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,28 +29,26 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
-import java.lang.Thread;
-import java.util.*;
-import java.awt.*;
-import java.awt.event.*;
-import javax.swing.*;
-import javax.swing.event.*;
-import javax.swing.plaf.*;
-import javax.swing.table.*;
+import java.util.EventObject;
+import java.util.List;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableCellEditor;
+import javax.swing.table.TableCellRenderer;
+import javax.swing.table.TableColumn;
 
 
 /**
  *  The OldJTable is an unsupported class containing some methods that were
  *  deleted from the JTable between releases 0.6 and 0.7
  */
+@SuppressWarnings("serial")
 public class OldJTable extends JTable
 {
    /*
-    *  A new convenience method returning the index of the column in the co-ordinate
-    *  space of the view.
+    *  A new convenience method returning the index of the column in the
+    *  co-ordinate space of the view.
     */
     public int getColumnIndex(Object identifier) {
         return getColumnModel().getColumnIndex(identifier);
@@ -65,7 +63,7 @@
         return addColumn(columnIdentifier, width, null, null, null);
     }
 
-    public TableColumn addColumn(Object columnIdentifier, Vector columnData) {
+    public TableColumn addColumn(Object columnIdentifier, List columnData) {
         return addColumn(columnIdentifier, -1, null, null, columnData);
     }
 
@@ -79,16 +77,17 @@
 
     public TableColumn addColumn(Object columnIdentifier, int width,
                                  TableCellRenderer renderer,
-                                 TableCellEditor editor, Vector columnData) {
+                                 TableCellEditor editor, List columnData) {
         checkDefaultTableModel();
 
         // Set up the model side first
         DefaultTableModel m = (DefaultTableModel)getModel();
-        m.addColumn(columnIdentifier, columnData);
+        m.addColumn(columnIdentifier, columnData.toArray());
 
         // The column will have been added to the end, so the index of the
         // column in the model is the last element.
-        TableColumn newColumn = new TableColumn(m.getColumnCount()-1, width, renderer, editor);
+        TableColumn newColumn = new TableColumn(
+                m.getColumnCount()-1, width, renderer, editor);
         super.addColumn(newColumn);
         return newColumn;
     }
@@ -104,9 +103,9 @@
         ((DefaultTableModel)getModel()).addRow(rowData);
     }
 
-    public void addRow(Vector rowData) {
+    public void addRow(List rowData) {
         checkDefaultTableModel();
-        ((DefaultTableModel)getModel()).addRow(rowData);
+        ((DefaultTableModel)getModel()).addRow(rowData.toArray());
     }
 
     public void removeRow(int rowIndex) {
@@ -124,9 +123,9 @@
         ((DefaultTableModel)getModel()).insertRow(rowIndex, rowData);
     }
 
-    public void insertRow(int rowIndex, Vector rowData) {
+    public void insertRow(int rowIndex, List rowData) {
         checkDefaultTableModel();
-        ((DefaultTableModel)getModel()).insertRow(rowIndex, rowData);
+        ((DefaultTableModel)getModel()).insertRow(rowIndex, rowData.toArray());
     }
 
     public void setNumRows(int newSize) {
@@ -134,9 +133,10 @@
         ((DefaultTableModel)getModel()).setNumRows(newSize);
     }
 
-    public void setDataVector(Vector newData, Vector columnIds) {
+    public void setDataVector(Object[][] newData, List columnIds) {
         checkDefaultTableModel();
-        ((DefaultTableModel)getModel()).setDataVector(newData, columnIds);
+        ((DefaultTableModel)getModel()).setDataVector(
+                newData, columnIds.toArray());
     }
 
     public void setDataVector(Object[][] newData, Object[] columnIds) {
@@ -154,11 +154,11 @@
 //
 
     public Object getValueAt(Object columnIdentifier, int rowIndex) {
-        return  super.getValueAt(rowIndex, getColumnIndex(columnIdentifier));
+        return super.getValueAt(rowIndex, getColumnIndex(columnIdentifier));
     }
 
     public boolean isCellEditable(Object columnIdentifier, int rowIndex) {
-        return  super.isCellEditable(rowIndex, getColumnIndex(columnIdentifier));
+        return super.isCellEditable(rowIndex, getColumnIndex(columnIdentifier));
     }
 
     public void setValueAt(Object aValue, Object columnIdentifier, int rowIndex) {
@@ -217,7 +217,8 @@
     public TableColumn addColumn(int modelColumn, int width,
                                  TableCellRenderer renderer,
                                  TableCellEditor editor) {
-        TableColumn newColumn = new TableColumn(modelColumn, width, renderer, editor);
+        TableColumn newColumn = new TableColumn(
+                modelColumn, width, renderer, editor);
         addColumn(newColumn);
         return newColumn;
     }
--- a/jdk/src/share/demo/jfc/TableExample/TableExample.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/TableExample/TableExample.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,8 +29,6 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
 /**
  * A a UI around the JDBCAdaptor, allowing database data to be interactively
@@ -41,41 +39,56 @@
  *
  * @author Philip Milne
  */
-
-import java.applet.Applet;
-import java.awt.*;
-import java.awt.event.*;
-import javax.swing.*;
-import javax.swing.table.*;
-import javax.swing.event.*;
-import javax.swing.border.*;
-
-public class TableExample implements LayoutManager {
-    static String[] ConnectOptionNames = { "Connect" };
-    static String   ConnectTitle = "Connection Information";
-
-    Dimension   origin = new Dimension(0, 0);
-
-    JButton     fetchButton;
-    JButton     showConnectionInfoButton;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.GridLayout;
+import java.awt.LayoutManager;
+import java.awt.Rectangle;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+import javax.swing.UIManager;
+import javax.swing.UIManager.LookAndFeelInfo;
+import javax.swing.border.BevelBorder;
 
-    JPanel      connectionPanel;
-    JFrame      frame; // The query/results window.
+
+public final class TableExample implements LayoutManager {
 
-    JLabel      userNameLabel;
-    JTextField  userNameField;
-    JLabel      passwordLabel;
-    JTextField  passwordField;
+    static String[] ConnectOptionNames = { "Connect" };
+    static String ConnectTitle = "Connection Information";
+    Dimension origin = new Dimension(0, 0);
+    JButton fetchButton;
+    JButton showConnectionInfoButton;
+    JPanel connectionPanel;
+    JFrame frame; // The query/results window.
+    JLabel userNameLabel;
+    JTextField userNameField;
+    JLabel passwordLabel;
+    JTextField passwordField;
     // JLabel      queryLabel;
-    JTextArea   queryTextArea;
-    JComponent  queryAggregate;
-    JLabel      serverLabel;
-    JTextField  serverField;
-    JLabel      driverLabel;
-    JTextField  driverField;
-
-    JPanel      mainPanel;
-
+    JTextArea queryTextArea;
+    JComponent queryAggregate;
+    JLabel serverLabel;
+    JTextField serverField;
+    JLabel driverLabel;
+    JTextField driverField;
+    JPanel mainPanel;
     TableSorter sorter;
     JDBCAdapter dataBase;
     JScrollPane tableAggregate;
@@ -85,14 +98,15 @@
      * If the user clicks on the 'Connect' button the connection is reset.
      */
     void activateConnectionDialog() {
-        if(JOptionPane.showOptionDialog(tableAggregate, connectionPanel, ConnectTitle,
-                   JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE,
-                   null, ConnectOptionNames, ConnectOptionNames[0]) == 0) {
+        if (JOptionPane.showOptionDialog(tableAggregate, connectionPanel,
+                ConnectTitle,
+                JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE,
+                null, ConnectOptionNames, ConnectOptionNames[0]) == 0) {
             connect();
             frame.setVisible(true);
+        } else if (!frame.isVisible()) {
+            System.exit(0);
         }
-        else if(!frame.isVisible())
-            System.exit(0);
     }
 
     /**
@@ -102,21 +116,21 @@
     public void createConnectionDialog() {
         // Create the labels and text fields.
         userNameLabel = new JLabel("User name: ", JLabel.RIGHT);
-        userNameField = new JTextField("guest");
+        userNameField = new JTextField("app");
 
         passwordLabel = new JLabel("Password: ", JLabel.RIGHT);
-        passwordField = new JTextField("trustworthy");
+        passwordField = new JTextField("app");
 
         serverLabel = new JLabel("Database URL: ", JLabel.RIGHT);
-        serverField = new JTextField("jdbc:sybase://dbtest:1455/pubs2");
+        serverField = new JTextField("jdbc:derby://localhost:1527/sample");
 
         driverLabel = new JLabel("Driver: ", JLabel.RIGHT);
-        driverField = new JTextField("connect.sybase.SybaseDriver");
+        driverField = new JTextField("org.apache.derby.jdbc.ClientDriver");
 
 
         connectionPanel = new JPanel(false);
         connectionPanel.setLayout(new BoxLayout(connectionPanel,
-                                                BoxLayout.X_AXIS));
+                BoxLayout.X_AXIS));
 
         JPanel namePanel = new JPanel(false);
         namePanel.setLayout(new GridLayout(0, 1));
@@ -145,22 +159,22 @@
         // Create the buttons.
         showConnectionInfoButton = new JButton("Configuration");
         showConnectionInfoButton.addActionListener(new ActionListener() {
-                public void actionPerformed(ActionEvent e) {
-                    activateConnectionDialog();
-                }
+
+            public void actionPerformed(ActionEvent e) {
+                activateConnectionDialog();
             }
-        );
+        });
 
         fetchButton = new JButton("Fetch");
         fetchButton.addActionListener(new ActionListener() {
-                public void actionPerformed(ActionEvent e) {
-                    fetch();
-                }
+
+            public void actionPerformed(ActionEvent e) {
+                fetch();
             }
-        );
+        });
 
         // Create the query text area and label.
-        queryTextArea = new JTextArea("SELECT * FROM titles", 25, 25);
+        queryTextArea = new JTextArea("SELECT * FROM APP.CUSTOMER", 25, 25);
         queryAggregate = new JScrollPane(queryTextArea);
         queryAggregate.setBorder(new BevelBorder(BevelBorder.LOWERED));
 
@@ -178,7 +192,12 @@
         // Create a Frame and put the main panel in it.
         frame = new JFrame("TableExample");
         frame.addWindowListener(new WindowAdapter() {
-            public void windowClosing(WindowEvent e) {System.exit(0);}});
+
+            @Override
+            public void windowClosing(WindowEvent e) {
+                System.exit(0);
+            }
+        });
         frame.setBackground(Color.lightGray);
         frame.getContentPane().add(mainPanel);
         frame.pack();
@@ -189,13 +208,13 @@
     }
 
     public void connect() {
-       dataBase = new JDBCAdapter(
-            serverField.getText(),
-            driverField.getText(),
-            userNameField.getText(),
-            passwordField.getText());
-       sorter.setModel(dataBase);
-   }
+        dataBase = new JDBCAdapter(
+                serverField.getText(),
+                driverField.getText(),
+                userNameField.getText(),
+                passwordField.getText());
+        sorter.setModel(dataBase);
+    }
 
     public void fetch() {
         dataBase.executeQuery(queryTextArea.getText());
@@ -221,25 +240,48 @@
     }
 
     public static void main(String s[]) {
+        // Trying to set Nimbus look and feel
+        try {
+            for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
+                if ("Nimbus".equals(info.getName())) {
+                    UIManager.setLookAndFeel(info.getClassName());
+                    break;
+                }
+            }
+        } catch (Exception ex) {
+            Logger.getLogger(TableExample.class.getName()).log(Level.SEVERE,
+                    "Failed to apply Nimbus look and feel", ex);
+        }
+
         new TableExample();
     }
 
-    public Dimension preferredLayoutSize(Container c){return origin;}
-    public Dimension minimumLayoutSize(Container c){return origin;}
-    public void addLayoutComponent(String s, Component c) {}
-    public void removeLayoutComponent(Component c) {}
+    public Dimension preferredLayoutSize(Container c) {
+        return origin;
+    }
+
+    public Dimension minimumLayoutSize(Container c) {
+        return origin;
+    }
+
+    public void addLayoutComponent(String s, Component c) {
+    }
+
+    public void removeLayoutComponent(Component c) {
+    }
+
     public void layoutContainer(Container c) {
         Rectangle b = c.getBounds();
         int topHeight = 90;
         int inset = 4;
-        showConnectionInfoButton.setBounds(b.width-2*inset-120, inset, 120, 25);
-        fetchButton.setBounds(b.width-2*inset-120, 60, 120, 25);
+        showConnectionInfoButton.setBounds(b.width - 2 * inset - 120, inset, 120,
+                25);
+        fetchButton.setBounds(b.width - 2 * inset - 120, 60, 120, 25);
         // queryLabel.setBounds(10, 10, 100, 25);
-        queryAggregate.setBounds(inset, inset, b.width-2*inset - 150, 80);
+        queryAggregate.setBounds(inset, inset, b.width - 2 * inset - 150, 80);
         tableAggregate.setBounds(new Rectangle(inset,
-                                               inset + topHeight,
-                                               b.width-2*inset,
-                                               b.height-2*inset - topHeight));
+                inset + topHeight,
+                b.width - 2 * inset,
+                b.height - 2 * inset - topHeight));
     }
-
 }
--- a/jdk/src/share/demo/jfc/TableExample/TableExample2.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/TableExample/TableExample2.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,28 +29,36 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.Dimension;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.swing.JFrame;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.UIManager;
+import javax.swing.UIManager.LookAndFeelInfo;
+
 
 /**
  * A minimal example, using the JTable to view data from a database.
  *
  * @author Philip Milne
  */
-
-import javax.swing.*;
-
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.awt.Dimension;
-
 public class TableExample2 {
 
     public TableExample2(String URL, String driver, String user,
-                         String passwd, String query) {
+            String passwd, String query) {
         JFrame frame = new JFrame("Table");
         frame.addWindowListener(new WindowAdapter() {
-            public void windowClosing(WindowEvent e) {System.exit(0);}});
+
+            @Override
+            public void windowClosing(WindowEvent e) {
+                System.exit(0);
+            }
+        });
         JDBCAdapter dt = new JDBCAdapter(URL, driver, user, passwd);
         dt.executeQuery(query);
 
@@ -68,9 +76,26 @@
     public static void main(String[] args) {
         if (args.length != 5) {
             System.err.println("Needs database parameters eg. ...");
-            System.err.println("java TableExample2 \"jdbc:sybase://dbtest:1455/pubs2\" \"connect.sybase.SybaseDriver\" guest trustworthy \"select * from titles\"");
+            System.err.println(
+                    "java TableExample2 \"jdbc:derby://localhost:1527/sample\" "
+                    + "org.apache.derby.jdbc.ClientDriver app app "
+                    + "\"select * from app.customer\"");
             return;
         }
+
+        // Trying to set Nimbus look and feel
+        try {
+            for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
+                if ("Nimbus".equals(info.getName())) {
+                    UIManager.setLookAndFeel(info.getClassName());
+                    break;
+                }
+            }
+        } catch (Exception ex) {
+            Logger.getLogger(TableExample2.class.getName()).log(Level.SEVERE,
+                    "Failed to apply Nimbus look and feel", ex);
+        }
+
         new TableExample2(args[0], args[1], args[2], args[3], args[4]);
     }
 }
--- a/jdk/src/share/demo/jfc/TableExample/TableExample3.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/TableExample/TableExample3.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,8 +29,17 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
+
+import javax.swing.*;
+import javax.swing.table.*;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.Dimension;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.swing.UIManager.LookAndFeelInfo;
+
 
 /**
  * An example showing the JTable with a dataModel that is not derived
@@ -39,70 +48,92 @@
  *
  * @author Philip Milne
  */
-
-import javax.swing.*;
-import javax.swing.table.*;
-
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.awt.Dimension;
-
 public class TableExample3 {
 
     public TableExample3() {
         JFrame frame = new JFrame("Table");
         frame.addWindowListener(new WindowAdapter() {
-            public void windowClosing(WindowEvent e) {System.exit(0);}});
+
+            @Override
+            public void windowClosing(WindowEvent e) {
+                System.exit(0);
+            }
+        });
 
         // Take the dummy data from SwingSet.
-        final String[] names = {"First Name", "Last Name", "Favorite Color",
-                                "Favorite Number", "Vegetarian"};
+        final String[] names = { "First Name", "Last Name", "Favorite Color",
+            "Favorite Number", "Vegetarian" };
         final Object[][] data = {
-            {"Mark", "Andrews", "Red", new Integer(2), Boolean.TRUE},
-            {"Tom", "Ball", "Blue", new Integer(99), Boolean.FALSE},
-            {"Alan", "Chung", "Green", new Integer(838), Boolean.FALSE},
-            {"Jeff", "Dinkins", "Turquois", new Integer(8), Boolean.TRUE},
-            {"Amy", "Fowler", "Yellow", new Integer(3), Boolean.FALSE},
-            {"Brian", "Gerhold", "Green", new Integer(0), Boolean.FALSE},
-            {"James", "Gosling", "Pink", new Integer(21), Boolean.FALSE},
-            {"David", "Karlton", "Red", new Integer(1), Boolean.FALSE},
-            {"Dave", "Kloba", "Yellow", new Integer(14), Boolean.FALSE},
-            {"Peter", "Korn", "Purple", new Integer(12), Boolean.FALSE},
-            {"Phil", "Milne", "Purple", new Integer(3), Boolean.FALSE},
-            {"Dave", "Moore", "Green", new Integer(88), Boolean.FALSE},
-            {"Hans", "Muller", "Maroon", new Integer(5), Boolean.FALSE},
-            {"Rick", "Levenson", "Blue", new Integer(2), Boolean.FALSE},
-            {"Tim", "Prinzing", "Blue", new Integer(22), Boolean.FALSE},
-            {"Chester", "Rose", "Black", new Integer(0), Boolean.FALSE},
-            {"Ray", "Ryan", "Gray", new Integer(77), Boolean.FALSE},
-            {"Georges", "Saab", "Red", new Integer(4), Boolean.FALSE},
-            {"Willie", "Walker", "Phthalo Blue", new Integer(4), Boolean.FALSE},
-            {"Kathy", "Walrath", "Blue", new Integer(8), Boolean.FALSE},
-            {"Arnaud", "Weber", "Green", new Integer(44), Boolean.FALSE}
+            { "Mark", "Andrews", "Red", new Integer(2), Boolean.TRUE },
+            { "Tom", "Ball", "Blue", new Integer(99), Boolean.FALSE },
+            { "Alan", "Chung", "Green", new Integer(838), Boolean.FALSE },
+            { "Jeff", "Dinkins", "Turquois", new Integer(8), Boolean.TRUE },
+            { "Amy", "Fowler", "Yellow", new Integer(3), Boolean.FALSE },
+            { "Brian", "Gerhold", "Green", new Integer(0), Boolean.FALSE },
+            { "James", "Gosling", "Pink", new Integer(21), Boolean.FALSE },
+            { "David", "Karlton", "Red", new Integer(1), Boolean.FALSE },
+            { "Dave", "Kloba", "Yellow", new Integer(14), Boolean.FALSE },
+            { "Peter", "Korn", "Purple", new Integer(12), Boolean.FALSE },
+            { "Phil", "Milne", "Purple", new Integer(3), Boolean.FALSE },
+            { "Dave", "Moore", "Green", new Integer(88), Boolean.FALSE },
+            { "Hans", "Muller", "Maroon", new Integer(5), Boolean.FALSE },
+            { "Rick", "Levenson", "Blue", new Integer(2), Boolean.FALSE },
+            { "Tim", "Prinzing", "Blue", new Integer(22), Boolean.FALSE },
+            { "Chester", "Rose", "Black", new Integer(0), Boolean.FALSE },
+            { "Ray", "Ryan", "Gray", new Integer(77), Boolean.FALSE },
+            { "Georges", "Saab", "Red", new Integer(4), Boolean.FALSE },
+            { "Willie", "Walker", "Phthalo Blue", new Integer(4), Boolean.FALSE },
+            { "Kathy", "Walrath", "Blue", new Integer(8), Boolean.FALSE },
+            { "Arnaud", "Weber", "Green", new Integer(44), Boolean.FALSE }
         };
 
         // Create a model of the data.
+        @SuppressWarnings("serial")
         TableModel dataModel = new AbstractTableModel() {
             // These methods always need to be implemented.
-            public int getColumnCount() { return names.length; }
-            public int getRowCount() { return data.length;}
-            public Object getValueAt(int row, int col) {return data[row][col];}
+
+            public int getColumnCount() {
+                return names.length;
+            }
+
+            public int getRowCount() {
+                return data.length;
+            }
+
+            public Object getValueAt(int row, int col) {
+                return data[row][col];
+            }
 
             // The default implementations of these methods in
             // AbstractTableModel would work, but we can refine them.
-            public String getColumnName(int column) {return names[column];}
-            public Class getColumnClass(int col) {return getValueAt(0,col).getClass();}
-            public boolean isCellEditable(int row, int col) {return (col==4);}
+            @Override
+            public String getColumnName(int column) {
+                return names[column];
+            }
+
+            @Override
+            public Class getColumnClass(int col) {
+                return getValueAt(0, col).getClass();
+            }
+
+            @Override
+            public boolean isCellEditable(int row, int col) {
+                return (col == 4);
+            }
+
+            @Override
             public void setValueAt(Object aValue, int row, int column) {
                 data[row][column] = aValue;
             }
-         };
+        };
 
-        // Instead of making the table display the data as it would normally with:
+        // Instead of making the table display the data as it would normally
+        // with:
         // JTable tableView = new JTable(dataModel);
-        // Add a sorter, by using the following three lines instead of the one above.
-        TableSorter  sorter = new TableSorter(dataModel);
-        JTable    tableView = new JTable(sorter);
+        // Add a sorter, by using the following three lines instead of the one
+        // above.
+        TableSorter sorter = new TableSorter(dataModel);
+        JTable tableView = new JTable(sorter);
         sorter.addMouseListenerToHeaderInTable(tableView);
 
         JScrollPane scrollpane = new JScrollPane(tableView);
@@ -114,6 +145,18 @@
     }
 
     public static void main(String[] args) {
+        // Trying to set Nimbus look and feel
+        try {
+            for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
+                if ("Nimbus".equals(info.getName())) {
+                    UIManager.setLookAndFeel(info.getClassName());
+                    break;
+                }
+            }
+        } catch (Exception ex) {
+            Logger.getLogger(TableExample3.class.getName()).log(Level.SEVERE,
+                    "Failed to apply Nimbus look and feel", ex);
+        }
         new TableExample3();
     }
 }
--- a/jdk/src/share/demo/jfc/TableExample/TableExample4.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/TableExample/TableExample4.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,8 +29,18 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
+
+import javax.swing.*;
+import javax.swing.table.*;
+import javax.swing.border.*;
+import java.awt.Dimension;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.Color;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.swing.UIManager.LookAndFeelInfo;
+
 
 /**
  * Another JTable example, showing how column attributes can be refined
@@ -40,72 +50,91 @@
  *
  * @author Philip Milne
  */
-
-import javax.swing.*;
-import javax.swing.table.*;
-import javax.swing.border.*;
-
-import java.awt.Dimension;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.awt.Color;
-
 public class TableExample4 {
 
     public TableExample4() {
         JFrame frame = new JFrame("Table");
         frame.addWindowListener(new WindowAdapter() {
-            public void windowClosing(WindowEvent e) {System.exit(0);}});
+
+            @Override
+            public void windowClosing(WindowEvent e) {
+                System.exit(0);
+            }
+        });
 
         // Take the dummy data from SwingSet.
-        final String[] names = {"First Name", "Last Name", "Favorite Color",
-                                "Favorite Number", "Vegetarian"};
+        final String[] names = { "First Name", "Last Name", "Favorite Color",
+            "Favorite Number", "Vegetarian" };
         final Object[][] data = {
-            {"Mark", "Andrews", "Red", new Integer(2), Boolean.TRUE},
-            {"Tom", "Ball", "Blue", new Integer(99), Boolean.FALSE},
-            {"Alan", "Chung", "Green", new Integer(838), Boolean.FALSE},
-            {"Jeff", "Dinkins", "Turquois", new Integer(8), Boolean.TRUE},
-            {"Amy", "Fowler", "Yellow", new Integer(3), Boolean.FALSE},
-            {"Brian", "Gerhold", "Green", new Integer(0), Boolean.FALSE},
-            {"James", "Gosling", "Pink", new Integer(21), Boolean.FALSE},
-            {"David", "Karlton", "Red", new Integer(1), Boolean.FALSE},
-            {"Dave", "Kloba", "Yellow", new Integer(14), Boolean.FALSE},
-            {"Peter", "Korn", "Purple", new Integer(12), Boolean.FALSE},
-            {"Phil", "Milne", "Purple", new Integer(3), Boolean.FALSE},
-            {"Dave", "Moore", "Green", new Integer(88), Boolean.FALSE},
-            {"Hans", "Muller", "Maroon", new Integer(5), Boolean.FALSE},
-            {"Rick", "Levenson", "Blue", new Integer(2), Boolean.FALSE},
-            {"Tim", "Prinzing", "Blue", new Integer(22), Boolean.FALSE},
-            {"Chester", "Rose", "Black", new Integer(0), Boolean.FALSE},
-            {"Ray", "Ryan", "Gray", new Integer(77), Boolean.FALSE},
-            {"Georges", "Saab", "Red", new Integer(4), Boolean.FALSE},
-            {"Willie", "Walker", "Phthalo Blue", new Integer(4), Boolean.FALSE},
-            {"Kathy", "Walrath", "Blue", new Integer(8), Boolean.FALSE},
-            {"Arnaud", "Weber", "Green", new Integer(44), Boolean.FALSE}
+            { "Mark", "Andrews", "Red", new Integer(2), Boolean.TRUE },
+            { "Tom", "Ball", "Blue", new Integer(99), Boolean.FALSE },
+            { "Alan", "Chung", "Green", new Integer(838), Boolean.FALSE },
+            { "Jeff", "Dinkins", "Turquois", new Integer(8), Boolean.TRUE },
+            { "Amy", "Fowler", "Yellow", new Integer(3), Boolean.FALSE },
+            { "Brian", "Gerhold", "Green", new Integer(0), Boolean.FALSE },
+            { "James", "Gosling", "Pink", new Integer(21), Boolean.FALSE },
+            { "David", "Karlton", "Red", new Integer(1), Boolean.FALSE },
+            { "Dave", "Kloba", "Yellow", new Integer(14), Boolean.FALSE },
+            { "Peter", "Korn", "Purple", new Integer(12), Boolean.FALSE },
+            { "Phil", "Milne", "Purple", new Integer(3), Boolean.FALSE },
+            { "Dave", "Moore", "Green", new Integer(88), Boolean.FALSE },
+            { "Hans", "Muller", "Maroon", new Integer(5), Boolean.FALSE },
+            { "Rick", "Levenson", "Blue", new Integer(2), Boolean.FALSE },
+            { "Tim", "Prinzing", "Blue", new Integer(22), Boolean.FALSE },
+            { "Chester", "Rose", "Black", new Integer(0), Boolean.FALSE },
+            { "Ray", "Ryan", "Gray", new Integer(77), Boolean.FALSE },
+            { "Georges", "Saab", "Red", new Integer(4), Boolean.FALSE },
+            { "Willie", "Walker", "Phthalo Blue", new Integer(4), Boolean.FALSE },
+            { "Kathy", "Walrath", "Blue", new Integer(8), Boolean.FALSE },
+            { "Arnaud", "Weber", "Green", new Integer(44), Boolean.FALSE }
         };
 
         // Create a model of the data.
+        @SuppressWarnings("serial")
         TableModel dataModel = new AbstractTableModel() {
             // These methods always need to be implemented.
-            public int getColumnCount() { return names.length; }
-            public int getRowCount() { return data.length;}
-            public Object getValueAt(int row, int col) {return data[row][col];}
+
+            public int getColumnCount() {
+                return names.length;
+            }
+
+            public int getRowCount() {
+                return data.length;
+            }
+
+            public Object getValueAt(int row, int col) {
+                return data[row][col];
+            }
 
             // The default implementations of these methods in
             // AbstractTableModel would work, but we can refine them.
-            public String getColumnName(int column) {return names[column];}
-            public Class getColumnClass(int c) {return getValueAt(0, c).getClass();}
-            public boolean isCellEditable(int row, int col) {return true;}
+            @Override
+            public String getColumnName(int column) {
+                return names[column];
+            }
+
+            @Override
+            public Class getColumnClass(int c) {
+                return getValueAt(0, c).getClass();
+            }
+
+            @Override
+            public boolean isCellEditable(int row, int col) {
+                return true;
+            }
+
+            @Override
             public void setValueAt(Object aValue, int row, int column) {
                 System.out.println("Setting value to: " + aValue);
                 data[row][column] = aValue;
             }
-         };
+        };
 
         // Create the table
         JTable tableView = new JTable(dataModel);
-        // Turn off auto-resizing so that we can set column sizes programmatically.
-        // In this mode, all columns will get their preferred widths, as set blow.
+        // Turn off auto-resizing so that we can set column sizes
+        // programmatically. In this mode, all columns will get their preferred
+        // widths, as set blow.
         tableView.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
 
         // Create a combo box to show that you can use one in a table.
@@ -123,15 +152,18 @@
         colorColumn.setCellEditor(new DefaultCellEditor(comboBox));
 
         // Set a pink background and tooltip for the Color column renderer.
-        DefaultTableCellRenderer colorColumnRenderer = new DefaultTableCellRenderer();
+        DefaultTableCellRenderer colorColumnRenderer =
+                new DefaultTableCellRenderer();
         colorColumnRenderer.setBackground(Color.pink);
         colorColumnRenderer.setToolTipText("Click for combo box");
         colorColumn.setCellRenderer(colorColumnRenderer);
 
         // Set a tooltip for the header of the colors column.
         TableCellRenderer headerRenderer = colorColumn.getHeaderRenderer();
-        if (headerRenderer instanceof DefaultTableCellRenderer)
-            ((DefaultTableCellRenderer)headerRenderer).setToolTipText("Hi Mom!");
+        if (headerRenderer instanceof DefaultTableCellRenderer) {
+            ((DefaultTableCellRenderer) headerRenderer).setToolTipText(
+                    "Hi Mom!");
+        }
 
         // Set the width of the "Vegetarian" column.
         TableColumn vegetarianColumn = tableView.getColumn("Vegetarian");
@@ -139,9 +171,14 @@
 
         // Show the values in the "Favorite Number" column in different colors.
         TableColumn numbersColumn = tableView.getColumn("Favorite Number");
-        DefaultTableCellRenderer numberColumnRenderer = new DefaultTableCellRenderer() {
+        @SuppressWarnings("serial")
+        DefaultTableCellRenderer numberColumnRenderer
+                = new DefaultTableCellRenderer() {
+
+            @Override
             public void setValue(Object value) {
-                int cellValue = (value instanceof Number) ? ((Number)value).intValue() : 0;
+                int cellValue = (value instanceof Number) ? ((Number) value).
+                        intValue() : 0;
                 setForeground((cellValue > 30) ? Color.black : Color.red);
                 setText((value == null) ? "" : value.toString());
             }
@@ -160,6 +197,19 @@
     }
 
     public static void main(String[] args) {
+        // Trying to set Nimbus look and feel
+        try {
+            for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
+                if ("Nimbus".equals(info.getName())) {
+                    UIManager.setLookAndFeel(info.getClassName());
+                    break;
+                }
+            }
+        } catch (Exception ex) {
+            Logger.getLogger(TableExample4.class.getName()).log(Level.SEVERE,
+                    "Failed to apply Nimbus look and feel", ex);
+        }
+
         new TableExample4();
     }
 }
--- a/jdk/src/share/demo/jfc/TableExample/TableMap.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/TableExample/TableMap.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,8 +29,6 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
 
 /**
  * In a chain of data manipulators some behaviour is common. TableMap
@@ -41,32 +39,34 @@
  * a TableMap which has not been subclassed into a chain of table filters
  * should have no effect.
  *
- * @author Philip Milne */
-
+ * @author Philip Milne
+ */
 import javax.swing.table.*;
 import javax.swing.event.TableModelListener;
 import javax.swing.event.TableModelEvent;
 
-public class TableMap extends AbstractTableModel implements TableModelListener
-{
+
+@SuppressWarnings("serial")
+public class TableMap extends AbstractTableModel implements TableModelListener {
+
     protected TableModel model;
 
-    public TableModel  getModel() {
+    public TableModel getModel() {
         return model;
     }
 
-    public void  setModel(TableModel model) {
+    public void setModel(TableModel model) {
         this.model = model;
         model.addTableModelListener(this);
     }
 
     // By default, Implement TableModel by forwarding all messages
     // to the model.
-
     public Object getValueAt(int aRow, int aColumn) {
         return model.getValueAt(aRow, aColumn);
     }
 
+    @Override
     public void setValueAt(Object aValue, int aRow, int aColumn) {
         model.setValueAt(aValue, aRow, aColumn);
     }
@@ -79,16 +79,19 @@
         return (model == null) ? 0 : model.getColumnCount();
     }
 
+    @Override
     public String getColumnName(int aColumn) {
         return model.getColumnName(aColumn);
     }
 
+    @Override
     public Class getColumnClass(int aColumn) {
         return model.getColumnClass(aColumn);
     }
 
+    @Override
     public boolean isCellEditable(int row, int column) {
-         return model.isCellEditable(row, column);
+        return model.isCellEditable(row, column);
     }
 //
 // Implementation of the TableModelListener interface,
--- a/jdk/src/share/demo/jfc/TableExample/TableSorter.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jfc/TableExample/TableSorter.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,8 +29,19 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
+
+import javax.swing.table.TableModel;
+import javax.swing.event.TableModelEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.InputEvent;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import javax.swing.JTable;
+import javax.swing.table.JTableHeader;
+import javax.swing.table.TableColumnModel;
+
 
 /**
  * A sorter for TableModels. The sorter has a model (conforming to TableModel)
@@ -48,46 +59,29 @@
  *
  * @author Philip Milne
  */
-
-import java.util.*;
-
-import javax.swing.table.TableModel;
-import javax.swing.event.TableModelEvent;
-
-// Imports for picking up mouse events from the JTable.
+@SuppressWarnings("serial")
+public final class TableSorter extends TableMap {
 
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.awt.event.InputEvent;
-import javax.swing.JTable;
-import javax.swing.table.JTableHeader;
-import javax.swing.table.TableColumn;
-import javax.swing.table.TableColumnModel;
-
-public class TableSorter extends TableMap
-{
-    int             indexes[];
-    Vector          sortingColumns = new Vector();
-    boolean         ascending = true;
+    int indexes[];
+    List<Integer> sortingColumns = new ArrayList<Integer>();
+    boolean ascending = true;
     int compares;
 
-    public TableSorter()
-    {
+    public TableSorter() {
         indexes = new int[0]; // For consistency.
     }
 
-    public TableSorter(TableModel model)
-    {
+    public TableSorter(TableModel model) {
         setModel(model);
     }
 
+    @Override
     public void setModel(TableModel model) {
         super.setModel(model);
         reallocateIndexes();
     }
 
-    public int compareRowsByColumn(int row1, int row2, int column)
-    {
+    public int compareRowsByColumn(int row1, int row2, int column) {
         Class type = model.getColumnClass(column);
         TableModel data = model;
 
@@ -99,104 +93,100 @@
         // If both values are null return 0
         if (o1 == null && o2 == null) {
             return 0;
-        }
-        else if (o1 == null) { // Define null less than everything.
+        } else if (o1 == null) { // Define null less than everything.
             return -1;
-        }
-        else if (o2 == null) {
+        } else if (o2 == null) {
             return 1;
         }
 
-/* We copy all returned values from the getValue call in case
-an optimised model is reusing one object to return many values.
-The Number subclasses in the JDK are immutable and so will not be used in
-this way but other subclasses of Number might want to do this to save
-space and avoid unnecessary heap allocation.
-*/
-        if (type.getSuperclass() == java.lang.Number.class)
-            {
-                Number n1 = (Number)data.getValueAt(row1, column);
-                double d1 = n1.doubleValue();
-                Number n2 = (Number)data.getValueAt(row2, column);
-                double d2 = n2.doubleValue();
+        /* We copy all returned values from the getValue call in case
+        an optimised model is reusing one object to return many values.
+        The Number subclasses in the JDK are immutable and so will not be used
+        in this way but other subclasses of Number might want to do this to save
+        space and avoid unnecessary heap allocation.
+         */
+        if (type.getSuperclass() == java.lang.Number.class) {
+            Number n1 = (Number) data.getValueAt(row1, column);
+            double d1 = n1.doubleValue();
+            Number n2 = (Number) data.getValueAt(row2, column);
+            double d2 = n2.doubleValue();
+
+            if (d1 < d2) {
+                return -1;
+            } else if (d1 > d2) {
+                return 1;
+            } else {
+                return 0;
+            }
+        } else if (type == java.util.Date.class) {
+            Date d1 = (Date) data.getValueAt(row1, column);
+            long n1 = d1.getTime();
+            Date d2 = (Date) data.getValueAt(row2, column);
+            long n2 = d2.getTime();
 
-                if (d1 < d2)
-                    return -1;
-                else if (d1 > d2)
-                    return 1;
-                else
-                    return 0;
+            if (n1 < n2) {
+                return -1;
+            } else if (n1 > n2) {
+                return 1;
+            } else {
+                return 0;
             }
-        else if (type == java.util.Date.class)
-            {
-                Date d1 = (Date)data.getValueAt(row1, column);
-                long n1 = d1.getTime();
-                Date d2 = (Date)data.getValueAt(row2, column);
-                long n2 = d2.getTime();
+        } else if (type == String.class) {
+            String s1 = (String) data.getValueAt(row1, column);
+            String s2 = (String) data.getValueAt(row2, column);
+            int result = s1.compareTo(s2);
 
-                if (n1 < n2)
-                    return -1;
-                else if (n1 > n2)
-                    return 1;
-                else return 0;
+            if (result < 0) {
+                return -1;
+            } else if (result > 0) {
+                return 1;
+            } else {
+                return 0;
             }
-        else if (type == String.class)
+        } else if (type == Boolean.class) {
+            Boolean bool1 = (Boolean) data.getValueAt(row1, column);
+            boolean b1 = bool1.booleanValue();
+            Boolean bool2 = (Boolean) data.getValueAt(row2, column);
+            boolean b2 = bool2.booleanValue();
+
+            if (b1 == b2) {
+                return 0;
+            } else if (b1) // Define false < true
             {
-                String s1 = (String)data.getValueAt(row1, column);
-                String s2    = (String)data.getValueAt(row2, column);
-                int result = s1.compareTo(s2);
-
-                if (result < 0)
-                    return -1;
-                else if (result > 0)
-                    return 1;
-                else return 0;
+                return 1;
+            } else {
+                return -1;
             }
-        else if (type == Boolean.class)
-            {
-                Boolean bool1 = (Boolean)data.getValueAt(row1, column);
-                boolean b1 = bool1.booleanValue();
-                Boolean bool2 = (Boolean)data.getValueAt(row2, column);
-                boolean b2 = bool2.booleanValue();
+        } else {
+            Object v1 = data.getValueAt(row1, column);
+            String s1 = v1.toString();
+            Object v2 = data.getValueAt(row2, column);
+            String s2 = v2.toString();
+            int result = s1.compareTo(s2);
 
-                if (b1 == b2)
-                    return 0;
-                else if (b1) // Define false < true
-                    return 1;
-                else
-                    return -1;
+            if (result < 0) {
+                return -1;
+            } else if (result > 0) {
+                return 1;
+            } else {
+                return 0;
             }
-        else
-            {
-                Object v1 = data.getValueAt(row1, column);
-                String s1 = v1.toString();
-                Object v2 = data.getValueAt(row2, column);
-                String s2 = v2.toString();
-                int result = s1.compareTo(s2);
-
-                if (result < 0)
-                    return -1;
-                else if (result > 0)
-                    return 1;
-                else return 0;
-            }
+        }
     }
 
-    public int compare(int row1, int row2)
-    {
+    public int compare(int row1, int row2) {
         compares++;
-        for(int level = 0; level < sortingColumns.size(); level++)
-            {
-                Integer column = (Integer)sortingColumns.elementAt(level);
-                int result = compareRowsByColumn(row1, row2, column.intValue());
-                if (result != 0)
-                    return ascending ? result : -result;
+        for (int level = 0; level < sortingColumns.size(); level++) {
+            Integer column = sortingColumns.get(level);
+            int result = compareRowsByColumn(row1, row2, column.intValue());
+            if (result != 0) {
+                return ascending ? result : -result;
             }
+        }
         return 0;
     }
 
-    public void  reallocateIndexes()
-    {
+    public void reallocateIndexes() {
         int rowCount = model.getRowCount();
 
         // Set up a new array of indexes with the right number of elements
@@ -204,39 +194,38 @@
         indexes = new int[rowCount];
 
         // Initialise with the identity mapping.
-        for(int row = 0; row < rowCount; row++)
+        for (int row = 0; row < rowCount; row++) {
             indexes[row] = row;
+        }
     }
 
-    public void tableChanged(TableModelEvent e)
-    {
+    @Override
+    public void tableChanged(TableModelEvent e) {
         System.out.println("Sorter: tableChanged");
         reallocateIndexes();
 
         super.tableChanged(e);
     }
 
-    public void checkModel()
-    {
+    public void checkModel() {
         if (indexes.length != model.getRowCount()) {
             System.err.println("Sorter not informed of a change in model.");
         }
     }
 
-    public void  sort(Object sender)
-    {
+    public void sort(Object sender) {
         checkModel();
 
         compares = 0;
         // n2sort();
         // qsort(0, indexes.length-1);
-        shuttlesort((int[])indexes.clone(), indexes, 0, indexes.length);
-        System.out.println("Compares: "+compares);
+        shuttlesort(indexes.clone(), indexes, 0, indexes.length);
+        System.out.println("Compares: " + compares);
     }
 
     public void n2sort() {
-        for(int i = 0; i < getRowCount(); i++) {
-            for(int j = i+1; j < getRowCount(); j++) {
+        for (int i = 0; i < getRowCount(); i++) {
+            for (int j = i + 1; j < getRowCount(); j++) {
                 if (compare(indexes[i], indexes[j]) == -1) {
                     swap(i, j);
                 }
@@ -255,7 +244,7 @@
         if (high - low < 2) {
             return;
         }
-        int middle = (low + high)/2;
+        int middle = (low + high) / 2;
         shuttlesort(to, from, low, middle);
         shuttlesort(to, from, middle, high);
 
@@ -277,20 +266,17 @@
         find out how the performance drops to Nlog(N) as the initial
         order diminishes - it may drop very quickly.  */
 
-        if (high - low >= 4 && compare(from[middle-1], from[middle]) <= 0) {
-            for (int i = low; i < high; i++) {
-                to[i] = from[i];
-            }
+        if (high - low >= 4 && compare(from[middle - 1], from[middle]) <= 0) {
+            System.arraycopy(from, low, to, low, high - low);
             return;
         }
 
         // A normal merge.
 
-        for(int i = low; i < high; i++) {
+        for (int i = low; i < high; i++) {
             if (q >= high || (p < middle && compare(from[p], from[q]) <= 0)) {
                 to[i] = from[p++];
-            }
-            else {
+            } else {
                 to[i] = from[q++];
             }
         }
@@ -304,15 +290,14 @@
 
     // The mapping only affects the contents of the data rows.
     // Pass all requests to these rows through the mapping array: "indexes".
-
-    public Object getValueAt(int aRow, int aColumn)
-    {
+    @Override
+    public Object getValueAt(int aRow, int aColumn) {
         checkModel();
         return model.getValueAt(indexes[aRow], aColumn);
     }
 
-    public void setValueAt(Object aValue, int aRow, int aColumn)
-    {
+    @Override
+    public void setValueAt(Object aValue, int aRow, int aColumn) {
         checkModel();
         model.setValueAt(aValue, indexes[aRow], aColumn);
     }
@@ -323,8 +308,8 @@
 
     public void sortByColumn(int column, boolean ascending) {
         this.ascending = ascending;
-        sortingColumns.removeAllElements();
-        sortingColumns.addElement(new Integer(column));
+        sortingColumns.clear();
+        sortingColumns.add(column);
         sort(this);
         super.tableChanged(new TableModelEvent(this));
     }
@@ -337,22 +322,21 @@
         final JTable tableView = table;
         tableView.setColumnSelectionAllowed(false);
         MouseAdapter listMouseListener = new MouseAdapter() {
+
+            @Override
             public void mouseClicked(MouseEvent e) {
                 TableColumnModel columnModel = tableView.getColumnModel();
                 int viewColumn = columnModel.getColumnIndexAtX(e.getX());
                 int column = tableView.convertColumnIndexToModel(viewColumn);
-                if(e.getClickCount() == 1 && column != -1) {
+                if (e.getClickCount() == 1 && column != -1) {
                     System.out.println("Sorting ...");
-                    int shiftPressed = e.getModifiers()&InputEvent.SHIFT_MASK;
+                    int shiftPressed = e.getModifiers() & InputEvent.SHIFT_MASK;
                     boolean ascending = (shiftPressed == 0);
                     sorter.sortByColumn(column, ascending);
                 }
-             }
-         };
+            }
+        };
         JTableHeader th = tableView.getTableHeader();
         th.addMouseListener(listMouseListener);
     }
-
-
-
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/demo/jfc/TransparentRuler/README.txt	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,14 @@
+
+To run the Ruler demo:
+
+  java -jar Ruler.jar
+
+These instructions assume that this installation's version of the java
+command is in your path.  If it isn't, then you should either
+specify the complete path to the java command or update your
+PATH environment variable as described in the installation
+instructions for the Java(TM) SE Development Kit.
+
+KNOWN ISSUES:
+Context menu is clipped with the window shape. The issues are:
+CR 7027486 JPopupMenu doesn't take window shape into account
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/demo/jfc/TransparentRuler/transparentruler/Ruler.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,234 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *   - Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ *
+ *   - Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ *
+ *   - Neither the name of Oracle nor the names of its
+ *     contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package transparentruler;
+
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.GraphicsDevice;
+import java.awt.GraphicsDevice.WindowTranslucency;
+import java.awt.GraphicsEnvironment;
+import java.awt.event.ActionEvent;
+import java.awt.event.ComponentAdapter;
+import java.awt.event.ComponentEvent;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.geom.Path2D.Float;
+import java.lang.reflect.InvocationTargetException;
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.JFrame;
+import javax.swing.JMenuItem;
+import javax.swing.JPanel;
+import javax.swing.JPopupMenu;
+import javax.swing.SwingUtilities;
+import javax.swing.WindowConstants;
+
+
+/**
+ * This sample demonstrates shaped and translucent window feature.
+ * @author Alexander Kouznetsov
+ */
+@SuppressWarnings("serial")
+public class Ruler extends JFrame {
+
+    private static final Color BACKGROUND = Color.RED;
+    private static final Color FOREGROUND = Color.WHITE;
+    private static final int OPACITY = 180;
+    private static final int W = 70;
+    private static final int F_HEIGHT = 400;
+    private static final int F_WIDTH = (int) (F_HEIGHT * 1.618 + 0.5);
+
+    private static void checkTranslucencyMode(WindowTranslucency arg) {
+        GraphicsEnvironment ge =
+                GraphicsEnvironment.getLocalGraphicsEnvironment();
+        GraphicsDevice gd = ge.getDefaultScreenDevice();
+        if (!gd.isWindowTranslucencySupported(arg)) {
+            System.err.println("'" + arg
+                    + "' translucency mode isn't supported.");
+            System.exit(-1);
+        }
+    }
+    private final ComponentAdapter componentListener = new ComponentAdapter() {
+
+        /**
+         * Applies the shape to window. It is recommended to apply shape in
+         * componentResized() method
+         */
+        @Override
+        public void componentResized(ComponentEvent e) {
+            int h = getHeight();
+            int w = getWidth();
+            float a = (float) Math.hypot(h, w);
+            Float path = new java.awt.geom.Path2D.Float();
+            path.moveTo(0, 0);
+            path.lineTo(w, 0);
+            path.lineTo(0, h);
+            path.closePath();
+            path.moveTo(W, W);
+            path.lineTo(W, h - W * (a + h) / w);
+            path.lineTo(w - W * (a + w) / h, W);
+            path.closePath();
+            setShape(path);
+        }
+    };
+    private final Action exitAction = new AbstractAction("Exit") {
+
+        {
+            putValue(Action.MNEMONIC_KEY, KeyEvent.VK_X);
+        }
+
+        public void actionPerformed(ActionEvent e) {
+            System.exit(0);
+        }
+    };
+    private final JPopupMenu jPopupMenu = new JPopupMenu();
+
+    {
+        jPopupMenu.add(new JMenuItem(exitAction));
+    }
+    /**
+     * Implements mouse-related behavior: window dragging and popup menu
+     * invocation
+     */
+    private final MouseAdapter mouseListener = new MouseAdapter() {
+
+        int x, y;
+
+        @Override
+        public void mousePressed(MouseEvent e) {
+            if (e.getButton() == MouseEvent.BUTTON1) {
+                x = e.getX();
+                y = e.getY();
+            }
+        }
+
+        @Override
+        public void mouseDragged(MouseEvent e) {
+            if ((e.getModifiersEx() & MouseEvent.BUTTON1_DOWN_MASK) != 0) {
+                setLocation(e.getXOnScreen() - x, e.getYOnScreen() - y);
+            }
+        }
+
+        @Override
+        public void mouseReleased(MouseEvent e) {
+            if (e.isPopupTrigger()) {
+                jPopupMenu.show(getContentPane(), e.getX(), e.getY());
+            }
+        }
+    };
+    /**
+     * Implements keyboard navigation. Arrows move by 5 pixels, Ctrl + arrows
+     * move by 50 pixels, Alt + arrows move by 1 pixel.
+     * Esc exits the application.
+     */
+    private final KeyAdapter keyboardListener = new KeyAdapter() {
+
+        @Override
+        public void keyPressed(KeyEvent e) {
+            int step = e.isControlDown() ? 50 : e.isAltDown() ? 1 : 5;
+            switch (e.getKeyCode()) {
+                case KeyEvent.VK_LEFT:
+                    setLocation(getX() - step, getY());
+                    break;
+                case KeyEvent.VK_RIGHT:
+                    setLocation(getX() + step, getY());
+                    break;
+                case KeyEvent.VK_UP:
+                    setLocation(getX(), getY() - step);
+                    break;
+                case KeyEvent.VK_DOWN:
+                    setLocation(getX(), getY() + step);
+                    break;
+                case KeyEvent.VK_ESCAPE:
+                    exitAction.actionPerformed(null);
+            }
+        }
+    };
+
+    public Ruler() {
+        setUndecorated(true);
+
+        // Enables perpixel translucency
+        setBackground(new Color(BACKGROUND.getRed(), BACKGROUND.getGreen(),
+                BACKGROUND.getBlue(), OPACITY));
+
+        addMouseListener(mouseListener);
+        addMouseMotionListener(mouseListener);
+        addComponentListener(componentListener);
+        addKeyListener(keyboardListener);
+        setContentPane(new JPanel() {
+
+            @Override
+            protected void paintComponent(Graphics g) {
+                Graphics gg = g.create();
+                int w = getWidth();
+                int h = getHeight();
+                int hh = gg.getFontMetrics().getAscent();
+                gg.setColor(FOREGROUND);
+                for (int x = 0; x < w * (h - 8) / h - 5; x += 5) {
+                    boolean hi = x % 50 == 0;
+                    gg.drawLine(x + 5, 0, x + 5,
+                            hi ? 20 : (x % 25 == 0 ? 13 : 8));
+                    if (hi) {
+                        String number = Integer.toString(x);
+                        int ww = gg.getFontMetrics().stringWidth(number);
+                        gg.drawString(number, x + 5 - ww / 2, 20 + hh);
+                    }
+                }
+                gg.dispose();
+            }
+        });
+        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
+        setSize(F_WIDTH, F_HEIGHT);
+        setLocationByPlatform(true);
+    }
+
+    /**
+     * @param args the command line arguments are ignored
+     */
+    public static void main(String[] args) throws InterruptedException, InvocationTargetException {
+
+        SwingUtilities.invokeAndWait(new Runnable() {
+
+            public void run() {
+                checkTranslucencyMode(WindowTranslucency.PERPIXEL_TRANSLUCENT);
+                checkTranslucencyMode(WindowTranslucency.PERPIXEL_TRANSPARENT);
+
+                Ruler ruler = new Ruler();
+                ruler.setVisible(true);
+            }
+        });
+    }
+}
--- a/jdk/src/share/demo/jvmti/heapTracker/heapTracker.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/jvmti/heapTracker/heapTracker.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/demo/nbproject/jfc/TransparentRuler/build.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,22 @@
+main.dir=${basedir}/../../../jfc/TransparentRuler
+
+src.dir=${main.dir}/src
+
+build.dir=build
+classes.dir=${build.dir}/classes
+jar=${main.dir}/TransparentRuler.jar
+javadoc.dir=${build.dir}/javadoc
+
+build.sysclasspath=ignore
+# E.g.: cp=lib/x.jar:lib/y.jar
+cp=
+extra.run.cp=
+
+main.class=transparentruler.Ruler
+
+run.cp=${cp}:${classes.dir}:${extra.run.cp}
+
+debug=true
+deprecation=false
+
+nbjdk.home=${basedir}/../../../..
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/demo/nbproject/jfc/TransparentRuler/build.xml	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+   - Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+   - Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+   - Neither the name of Oracle nor the names of its
+     contributors may be used to endorse or promote products derived
+     from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<project name="TransparentRuler" basedir="." default="jar">
+
+    <import file="nbproject/jdk.xml"/>
+    
+    <target name="-prop-init">
+        <property file="user.build.properties"/>
+        <property file="build.properties"/>
+    </target>
+
+    <target name="-init" depends="-prop-init,-jdk-init"/>
+
+    <target name="compile" depends="-init" description="Compile main sources.">
+        <mkdir dir="${classes.dir}"/>
+        <javac srcdir="${src.dir}" destdir="${classes.dir}" debug="${debug}" deprecation="${deprecation}">
+            <classpath path="${cp}"/>
+        </javac>
+        <copy todir="${classes.dir}">
+            <fileset dir="${src.dir}"/>
+        </copy>
+    </target>
+
+    <target name="jar" depends="compile" description="Build JAR file for main sources.">
+        <jar jarfile="${jar}" compress="true">
+            <manifest>
+                <attribute name="Main-Class" value="${main.class}"/>
+            </manifest>
+            <fileset dir="${classes.dir}"/>
+        </jar>
+    </target>
+
+    <target name="run" depends="compile" description="Run application.">
+        <fail unless="main.class">Must set property 'main.class' (e.g. in build.properties)</fail>
+        <java classname="${main.class}" fork="true" failonerror="true">
+            <classpath path="${run.cp}"/>
+        </java>
+    </target>
+
+    <target name="javadoc" depends="-init" description="Build Javadoc.">
+        <mkdir dir="${javadoc.dir}"/>
+        <javadoc destdir="${javadoc.dir}">
+            <classpath path="${cp}"/>
+            <sourcepath>
+                <pathelement location="${src.dir}"/>
+            </sourcepath>
+            <fileset dir="${src.dir}"/>
+        </javadoc>
+    </target>
+
+    <target name="clean" depends="-init" description="Clean build products.">
+        <delete dir="${build.dir}"/>
+        <delete file="${jar}"/>
+    </target>
+
+    <target name="profile">
+        <ant antfile="nbproject/netbeans-targets.xml" target="profile"/>
+    </target>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/demo/nbproject/jfc/TransparentRuler/nbproject/file-targets.xml	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+   - Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+   - Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+   - Neither the name of Oracle nor the names of its
+     contributors may be used to endorse or promote products derived
+     from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<project basedir=".." name="TransparentRuler/file">
+    
+    <import file="../build.xml"/>
+    
+    <target name="compile-selected" depends="-init">
+        <fail unless="includes">Must set property 'includes'</fail>
+        <mkdir dir="${classes.dir}"/>
+        <javac srcdir="${src.dir}" destdir="${classes.dir}" debug="${debug}" deprecation="${deprecation}" includes="${includes}">
+            <classpath path="${cp}"/>
+        </javac>
+    </target>
+    
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/demo/nbproject/jfc/TransparentRuler/nbproject/jdk.xml	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+   - Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+   - Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+   - Neither the name of Oracle nor the names of its
+     contributors may be used to endorse or promote products derived
+     from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<project name="jdk" basedir=".">
+
+    <target name="-jdk-preinit">
+        <condition property=".exe" value=".exe">
+            <os family="windows"/>
+        </condition>
+        <property name=".exe" value=""/>
+        <property name="nbjdk.javac" value="${nbjdk.home}/bin/javac${.exe}"/>
+        <property name="nbjdk.java" value="${nbjdk.home}/bin/java${.exe}"/>
+        <property name="nbjdk.javadoc" value="${nbjdk.home}/bin/javadoc${.exe}"/>
+        <property name="nbjdk.appletviewer" value="${nbjdk.home}/bin/appletviewer${.exe}"/>
+        <property name="nbjdk.bootclasspath" value="${nbjdk.home}/jre/lib/rt.jar"/>
+    </target>
+
+    <target name="-jdk-presetdef-basic" depends="-jdk-preinit" unless="nbjdk.presetdef.basic.done">
+        <macrodef name="javac-presetdef">
+            <attribute name="javacval"/>
+            <sequential>
+                <presetdef name="javac">
+                    <javac fork="yes" executable="@{javacval}"/>
+                </presetdef>
+            </sequential>
+        </macrodef>
+        <javac-presetdef javacval="${nbjdk.javac}"/>
+        <macrodef name="java-presetdef">
+            <attribute name="javaval"/>
+            <sequential>
+                <presetdef name="java">
+                    <java fork="yes" jvm="@{javaval}"/>
+                </presetdef>
+            </sequential>
+        </macrodef>
+        <java-presetdef javaval="${nbjdk.java}"/>
+        <macrodef name="javadoc-presetdef">
+            <attribute name="javadocval"/>
+            <sequential>
+                <presetdef name="javadoc">
+                    <javadoc executable="@{javadocval}"/>
+                </presetdef>
+            </sequential>
+        </macrodef>
+        <javadoc-presetdef javadocval="${nbjdk.javadoc}"/>
+        <property name="nbjdk.presetdef.basic.done" value="true"/>
+    </target>
+
+    <target name="-jdk-presetdef-nbjpdastart" depends="-jdk-preinit" unless="nbjdk.presetdef.nbjpdastart.done">
+        <macrodef name="nbjpdastart-presetdef">
+            <attribute name="bootcpval"/>
+            <sequential>
+                <presetdef name="nbjpdastart">
+                    <nbjpdastart>
+                        <bootclasspath>
+                            <path path="@{bootcpval}"/>
+                        </bootclasspath>
+                    </nbjpdastart>
+                </presetdef>
+            </sequential>
+        </macrodef>
+        <nbjpdastart-presetdef bootcpval="${nbjdk.bootclasspath}"/>
+        <property name="nbjdk.presetdef.nbjpdastart.done" value="true"/>
+    </target>
+
+    <target name="-jdk-init" depends="-jdk-preinit,-jdk-presetdef-basic"/>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/demo/nbproject/jfc/TransparentRuler/nbproject/netbeans-targets.xml	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+   - Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+   - Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+   - Neither the name of Oracle nor the names of its
+     contributors may be used to endorse or promote products derived
+     from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<project basedir=".." name="TransparentRuler/NB">
+
+    <import file="../build.xml"/>
+    
+    <target name="debug" depends="compile,-jdk-presetdef-nbjpdastart">
+        <nbjpdastart addressproperty="jpda.address" name="TransparentRuler" transport="dt_socket">
+            <classpath path="${run.cp}"/>
+        </nbjpdastart>
+        <java classname="${main.class}" failonerror="true" fork="true">
+            <classpath path="${run.cp}"/>
+            <jvmarg value="-Xdebug"/>
+            <jvmarg value="-Xnoagent"/>
+            <jvmarg value="-Djava.compiler=none"/>
+            <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
+        </java>
+    </target>
+    
+    <target name="debug-fix" depends="-init">
+        <javac srcdir="${src.dir}" destdir="${classes.dir}" debug="true" deprecation="${deprecation}">
+            <classpath path="${cp}"/>
+            <include name="${class}.java"/>
+        </javac>
+        <nbjpdareload>
+            <fileset dir="${classes.dir}">
+                <include name="${class}.class"/>
+            </fileset>
+        </nbjpdareload>
+    </target>
+    
+    <target name="show-javadoc" depends="javadoc">
+        <nbbrowse file="${javadoc.dir}/index.html"/>
+    </target>
+    
+    <target name="profile" depends="compile">
+        <nbprofiledirect>
+            <classpath path="${run.cp}"/>
+        </nbprofiledirect>
+        <property environment="env"/>
+        <java classname="${main.class}" fork="true" failonerror="true" dir="${profiler.session.working.dir}" jvm="${profiler.info.jvm}">
+            <classpath path="${run.cp}"/>
+            <jvmarg value="${profiler.info.jvmargs.agent}"/>
+            <jvmarg line="${profiler.info.jvmargs}"/>
+            <env key="LD_LIBRARY_PATH" path="${profiler.info.agentpath}:${env.LD_LIBRARY_PATH}"/>
+            <env key="Path" path="${profiler.info.agentpath}:${env.Path}"/>
+        </java>
+    </target>
+    
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/demo/nbproject/jfc/TransparentRuler/nbproject/project.xml	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+   - Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+   - Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+   - Neither the name of Oracle nor the names of its
+     contributors may be used to endorse or promote products derived
+     from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>org.netbeans.modules.ant.freeform</type>
+    <configuration>
+        <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
+            <name>TransparentRuler</name>
+            <properties>
+                <property-file>user.build.properties</property-file>
+                <property-file>build.properties</property-file>
+                <property name="nbjdk.bootclasspath">${nbjdk.home}/jre/lib/rt.jar</property>
+            </properties>
+            <folders>
+                <source-folder>
+                    <label>JDK Demo</label>
+                    <location>${main.dir}</location>
+                </source-folder>
+                <source-folder>
+                    <label>Sources</label>
+                    <type>java</type>
+                    <location>${src.dir}</location>
+                </source-folder>
+                <build-folder>
+                    <location>${build.dir}</location>
+                </build-folder>
+            </folders>
+            <ide-actions>
+                <action name="build">
+                    <target>jar</target>
+                </action>
+                <action name="clean">
+                    <target>clean</target>
+                </action>
+                <action name="rebuild">
+                    <target>clean</target>
+                    <target>jar</target>
+                </action>
+                <action name="run">
+                    <target>run</target>
+                </action>
+                <action name="javadoc">
+                    <script>nbproject/netbeans-targets.xml</script>
+                    <target>show-javadoc</target>
+                </action>
+                <action name="debug">
+                    <script>nbproject/netbeans-targets.xml</script>
+                    <target>debug</target>
+                </action>
+                <action name="compile.single">
+                    <script>nbproject/file-targets.xml</script>
+                    <target>compile-selected</target>
+                    <context>
+                        <property>includes</property>
+                        <folder>${src.dir}</folder>
+                        <pattern>\.java$</pattern>
+                        <format>relative-path</format>
+                        <arity>
+                            <separated-files>,</separated-files>
+                        </arity>
+                    </context>
+                </action>
+                <action name="run.single">
+                    <target>run</target>
+                    <context>
+                        <property>main.class</property>
+                        <folder>${src.dir}</folder>
+                        <pattern>\.java$</pattern>
+                        <format>java-name</format>
+                        <arity>
+                            <one-file-only/>
+                        </arity>
+                    </context>
+                </action>
+                <action name="debug.single">
+                    <script>nbproject/netbeans-targets.xml</script>
+                    <target>debug</target>
+                    <context>
+                        <property>main.class</property>
+                        <folder>${src.dir}</folder>
+                        <pattern>\.java$</pattern>
+                        <format>java-name</format>
+                        <arity>
+                            <one-file-only/>
+                        </arity>
+                    </context>
+                </action>
+                <action name="debug.fix">
+                    <script>nbproject/netbeans-targets.xml</script>
+                    <target>debug-fix</target>
+                    <context>
+                        <property>class</property>
+                        <folder>${src.dir}</folder>
+                        <pattern>\.java$</pattern>
+                        <format>relative-path-noext</format>
+                        <arity>
+                            <one-file-only/>
+                        </arity>
+                    </context>
+                </action>
+            </ide-actions>
+            <export>
+                <type>jar</type>
+                <location>${jar}</location>
+                <build-target>jar</build-target>
+                <clean-target>clean</clean-target>
+            </export>
+            <view>
+                <items>
+                    <source-folder style="packages">
+                        <label>Sources</label>
+                        <location>${src.dir}</location>
+                    </source-folder>
+                    <source-file>
+                        <location>${main.dir}/README.txt</location>
+                    </source-file>
+                </items>
+                <context-menu>
+                    <ide-action name="build"/>
+                    <ide-action name="rebuild"/>
+                    <ide-action name="clean"/>
+                    <ide-action name="javadoc"/>
+                    <separator/>
+                    <ide-action name="run"/>
+                    <ide-action name="debug"/>
+                </context-menu>
+            </view>
+            <subprojects/>
+        </general-data>
+        <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/2">
+            <compilation-unit>
+                <package-root>${src.dir}</package-root>
+                <classpath mode="compile">${cp}</classpath>
+                <classpath mode="execute">${run.cp}</classpath>
+                <classpath mode="boot">${nbjdk.bootclasspath}</classpath>
+                <built-to>${classes.dir}</built-to>
+                <built-to>${jar}</built-to>
+                <javadoc-built-to>${javadoc.dir}</javadoc-built-to>
+                <source-level>1.5</source-level>
+            </compilation-unit>
+        </java-data>
+    </configuration>
+</project>
--- a/jdk/src/share/demo/nbproject/project.xml	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/nbproject/project.xml	Wed Apr 20 09:31:11 2011 -0700
@@ -50,6 +50,7 @@
                 <project>nbproject/jfc/Stylepad</project>
                 <project>nbproject/jfc/SwingApplet</project>
                 <project>nbproject/jfc/TableExample</project>
+                <project>nbproject/jfc/TransparentRuler</project>
                 <project>nbproject/scripting/jconsole-plugin</project>
                 <project>nbproject/management/FullThreadDump</project>
                 <project>nbproject/management/JTop</project>
--- a/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/JarFileSystemProvider.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/JarFileSystemProvider.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -12,7 +12,7 @@
  *     notice, this list of conditions and the following disclaimer in the
  *     documentation and/or other materials provided with the distribution.
  *
- *   - Neither the name of Sun Microsystems nor the names of its
+ *   - Neither the name of Oracle nor the names of its
  *     contributors may be used to endorse or promote products derived
  *     from this software without specific prior written permission.
  *
--- a/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
--- a/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileStore.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileStore.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
--- a/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
--- a/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
--- a/jdk/src/share/instrument/JPLISAgent.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/instrument/JPLISAgent.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/javavm/export/jvmti.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/javavm/export/jvmti.h	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/native/com/sun/java/util/jar/pack/unpack.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/unpack.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/native/common/check_code.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/common/check_code.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/native/java/io/io_util.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/java/io/io_util.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/native/java/lang/System.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/java/lang/System.c	Wed Apr 20 09:31:11 2011 -0700
@@ -99,7 +99,7 @@
 #ifndef VENDOR /* Third party may overwrite this. */
 #define VENDOR "Oracle Corporation"
 #define VENDOR_URL "http://java.oracle.com/"
-#define VENDOR_URL_BUG "http://java.sun.com/cgi-bin/bugreport.cgi"
+#define VENDOR_URL_BUG "http://bugreport.sun.com/bugreport/"
 #endif
 
 #define JAVA_MAX_SUPPORTED_VERSION 51
--- a/jdk/src/share/native/sun/awt/image/awt_parseImage.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/awt/image/awt_parseImage.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/native/sun/awt/image/jpeg/jpegdecoder.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/awt/image/jpeg/jpegdecoder.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/native/sun/awt/medialib/mlib_ImageAffine.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/awt/medialib/mlib_ImageAffine.c	Wed Apr 20 09:31:11 2011 -0700
@@ -210,6 +210,8 @@
     t_ind = 4;
   else if (type == MLIB_DOUBLE)
     t_ind = 5;
+  else
+    return MLIB_FAILURE; /* unknown image type */
 
   if (colormap != NULL && filter != MLIB_NEAREST) {
     if (t_ind != 0 && t_ind != 1)
@@ -318,6 +320,10 @@
         }
 
         break;
+
+    default:
+      /* nothing to do for other edge types. */
+      break;
     }
 
     if (param_e->buff_malloc != NULL)
--- a/jdk/src/share/native/sun/awt/medialib/mlib_ImageAffineEdge.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/awt/medialib/mlib_ImageAffineEdge.c	Wed Apr 20 09:31:11 2011 -0700
@@ -616,6 +616,9 @@
         MLIB_PROCESS_EDGES_ZERO(mlib_d64);
         break;
       }
+  default:
+    /* Image type MLIB_BIT is not used in java, so we can ignore it. */
+    break;
   }
 }
 
@@ -643,6 +646,9 @@
     case MLIB_DOUBLE:
       MLIB_PROCESS_EDGES(MLIB_EDGE_NEAREST_LINE, mlib_d64);
       break;
+  default:
+    /* Image type MLIB_BIT is not used in java, so we can ignore it. */
+    break;
   }
 }
 
@@ -673,8 +679,11 @@
     if (ltype == MLIB_BYTE) {
       buff = mlib_malloc(channels * max_xsize);
     }
-    else {
+    else if (ltype == MLIB_SHORT) {
       buff = mlib_malloc(channels * max_xsize * sizeof(mlib_s16));
+    } else {
+      /* Unsupported type of lookup table. Report a failure */
+      return MLIB_FAILURE;
     }
 
     if (buff == NULL)
@@ -691,6 +700,9 @@
             srcStride >>= 1;
             MLIB_PROCESS_EDGES(MLIB_EDGE_INDEX_u8i, mlib_s16);
             break;
+        default:
+          /* Incompatible image type. Ignore it for now. */
+          break;
         }
 
         break;
@@ -705,9 +717,18 @@
             srcStride >>= 1;
             MLIB_PROCESS_EDGES(MLIB_EDGE_INDEX_s16i, mlib_s16);
             break;
+        default:
+          /* Incompatible image type. Ignore it for now. */
+          break;
         }
 
         break;
+    default:
+      /* Unsupported type of lookup table.
+       * Can not be here due to check on line 685,
+       * so just ignore it.
+       */
+      break;
     }
 
     mlib_free(buff);
@@ -744,6 +765,10 @@
       srcStride >>= 3;
       MLIB_PROCESS_EDGES(MLIB_EDGE_BL, mlib_d64);
       break;
+
+  default:
+    /* Image type MLIB_BIT is not supported, ignore it. */
+    break;
   }
 
   return MLIB_SUCCESS;
@@ -803,8 +828,11 @@
     if (ltype == MLIB_BYTE) {
       buff = mlib_malloc(channels * max_xsize);
     }
-    else {
+    else if (ltype == MLIB_SHORT) {
       buff = mlib_malloc(channels * max_xsize * sizeof(mlib_s16));
+    } else {
+      /* Unsupported type of lookup table. */
+      return MLIB_FAILURE;
     }
 
     if (buff == NULL)
@@ -821,6 +849,9 @@
             srcStride >>= 1;
             MLIB_PROCESS_EDGES(MLIB_EDGE_INDEX_u8i, mlib_s16);
             break;
+        default:
+          /* Ignore incomatible image type. */
+          break;
         }
 
         break;
@@ -835,9 +866,19 @@
             srcStride >>= 1;
             MLIB_PROCESS_EDGES(MLIB_EDGE_INDEX_s16i, mlib_s16);
             break;
+        default:
+          /* Ignore incomatible image type. */
+          break;
         }
 
         break;
+
+    default:
+      /* Unsupported type of lookup table.
+       * Can not be here due to check on line 836,
+       * so just ignore it.
+       */
+      break;
     }
 
     mlib_free(buff);
@@ -895,6 +936,10 @@
       }
 
       break;
+
+  default:
+    /* Ignore unsupported image type MLIB_BIT */
+    break;
   }
 
   return MLIB_SUCCESS;
--- a/jdk/src/share/native/sun/awt/medialib/mlib_ImageColorTrue2Index.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/awt/medialib/mlib_ImageColorTrue2Index.c	Wed Apr 20 09:31:11 2011 -0700
@@ -2623,9 +2623,10 @@
                   return MLIB_FAILURE;
               }
             }
+        default:
+          /* Unsupported type of destination image */
+          return MLIB_FAILURE;
         }
-
-        break;
       }
 
     case MLIB_SHORT:
@@ -2678,18 +2679,15 @@
                   return MLIB_FAILURE;
               }
             }
+        default:
+          /* Unsupported type of destination image */
+          return MLIB_FAILURE;
         }
-
-        break;
       }
 
     default:
       return MLIB_FAILURE;
   }
-
-  /* we need to return something to make Microsoft VC happy.
-     Return FAILURE because on success we likely to return earlier. */
-  return MLIB_FAILURE;
 }
 
 /***************************************************************/
--- a/jdk/src/share/native/sun/awt/medialib/mlib_ImageConvMxN.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/awt/medialib/mlib_ImageConvMxN.c	Wed Apr 20 09:31:11 2011 -0700
@@ -211,6 +211,13 @@
         case MLIB_DOUBLE:
           ret = mlib_convMxNnw_d64(dst_i, src_i, kernel, m, n, dm, dn, cmask);
           break;
+
+      default:
+        /* For some reasons, there is no convolution routine for type MLIB_BIT.
+         * For now, we silently ignore it (because this image type is not used by java),
+         * but probably we have to report an error.
+         */
+        break;
       }
     }
 
@@ -221,6 +228,11 @@
       case MLIB_EDGE_DST_COPY_SRC:
         mlib_ImageConvCopyEdge(dst_e, src_e, dx_l, dx_r, dy_t, dy_b, cmask);
         break;
+    default:
+      /* Other edge conditions do not need additional handling.
+       *  Note also that they are not exposed in public Java API
+       */
+      break;
     }
   }
   else {                                    /* MLIB_EDGE_SRC_EXTEND */
@@ -279,6 +291,12 @@
       case MLIB_DOUBLE:
         mlib_convMxNext_d64(dst_e, src_e, kernel, m, n, dx_l, dx_r, dy_t, dy_b, cmask);
         break;
+    default:
+      /* For some reasons, there is no convolution routine for type MLIB_BIT.
+       * For now, we silently ignore it (because this image type is not used by java),
+       * but probably we have to report an error.
+       */
+      break;
     }
   }
 
--- a/jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1869,8 +1869,8 @@
 /***************************************************************/
 mlib_status CONV_FUNC_MxN
 {
-  DTYPE    *adr_src, *sl, *sp;
-  DTYPE    *adr_dst, *dl, *dp;
+  DTYPE    *adr_src, *sl, *sp = NULL;
+  DTYPE    *adr_dst, *dl, *dp = NULL;
   FTYPE    buff[BUFF_SIZE], *buffs_arr[2*(MAX_N + 1)];
   FTYPE    **buffs = buffs_arr, *buffd;
   FTYPE    akernel[256], *k = akernel, fscale = DSCALE;
@@ -2332,8 +2332,8 @@
 
 mlib_status CONV_FUNC_MxN_I
 {
-  DTYPE    *adr_src, *sl, *sp;
-  DTYPE    *adr_dst, *dl, *dp;
+  DTYPE    *adr_src, *sl, *sp = NULL;
+  DTYPE    *adr_dst, *dl, *dp = NULL;
   mlib_s32 buff[BUFF_SIZE], *buffs_arr[2*(MAX_N + 1)];
   mlib_s32 *pbuff = buff;
   mlib_s32 **buffs = buffs_arr, *buffd;
--- a/jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c	Wed Apr 20 09:31:11 2011 -0700
@@ -148,8 +148,8 @@
 
 /***************************************************************/
 #define DEF_VARS(type)                                          \
-  type     *adr_src, *sl, *sp;                                  \
-  type     *adr_dst, *dl, *dp;                                  \
+  type     *adr_src, *sl, *sp = NULL;                           \
+  type     *adr_dst, *dl, *dp = NULL;                           \
   FTYPE    *pbuff = buff;                                       \
   mlib_s32 wid, hgt, sll, dll;                                  \
   mlib_s32 nchannel, chan1;                                     \
@@ -2060,8 +2060,8 @@
   mlib_s32 d0, d1, shift1, shift2;
   mlib_s32 k0, k1, k2, k3, k4, k5, k6;
   mlib_s32 p0, p1, p2, p3, p4, p5, p6, p7;
-  DTYPE    *adr_src, *sl, *sp;
-  DTYPE    *adr_dst, *dl, *dp;
+  DTYPE    *adr_src, *sl, *sp = NULL;
+  DTYPE    *adr_dst, *dl, *dp = NULL;
   mlib_s32 wid, hgt, sll, dll;
   mlib_s32 nchannel, chan1;
   mlib_s32 i, j, c;
--- a/jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_32nw.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_32nw.c	Wed Apr 20 09:31:11 2011 -0700
@@ -78,7 +78,7 @@
 /***************************************************************/
 #define DEF_VARS_MxN(type)                                      \
   GET_SRC_DST_PARAMETERS(type);                                 \
-  type     *sl, *sp, *dl, *dp;                                  \
+  type     *sl, *sp = NULL, *dl, *dp = NULL;                    \
   mlib_d64 *pbuff = buff;                                       \
   mlib_s32 i, j, c
 
--- a/jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1869,8 +1869,8 @@
 /***************************************************************/
 mlib_status CONV_FUNC_MxN
 {
-  DTYPE    *adr_src, *sl, *sp;
-  DTYPE    *adr_dst, *dl, *dp;
+  DTYPE    *adr_src, *sl, *sp = NULL;
+  DTYPE    *adr_dst, *dl, *dp = NULL;
   FTYPE    buff[BUFF_SIZE], *buffs_arr[2*(MAX_N + 1)];
   FTYPE    **buffs = buffs_arr, *buffd;
   FTYPE    akernel[256], *k = akernel, fscale = DSCALE;
@@ -2332,8 +2332,8 @@
 
 mlib_status CONV_FUNC_MxN_I
 {
-  DTYPE    *adr_src, *sl, *sp;
-  DTYPE    *adr_dst, *dl, *dp;
+  DTYPE    *adr_src, *sl, *sp = NULL;
+  DTYPE    *adr_dst, *dl, *dp = NULL;
   mlib_s32 buff[BUFF_SIZE], *buffs_arr[2*(MAX_N + 1)];
   mlib_s32 *pbuff = buff;
   mlib_s32 **buffs = buffs_arr, *buffd;
--- a/jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c	Wed Apr 20 09:31:11 2011 -0700
@@ -149,8 +149,8 @@
 
 /***************************************************************/
 #define DEF_VARS(type)                                          \
-  type     *adr_src, *sl, *sp;                                  \
-  type     *adr_dst, *dl, *dp;                                  \
+  type     *adr_src, *sl, *sp = NULL;                           \
+  type     *adr_dst, *dl, *dp = NULL;                           \
   FTYPE    *pbuff = buff;                                       \
   mlib_s32 wid, hgt, sll, dll;                                  \
   mlib_s32 nchannel, chan1;                                     \
@@ -2061,8 +2061,8 @@
   mlib_s32 d0, d1, shift1, shift2;
   mlib_s32 k0, k1, k2, k3, k4, k5, k6;
   mlib_s32 p0, p1, p2, p3, p4, p5, p6, p7;
-  DTYPE    *adr_src, *sl, *sp;
-  DTYPE    *adr_dst, *dl, *dp;
+  DTYPE    *adr_src, *sl, *sp = NULL;
+  DTYPE    *adr_dst, *dl, *dp = NULL;
   mlib_s32 wid, hgt, sll, dll;
   mlib_s32 nchannel, chan1;
   mlib_s32 i, j, c;
--- a/jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_D64nw.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_D64nw.c	Wed Apr 20 09:31:11 2011 -0700
@@ -71,8 +71,8 @@
 #define DEF_VARS(type)                                          \
   GET_SRC_DST_PARAMETERS(type);                                 \
   type     *sl;                                                 \
-  type     *dl, *dp;                                            \
-  mlib_s32 i, j, c
+  type     *dl, *dp = NULL;                                     \
+  mlib_s32 i = 0, j, c
 
 /***************************************************************/
 #undef  KSIZE
--- a/jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_F32nw.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_F32nw.c	Wed Apr 20 09:31:11 2011 -0700
@@ -71,7 +71,7 @@
 #define DEF_VARS(type)                                          \
   GET_SRC_DST_PARAMETERS(type);                                 \
   type     *sl;                                                 \
-  type     *dl, *dp;                                            \
+  type     *dl, *dp = NULL;                                     \
   mlib_s32 i, j, c
 
 /***************************************************************/
--- a/jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1869,8 +1869,8 @@
 /***************************************************************/
 mlib_status CONV_FUNC_MxN
 {
-  DTYPE    *adr_src, *sl, *sp;
-  DTYPE    *adr_dst, *dl, *dp;
+  DTYPE    *adr_src, *sl, *sp = NULL;
+  DTYPE    *adr_dst, *dl, *dp = NULL;
   FTYPE    buff[BUFF_SIZE], *buffs_arr[2*(MAX_N + 1)];
   FTYPE    **buffs = buffs_arr, *buffd;
   FTYPE    akernel[256], *k = akernel, fscale = DSCALE;
@@ -2332,8 +2332,8 @@
 
 mlib_status CONV_FUNC_MxN_I
 {
-  DTYPE    *adr_src, *sl, *sp;
-  DTYPE    *adr_dst, *dl, *dp;
+  DTYPE    *adr_src, *sl, *sp = NULL;
+  DTYPE    *adr_dst, *dl, *dp = NULL;
   mlib_s32 buff[BUFF_SIZE], *buffs_arr[2*(MAX_N + 1)];
   mlib_s32 *pbuff = buff;
   mlib_s32 **buffs = buffs_arr, *buffd;
--- a/jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c	Wed Apr 20 09:31:11 2011 -0700
@@ -148,8 +148,8 @@
 
 /***************************************************************/
 #define DEF_VARS(type)                                          \
-  type     *adr_src, *sl, *sp;                                  \
-  type     *adr_dst, *dl, *dp;                                  \
+  type     *adr_src, *sl, *sp = NULL;                           \
+  type     *adr_dst, *dl, *dp = NULL;                           \
   FTYPE    *pbuff = buff;                                       \
   mlib_s32 wid, hgt, sll, dll;                                  \
   mlib_s32 nchannel, chan1;                                     \
@@ -2060,8 +2060,8 @@
   mlib_s32 d0, d1, shift1, shift2;
   mlib_s32 k0, k1, k2, k3, k4, k5, k6;
   mlib_s32 p0, p1, p2, p3, p4, p5, p6, p7;
-  DTYPE    *adr_src, *sl, *sp;
-  DTYPE    *adr_dst, *dl, *dp;
+  DTYPE    *adr_src, *sl, *sp = NULL;
+  DTYPE    *adr_dst, *dl, *dp = NULL;
   mlib_s32 wid, hgt, sll, dll;
   mlib_s32 nchannel, chan1;
   mlib_s32 i, j, c;
--- a/jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c	Wed Apr 20 09:31:11 2011 -0700
@@ -204,9 +204,9 @@
   mlib_u64 *dp;          /* 8-byte aligned start points in dst */
   mlib_u64 *sp;          /* 8-byte aligned start point in src */
   mlib_s32 j;            /* offset of address in dst */
-  mlib_u64 lmask0 = 0xFFFFFFFFFFFFFFFF;
+  mlib_u64 lmask0 = 0xFFFFFFFFFFFFFFFFULL;
   mlib_u64 dmask;
-  mlib_u64 lsrc, lsrc0, lsrc1, ldst;
+  mlib_u64 lsrc, lsrc0, lsrc1 = 0ULL, ldst;
   mlib_s32 ls_offset, ld_offset, shift;
 
   if (size <= 0) return;
@@ -427,9 +427,9 @@
   mlib_u64 *dp;          /* 8-byte aligned start points in dst */
   mlib_u64 *sp;          /* 8-byte aligned start point in src */
   mlib_s32 j;            /* offset of address in dst */
-  mlib_u64 lmask0 = 0xFFFFFFFFFFFFFFFF;
+  mlib_u64 lmask0 = 0xFFFFFFFFFFFFFFFFULL;
   mlib_u64 dmask;
-  mlib_u64 lsrc, lsrc0, lsrc1, ldst;
+  mlib_u64 lsrc, lsrc0, lsrc1 = 0ULL, ldst;
   mlib_s32 ls_offset, ld_offset, shift;
 
   if (size <= 0) return;
--- a/jdk/src/share/native/sun/awt/medialib/mlib_ImageCreate.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/awt/medialib/mlib_ImageCreate.c	Wed Apr 20 09:31:11 2011 -0700
@@ -334,7 +334,7 @@
   mlib_s32       width;                 /* for parent image */
   mlib_s32       height;                /* for parent image */
   mlib_s32       stride;
-  mlib_s32       bitoffset;
+  mlib_s32       bitoffset = 0;
   void           *data;
 
 /* sanity check */
@@ -423,7 +423,7 @@
   mlib_s32   channels = src -> channels;
   mlib_s32   stride   = src -> stride;
   mlib_u8    *data    = src -> data;
-  mlib_s32   bitoffset;
+  mlib_s32   bitoffset = 0;
 
   data += y * stride;
 
--- a/jdk/src/share/native/sun/awt/splashscreen/splashscreen_gfx_impl.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/awt/splashscreen/splashscreen_gfx_impl.h	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/native/sun/font/FontInstanceAdapter.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/font/FontInstanceAdapter.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/native/sun/java2d/loops/MaskFill.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/java2d/loops/MaskFill.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/native/sun/java2d/loops/ParallelogramUtils.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/java2d/loops/ParallelogramUtils.h	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/native/sun/java2d/loops/ProcessPath.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/java2d/loops/ProcessPath.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/native/sun/java2d/pipe/BufferedMaskBlit.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/java2d/pipe/BufferedMaskBlit.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/share/native/sun/security/ec/impl/ec.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ec.c	Wed Apr 20 09:31:11 2011 -0700
@@ -51,7 +51,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ec.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ec.h	Wed Apr 20 09:31:11 2011 -0700
@@ -50,7 +50,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ec2.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ec2.h	Wed Apr 20 09:31:11 2011 -0700
@@ -50,7 +50,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ec2_163.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ec2_163.c	Wed Apr 20 09:31:11 2011 -0700
@@ -52,7 +52,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ec2_193.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ec2_193.c	Wed Apr 20 09:31:11 2011 -0700
@@ -52,7 +52,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ec2_233.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ec2_233.c	Wed Apr 20 09:31:11 2011 -0700
@@ -52,7 +52,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ec2_aff.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ec2_aff.c	Wed Apr 20 09:31:11 2011 -0700
@@ -50,7 +50,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ec2_mont.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ec2_mont.c	Wed Apr 20 09:31:11 2011 -0700
@@ -52,7 +52,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ec_naf.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ec_naf.c	Wed Apr 20 09:31:11 2011 -0700
@@ -50,7 +50,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ecc_impl.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ecc_impl.h	Wed Apr 20 09:31:11 2011 -0700
@@ -51,7 +51,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ecdecode.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ecdecode.c	Wed Apr 20 09:31:11 2011 -0700
@@ -51,7 +51,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ecl-curve.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ecl-curve.h	Wed Apr 20 09:31:11 2011 -0700
@@ -50,7 +50,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ecl-exp.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ecl-exp.h	Wed Apr 20 09:31:11 2011 -0700
@@ -50,7 +50,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ecl-priv.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ecl-priv.h	Wed Apr 20 09:31:11 2011 -0700
@@ -51,7 +51,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ecl.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ecl.c	Wed Apr 20 09:31:11 2011 -0700
@@ -50,7 +50,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ecl.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ecl.h	Wed Apr 20 09:31:11 2011 -0700
@@ -50,7 +50,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ecl_curve.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ecl_curve.c	Wed Apr 20 09:31:11 2011 -0700
@@ -50,7 +50,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ecl_gf.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ecl_gf.c	Wed Apr 20 09:31:11 2011 -0700
@@ -51,7 +51,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ecl_mult.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ecl_mult.c	Wed Apr 20 09:31:11 2011 -0700
@@ -50,7 +50,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ecp.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ecp.h	Wed Apr 20 09:31:11 2011 -0700
@@ -50,7 +50,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ecp_192.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ecp_192.c	Wed Apr 20 09:31:11 2011 -0700
@@ -50,7 +50,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ecp_224.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ecp_224.c	Wed Apr 20 09:31:11 2011 -0700
@@ -50,7 +50,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ecp_256.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ecp_256.c	Wed Apr 20 09:31:11 2011 -0700
@@ -50,7 +50,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ecp_384.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ecp_384.c	Wed Apr 20 09:31:11 2011 -0700
@@ -50,7 +50,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ecp_521.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ecp_521.c	Wed Apr 20 09:31:11 2011 -0700
@@ -50,7 +50,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ecp_aff.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ecp_aff.c	Wed Apr 20 09:31:11 2011 -0700
@@ -55,7 +55,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ecp_jac.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ecp_jac.c	Wed Apr 20 09:31:11 2011 -0700
@@ -55,7 +55,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ecp_jm.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ecp_jm.c	Wed Apr 20 09:31:11 2011 -0700
@@ -50,7 +50,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ecp_mont.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/ecp_mont.c	Wed Apr 20 09:31:11 2011 -0700
@@ -50,7 +50,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/logtab.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/logtab.h	Wed Apr 20 09:31:11 2011 -0700
@@ -50,7 +50,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/mp_gf2m-priv.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/mp_gf2m-priv.h	Wed Apr 20 09:31:11 2011 -0700
@@ -51,7 +51,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/mp_gf2m.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/mp_gf2m.c	Wed Apr 20 09:31:11 2011 -0700
@@ -51,7 +51,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/mp_gf2m.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/mp_gf2m.h	Wed Apr 20 09:31:11 2011 -0700
@@ -51,7 +51,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/mpi-config.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/mpi-config.h	Wed Apr 20 09:31:11 2011 -0700
@@ -50,7 +50,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/mpi-priv.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/mpi-priv.h	Wed Apr 20 09:31:11 2011 -0700
@@ -56,7 +56,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/mpi.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/mpi.c	Wed Apr 20 09:31:11 2011 -0700
@@ -54,7 +54,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/mpi.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/mpi.h	Wed Apr 20 09:31:11 2011 -0700
@@ -53,7 +53,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/mplogic.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/mplogic.c	Wed Apr 20 09:31:11 2011 -0700
@@ -52,7 +52,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/mplogic.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/mplogic.h	Wed Apr 20 09:31:11 2011 -0700
@@ -52,7 +52,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/mpmontg.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/mpmontg.c	Wed Apr 20 09:31:11 2011 -0700
@@ -52,7 +52,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/mpprime.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/mpprime.h	Wed Apr 20 09:31:11 2011 -0700
@@ -53,7 +53,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/oid.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/oid.c	Wed Apr 20 09:31:11 2011 -0700
@@ -50,7 +50,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/secitem.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/secitem.c	Wed Apr 20 09:31:11 2011 -0700
@@ -49,7 +49,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/native/sun/security/ec/impl/secoidt.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/native/sun/security/ec/impl/secoidt.h	Wed Apr 20 09:31:11 2011 -0700
@@ -50,7 +50,7 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
--- a/jdk/src/share/sample/nio/file/AclEdit.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/sample/nio/file/AclEdit.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
--- a/jdk/src/share/sample/nio/file/Chmod.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/sample/nio/file/Chmod.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
--- a/jdk/src/share/sample/nio/file/Copy.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/sample/nio/file/Copy.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
--- a/jdk/src/share/sample/nio/file/DiskUsage.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/sample/nio/file/DiskUsage.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
--- a/jdk/src/share/sample/nio/file/FileType.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/sample/nio/file/FileType.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
--- a/jdk/src/share/sample/nio/file/WatchDir.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/sample/nio/file/WatchDir.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
--- a/jdk/src/share/sample/nio/file/Xdd.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/share/sample/nio/file/Xdd.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
--- a/jdk/src/solaris/classes/java/lang/ProcessEnvironment.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/java/lang/ProcessEnvironment.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/awt/X11/GtkFileDialogPeer.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/GtkFileDialogPeer.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/awt/X11/XDesktopPeer.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XDesktopPeer.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/awt/X11/XGlobalCursorManager.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XGlobalCursorManager.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/awt/X11/XRobotPeer.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XRobotPeer.java	Wed Apr 20 09:31:11 2011 -0700
@@ -48,7 +48,7 @@
     }
 
     public void dispose() {
-        // does nothing
+        _dispose();
     }
 
     public void mouseMove(int x, int y) {
@@ -88,6 +88,7 @@
     }
 
     private static native synchronized void setup(int numberOfButtons, int[] buttonDownMasks);
+    private static native synchronized void _dispose();
 
     private static native synchronized void mouseMoveImpl(X11GraphicsConfig xgc, int x, int y);
     private static native synchronized void mousePressImpl(int buttons);
--- a/jdk/src/solaris/classes/sun/awt/X11/XSelection.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XSelection.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1228,8 +1228,8 @@
     public PrintJob getPrintJob(final Frame frame, final String doctitle,
                                 final Properties props) {
 
-        if (GraphicsEnvironment.isHeadless()) {
-            throw new IllegalArgumentException();
+        if (frame == null) {
+            throw new NullPointerException("frame must not be null");
         }
 
         PrintJob2D printJob = new PrintJob2D(frame, doctitle, props);
@@ -1242,11 +1242,10 @@
 
     public PrintJob getPrintJob(final Frame frame, final String doctitle,
                 final JobAttributes jobAttributes,
-                final PageAttributes pageAttributes) {
-
-
-        if (GraphicsEnvironment.isHeadless()) {
-            throw new IllegalArgumentException();
+                final PageAttributes pageAttributes)
+    {
+        if (frame == null) {
+            throw new NullPointerException("frame must not be null");
         }
 
         PrintJob2D printJob = new PrintJob2D(frame, doctitle,
--- a/jdk/src/solaris/classes/sun/awt/motif/MFontConfiguration.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/awt/motif/MFontConfiguration.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/awt/motif/MToolkit.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/awt/motif/MToolkit.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/font/FcFontConfiguration.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/font/FcFontConfiguration.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/font/FontConfigManager.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/font/FontConfigManager.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/font/XRGlyphCache.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/font/XRGlyphCache.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/java2d/xr/XRPMBlitLoops.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/java2d/xr/XRPMBlitLoops.java	Wed Apr 20 09:31:11 2011 -0700
@@ -143,7 +143,8 @@
 
         Blit swToSurfaceBlit = Blit.getFromCache(src.getSurfaceType(), CompositeType.SrcNoEa, vImgSurfaceType);
         XRSurfaceData vImgSurface = (XRSurfaceData) vImg.getDestSurface();
-        swToSurfaceBlit.Blit(src, vImgSurface, null, null, sx, sy, 0, 0, w, h);
+        swToSurfaceBlit.Blit(src, vImgSurface, AlphaComposite.Src, null,
+                             sx, sy, 0, 0, w, h);
 
         return vImgSurface;
     }
--- a/jdk/src/solaris/classes/sun/java2d/xr/XRSurfaceData.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/java2d/xr/XRSurfaceData.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/net/www/protocol/http/ntlm/NTLMAuthentication.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/net/www/protocol/http/ntlm/NTLMAuthentication.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystemProvider.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystemProvider.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystemProvider.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystemProvider.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/nio/fs/SolarisWatchService.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/SolarisWatchService.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixChannelFactory.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixChannelFactory.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixSecureDirectoryStream.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixSecureDirectoryStream.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixUriUtils.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixUriUtils.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_CommonUtils.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_CommonUtils.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_MidiIn.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_MidiIn.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/native/java/net/Inet6AddressImpl.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/java/net/Inet6AddressImpl.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/native/java/net/NetworkInterface.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/java/net/NetworkInterface.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/native/java/net/PlainSocketImpl.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/java/net/PlainSocketImpl.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/native/java/net/linux_close.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/java/net/linux_close.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/native/java/net/net_util_md.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/java/net/net_util_md.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/native/sun/awt/awt_DrawingSurface.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/sun/awt/awt_DrawingSurface.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/native/sun/awt/awt_Robot.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/sun/awt/awt_Robot.c	Wed Apr 20 09:31:11 2011 -0700
@@ -48,12 +48,28 @@
 #ifdef __linux__
 #include <sys/socket.h>
 #endif
+#include <dlfcn.h>
 
 extern struct X11GraphicsConfigIDs x11GraphicsConfigIDs;
 
 static jint * masks;
 static jint num_buttons;
 
+static unsigned int s_robotInstanceCounter = 0;
+
+static void* xcompositeLibHandle = NULL;
+static Bool xcompositeExtAvailable = False;
+static Bool xcompositeExtTested = False;
+
+typedef Status (*T_XCompositeQueryVersion)(Display *dpy, int *major_versionp, int *minor_versionp);
+typedef Window (*T_XCompositeGetOverlayWindow)(Display *dpy, Window window);
+typedef void (*T_XCompositeReleaseOverlayWindow)(Display *dpy, Window window);
+
+static T_XCompositeQueryVersion XCompositeQueryVersion = NULL;
+static T_XCompositeGetOverlayWindow XCompositeGetOverlayWindow = NULL;
+static T_XCompositeReleaseOverlayWindow XCompositeReleaseOverlayWindow = NULL;
+
+
 static int32_t isXTestAvailable() {
     int32_t major_opcode, first_event, first_error;
     int32_t  event_basep, error_basep, majorp, minorp;
@@ -194,8 +210,80 @@
     }
 
     AWT_UNLOCK();
+
+    s_robotInstanceCounter++;
+}
+
+JNIEXPORT void JNICALL
+Java_sun_awt_X11_XRobotPeer__1dispose (JNIEnv * env, jclass cls)
+{
+    if (--s_robotInstanceCounter) {
+        return;
+    }
+
+    // This is the last instance of the XRobotPeer being released
+
+    if (xcompositeExtTested && xcompositeExtAvailable && xcompositeLibHandle) {
+        // The lib is loaded in IsXCompositeAvailable(). Unload under AWT_LOCK
+        // so that the shutdown function of the lib behaves correctly.
+        AWT_LOCK();
+        dlclose(xcompositeLibHandle);
+        AWT_UNLOCK();
+    }
+
+    xcompositeExtTested = False;
+    xcompositeExtAvailable = False;
+    xcompositeLibHandle = NULL;
 }
 
+/*
+ * Returns True only if XCOMPOSITE is of version 0.3 or higher.
+ * The functions that we need are available since that version.
+ *
+ * Must be invoked under AWT_LOCK.
+ *
+ * Leaves the library loaded if the version is correct.
+ */
+static Bool IsXCompositeAvailable()
+{
+    if (!xcompositeExtTested) {
+        int opcode, eventb, errorb;
+
+        if (XQueryExtension(awt_display, "Composite", &opcode, &eventb, &errorb)) {
+            xcompositeLibHandle = dlopen("libXcomposite.so.1", RTLD_LAZY | RTLD_GLOBAL);
+#ifndef __linux__ /* SOLARIS */
+            if (xcompositeLibHandle == NULL) {
+                xcompositeLibHandle = dlopen("/usr/sfw/lib/libXcomposite.so.1",
+                        RTLD_LAZY | RTLD_GLOBAL);
+            }
+#endif
+
+            if (xcompositeLibHandle) {
+                int major, minor;
+                XCompositeQueryVersion = (T_XCompositeQueryVersion)dlsym(xcompositeLibHandle, "XCompositeQueryVersion");
+
+                if (XCompositeQueryVersion && XCompositeQueryVersion(awt_display, &major, &minor)) {
+                    if (major >= 0 && minor >= 3) {
+                        XCompositeGetOverlayWindow = (T_XCompositeGetOverlayWindow)dlsym(xcompositeLibHandle, "XCompositeGetOverlayWindow");
+                        XCompositeReleaseOverlayWindow = (T_XCompositeReleaseOverlayWindow)dlsym(xcompositeLibHandle, "XCompositeReleaseOverlayWindow");
+
+                        if (XCompositeGetOverlayWindow && XCompositeReleaseOverlayWindow) {
+                            xcompositeExtAvailable = True;
+                        }
+                    }
+                }
+
+                if (!xcompositeExtAvailable) {
+                    dlclose(xcompositeLibHandle);
+                } /* else the lib is unloaded in _dispose() */
+            }
+        }
+
+        xcompositeExtTested = True;
+    }
+
+    return xcompositeExtAvailable;
+}
 
 JNIEXPORT void JNICALL
 Java_sun_awt_X11_XRobotPeer_getRGBPixelsImpl( JNIEnv *env,
@@ -211,7 +299,7 @@
     jint *ary;               /* Array of jints for sending pixel values back
                               * to parent process.
                               */
-    Window rootWindow;
+    Window window;
     AwtGraphicsConfigDataPtr adata;
 
     DTRACE_PRINTLN6("RobotPeer: getRGBPixelsImpl(%lx, %d, %d, %d, %d, %x)", xgc, x, y, width, height, pixelArray);
@@ -228,14 +316,24 @@
     adata = (AwtGraphicsConfigDataPtr) JNU_GetLongFieldAsPtr(env, xgc, x11GraphicsConfigIDs.aData);
     DASSERT(adata != NULL);
 
-    rootWindow = XRootWindow(awt_display, adata->awt_visInfo.screen);
-    image = getWindowImage(awt_display, rootWindow, x, y, width, height);
+    window = XRootWindow(awt_display, adata->awt_visInfo.screen);
+
+    if (IsXCompositeAvailable()) {
+        // Use 'composite overlay window' instead of the root window.
+        // See 6903034 for details.
+        window = XCompositeGetOverlayWindow(awt_display, window);
+    }
+
+    image = getWindowImage(awt_display, window, x, y, width, height);
 
     /* Array to use to crunch around the pixel values */
     ary = (jint *) malloc(width * height * sizeof (jint));
     if (ary == NULL) {
         JNU_ThrowOutOfMemoryError(env, "OutOfMemoryError");
         XDestroyImage(image);
+        if (IsXCompositeAvailable()) {
+            XCompositeReleaseOverlayWindow(awt_display, window);
+        }
         AWT_UNLOCK();
         return;
     }
@@ -256,6 +354,9 @@
     free(ary);
 
     XDestroyImage(image);
+    if (IsXCompositeAvailable()) {
+        XCompositeReleaseOverlayWindow(awt_display, window);
+    }
 
     AWT_UNLOCK();
 }
--- a/jdk/src/solaris/native/sun/awt/fontpath.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/sun/awt/fontpath.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/native/sun/awt/gtk2_interface.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/sun/awt/gtk2_interface.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/native/sun/awt/gtk2_interface.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/sun/awt/gtk2_interface.h	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/native/sun/java2d/loops/vis_IntArgbPre_Mask.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/sun/java2d/loops/vis_IntArgbPre_Mask.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/native/sun/java2d/loops/vis_SrcMaskFill.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/sun/java2d/loops/vis_SrcMaskFill.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.h	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/native/sun/java2d/x11/XRBackendNative.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/sun/java2d/x11/XRBackendNative.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
@@ -644,7 +644,7 @@
     for (i=0; i < glyphCnt; i++) {
       GlyphInfo *jginfo = (GlyphInfo *) jlong_to_ptr(glyphInfoPtrs[i]);
 
-      gid[i] = (Glyph) (0xffffffff & ((unsigned int) jginfo->cellInfo));
+      gid[i] = (Glyph) (0x0ffffffffL & ((unsigned long)(jginfo->cellInfo)));
       xginfo[i].x = (-jginfo->topLeftX);
       xginfo[i].y = (-jginfo->topLeftY);
       xginfo[i].width = jginfo->width;
@@ -666,16 +666,56 @@
 JNIEXPORT void JNICALL
 Java_sun_java2d_xr_XRBackendNative_XRFreeGlyphsNative
  (JNIEnv *env, jclass cls, jint glyphSet, jintArray gidArray, jint glyphCnt) {
-    jint *gids;
-    int i;
 
-    if ((gids = (jint *) (*env)->GetPrimitiveArrayCritical(env, gidArray, NULL)) == NULL) {
+    /* The glyph ids are 32 bit but may be stored in a 64 bit long on
+     * a 64 bit architecture. So optimise the 32 bit case to avoid
+     * extra stack or heap allocations by directly referencing the
+     * underlying Java array and only allocate on 64 bit.
+     */
+    if (sizeof(jint) == sizeof(Glyph)) {
+        jint *gids =
+            (*env)->GetPrimitiveArrayCritical(env, gidArray, NULL);
+        if (gids == NULL) {
+            return;
+        } else {
+             XRenderFreeGlyphs(awt_display,
+                               (GlyphSet)glyphSet, (Glyph *)gids, glyphCnt);
+             (*env)->ReleasePrimitiveArrayCritical(env, gidArray,
+                                                   gids, JNI_ABORT);
+        }
         return;
-    }
+    } else {
+        Glyph stack_ids[64];
+        Glyph *gids = NULL;
+        jint* jgids = NULL;
+        int i;
 
-    XRenderFreeGlyphs (awt_display, (GlyphSet) glyphSet, (Glyph *) gids, glyphCnt);
-
-    (*env)->ReleasePrimitiveArrayCritical(env, gidArray, gids, JNI_ABORT);
+        if (glyphCnt <= 64) {
+            gids = stack_ids;
+        } else {
+            gids = (Glyph *)malloc(sizeof(Glyph) * glyphCnt);
+            if (gids == NULL) {
+                return;
+            }
+        }
+        jgids = (*env)->GetPrimitiveArrayCritical(env, gidArray, NULL);
+        if (jgids == NULL) {
+            if (gids != stack_ids) {
+                free(gids);
+            }
+            return;
+        }
+        for (i=0; i < glyphCnt; i++) {
+            gids[i] = jgids[i];
+        }
+        XRenderFreeGlyphs(awt_display,
+                          (GlyphSet) glyphSet, gids, glyphCnt);
+        (*env)->ReleasePrimitiveArrayCritical(env, gidArray,
+                                              jgids, JNI_ABORT);
+        if (gids != stack_ids) {
+            free(gids);
+        }
+    }
 }
 
 JNIEXPORT jint JNICALL
@@ -692,9 +732,9 @@
     jint *ids;
     jint *elts;
     XGlyphElt32 *xelts;
-    Glyph *xids;
+    unsigned int *xids;
     XGlyphElt32 selts[24];
-    Glyph sids[256];
+    unsigned int sids[256];
     int charCnt = 0;
 
     if (eltCnt <= 24) {
@@ -709,7 +749,7 @@
     if (glyphCnt <= 256) {
       xids = &sids[0];
     } else {
-      xids = (Glyph *) malloc(sizeof(Glyph) * glyphCnt);
+      xids = (unsigned int*)malloc(sizeof(unsigned int) * glyphCnt);
       if (xids == NULL) {
           if (xelts != &selts[0]) {
             free(xelts);
@@ -742,7 +782,7 @@
     }
 
     for (i=0; i < glyphCnt; i++) {
-      xids[i] = (Glyph) ids[i];
+      xids[i] = ids[i];
     }
 
     for (i=0; i < eltCnt; i++) {
@@ -750,7 +790,7 @@
       xelts[i].xOff = elts[i*4 + 1];
       xelts[i].yOff = elts[i*4 + 2];
       xelts[i].glyphset = (GlyphSet) elts[i*4 + 3];
-      xelts[i].chars = (unsigned int *) &xids[charCnt];
+      xelts[i].chars = &xids[charCnt];
 
       charCnt += xelts[i].nchars;
     }
--- a/jdk/src/solaris/native/sun/java2d/x11/XRSurfaceData.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/sun/java2d/x11/XRSurfaceData.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/native/sun/nio/ch/FileChannelImpl.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/sun/nio/ch/FileChannelImpl.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/native/sun/nio/ch/Net.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/sun/nio/ch/Net.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/solaris/native/sun/xawt/awt_Desktop.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/solaris/native/sun/xawt/awt_Desktop.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/bin/java_md.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/bin/java_md.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/java/lang/ProcessEnvironment.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/java/lang/ProcessEnvironment.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. 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
@@ -143,7 +143,7 @@
                 public void remove() { i.remove();}
             };
         }
-        private static Map.Entry<String,String> checkedEntry (Object o) {
+        private static Map.Entry<String,String> checkedEntry(Object o) {
             Map.Entry<String,String> e = (Map.Entry<String,String>) o;
             nonNullString(e.getKey());
             nonNullString(e.getValue());
@@ -285,7 +285,7 @@
         return (Map<String,String>) theEnvironment.clone();
     }
 
-    // Only for use by Runtime.exec(...String[]envp...)
+    // Only for use by ProcessBuilder.environment(String[] envp)
     static Map<String,String> emptyEnvironment(int capacity) {
         return new ProcessEnvironment(capacity);
     }
@@ -299,19 +299,46 @@
         Collections.sort(list, entryComparator);
 
         StringBuilder sb = new StringBuilder(size()*30);
-        for (Map.Entry<String,String> e : list)
-            sb.append(e.getKey())
-              .append('=')
-              .append(e.getValue())
-              .append('\u0000');
-        // Ensure double NUL termination,
-        // even if environment is empty.
-        if (sb.length() == 0)
+        int cmp = -1;
+
+        // Some versions of MSVCRT.DLL require SystemRoot to be set.
+        // So, we make sure that it is always set, even if not provided
+        // by the caller.
+        final String SYSTEMROOT = "SystemRoot";
+
+        for (Map.Entry<String,String> e : list) {
+            String key = e.getKey();
+            String value = e.getValue();
+            if (cmp < 0 && (cmp = nameComparator.compare(key, SYSTEMROOT)) > 0) {
+                // Not set, so add it here
+                addToEnvIfSet(sb, SYSTEMROOT);
+            }
+            addToEnv(sb, key, value);
+        }
+        if (cmp < 0) {
+            // Got to end of list and still not found
+            addToEnvIfSet(sb, SYSTEMROOT);
+        }
+        if (sb.length() == 0) {
+            // Environment was empty and SystemRoot not set in parent
             sb.append('\u0000');
+        }
+        // Block is double NUL terminated
         sb.append('\u0000');
         return sb.toString();
     }
 
+    // add the environment variable to the child, if it exists in parent
+    private static void addToEnvIfSet(StringBuilder sb, String name) {
+        String s = getenv(name);
+        if (s != null)
+            addToEnv(sb, name, s);
+    }
+
+    private static void addToEnv(StringBuilder sb, String name, String val) {
+        sb.append(name).append('=').append(val).append('\u0000');
+    }
+
     static String toEnvironmentBlock(Map<String,String> map) {
         return map == null ? null :
             ((ProcessEnvironment)map).toEnvironmentBlock();
--- a/jdk/src/windows/classes/java/net/PlainSocketImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/java/net/PlainSocketImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/java/net/TwoStacksPlainDatagramSocketImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/java/net/TwoStacksPlainDatagramSocketImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/sun/awt/Win32FontManager.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/awt/Win32FontManager.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/sun/awt/Win32GraphicsEnvironment.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/awt/Win32GraphicsEnvironment.java	Wed Apr 20 09:31:11 2011 -0700
@@ -39,12 +39,8 @@
 import java.util.StringTokenizer;
 import sun.awt.DisplayChangedListener;
 import sun.awt.SunDisplayChanger;
-import sun.awt.windows.WFontConfiguration;
 import sun.awt.windows.WPrinterJob;
 import sun.awt.windows.WToolkit;
-import sun.font.FontManager;
-import sun.font.FontManagerFactory;
-import sun.font.SunFontManager;
 import sun.java2d.SunGraphicsEnvironment;
 import sun.java2d.SurfaceManagerFactory;
 import sun.java2d.WindowsSurfaceManagerFactory;
@@ -231,20 +227,6 @@
         return device;
     }
 
-    // Implements SunGraphicsEnvironment.createFontConfiguration.
-    protected FontConfiguration createFontConfiguration() {
-       FontConfiguration fc = new WFontConfiguration(SunFontManager.getInstance());
-       fc.init();
-       return fc;
-    }
-
-    public FontConfiguration createFontConfiguration(boolean preferLocaleFonts,
-                                                     boolean preferPropFonts) {
-
-        return new WFontConfiguration(SunFontManager.getInstance(),
-                preferLocaleFonts,preferPropFonts);
-    }
-
     public boolean isDisplayLocal() {
         return true;
     }
--- a/jdk/src/windows/classes/sun/awt/windows/WPathGraphics.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WPathGraphics.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/sun/awt/windows/WPrinterJob.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WPrinterJob.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/sun/awt/windows/WToolkit.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WToolkit.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
@@ -630,10 +630,10 @@
 
     public PrintJob getPrintJob(Frame frame, String doctitle,
                                 JobAttributes jobAttributes,
-                                PageAttributes pageAttributes) {
-
-        if (GraphicsEnvironment.isHeadless()) {
-            throw new IllegalArgumentException();
+                                PageAttributes pageAttributes)
+    {
+        if (frame == null) {
+            throw new NullPointerException("frame must not be null");
         }
 
         PrintJob2D printJob = new PrintJob2D(frame, doctitle,
--- a/jdk/src/windows/classes/sun/awt/windows/fontconfig.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/fontconfig.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -102,28 +102,28 @@
 monospaced.plain.alphabetic=Courier New
 monospaced.plain.chinese-ms950=MingLiU
 monospaced.plain.chinese-ms950-extb=MingLiU-ExtB
-monospaced.plain.hebrew=David
+monospaced.plain.hebrew=Courier New
 monospaced.plain.japanese=MS Gothic
 monospaced.plain.korean=GulimChe
 
 monospaced.bold.alphabetic=Courier New Bold
 monospaced.bold.chinese-ms950=PMingLiU
 monospaced.bold.chinese-ms950-extb=PMingLiU-ExtB
-monospaced.bold.hebrew=David Bold
+monospaced.bold.hebrew=Courier New Bold
 monospaced.bold.japanese=MS Gothic
 monospaced.bold.korean=GulimChe
 
 monospaced.italic.alphabetic=Courier New Italic
 monospaced.italic.chinese-ms950=PMingLiU
 monospaced.italic.chinese-ms950-extb=PMingLiU-ExtB
-monospaced.italic.hebrew=David
+monospaced.italic.hebrew=Courier New
 monospaced.italic.japanese=MS Gothic
 monospaced.italic.korean=GulimChe
 
 monospaced.bolditalic.alphabetic=Courier New Bold Italic
 monospaced.bolditalic.chinese-ms950=PMingLiU
 monospaced.bolditalic.chinese-ms950-extb=PMingLiU-ExtB
-monospaced.bolditalic.hebrew=David Bold
+monospaced.bolditalic.hebrew=Courier New Bold
 monospaced.bolditalic.japanese=MS Gothic
 monospaced.bolditalic.korean=GulimChe
 
--- a/jdk/src/windows/classes/sun/java2d/d3d/D3DSurfaceData.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/java2d/d3d/D3DSurfaceData.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/sun/java2d/opengl/WGLVolatileSurfaceManager.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/java2d/opengl/WGLVolatileSurfaceManager.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/sun/net/www/protocol/http/ntlm/NTLMAuthentication.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/net/www/protocol/http/ntlm/NTLMAuthentication.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/sun/nio/ch/PendingIoCache.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/nio/ch/PendingIoCache.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousFileChannelImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousFileChannelImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousSocketChannelImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousSocketChannelImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/sun/nio/fs/RegistryFileTypeDetector.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/nio/fs/RegistryFileTypeDetector.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsFileAttributeViews.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsFileAttributeViews.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsFileCopy.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsFileCopy.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsFileStore.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsFileStore.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystemProvider.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystemProvider.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsPathParser.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsPathParser.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsUserDefinedFileAttributeView.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsUserDefinedFileAttributeView.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsWatchService.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsWatchService.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/sun/print/Win32PrintService.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/print/Win32PrintService.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/classes/sun/security/krb5/internal/tools/Kinit.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/security/krb5/internal/tools/Kinit.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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,12 +30,15 @@
 
 package sun.security.krb5.internal.tools;
 
+import java.io.File;
 import sun.security.krb5.*;
 import sun.security.krb5.internal.*;
 import sun.security.krb5.internal.ccache.*;
 import java.io.IOException;
 import java.util.Arrays;
+import javax.security.auth.kerberos.KerberosPrincipal;
 import sun.security.util.Password;
+import javax.security.auth.kerberos.KeyTab;
 
 /**
  * Kinit tool for obtaining Kerberos v5 tickets.
@@ -153,7 +156,6 @@
             System.out.println("Principal is " + principal);
         }
         char[] psswd = options.password;
-        EncryptionKey[] skeys = null;
         boolean useKeytab = options.useKeytabFile();
         if (!useKeytab) {
             if (princName == null) {
@@ -186,17 +188,9 @@
                 }
             }
 
-            // assert princName and principal are nonnull
-            skeys = EncryptionKey.acquireSecretKeys(principal, ktabName);
-
-            if (skeys == null || skeys.length == 0) {
-                String msg = "No supported key found in keytab";
-                if (princName != null) {
-                    msg += " for principal " + princName;
-                }
-                throw new KrbException(msg);
-            }
-            builder = new KrbAsReqBuilder(principal, skeys);
+            builder = new KrbAsReqBuilder(principal, ktabName == null
+                    ? KeyTab.getInstance()
+                    : KeyTab.getInstance(new File(ktabName)));
         }
 
         KDCOptions opt = new KDCOptions();
--- a/jdk/src/windows/classes/sun/security/krb5/internal/tools/Klist.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/security/krb5/internal/tools/Klist.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
@@ -95,16 +95,15 @@
             }
             break;
         case 'k':
-            if (klist.name == null) {
-                klist.target = KeyTab.getInstance();
-                klist.name = KeyTab.tabName();
-            } else klist.target = KeyTab.getInstance(klist.name);
-            if (klist.target != null) {
-                klist.displayTab();
-            } else {
+            try {
+                KeyTab ktab = KeyTab.getInstance(klist.name);
+                klist.target = ktab;
+                klist.name = ktab.tabName();
+            } catch (Exception e) {
                 klist.displayMessage("KeyTab");
                 System.exit(-1);
             }
+            klist.displayTab();
             break;
         default:
             if (klist.name != null) {
@@ -295,9 +294,10 @@
 
     void displayMessage(String target) {
         if (name == null) {
-            name = "";
+            System.out.println("Default " + target + " not found.");
+        } else {
+            System.out.println(target + " " + name + " not found.");
         }
-        System.out.println(target + " " + name + " not found.");
     }
     /**
      * Reformats the date from the form -
--- a/jdk/src/windows/classes/sun/security/krb5/internal/tools/Ktab.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/classes/sun/security/krb5/internal/tools/Ktab.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
@@ -321,7 +321,7 @@
      * Lists key table name and entries in it.
      */
     void listKt() {
-        System.out.println("Keytab name: " + KeyTab.tabName());
+        System.out.println("Keytab name: " + table.tabName());
         KeyTabEntry[] entries = table.getEntries();
         if ((entries != null) && (entries.length > 0)) {
             String[][] output = new String[entries.length+1][showTime?3:2];
--- a/jdk/src/windows/demo/jvmti/hprof/hprof_md.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/demo/jvmti/hprof/hprof_md.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
--- a/jdk/src/windows/native/java/io/WinNTFileSystem_md.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/java/io/WinNTFileSystem_md.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/native/java/io/canonicalize_md.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/java/io/canonicalize_md.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/native/java/io/io_util_md.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/java/io/io_util_md.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/native/java/net/Inet4AddressImpl.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/java/net/Inet4AddressImpl.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/native/java/net/Inet6AddressImpl.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/java/net/Inet6AddressImpl.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/native/sun/java2d/d3d/D3DGraphicsDevice.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/sun/java2d/d3d/D3DGraphicsDevice.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/native/sun/java2d/windows/GDIBlitLoops.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/sun/java2d/windows/GDIBlitLoops.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/native/sun/nio/ch/Iocp.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/sun/nio/ch/Iocp.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/native/sun/nio/ch/Net.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/sun/nio/ch/Net.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/native/sun/nio/fs/RegistryFileTypeDetector.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/sun/nio/fs/RegistryFileTypeDetector.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/native/sun/nio/fs/WindowsNativeDispatcher.c	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/sun/nio/fs/WindowsNativeDispatcher.c	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/native/sun/windows/Devices.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/sun/windows/Devices.h	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/native/sun/windows/awt_Debug.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_Debug.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/native/sun/windows/awt_Debug.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_Debug.h	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/native/sun/windows/awt_Dialog.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_Dialog.h	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/native/sun/windows/awt_Frame.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_Frame.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/native/sun/windows/awt_Frame.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_Frame.h	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/native/sun/windows/awt_PrintJob.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_PrintJob.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/native/sun/windows/awt_TextArea.h	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_TextArea.h	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2010, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
@@ -528,9 +528,6 @@
 
     tk.m_isActive = FALSE;
 
-    awt_dnd_uninitialize();
-    awt_clipboard_uninitialize((JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2));
-
     // dispose Direct3D-related resources. This should be done
     // before AwtObjectList::Cleanup() as the d3d will attempt to
     // shutdown when the last of its windows is disposed of
@@ -539,6 +536,9 @@
     AwtObjectList::Cleanup();
     AwtFont::Cleanup();
 
+    awt_dnd_uninitialize();
+    awt_clipboard_uninitialize((JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2));
+
     if (tk.m_inputMethodHWnd != NULL) {
         ::SendMessage(tk.m_inputMethodHWnd, WM_IME_CONTROL, IMC_OPENSTATUSWINDOW, 0);
     }
--- a/jdk/src/windows/native/sun/windows/awt_TrayIcon.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_TrayIcon.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/src/windows/native/sun/windows/awt_Window.cpp	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_Window.cpp	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/ProblemList.txt	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/ProblemList.txt	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 ###########################################################################
 #
-# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
@@ -288,12 +288,6 @@
 
 # jdk_math
 
-# Problems with rounding add failures on solaris-sparcv9 and -server
-java/math/BigDecimal/AddTests.java			 	solaris-sparcv9
-
-# Should be samevm? But seems problematic with samevm on windows
-java/math/BigInteger/ModPow65537.java			 	generic-all
-
 ############################################################################
 
 # jdk_misc
--- a/jdk/test/com/sun/awt/Translucency/WindowOpacity.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/com/sun/awt/Translucency/WindowOpacity.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2010, Oracle and/or its affiliates. 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
--- a/jdk/test/com/sun/jdi/NativeInstanceFilter.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/com/sun/jdi/NativeInstanceFilter.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/com/sun/jdi/NativeInstanceFilterTarg.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/com/sun/jdi/NativeInstanceFilterTarg.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/com/sun/jdi/ProcessAttachTest.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/com/sun/jdi/ProcessAttachTest.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2010, Oracle and/or its affiliates. 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
--- a/jdk/test/com/sun/security/auth/module/LdapLoginModule/CheckConfigs.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/com/sun/security/auth/module/LdapLoginModule/CheckConfigs.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/com/sun/security/auth/module/LdapLoginModule/CheckOptions.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/com/sun/security/auth/module/LdapLoginModule/CheckOptions.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/com/sun/tools/attach/ApplicationSetup.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/com/sun/tools/attach/ApplicationSetup.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
@@ -40,7 +40,8 @@
 
 startApplication() 
 {
-  ${JAVA} $1 $2 $3 -jar "${TESTCLASSES}"/Application.jar > ${OUTPUTFILE} &
+  # put all output from the app into ${OUTPUTFILE}
+  ${JAVA} $1 $2 $3 -jar "${TESTCLASSES}"/Application.jar > ${OUTPUTFILE} 2>&1 &
   pid="$!"
 
   # MKS creates an intermediate shell to launch ${JAVA} so
--- a/jdk/test/com/sun/tools/attach/BasicTests.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/com/sun/tools/attach/BasicTests.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
@@ -75,14 +75,23 @@
 
         // Test 3 - load an "bad" agent (agentmain throws an exception)
         System.out.println(" - Test: Load a bad agent");
+        System.out.println("INFO: This test will cause error messages "
+            + "to appear in the application log about SilverBullet.jar "
+            + "not being found and an agent failing to start.");
         try {
             vm.loadAgent(badagent);
+            throw new RuntimeException(
+                "AgentInitializationException not thrown as expected!");
         } catch (AgentInitializationException x) {
-            System.out.println(" - AgentInitializationException throws as expected!");
+            System.out.println(
+                " - AgentInitializationException thrown as expected!");
         }
 
         // Test 4 - detach from the VM and attempt a load (should throw IOE)
         System.out.println(" - Test: Detach from VM");
+        System.out.println("INFO: This test will cause error messages "
+            + "to appear in the application log about a BadAgent including "
+            + "a RuntimeException and an InvocationTargetException.");
         vm.detach();
         try {
             vm.loadAgent(agent);
--- a/jdk/test/com/sun/tools/attach/BasicTests.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/com/sun/tools/attach/BasicTests.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
@@ -39,11 +39,9 @@
 
 # Windows 2000 is a problem here, so we skip it, see 6962615
 osrev=`uname -a`
-if [ "`echo ${osrev} | grep 'CYGWIN'`" != "" ] ; then
-  if [ "`echo ${osrev} | grep '5.0'`" != "" ] ; then
-     echo "Treating as a pass, not testing Windows 2000"
-     exit 0
-  fi
+if [ "`echo ${osrev} | grep 'CYGWIN[^ ]*-5\.0'`" != "" ] ; then
+  echo "Treating as a pass, not testing Windows 2000"
+  exit 0
 fi
 if [ "`echo ${osrev} | grep 'Windows'`" != "" ] ; then
   if [ "`echo ${osrev} | grep '5 00'`" != "" ] ; then
@@ -58,7 +56,7 @@
 
 startApplication -Dattach.test=true
 # pid = process-id, port = shutdown port
-                                                                                                      
+
 failures=0
 
 echo "Running tests ..."
@@ -69,6 +67,18 @@
 
 stopApplication $port
 
+# Add these info messages to $OUTPUTFILE just in case someone
+# looks at it and wonders about the failures. We have to do
+# this after the application is stopped because it is writing
+# to $OUTPUTFILE.
+(
+echo ""
+echo "INFO: Test 2 will cause error messages about SilverBullet.jar" \
+    "and an agent failing to start."
+echo "INFO: Test 3 will cause error messages about BadAgent" \
+    "including a RuntimeException and an InvocationTargetException."
+) >> ${OUTPUTFILE}
+
 if [ $failures = 0 ]; 
   then echo "All tests passed.";
   else echo "$failures test(s) failed:"; cat ${OUTPUTFILE};
--- a/jdk/test/com/sun/tools/attach/CommonSetup.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/com/sun/tools/attach/CommonSetup.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2010, Oracle and/or its affiliates. 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
--- a/jdk/test/com/sun/tools/attach/PermissionTests.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/com/sun/tools/attach/PermissionTests.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2010, Oracle and/or its affiliates. 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
--- a/jdk/test/demo/zipfs/Basic.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/demo/zipfs/Basic.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/demo/zipfs/PathOps.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/demo/zipfs/PathOps.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/demo/zipfs/basic.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/demo/zipfs/basic.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/awt/Container/CheckZOrderChange/CheckZOrderChange.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/awt/Container/CheckZOrderChange/CheckZOrderChange.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/awt/FontClass/LCDScale.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/awt/FontClass/LCDScale.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/awt/Graphics2D/RenderClipTest/RenderClipTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/awt/Graphics2D/RenderClipTest/RenderClipTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2010, Oracle and/or its affiliates. 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
--- a/jdk/test/java/awt/PrintJob/Text/StringWidth.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/awt/PrintJob/Text/StringWidth.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Toolkit/Headless/GetPrintJob/GetPrintJob.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,48 @@
+/*
+@test
+@bug 7023011
+@library ../../../regtesthelpers
+@build Sysout
+@summary Toolkit.getPrintJob() throws wrong exceptions
+@author andrei dmitriev: area=awt.headless
+@run main GetPrintJob
+ */
+
+import java.awt.*;
+import java.util.Properties;
+import test.java.awt.regtesthelpers.Sysout;
+/*
+ * In headfull mode we should always getting NPE on the getPrintJob() call if frame == null.
+ */
+
+public class GetPrintJob {
+
+    public static void main(String[] s) {
+        boolean stage1Passed = false;
+        boolean stage2Passed = false;
+
+        try {
+            Toolkit.getDefaultToolkit().getPrintJob(
+                    (Frame) null, "title", new Properties());
+        } catch (NullPointerException e) {
+            stage1Passed = true;
+            Sysout.println("Stage 1 passed. getPrintJob(null, String, property) has thrown NPE.");
+        }
+        if (!stage1Passed) {
+            throw new RuntimeException("getPrintJob() should have thrown NPE but didn't.");
+        }
+
+        try {
+            Toolkit.getDefaultToolkit().getPrintJob(
+                    (Frame) null, "title", new JobAttributes(), new PageAttributes());
+        } catch (NullPointerException e) {
+            stage2Passed = true;
+            Sysout.println("Stage 2 passed. getPrintJob(null, String, jobAttrs, pageAttr) has thrown NPE.");
+        }
+        if (!stage2Passed) {
+            throw new RuntimeException("getPrintJob() should have thrown NPE but didn't.");
+        }
+
+        Sysout.println("Test PASSED");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Toolkit/Headless/GetPrintJob/GetPrintJobHeadless.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,50 @@
+/*
+@test
+@bug 7023011
+@library ../../../regtesthelpers
+@build Sysout
+@summary Toolkit.getPrintJob() throws wrong exceptions
+@author andrei dmitriev: area=awt.headless
+@run main/othervm -Djava.awt.headless=true GetPrintJobHeadless
+ */
+
+/*
+ * In headless mode we should always getting NPE on the getPrintJob() call
+ */
+import java.awt.*;
+import java.util.Properties;
+import test.java.awt.regtesthelpers.Sysout;
+
+public class GetPrintJobHeadless {
+
+    public static void main(String[] s) {
+        boolean stage1Passed = false;
+        boolean stage2Passed = false;
+
+        try {
+            Toolkit.getDefaultToolkit().getPrintJob(
+                    (Frame) null, "title", new Properties());
+        } catch (NullPointerException e) {
+            stage1Passed = true;
+            e.printStackTrace();
+            Sysout.println("Stage 1 passed. getPrintJob(null, String, property) has thrown NPE.");
+        }
+        if (!stage1Passed) {
+            throw new RuntimeException("getPrintJob() should have thrown NPE but didn't.");
+        }
+
+        try {
+            Toolkit.getDefaultToolkit().getPrintJob(
+                    (Frame) null, "title", new JobAttributes(), new PageAttributes());
+        } catch (NullPointerException e) {
+            stage2Passed = true;
+            e.printStackTrace();
+            Sysout.println("Stage 2 passed. getPrintJob(null, String, jobAttrs, pageAttr) has thrown  NPE.");
+        }
+        if (!stage2Passed) {
+            throw new RuntimeException("getPrintJob() should have thrown NPE but didn't.");
+        }
+
+        Sysout.println("Test PASSED");
+    }
+}
--- a/jdk/test/java/awt/font/FontNames/LocaleFamilyNames.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/awt/font/FontNames/LocaleFamilyNames.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/awt/image/GetSamplesTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/awt/image/GetSamplesTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -23,9 +23,9 @@
 
 /*
  * @test
- * @bug     6735275
- * @summary Test verifies that SampleModel.getSamples() throws an appropriate
- *           exception if coordinates are not in bounds.
+ * @bug     6735275 6993561
+ * @summary Test verifies that SampleModel.getSamples() SampleModel.setSamples()
+ *          throw an appropriate exception if coordinates are not in bounds.
  *
  * @run     main GetSamplesTest
  */
@@ -75,6 +75,7 @@
 
         try {
             sm.getSamples(Integer.MAX_VALUE, 0, 1, 1, 0, iArray, db);
+            sm.setSamples(Integer.MAX_VALUE, 0, 1, 1, 0, iArray, db);
         } catch (ArrayIndexOutOfBoundsException e) {
             System.out.println(e.getMessage());
             iOk = true;
@@ -82,6 +83,7 @@
 
         try {
             sm.getSamples(Integer.MAX_VALUE, 0, 1, 1, 0, fArray, db);
+            sm.setSamples(Integer.MAX_VALUE, 0, 1, 1, 0, fArray, db);
         } catch (ArrayIndexOutOfBoundsException e) {
             System.out.println(e.getMessage());
             fOk = true;
@@ -89,6 +91,7 @@
 
         try {
             sm.getSamples(0, Integer.MAX_VALUE, 1, 1, 0, dArray, db);
+            sm.setSamples(0, Integer.MAX_VALUE, 1, 1, 0, dArray, db);
         } catch (ArrayIndexOutOfBoundsException e) {
             System.out.println(e.getMessage());
             dOk = true;
--- a/jdk/test/java/awt/xembed/server/TestXEmbedServer.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/awt/xembed/server/TestXEmbedServer.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2010, Oracle and/or its affiliates. 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
--- a/jdk/test/java/io/File/IsHidden.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/io/File/IsHidden.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/io/File/SetAccess.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/io/File/SetAccess.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/io/File/SetLastModified.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/io/File/SetLastModified.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/io/File/SymLinks.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/io/File/SymLinks.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/io/File/basic.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/io/File/basic.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,7 +1,7 @@
 #! /bin/sh
 
 #
-# Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2010, Oracle and/or its affiliates. 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
--- a/jdk/test/java/io/FileInputStream/LargeFileAvailable.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/io/FileInputStream/LargeFileAvailable.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/io/FileOutputStream/AtomicAppend.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/io/FileOutputStream/AtomicAppend.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/io/OutputStreamWriter/Encode.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/io/OutputStreamWriter/Encode.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/io/PrintStream/EncodingConstructor.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/io/PrintStream/EncodingConstructor.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/io/Serializable/NPEProvoker/NPEProvoker.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/io/Serializable/NPEProvoker/NPEProvoker.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. 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
--- a/jdk/test/java/io/Serializable/evolution/RenamePackage/install/SerialDriver.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/io/Serializable/evolution/RenamePackage/install/SerialDriver.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/io/Serializable/evolution/RenamePackage/test/SerialDriver.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/io/Serializable/evolution/RenamePackage/test/SerialDriver.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/lang/Double/ParseDouble.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/lang/Double/ParseDouble.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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,7 +23,7 @@
 
 /*
  * @test
- * @bug 4160406 4705734 4707389 4826774 4895911 4421494
+ * @bug 4160406 4705734 4707389 4826774 4895911 4421494 7021568
  * @summary Test for Double.parseDouble method and acceptance regex
  */
 
@@ -581,6 +581,31 @@
         }
     }
 
+
+    private static void testStrictness() {
+        final double expected = 0x0.0000008000001p-1022;
+        boolean failed = false;
+        double conversion = 0.0;
+        double sum = 0.0; // Prevent conversion from being optimized away
+
+        //2^-1047 + 2^-1075
+        String decimal = "6.631236871469758276785396630275967243399099947355303144249971758736286630139265439618068200788048744105960420552601852889715006376325666595539603330361800519107591783233358492337208057849499360899425128640718856616503093444922854759159988160304439909868291973931426625698663157749836252274523485312442358651207051292453083278116143932569727918709786004497872322193856150225415211997283078496319412124640111777216148110752815101775295719811974338451936095907419622417538473679495148632480391435931767981122396703443803335529756003353209830071832230689201383015598792184172909927924176339315507402234836120730914783168400715462440053817592702766213559042115986763819482654128770595766806872783349146967171293949598850675682115696218943412532098591327667236328125E-316";
+
+        for(int i = 0; i <= 12_000; i++) {
+            conversion = Double.parseDouble(decimal);
+            sum += conversion;
+            if (conversion != expected) {
+                failed = true;
+                System.out.printf("Iteration %d converts as %a%n",
+                                  i, conversion);
+            }
+        }
+
+        System.out.println("Sum = "  + sum);
+        if (failed)
+            throw new RuntimeException("Inconsistent conversion");
+    }
+
     public static void main(String[] args) throws Exception {
         rudimentaryTest();
 
@@ -595,5 +620,6 @@
         testRegex(paddedBadStrings, true);
 
         testSubnormalPowers();
+        testStrictness();
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/Math/RoundTests.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 6430675
+ * @summary Check for correct implementation of {Math, StrictMath}.round
+ */
+public class RoundTests {
+    public static void main(String... args) {
+        int failures = 0;
+
+        failures += testNearFloatHalfCases();
+        failures += testNearDoubleHalfCases();
+
+        if (failures > 0) {
+            System.err.println("Testing {Math, StrictMath}.round incurred "
+                               + failures + " failures.");
+            throw new RuntimeException();
+        }
+    }
+
+    private static int testNearDoubleHalfCases() {
+        int failures = 0;
+        double [][] testCases = {
+            {+0x1.fffffffffffffp-2,  0.0},
+            {+0x1.0p-1,              1.0}, // +0.5
+            {+0x1.0000000000001p-1,  1.0},
+
+            {-0x1.fffffffffffffp-2,  0.0},
+            {-0x1.0p-1,              0.0}, // -0.5
+            {-0x1.0000000000001p-1, -1.0},
+        };
+
+        for(double[] testCase : testCases) {
+            failures += testNearHalfCases(testCase[0], (long)testCase[1]);
+        }
+
+        return failures;
+    }
+
+    private static int testNearHalfCases(double input, double expected) {
+        int failures = 0;
+
+        failures += Tests.test("Math.round",        input, Math.round(input),       expected);
+        failures += Tests.test("StrictMath.round",  input, StrictMath.round(input), expected);
+
+        return failures;
+    }
+
+    private static int testNearFloatHalfCases() {
+        int failures = 0;
+        float [][] testCases = {
+            {+0x1.fffffep-2f,  0.0f},
+            {+0x1.0p-1f,       1.0f}, // +0.5
+            {+0x1.000002p-1f,  1.0f},
+
+            {-0x1.fffffep-2f,  0.0f},
+            {-0x1.0p-1f,       0.0f}, // -0.5
+            {-0x1.000002p-1f, -1.0f},
+        };
+
+        for(float[] testCase : testCases) {
+            failures += testNearHalfCases(testCase[0], (int)testCase[1]);
+        }
+
+        return failures;
+    }
+
+    private static int testNearHalfCases(float input, float expected) {
+        int failures = 0;
+
+        failures += Tests.test("Math.round",        input, Math.round(input),       expected);
+        failures += Tests.test("StrictMath.round",  input, StrictMath.round(input), expected);
+
+        return failures;
+    }
+}
--- a/jdk/test/java/lang/ProcessBuilder/Basic.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/lang/ProcessBuilder/Basic.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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 @@
  * @bug 4199068 4738465 4937983 4930681 4926230 4931433 4932663 4986689
  *      5026830 5023243 5070673 4052517 4811767 6192449 6397034 6413313
  *      6464154 6523983 6206031 4960438 6631352 6631966 6850957 6850958
- *      4947220 7018606
+ *      4947220 7018606 7034570
  * @summary Basic tests for Process and Environment Variable code
  * @run main/othervm/timeout=300 Basic
  * @author Martin Buchholz
@@ -1440,11 +1440,12 @@
         // Check for sort order of environment variables on Windows.
         //----------------------------------------------------------------
         try {
+            String systemRoot = "SystemRoot=" + System.getenv("SystemRoot");
             // '+' < 'A' < 'Z' < '_' < 'a' < 'z' < '~'
             String[]envp = {"FOO=BAR","BAZ=GORP","QUUX=",
-                            "+=+", "_=_", "~=~"};
+                            "+=+", "_=_", "~=~", systemRoot};
             String output = nativeEnv(envp);
-            String expected = "+=+\nBAZ=GORP\nFOO=BAR\nQUUX=\n_=_\n~=~\n";
+            String expected = "+=+\nBAZ=GORP\nFOO=BAR\nQUUX=\n"+systemRoot+"\n_=_\n~=~\n";
             // On Windows, Java must keep the environment sorted.
             // Order is random on Unix, so this test does the sort.
             if (! Windows.is())
@@ -1453,6 +1454,21 @@
         } catch (Throwable t) { unexpected(t); }
 
         //----------------------------------------------------------------
+        // Test Runtime.exec(...envp...)
+        // and check SystemRoot gets set automatically on Windows
+        //----------------------------------------------------------------
+        try {
+            if (Windows.is()) {
+                String systemRoot = "SystemRoot=" + System.getenv("SystemRoot");
+                String[]envp = {"FOO=BAR","BAZ=GORP","QUUX=",
+                                "+=+", "_=_", "~=~"};
+                String output = nativeEnv(envp);
+                String expected = "+=+\nBAZ=GORP\nFOO=BAR\nQUUX=\n"+systemRoot+"\n_=_\n~=~\n";
+                equal(output, expected);
+            }
+        } catch (Throwable t) { unexpected(t); }
+
+        //----------------------------------------------------------------
         // System.getenv() must be consistent with System.getenv(String)
         //----------------------------------------------------------------
         try {
--- a/jdk/test/java/lang/Runtime/exec/Duped.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/lang/Runtime/exec/Duped.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/lang/Runtime/shutdown/ShutdownHooks.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/lang/Runtime/shutdown/ShutdownHooks.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/lang/System/finalization/FinExit.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/lang/System/finalization/FinExit.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,7 +1,7 @@
 #! /bin/sh
 
 #
-# Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2010, Oracle and/or its affiliates. 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
--- a/jdk/test/java/lang/Thread/StartOOMTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/lang/Thread/StartOOMTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-# Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2010, Oracle and/or its affiliates. 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
--- a/jdk/test/java/lang/instrument/BootClassPath/Setup.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/lang/instrument/BootClassPath/Setup.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2010, Oracle and/or its affiliates. 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
--- a/jdk/test/java/lang/instrument/ilib/Inject.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/lang/instrument/ilib/Inject.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/lang/instrument/ilib/InjectBytecodes.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/lang/instrument/ilib/InjectBytecodes.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. 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
--- a/jdk/test/java/lang/invoke/6987555/Test6987555.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/lang/invoke/6987555/Test6987555.java	Wed Apr 20 09:31:11 2011 -0700
@@ -27,7 +27,7 @@
  * @bug 6987555
  * @summary JSR 292 unboxing to a boolean value fails on big-endian SPARC
  *
- * @run main/othervm -Xint -ea -XX:+UnlockExperimentalVMOptions -XX:+EnableMethodHandles -XX:+EnableInvokeDynamic -XX:+UnlockDiagnosticVMOptions -XX:+VerifyMethodHandles Test6987555
+ * @run main/othervm -Xint -ea -XX:+UnlockDiagnosticVMOptions -XX:+VerifyMethodHandles Test6987555
  */
 
 import java.lang.invoke.*;
--- a/jdk/test/java/lang/invoke/6991596/Test6991596.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/lang/invoke/6991596/Test6991596.java	Wed Apr 20 09:31:11 2011 -0700
@@ -27,7 +27,7 @@
  * @bug 6991596
  * @summary JSR 292 unimplemented adapter_opt_i2i and adapter_opt_l2i on SPARC
  *
- * @run main/othervm -ea -XX:+UnlockExperimentalVMOptions -XX:+EnableMethodHandles -XX:+EnableInvokeDynamic -XX:+UnlockDiagnosticVMOptions -XX:+VerifyMethodHandles Test6991596
+ * @run main/othervm -ea -XX:+UnlockDiagnosticVMOptions -XX:+VerifyMethodHandles Test6991596
  */
 
 import java.lang.invoke.*;
--- a/jdk/test/java/lang/invoke/InvokeDynamicPrintArgs.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/lang/invoke/InvokeDynamicPrintArgs.java	Wed Apr 20 09:31:11 2011 -0700
@@ -25,9 +25,9 @@
  * @summary smoke test for invokedynamic instructions
  * @build indify.Indify
  * @compile InvokeDynamicPrintArgs.java
- * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableInvokeDynamic
+ * @run main/othervm
  *      indify.Indify
- *      --verify-specifier-count=3 --transitionalJSR292=false
+ *      --verify-specifier-count=3
  *      --expand-properties --classpath ${test.classes}
  *      --java test.java.lang.invoke.InvokeDynamicPrintArgs --check-output
  */
@@ -63,7 +63,8 @@
         String testClassPath = System.getProperty("build.test.classes.dir");
         if (testClassPath == null)  throw new RuntimeException();
         String[] args = new String[]{
-            "--verify-specifier-count=3", "--transitionalJSR292=false",
+            "--verify-specifier-count=3",
+            "--verbose",
             "--expand-properties", "--classpath", testClassPath,
             "--java", "test.java.lang.invoke.InvokeDynamicPrintArgs", "--check-output"
         };
@@ -159,16 +160,14 @@
         shouldNotCallThis();
         return ((CallSite) MH_bsm2().invokeGeneric(lookup(),
                                                   "bar", methodType(void.class, String.class, int.class)
-                                                  , new Object[] { Void.class, "void type!",
-                                                                   1, 234.5F, 67.5, (long)89 }
+                                                  , Void.class, "void type!", 1, 234.5F, 67.5, (long)89
                                                   )).dynamicInvoker();
     }
     private static MethodHandle INDY_bar2() throws Throwable {
         shouldNotCallThis();
         return ((CallSite) MH_bsm2().invokeGeneric(lookup(),
                                                   "bar2", methodType(void.class, String.class, int.class)
-                                                  , new Object[] { Void.class, "void type!",
-                                                                   1, 234.5F, 67.5, (long)89 }
+                                                  , Void.class, "void type!", 1, 234.5F, 67.5, (long)89
                                                   )).dynamicInvoker();
     }
     private static MethodHandle INDY_baz() throws Throwable {
--- a/jdk/test/java/lang/invoke/InvokeGenericTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/lang/invoke/InvokeGenericTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -25,8 +25,8 @@
 
 /* @test
  * @summary unit tests for java.lang.invoke.MethodHandle.invokeGeneric
- * @compile -XDallowTransitionalJSR292=no -target 7 InvokeGenericTest.java
- * @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableMethodHandles test.java.lang.invoke.InvokeGenericTest
+ * @compile -target 7 InvokeGenericTest.java
+ * @run junit/othervm test.java.lang.invoke.InvokeGenericTest
  */
 
 package test.java.lang.invoke;
--- a/jdk/test/java/lang/invoke/JavaDocExamplesTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/lang/invoke/JavaDocExamplesTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -25,8 +25,8 @@
 
 /* @test
  * @summary example code used in javadoc for java.lang.invoke API
- * @compile -XDallowTransitionalJSR292=no JavaDocExamplesTest.java
- * @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableMethodHandles test.java.lang.invoke.JavaDocExamplesTest
+ * @compile JavaDocExamplesTest.java
+ * @run junit/othervm test.java.lang.invoke.JavaDocExamplesTest
  */
 
 /*
@@ -34,7 +34,6 @@
 $ $JAVA7X_HOME/bin/javac -cp $JUNIT4_JAR -d /tmp/Classes \
    $DAVINCI/sources/jdk/test/java/lang/invoke/JavaDocExamplesTest.java
 $ $JAVA7X_HOME/bin/java   -cp $JUNIT4_JAR:/tmp/Classes \
-   -XX:+UnlockExperimentalVMOptions -XX:+EnableMethodHandles \
    -Dtest.java.lang.invoke.JavaDocExamplesTest.verbosity=1 \
      test.java.lang.invoke.JavaDocExamplesTest
 ----
--- a/jdk/test/java/lang/invoke/MethodHandlesTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/lang/invoke/MethodHandlesTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -25,8 +25,8 @@
 
 /* @test
  * @summary unit tests for java.lang.invoke.MethodHandles
- * @compile -source 7 -target 7 -XDallowTransitionalJSR292=no MethodHandlesTest.java
- * @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableMethodHandles test.java.lang.invoke.MethodHandlesTest
+ * @compile -source 7 -target 7 MethodHandlesTest.java
+ * @run junit/othervm test.java.lang.invoke.MethodHandlesTest
  */
 
 package test.java.lang.invoke;
--- a/jdk/test/java/lang/invoke/MethodTypeTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/lang/invoke/MethodTypeTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -26,7 +26,7 @@
 /* @test
  * @summary unit tests for java.lang.invoke.MethodType
  * @compile MethodTypeTest.java
- * @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableMethodHandles test.java.lang.invoke.MethodTypeTest
+ * @run junit/othervm test.java.lang.invoke.MethodTypeTest
  */
 
 package test.java.lang.invoke;
--- a/jdk/test/java/lang/invoke/indify/Indify.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/lang/invoke/indify/Indify.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
@@ -89,19 +89,15 @@
 $ JAVA_HOME=(some recent OpenJDK 7 build)
 $ ant
 $ $JAVA_HOME/bin/java -cp build/classes indify.Indify --overwrite --dest build/testout build/classes/indify/Example.class
-$ $JAVA_HOME/bin/java -XX:+UnlockExperimentalVMOptions -XX:+EnableInvokeDynamic -cp build/classes indify.Example
+$ $JAVA_HOME/bin/java -cp build/classes indify.Example
 MT = (java.lang.Object)java.lang.Object
 MH = adder(int,int)java.lang.Integer
 adder(1,2) = 3
 calling indy:  42
-$ $JAVA_HOME/bin/java -XX:+UnlockExperimentalVMOptions -XX:+EnableInvokeDynamic -cp build/testout indify.Example
+$ $JAVA_HOME/bin/java -cp build/testout indify.Example
 (same output as above)
  * </pre></blockquote>
  * <p>
- * Before OpenJDK build b123, the format of {@code CONSTANT_InvokeDynamic} is in transition,
- * and the switch {@code --transitionalJSR292=yes} is recommended.
- * It is turned <em>off</em> by default, but users of earlier builds may need to turn it on.
- * <p>
  * A version of this transformation built on top of <a href="http://asm.ow2.org/">http://asm.ow2.org/</a> would be welcome.
  * @author John Rose
  */
@@ -117,7 +113,6 @@
     public boolean overwrite = false;
     public boolean quiet = false;
     public boolean verbose = false;
-    public boolean transitionalJSR292 = false;  // final version is distributed
     public boolean all = false;
     public int verifySpecifierCount = -1;
 
@@ -203,9 +198,6 @@
                 case "-v": case "--verbose": case "--verbose=":
                     verbose = booleanOption(a2);  // more output
                     break;
-                case "--transitionalJSR292": case "--transitionalJSR292=":
-                    transitionalJSR292 = booleanOption(a2);  // use older invokedynamic format
-                    break;
                 default:
                     throw new IllegalArgumentException("unrecognized flag: "+a);
                 }
@@ -330,10 +322,14 @@
                         if (resolve)  resolveClass(c);
                         return c;
                     }
+                } catch (ClassNotFoundException ex) {
+                    // fall through
+                } catch (IOException ex) {
+                    // fall through
                 } catch (Exception ex) {
-                    if (ex instanceof IllegalArgumentException)
-                        // pass error from reportPatternMethods
-                        throw (IllegalArgumentException) ex;
+                    // pass error from reportPatternMethods, etc.
+                    if (ex instanceof RuntimeException)  throw (RuntimeException) ex;
+                    throw new RuntimeException(ex);
                 }
             }
             return super.loadClass(name, resolve);
@@ -403,8 +399,7 @@
                     if (blab++ == 0 && !quiet)
                         System.err.println("patching "+cf.nameString()+"."+m);
                     //if (blab == 1) { for (Instruction j = m.instructions(); j != null; j = j.next()) System.out.println("  |"+j); }
-                    if (con.tag == CONSTANT_InvokeDynamic ||
-                        con.tag == CONSTANT_InvokeDynamic_17) {
+                    if (con.tag == CONSTANT_InvokeDynamic) {
                         // need to patch the following instruction too,
                         // but there are usually intervening argument pushes too
                         Instruction i2 = findPop(i);
@@ -566,7 +561,7 @@
                         short nt = n12[1];
                         char cmark = poolMarks[(char)cl];
                         if (cmark != 0) {
-                            mark = cmark;  // it is a java.dyn.* or java.lang.* method
+                            mark = cmark;  // it is a java.lang.invoke.* or java.lang.* method
                             break;
                         }
                         String cls = cf.pool.getString(CONSTANT_Class, cl);
@@ -597,8 +592,6 @@
             if (s.startsWith("MT_"))                return 'T';
             else if (s.startsWith("MH_"))           return 'H';
             else if (s.startsWith("INDY_"))         return 'I';
-            else if (transitionalJSR292 &&
-                     s.startsWith("java/dyn/"))     return 'D';
             else if (s.startsWith("java/lang/invoke/"))  return 'D';
             else if (s.startsWith("java/lang/"))    return 'J';
             return 0;
@@ -623,10 +616,6 @@
 
         boolean matchType(String descr, String requiredType) {
             if (descr.equals(requiredType))  return true;
-            if (transitionalJSR292) {
-                String oldType = requiredType.replace("Ljava/lang/invoke/", "Ljava/dyn/");
-                if (descr.equals(oldType))  return true;
-            }
             return false;
         }
 
@@ -872,6 +861,7 @@
                             continue;
                         }
                         break;
+                    case "invoke":
                     case "invokeGeneric":
                     case "invokeWithArguments":
                         if (patternMark != 'I')  break decode;
@@ -1022,7 +1012,7 @@
         private Constant makeInvokeDynamicCon(List<Object> args) {
             // E.g.: MH_bsm.invokeGeneric(lookup(), "name", MethodType, "extraArg")
             removeEmptyJVMSlots(args);
-            if (args.size() != 4 && args.size() != 5)  return null;
+            if (args.size() < 4)  return null;
             int argi = 0;
             short nindex, tindex, ntindex, bsmindex;
             Object con;
@@ -1035,22 +1025,17 @@
             tindex = ((Constant)con).itemIndex();
             ntindex = (short) cf.pool.addConstant(CONSTANT_NameAndType,
                                                   new Short[]{ nindex, tindex }).index;
-            if (transitionalJSR292) {
-                if (argi != args.size()) {
-                    System.err.println("BSM specifier has extra arguments but transitionalJSR292=1");
-                    return null;
+            List<Object> extraArgs = new ArrayList<Object>();
+            if (argi < args.size()) {
+                extraArgs.addAll(args.subList(argi, args.size() - 1));
+                Object lastArg = args.get(args.size() - 1);
+                if (lastArg instanceof List) {
+                    List<Object> lastArgs = (List<Object>) lastArg;
+                    removeEmptyJVMSlots(lastArgs);
+                    extraArgs.addAll(lastArgs);
+                } else {
+                    extraArgs.add(lastArg);
                 }
-                return cf.pool.addConstant(CONSTANT_InvokeDynamic_17,
-                        new Short[]{ bsmindex, ntindex });
-            }
-            List<Object> extraArgs = Collections.emptyList();
-            if (argi < args.size()) {
-                Object arg = args.get(argi);
-                if (arg instanceof List)
-                    extraArgs = (List<Object>) arg;
-                else
-                    extraArgs = Arrays.asList(arg);
-                removeEmptyJVMSlots(args);
             }
             List<Short> extraArgIndexes = new CountedList<>(Short.class);
             for (Object x : extraArgs) {
@@ -1062,7 +1047,10 @@
                     if (x instanceof Double)  { num = Double.doubleToRawLongBits((Double)x); numTag = CONSTANT_Double; }
                     if (num != null)  x = cf.pool.addConstant(numTag, x);
                 }
-                if (!(x instanceof Constant))  return null;
+                if (!(x instanceof Constant)) {
+                    System.err.println("warning: unrecognized BSM argument "+x);
+                    return null;
+                }
                 extraArgIndexes.add((short) ((Constant)x).index);
             }
             List<Object[]> specs = bootstrapMethodSpecifiers(true);
@@ -1359,7 +1347,6 @@
             case CONSTANT_Method:
             case CONSTANT_InterfaceMethod:
             case CONSTANT_NameAndType:
-            case CONSTANT_InvokeDynamic_17:
             case CONSTANT_InvokeDynamic:
                 // read an ordered pair
                 arg = new Short[] { in.readShort(), in.readShort() };
@@ -1634,7 +1621,6 @@
         CONSTANT_NameAndType       = 12,
         CONSTANT_MethodHandle      = 15,  // JSR 292
         CONSTANT_MethodType        = 16,  // JSR 292
-        CONSTANT_InvokeDynamic_17  = 17,  // JSR 292, only occurs in old class files
         CONSTANT_InvokeDynamic     = 18;  // JSR 292
     private static final byte
         REF_getField               = 1,
--- a/jdk/test/java/lang/reflect/Generics/Probe.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/lang/reflect/Generics/Probe.java	Wed Apr 20 09:31:11 2011 -0700
@@ -38,12 +38,12 @@
           "java.util.concurrent.ConcurrentHashMap$KeyIterator",
           "java.util.concurrent.ConcurrentHashMap$ValueIterator",
           "java.util.AbstractList$ListItr",
-          "java.util.EnumMap$EntryIterator",
-          "java.util.EnumMap$KeyIterator",
-          "java.util.EnumMap$ValueIterator",
-          "java.util.IdentityHashMap$EntryIterator",
-          "java.util.IdentityHashMap$KeyIterator",
-          "java.util.IdentityHashMap$ValueIterator",
+//          "java.util.EnumMap$EntryIterator",
+//          "java.util.EnumMap$KeyIterator",
+//          "java.util.EnumMap$ValueIterator",
+//          "java.util.IdentityHashMap$EntryIterator",
+//          "java.util.IdentityHashMap$KeyIterator",
+//          "java.util.IdentityHashMap$ValueIterator",
           "java.util.WeakHashMap$EntryIterator",
           "java.util.WeakHashMap$KeyIterator",
           "java.util.WeakHashMap$ValueIterator",
--- a/jdk/test/java/lang/reflect/Generics/TestPlainArrayNotGeneric.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/lang/reflect/Generics/TestPlainArrayNotGeneric.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2010, Oracle and/or its affiliates. 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
--- a/jdk/test/java/lang/reflect/Method/InheritedMethods.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/lang/reflect/Method/InheritedMethods.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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,17 +23,14 @@
 
 /* @test
    @bug 4471738
-   @ignore until 6825739 fixed
    @summary Failure to properly traverse class hierarchy in Class.getMethod()
 */
 
 import java.lang.reflect.Method;
 import java.util.Collection;
 import java.util.List;
-import javax.swing.JPanel;
-import javax.swing.JLabel;
 
-public class InheritedMethods extends JPanel {
+public class InheritedMethods {
     public static void main(String[] args) throws Exception { new InheritedMethods(); }
     InheritedMethods() throws Exception {
         Class c = Foo.class;
@@ -41,7 +38,6 @@
         if (m.getDeclaringClass() != java.util.List.class) {
           throw new RuntimeException("TEST FAILED");
         }
-        add(new JLabel("Test"));
     }
     interface Foo extends List { }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/math/BigDecimal/DivideMcTests.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,5797 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 7036582
+ * @summary Some tests for the divide(..,MathContext) method.
+ * @run main DivideMcTests
+ * @run main/othervm -XX:+AggressiveOpts DivideMcTests
+ * @author Sergey V. Kuksenko
+ */
+
+import java.math.BigDecimal;
+import java.math.MathContext;
+import java.math.RoundingMode;
+
+
+public class DivideMcTests {
+
+    static String[] value = new String[75];
+    static String[][] results = new String[75][75];
+    static {
+        value[0]="11061";
+        value[1]="5030285645";
+        value[2]="224198292018431";
+        value[3]="19226185404220649458";
+        value[4]="2754593222460641763294400";
+        value[5]="88290e4";
+        value[6]="14207e-4";
+        value[7]="9206524943e4";
+        value[8]="9637167289e-4";
+        value[9]="987673128759528e4";
+        value[10]="270627774630281e-4";
+        value[11]="81503625886547904651e4";
+        value[12]="60700032235397315737e-4";
+        value[13]="6477954854329556663533122e4";
+        value[14]="8056417378028557868905113e-4";
+        value[15]="74996e8";
+        value[16]="65282e-8";
+        value[17]="6336626690e8";
+        value[18]="8318166778e-8";
+        value[19]="983114227763768e8";
+        value[20]="245802997834566e-8";
+        value[21]="52727924122290902686e8";
+        value[22]="42785567085625398961e-8";
+        value[23]="4810906998143118279742863e8";
+        value[24]="8077506080975981172874361e-8";
+        value[25]="80689e12";
+        value[26]="30125e-12";
+        value[27]="6921467144e12";
+        value[28]="1953347181e-12";
+        value[29]="405471649883944e12";
+        value[30]="866720590936024e-12";
+        value[31]="33231666378140173438e12";
+        value[32]="42631490906110209257e-12";
+        value[33]="7723154992826793726050991e12";
+        value[34]="1611437259018380210686834e-12";
+        value[35]="65645e16";
+        value[36]="31153e-16";
+        value[37]="7758733150e16";
+        value[38]="6365465077e-16";
+        value[39]="727973863299662e16";
+        value[40]="351084160935215e-16";
+        value[41]="45470432070181568402e16";
+        value[42]="97216256670931719037e-16";
+        value[43]="2520581904836081418366563e16";
+        value[44]="3700768934485477578987416e-16";
+        value[45]="28736e20";
+        value[46]="52779e-20";
+        value[47]="7904805864e20";
+        value[48]="6373815349e-20";
+        value[49]="186651310031326e20";
+        value[50]="189125880591366e-20";
+        value[51]="74987916068454915171e20";
+        value[52]="10554589082317914511e-20";
+        value[53]="3599986721169840668392202e20";
+        value[54]="2588106172836128849130551e-20";
+        value[55]="71080e24";
+        value[56]="61576e-24";
+        value[57]="7086656363e24";
+        value[58]="7703864845e-24";
+        value[59]="361167296280301e24";
+        value[60]="149150690375117e-24";
+        value[61]="78129219923655854302e24";
+        value[62]="20861932490694515212e-24";
+        value[63]="9185868654811652011998047e24";
+        value[64]="1996563690880014012200226e-24";
+        value[65]="84665e28";
+        value[66]="94968e-28";
+        value[67]="2622821029e28";
+        value[68]="4451579486e-28";
+        value[69]="590522407411869e28";
+        value[70]="606293232614518e-28";
+        value[71]="96628087822208148505e28";
+        value[72]="24875240094942654314e-28";
+        value[73]="5099400093819597146233149e28";
+        value[74]="8906650752845770170008864e-28";
+        //--------------------------------------------
+        initResults1();
+        initResults2();
+    }
+
+    private static void initResults1() {
+        results[0][0]="1";
+        results[0][1]="0.000002198881093560642";
+        results[0][2]="4.933579065397471E-11";
+        results[0][3]="5.753091300977375E-16";
+        results[0][4]="4.015474920147867E-21";
+        results[0][5]="0.00001252803261977574";
+        results[0][6]="7785.598648553530";
+        results[0][7]="1.201430514605841E-10";
+        results[0][8]="0.01147743903192921";
+        results[0][9]="1.119904923797219E-15";
+        results[0][10]="4.087163638363069E-7";
+        results[0][11]="1.357117536758031E-20";
+        results[0][12]="1.822239559462666E-12";
+        results[0][13]="1.707483341383177E-25";
+        results[0][14]="1.372942771084022E-17";
+        results[0][15]="1.474878660195210E-9";
+        results[0][16]="16943414.72381361";
+        results[0][17]="1.745565983468090E-14";
+        results[0][18]="132.9740109233477";
+        results[0][19]="1.125098151123273E-19";
+        results[0][20]="0.004499945117611804";
+        results[0][21]="2.097749946374985E-24";
+        results[0][22]="2.585217575324869E-8";
+        results[0][23]="2.299150660004288E-29";
+        results[0][24]="1.369358300583728E-13";
+        results[0][25]="1.370818822887878E-13";
+        results[0][26]="367170124481.3278";
+        results[0][27]="1.598071589430057E-18";
+        results[0][28]="5662587.842852089";
+        results[0][29]="2.727934247231818E-23";
+        results[0][30]="12.76189825841631";
+        results[0][31]="3.328451806821200E-28";
+        results[0][32]="0.0002594560913752765";
+        results[0][33]="1.432186717769276E-33";
+        results[0][34]="6.864058738928437E-9";
+        results[0][35]="1.684972198948892E-17";
+        results[0][36]="3550540878888069";
+        results[0][37]="1.425619335806130E-22";
+        results[0][38]="17376577934.52694";
+        results[0][39]="1.519422682273810E-27";
+        results[0][40]="315052.6634564146";
+        results[0][41]="2.432569803367569E-32";
+        results[0][42]="1.137772670824026";
+        results[0][43]="4.388272398043467E-37";
+        results[0][44]="0.00002988838318687904";
+        results[0][45]="3.849178730512249E-21";
+        results[0][46]="2.095719888592054E+19";
+        results[0][47]="1.399275351008165E-26";
+        results[0][48]="173538130528606.9";
+        results[0][49]="5.926023234524105E-31";
+        results[0][50]="5848485656.967753";
+        results[0][51]="1.475037656720937E-36";
+        results[0][52]="104798.0164242535";
+        results[0][53]="3.072511333154488E-41";
+        results[0][54]="0.4273781391232109";
+        results[0][55]="1.556133933595948E-25";
+        results[0][56]="1.796316746784461E+23";
+        results[0][57]="1.560820707738894E-30";
+        results[0][58]="1.435772852009322E+18";
+        results[0][59]="3.062569649555309E-35";
+        results[0][60]="74159898101586.80";
+        results[0][61]="1.415731529229177E-40";
+        results[0][62]="530200162.6615257";
+        results[0][63]="1.204132174718842E-45";
+        results[0][64]="5540.018608234184";
+        results[0][65]="1.306443040217327E-29";
+        results[0][66]="1.164708112206217E+27";
+        results[0][67]="4.217214929154817E-34";
+        results[0][68]="2.484736043641657E+22";
+        results[0][69]="1.873087263272185E-39";
+        results[0][70]="1.824364747121068E+17";
+        results[0][71]="1.144698218633054E-44";
+        results[0][72]="4446590247082.196";
+        results[0][73]="2.169078675235893E-49";
+        results[0][74]="12418809.61422664";
+        results[1][0]="454776.7511979025";
+        results[1][1]="1";
+        results[1][2]="0.00002243677059139446";
+        results[1][3]="2.616372171203405E-10";
+        results[1][4]="1.826144638701504E-15";
+        results[1][5]="5.697457973722958";
+        results[1][6]="3540709259.519955";
+        results[1][7]="0.00005463826662224685";
+        results[1][8]="5219.672435012765";
+        results[1][9]="5.093067228950338E-10";
+        results[1][10]="0.1858747001068956";
+        results[1][11]="6.171855043605175E-15";
+        results[1][12]="8.287121867567282E-7";
+        results[1][13]="7.765237267187802E-20";
+        results[1][14]="6.243824530142372E-12";
+        results[1][15]="0.0006707405254946931";
+        results[1][16]="7705471102294.660";
+        results[1][17]="7.938428269631898E-9";
+        results[1][18]="60473488.68147447";
+        results[1][19]="5.116684819466090E-14";
+        results[1][20]="2046.470421156359";
+        results[1][21]="9.540079054379898E-19";
+        results[1][22]="0.01175696850045963";
+        results[1][23]="1.045600267671264E-23";
+        results[1][24]="6.227523191653488E-8";
+        results[1][25]="6.234165307538822E-8";
+        results[1][26]="1.669804363485477E+17";
+        results[1][27]="7.267658056226699E-13";
+        results[1][28]="2575213302545.012";
+        results[1][29]="1.240601074437582E-17";
+        results[1][30]="5803814.629080740";
+        results[1][31]="1.513702499224934E-22";
+        results[1][32]="117.9945983141544";
+        results[1][33]="6.513252226158986E-28";
+        results[1][34]="0.003121614333321446";
+        results[1][35]="7.662861824967629E-12";
+        results[1][36]="1.614703445896061E+21";
+        results[1][37]="6.483385299828233E-17";
+        results[1][38]="7902463660001319";
+        results[1][39]="6.909981111408860E-22";
+        results[1][40]="143278626742.9544";
+        results[1][41]="1.106276192237624E-26";
+        results[1][42]="517432.5588391111";
+        results[1][43]="1.995684264553637E-31";
+        results[1][44]="13.59254180428686";
+        results[1][45]="1.750516997842428E-15";
+        results[1][46]="9.530846823547244E+24";
+        results[1][47]="6.363578981627979E-21";
+        results[1][48]="7.892110721075739E+19";
+        results[1][49]="2.695017594120158E-25";
+        results[1][50]="2659755306503325";
+        results[1][51]="6.708128334181145E-31";
+        results[1][52]="47659701441.40646";
+        results[1][53]="1.397306722110734E-35";
+        results[1][54]="194361.6416434591";
+        results[1][55]="7.076935347495779E-20";
+        results[1][56]="8.169230942250227E+28";
+        results[1][57]="7.098249706679054E-25";
+        results[1][58]="6.529561130949462E+23";
+        results[1][59]="1.392785475542062E-29";
+        results[1][60]="3.372619752780715E+19";
+        results[1][61]="6.438417854312836E-35";
+        results[1][62]="241122707459808.1";
+        results[1][63]="5.476113184315002E-40";
+        results[1][64]="2519471664.228668";
+        results[1][65]="5.941399214551468E-24";
+        results[1][66]="5.296821713629854E+32";
+        results[1][67]="1.917891304584321E-28";
+        results[1][68]="1.130000185511682E+28";
+        results[1][69]="8.518365403010947E-34";
+        results[1][70]="8.296786726957023E+22";
+        results[1][71]="5.205821369719668E-39";
+        results[1][72]="2.022205866476320E+18";
+        results[1][73]="9.864465530164297E-44";
+        results[1][74]="5647785890103.269";
+        results[2][0]="20269260647.17756";
+        results[2][1]="44569.69401753148";
+        results[2][2]="1";
+        results[2][3]="0.00001166109071065203";
+        results[2][4]="8.139070777868161E-11";
+        results[2][5]="253933.9585665772";
+        results[2][6]="157808328301844.9";
+        results[2][7]="2.435210825001846";
+        results[2][8]="232639203.3002624";
+        results[2][9]="0.00002269964480050335";
+        results[2][10]="8284.378509364762";
+        results[2][11]="2.750776908140411E-10";
+        results[2][12]="0.03693544859234678";
+        results[2][13]="3.460942489720927E-15";
+        results[2][14]="2.782853488076028E-7";
+        results[2][15]="29.89469998645674";
+        results[2][16]="3.434304892902040E+17";
+        results[2][17]="0.0003538133189576156";
+        results[2][18]="2695284886705.971";
+        results[2][19]="2.280490767877520E-9";
+        results[2][20]="91210560.48686773";
+        results[2][21]="4.251984043567731E-14";
+        results[2][22]="524.0044886392415";
+        results[2][23]="4.660208399475724E-19";
+        results[2][24]="0.002775588031390770";
+        results[2][25]="0.002778548402117154";
+        results[2][26]="7.442266954968664E+21";
+        results[2][27]="3.239172957900716E-8";
+        results[2][28]="1.147764689243079E+17";
+        results[2][29]="5.529321028550383E-13";
+        results[2][30]="258674242152.6016";
+        results[2][31]="6.746525722402801E-18";
+        results[2][32]="5258983.142583397";
+        results[2][33]="2.902936587789118E-23";
+        results[2][34]="139.1293956768774";
+        results[2][35]="3.415314068374301E-7";
+        results[2][36]="7.196683851264116E+25";
+        results[2][37]="2.889624990111060E-12";
+        results[2][38]="3.522103873109208E+20";
+        results[2][39]="3.079757438024150E-17";
+        results[2][40]="6385884553185581";
+        results[2][41]="4.930639138691073E-22";
+        results[2][42]="23061810822.16754";
+        results[2][43]="8.894703702675794E-27";
+        results[2][44]="605815.4291375707";
+        results[2][45]="7.802000696632482E-11";
+        results[2][46]="4.247869266534626E+29";
+        results[2][47]="2.836227680675536E-16";
+        results[2][48]="3.517489599908254E+24";
+        results[2][49]="1.201161095417993E-20";
+        results[2][50]="1.185444801723589E+20";
+        results[2][51]="2.989792272847868E-26";
+        results[2][52]="2124178310210390";
+        results[2][53]="6.227753305311532E-31";
+        results[2][54]="8662638896.794075";
+        results[2][55]="3.154168430197397E-15";
+        results[2][56]="3.641001234546430E+33";
+        results[2][57]="3.163668174867180E-20";
+        results[2][58]="2.910205416751843E+28";
+        results[2][59]="6.207602247697180E-25";
+        results[2][60]="1.503166304189191E+24";
+        results[2][61]="2.869583137237347E-30";
+        results[2][62]="1.074676529216240E+19";
+        results[2][63]="2.440686890302896E-35";
+        results[2][64]="112292081160512.5";
+        results[2][65]="2.648063450285608E-19";
+        results[2][66]="2.360777230418994E+37";
+        results[2][67]="8.547982860420744E-24";
+        results[2][68]="5.036376250800950E+32";
+        results[2][69]="3.796609395417242E-29";
+        results[2][70]="3.697852457491911E+27";
+        results[2][71]="2.320218655583322E-34";
+        results[2][72]="9.012909670930670E+22";
+        results[2][73]="4.396562103259092E-39";
+        results[2][74]="2.517200889984344E+17";
+        results[3][0]="1738195950114877";
+        results[3][1]="3822086211.611279";
+        results[3][2]="85755.27151045421";
+        results[3][3]="1";
+        results[3][4]="0.000006979682243988879";
+        results[3][5]="21776175562.60126";
+        results[3][6]="1.353289604013560E+19";
+        results[3][7]="208832.1654832305";
+        results[3][8]="19950038042989.76";
+        results[3][9]="1.946614203058035";
+        results[3][10]="710429128.3659471";
+        results[3][11]="0.00002358936206222687";
+        results[3][12]="3167.409422397122";
+        results[3][13]="2.967940628880855E-10";
+        results[3][14]="0.02386443564437743";
+        results[3][15]="2563628.114062170";
+        results[3][16]="2.945097485404958E+22";
+        results[3][17]="30.34135723122526";
+        results[3][18]="2.311348872574943E+17";
+        results[3][19]="0.0001955641049764209";
+        results[3][20]="7821786379172.049";
+        results[3][21]="3.646300461142698E-9";
+        results[3][22]="44936147.19595487";
+        results[3][23]="3.996374365923399E-14";
+        results[3][24]="238.0213052330826";
+        results[3][25]="238.2751726284952";
+        results[3][26]="6.382136233766191E+26";
+        results[3][27]="0.002777761564740970";
+        results[3][28]="9.842687255615237E+21";
+        results[3][29]="4.741684260718020E-8";
+        results[3][30]="2.218267986855733E+16";
+        results[3][31]="5.785501450769154E-13";
+        results[3][32]="450985527261.1410";
+        results[3][33]="2.489421152634873E-18";
+        results[3][34]="11931079.10135604";
+        results[3][35]="0.02928811852269122";
+        results[3][36]="6.171535776400555E+30";
+        results[3][37]="2.478005755903675E-7";
+        results[3][38]="3.020389739265025E+25";
+        results[3][39]="2.641054352841019E-12";
+        results[3][40]="5.476232636928451E+20";
+        results[3][41]="4.228282980585251E-17";
+        results[3][42]="1977671848577708";
+        results[3][43]="7.627677310280051E-22";
+        results[3][44]="51951866610.91471";
+        results[3][45]="0.000006690626880644714";
+        results[3][46]="3.642771822925908E+34";
+        results[3][47]="2.432214748217965E-11";
+        results[3][48]="3.016432756753313E+29";
+        results[3][49]="1.030058958653646E-15";
+        results[3][50]="1.016581408324629E+25";
+        results[3][51]="2.563904481179269E-21";
+        results[3][52]="1.821594877287098E+20";
+        results[3][53]="5.340626755971191E-26";
+        results[3][54]="742866950591597.5";
+        results[3][55]="2.704865701212809E-10";
+        results[3][56]="3.122350494384281E+38";
+        results[3][57]="2.713012233047182E-15";
+        results[3][58]="2.495654556647489E+33";
+        results[3][59]="5.323346161801775E-20";
+        results[3][60]="1.289044345411101E+29";
+        results[3][61]="2.460818810556097E-25";
+        results[3][62]="9.215917754885128E+23";
+        results[3][63]="2.093017669499310E-30";
+        results[3][64]="9.629637908393713E+18";
+        results[3][65]="2.270854001561525E-14";
+        results[3][66]="2.024490923702789E+42";
+        results[3][67]="7.330345910620899E-19";
+        results[3][68]="4.318958128162389E+37";
+        results[3][69]="3.255792695231470E-24";
+        results[3][70]="3.171103414978191E+32";
+        results[3][71]="1.989709807731689E-29";
+        results[3][72]="7.729045159298581E+27";
+        results[3][73]="3.770283768775571E-34";
+        results[3][74]="2.158632457669644E+22";
+        results[4][0]="2.490365448386802E+20";
+        results[4][1]="547601750051441.0";
+        results[4][2]="12286414841.35031";
+        results[4][3]="143272.9979736873";
+        results[4][4]="1";
+        results[4][5]="3119937957255229";
+        results[4][6]="1.938898586936469E+24";
+        results[4][7]="29920010422.11961";
+        results[4][8]="2.858301760108257E+18";
+        results[4][9]="278897.2527702849";
+        results[4][10]="101785311068822.8";
+        results[4][11]="3.379718622942007";
+        results[4][12]="453804243.7569410";
+        results[4][13]="0.00004252257517076709";
+        results[4][14]="3419.129239720079";
+        results[4][15]="367298685591.3171";
+        results[4][16]="4.219529460587362E+27";
+        results[4][17]="4347097.213108260";
+        results[4][18]="3.311538823369143E+22";
+        results[4][19]="28.01905561601273";
+        results[4][20]="1.120650784053732E+18";
+        results[4][21]="0.0005224163985807529";
+        results[4][22]="6438136526151.358";
+        results[4][23]="5.725725364310391E-9";
+        results[4][24]="34102025.98235386";
+        results[4][25]="34138398.32518239";
+        results[4][26]="9.143877916881798E+31";
+        results[4][27]="397.9782270365194";
+        results[4][28]="1.410191311229400E+27";
+        results[4][29]="0.006793553194777180";
+        results[4][30]="3.178179047858768E+21";
+        results[4][31]="8.289061376328140E-8";
+        results[4][32]="6.461404853344776E+16";
+        results[4][33]="3.566668317571105E-13";
+        results[4][34]="1709401471912.486";
+        results[4][35]="4196.196545754653";
+        results[4][36]="8.842144327867755E+35";
+        results[4][37]="0.03550313136443727";
+        results[4][38]="4.327402929934638E+30";
+        results[4][39]="3.783917749429893E-7";
+        results[4][40]="7.845962674940902E+25";
+        results[4][41]="6.057987789095672E-12";
+        results[4][42]="2.833469747538924E+20";
+        results[4][43]="1.092840195819694E-16";
+        results[4][44]="7443299679674857";
+        results[4][45]="0.9585861715133080";
+        results[4][46]="5.219108400046689E+39";
+        results[4][47]="0.000003484706986930048";
+        results[4][48]="4.321733642460815E+34";
+        results[4][49]="1.475796350959623E-10";
+        results[4][50]="1.456486660549828E+30";
+        results[4][51]="3.673382815367253E-16";
+        results[4][52]="2.609853591624336E+25";
+        results[4][53]="7.651676063864807E-21";
+        results[4][54]="1.064327751068292E+20";
+        results[4][55]="0.00003875342181289592";
+        results[4][56]="4.473485160550607E+43";
+        results[4][57]="3.887013961679578E-10";
+        results[4][58]="3.575599102375792E+38";
+        results[4][59]="7.626917638530619E-15";
+        results[4][60]="1.846852478880778E+34";
+        results[4][61]="3.525688884584153E-20";
+        results[4][62]="1.320392165821326E+29";
+        results[4][63]="2.998729163210665E-25";
+        results[4][64]="1.379667092536635E+24";
+        results[4][65]="3.253520607642641E-9";
+        results[4][66]="2.900548840094181E+47";
+        results[4][67]="1.050240634798815E-13";
+        results[4][68]="6.187900791446503E+42";
+        results[4][69]="4.664671802266443E-19";
+        results[4][70]="4.543334931485233E+37";
+        results[4][71]="2.850716892513680E-24";
+        results[4][72]="1.107363471446723E+33";
+        results[4][73]="5.401798587640085E-29";
+        results[4][74]="3.092737437336386E+27";
+        results[5][0]="79820.99267697315";
+        results[5][1]="0.1755168716666387";
+        results[5][2]="0.000003938031784503595";
+        results[5][3]="4.592174586052730E-11";
+        results[5][4]="3.205191941956922E-16";
+        results[5][5]="1";
+        results[5][6]="621454212.7120434";
+        results[5][7]="0.000009589937630824491";
+        results[5][8]="916.1405769180272";
+        results[5][9]="8.939192272132398E-11";
+        results[5][10]="0.03262414588473695";
+        results[5][11]="1.083264689633546E-15";
+        results[5][12]="1.454529705315602E-7";
+        results[5][13]="1.362930152886002E-20";
+        results[5][14]="1.095896548766010E-12";
+        results[5][15]="0.0001177262787348659";
+        results[5][16]="1352440182592.445";
+        results[5][17]="1.393328095835799E-9";
+        results[5][18]="10614117.55214028";
+        results[5][19]="8.980645128168683E-15";
+        results[5][20]="359.1900862796728";
+        results[5][21]="1.674444831077185E-19";
+        results[5][22]="0.002063546331483886";
+        results[5][23]="1.835204879954603E-24";
+        results[5][24]="1.093035388830462E-8";
+        results[5][25]="1.094201192231903E-8";
+        results[5][26]="2.930788381742739E+16";
+        results[5][27]="1.275596606371755E-13";
+        results[5][28]="451993382737.0138";
+        results[5][29]="2.177464195715552E-18";
+        results[5][30]="1018667.387429325";
+        results[5][31]="2.656803272979331E-23";
+        results[5][32]="20.71004276966202";
+        results[5][33]="1.143185655111196E-28";
+        results[5][34]="0.0005478959823343203";
+        results[5][35]="1.344961535532028E-12";
+        results[5][36]="2.834076974930183E+20";
+        results[5][37]="1.137943505635324E-17";
+        results[5][38]="1387015700062728";
+        results[5][39]="1.212818267950047E-22";
+        results[5][40]="25147816342.61536";
+        results[5][41]="1.941701364608288E-27";
+        results[5][42]="90818.14402590475";
+        results[5][43]="3.502762589487909E-32";
+        results[5][44]="2.385720415486439";
+        results[5][45]="3.072452672605791E-16";
+        results[5][46]="1.672824418802933E+24";
+        results[5][47]="1.116915475458918E-21";
+        results[5][48]="1.385198584609954E+19";
+        results[5][49]="4.730210572065213E-26";
+        results[5][50]="466831930796205.5";
+        results[5][51]="1.177389699953815E-31";
+        results[5][52]="8365081701.561654";
+        results[5][53]="2.452509046236414E-36";
+        results[5][54]="34113.74731325223";
+        results[5][55]="1.242121553179516E-20";
+        results[5][56]="1.433837858906067E+28";
+        results[5][57]="1.245862582824943E-25";
+        results[5][58]="1.146048143060329E+23";
+        results[5][59]="2.444573495698746E-30";
+        results[5][60]="5.919516683291835E+18";
+        results[5][61]="1.130050960271621E-35";
+        results[5][62]="42321103301135.62";
+        results[5][63]="9.611502550034045E-41";
+        results[5][64]="442209784.7581557";
+        results[5][65]="1.042815803460698E-24";
+        results[5][66]="9.296815769522365E+31";
+        results[5][67]="3.366222819772885E-29";
+        results[5][68]="1.983340975437319E+27";
+        results[5][69]="1.495116847249808E-34";
+        results[5][70]="1.456226051200787E+22";
+        results[5][71]="9.137094812685324E-40";
+        results[5][72]="3.549312475498482E+17";
+        results[5][73]="1.731380130517828E-44";
+        results[5][74]="991281711273.9084";
+        results[6][0]="0.0001284422746587108";
+        results[6][1]="2.824292893609623E-10";
+        results[6][2]="6.336801173682476E-15";
+        results[6][3]="7.389401330167758E-20";
+        results[6][4]="5.157567325787970E-25";
+        results[6][5]="1.609129006682524E-9";
+        results[6][6]="1";
+        results[6][7]="1.543144681403597E-14";
+        results[6][8]="0.000001474188376517659";
+        results[6][9]="1.438431358140050E-19";
+        results[6][10]="5.249645946137250E-11";
+        results[6][11]="1.743112634004281E-24";
+        results[6][12]="2.340525939904718E-16";
+        results[6][13]="2.193130443091112E-29";
+        results[6][14]="1.763438924942655E-21";
+        results[6][15]="1.894367699610646E-13";
+        results[6][16]="2176.250727612512";
+        results[6][17]="2.242044654835111E-18";
+        results[6][18]="0.01707948443348703";
+        results[6][19]="1.445101657445832E-23";
+        results[6][20]="5.779831867454199E-7";
+        results[6][21]="2.694397747775916E-28";
+        results[6][22]="3.320512258624031E-12";
+        results[6][23]="2.953081405540270E-33";
+        results[6][24]="1.758834949497607E-17";
+        results[6][25]="1.760710877566955E-17";
+        results[6][26]="47160165.97510373";
+        results[6][27]="2.052599500138579E-22";
+        results[6][28]="727.3156629906847";
+        results[6][29]="3.503820798338526E-27";
+        results[6][30]="0.001639167241274031";
+        results[6][31]="4.275139211600108E-32";
+        results[6][32]="3.332513055029883E-8";
+        results[6][33]="1.839533197662788E-37";
+        results[6][34]="8.816353178189703E-13";
+        results[6][35]="2.164216619696854E-21";
+        results[6][36]="456039546753.1217";
+        results[6][37]="1.831097902883797E-26";
+        results[6][38]="2231887.195695002";
+        results[6][39]="1.951581054792877E-31";
+        results[6][40]="40.46608073162718";
+        results[6][41]="3.124447988106234E-36";
+        results[6][42]="0.0001461381098851545";
+        results[6][43]="5.636396886267384E-41";
+        results[6][44]="3.838931922393911E-9";
+        results[6][45]="4.943972717149220E-25";
+        results[6][46]="2691790295382633";
+        results[6][47]="1.797261089573547E-30";
+        results[6][48]="22289632225.11453";
+        results[6][49]="7.611519039226468E-35";
+        results[6][50]="751192.8010897827";
+        results[6][51]="1.894571918364917E-40";
+        results[6][52]="13.46049560925206";
+        results[6][53]="3.946403445450303E-45";
+        results[6][54]="0.00005489342032839216";
+        results[6][55]="1.998733821046708E-29";
+        results[6][56]="2.307230089645316E+19";
+        results[6][57]="2.004753620364024E-34";
+        results[6][58]="184413931005301.8";
+        results[6][59]="3.933634120896147E-39";
+        results[6][60]="9525266000.626017";
+        results[6][61]="1.818397779202506E-44";
+        results[6][62]="68100.11491666482";
+        results[6][63]="1.546614755106283E-49";
+        results[6][64]="0.7115725916931837";
+        results[6][65]="1.678025157975551E-33";
+        results[6][66]="1.495977592452194E+23";
+        results[6][67]="5.416686782253186E-38";
+        results[6][68]="3.191451493718201E+18";
+        results[6][69]="2.405835887289389E-43";
+        results[6][70]="23432555792739.37";
+        results[6][71]="1.470276429990037E-48";
+        results[6][72]="571130165.8104760";
+        results[6][73]="2.786013989610011E-53";
+        results[6][74]="1595.100155404736";
+        results[7][0]="8323411032.456378";
+        results[7][1]="18302.19115320239";
+        results[7][2]="0.4106420642242513";
+        results[7][3]="0.000004788534360528390";
+        results[7][4]="3.342244825091065E-11";
+        results[7][5]="104275.9649224148";
+        results[7][6]="64802737685647.92";
+        results[7][7]="1";
+        results[7][8]="95531442.66270503";
+        results[7][9]="0.000009321428998035992";
+        results[7][10]="3401.914291900572";
+        results[7][11]="1.129584707779182E-10";
+        results[7][12]="0.01516724885301000";
+        results[7][13]="1.421208568140421E-15";
+        results[7][14]="1.142756700777198E-7";
+        results[7][15]="12.27602131180330";
+        results[7][16]="1.410270050396740E+17";
+        results[7][17]="0.0001452906316467887";
+        results[7][18]="1106797349549.367";
+        results[7][19]="9.364654363655727E-10";
+        results[7][20]="37454892.83737830";
+        results[7][21]="1.746043504699232E-14";
+        results[7][22]="215.1782848775914";
+        results[7][23]="1.913677596875906E-19";
+        results[7][24]="0.001139773198646432";
+        results[7][25]="0.001140988851392383";
+        results[7][26]="3.056107864896266E+21";
+        results[7][27]="1.330140669811724E-8";
+        results[7][28]="4.713204612344845E+16";
+        results[7][29]="2.270571800922490E-13";
+        results[7][30]="106222524759.1882";
+        results[7][31]="2.770407248989495E-18";
+        results[7][32]="2159559.693390987";
+        results[7][33]="1.192067872721828E-23";
+        results[7][34]="57.13238223502557";
+        results[7][35]="1.402471619011349E-7";
+        results[7][36]="2.955261112252432E+25";
+        results[7][37]="1.186601570773187E-12";
+        results[7][38]="1.446324004865796E+20";
+        results[7][39]="1.264677951660229E-17";
+        results[7][40]="2622312814817888";
+        results[7][41]="2.024727833856987E-22";
+        results[7][42]="9470149600.764056";
+        results[7][43]="3.652539489129880E-27";
+        results[7][44]="248773.2983599527";
+        results[7][45]="3.203829671144209E-11";
+        results[7][46]="1.744353804164535E+29";
+        results[7][47]="1.164674389402563E-16";
+        results[7][48]="1.444429190193662E+24";
+        results[7][49]="4.932472716883077E-21";
+        results[7][50]="4.867935004036829E+19";
+        results[7][51]="1.227734470523965E-26";
+        results[7][52]="872276966085176.7";
+        results[7][53]="2.557377472772532E-31";
+        results[7][54]="3557243918.208811";
+        results[7][55]="1.295234235087226E-15";
+        results[7][56]="1.495148262797194E+33";
+        results[7][57]="1.299135229848029E-20";
+        results[7][58]="1.195052759651575E+28";
+        results[7][59]="2.549102600877473E-25";
+        results[7][60]="6.172633140245884E+23";
+        results[7][61]="1.178371542938247E-30";
+        results[7][62]="4.413073883307109E+18";
+        results[7][63]="1.002248702759050E-35";
+        results[7][64]="46111852003790.03";
+        results[7][65]="1.087406241422075E-19";
+        results[7][66]="9.694344350728666E+36";
+        results[7][67]="3.510161326756695E-24";
+        results[7][68]="2.068147939838898E+32";
+        results[7][69]="1.559047519187323E-29";
+        results[7][70]="1.518493766341199E+27";
+        results[7][71]="9.527793781803528E-35";
+        results[7][72]="3.701079831937688E+22";
+        results[7][73]="1.805413337572430E-39";
+        results[7][74]="1.033668569530294E+17";
+        results[8][0]="87.12745040231444";
+        results[8][1]="0.0001915829034197918";
+        results[8][2]="4.298501653263149E-9";
+        results[8][3]="5.012521769858929E-14";
+        results[8][4]="3.498580919469208E-19";
+        results[8][5]="0.001091535540718088";
+        results[8][6]="678339.3601041740";
+        results[8][7]="1.046775775731475E-8";
+        results[8][8]="1";
+        results[8][9]="9.757446070344992E-14";
+        results[8][10]="0.00003561041471876213";
+        results[8][11]="1.182421908739965E-18";
+        results[8][12]="1.587670868382187E-10";
+        results[8][13]="1.487686701391408E-23";
+        results[8][14]="1.196210031928393E-15";
+        results[8][15]="1.285024173155902E-7";
+        results[8][16]="1476236525.994914";
+        results[8][17]="1.520867136485833E-12";
+        results[8][18]="11585.68654152080";
+        results[8][19]="9.802693335972867E-18";
+        results[8][20]="0.3920687450478594";
+        results[8][21]="1.827716044092442E-22";
+        results[8][22]="0.000002252434160733091";
+        results[8][23]="2.003191350969721E-27";
+        results[8][24]="1.193086974171064E-11";
+        results[8][25]="1.194359490017227E-11";
+        results[8][26]="31990596809958.51";
+        results[8][27]="1.392359031474151E-16";
+        results[8][28]="493366841.4268441";
+        results[8][29]="2.376779558264652E-21";
+        results[8][30]="1111.911657549550";
+        results[8][31]="2.899995197153080E-26";
+        results[8][32]="0.02260574773287777";
+        results[8][33]="1.247827772192961E-31";
+        results[8][34]="5.980479373345604E-7";
+        results[8][35]="1.468073316931983E-15";
+        results[8][36]="3.093495743267101E+17";
+        results[8][37]="1.242105779730290E-20";
+        results[8][38]="1513976932152.447";
+        results[8][39]="1.323834243899629E-25";
+        results[8][40]="27449735.30941583";
+        results[8][41]="2.119436048930757E-30";
+        results[8][42]="99.13123194632914";
+        results[8][43]="3.823389857123776E-35";
+        results[8][44]="0.002604098623720172";
+        results[8][45]="3.353691289323497E-19";
+        results[8][46]="1.825947306504481E+21";
+        results[8][47]="1.219152937441450E-24";
+        results[8][48]="1.511993486054156E+16";
+        results[8][49]="5.163192954489619E-29";
+        results[8][50]="509563644006.1053";
+        results[8][51]="1.285162702774995E-34";
+        results[8][52]="9130783.978265085";
+        results[8][53]="2.677000787899666E-39";
+        results[8][54]="37.23636761949100";
+        results[8][55]="1.355819821187394E-23";
+        results[8][56]="1.565084982623100E+25";
+        results[8][57]="1.359903288004258E-28";
+        results[8][58]="1.250952279524317E+20";
+        results[8][59]="2.668338852452637E-33";
+        results[8][60]="6461362843686697";
+        results[8][61]="1.233490785959079E-38";
+        results[8][62]="46194988375.59113";
+        results[8][63]="1.049129663306469E-43";
+        results[8][64]="482687.6965168229";
+        results[8][65]="1.138270511899841E-27";
+        results[8][66]="1.014780482794204E+29";
+        results[8][67]="3.674351845758363E-32";
+        results[8][68]="2.164887164052315E+24";
+        results[8][69]="1.631973176299542E-37";
+        results[8][70]="1.589522490205218E+19";
+        results[8][71]="9.973463726956913E-43";
+        results[8][72]="387420071212069.1";
+        results[8][73]="1.889862946953332E-47";
+        results[8][74]="1082019218.719317";
+        results[9][0]="892932943458573.4";
+        results[9][1]="1963453367.188511";
+        results[9][2]="44053.55276650961";
+        results[9][3]="0.5137124749367641";
+        results[9][4]="0.000003585549839831714";
+        results[9][5]="11186693042.92137";
+        results[9][6]="6.952017517839994E+18";
+        results[9][7]="107279.6885767942";
+        results[9][8]="10248583418146.87";
+        results[9][9]="1";
+        results[9][10]="364956305.8000387";
+        results[9][11]="0.00001211814956716597";
+        results[9][12]="1627.137733517652";
+        results[9][13]="1.524668125927760E-10";
+        results[9][14]="0.01225945829784226";
+        results[9][15]="1316967.743292346";
+        results[9][16]="1.512933318157422E+22";
+        results[9][17]="15.58673371619321";
+        results[9][18]="1.187368749772774E+17";
+        results[9][19]="0.0001004637203762303";
+        results[9][20]="4018149239271.144";
+        results[9][21]="1.873150034256679E-9";
+        results[9][22]="23084259.39015671";
+        results[9][23]="2.052987366292351E-14";
+        results[9][24]="122.2745137989658";
+        results[9][25]="122.4049286469690";
+        results[9][26]="3.278583000031628E+26";
+        results[9][27]="0.001426970768207302";
+        results[9][28]="5.056311230110650E+21";
+        results[9][29]="2.435862356942155E-8";
+        results[9][30]="1.139551937600652E+16";
+        results[9][31]="2.972084269024861E-13";
+        results[9][32]="231676891369.9822";
+        results[9][33]="1.278846701479992E-18";
+        results[9][34]="6129144.173823912";
+        results[9][35]="0.01504567185253299";
+        results[9][36]="3.170394917855513E+30";
+        results[9][37]="1.272982469772824E-7";
+        results[9][38]="1.551611888231443E+25";
+        results[9][39]="1.356742568040473E-12";
+        results[9][40]="2.813209021245996E+20";
+        results[9][41]="2.172121714689447E-17";
+        results[9][42]="1015954699945620";
+        results[9][43]="3.918432989082965E-22";
+        results[9][44]="26688321974.27763";
+        results[9][45]="0.000003437058493734438";
+        results[9][46]="1.871337328785176E+34";
+        results[9][47]="1.249459057884749E-11";
+        results[9][48]="1.549579136952070E+29";
+        results[9][49]="5.291541369807505E-16";
+        results[9][50]="5.222305512451464E+24";
+        results[9][51]="1.317109716528063E-21";
+        results[9][52]="9.357760127432864E+19";
+        results[9][53]="2.743546588523462E-26";
+        results[9][54]="381620019737136.4";
+        results[9][55]="1.389523253741598E-10";
+        results[9][56]="1.603990400090178E+38";
+        results[9][57]="1.393708228772385E-15";
+        results[9][58]="1.282048878882594E+33";
+        results[9][59]="2.734669331724314E-20";
+        results[9][60]="6.621981609843777E+28";
+        results[9][61]="1.264153321541716E-25";
+        results[9][62]="4.734331918675705E+23";
+        results[9][63]="1.075209287084869E-30";
+        results[9][64]="4.946865122665819E+18";
+        results[9][65]="1.166566029362225E-14";
+        results[9][66]="1.040006242902376E+42";
+        results[9][67]="3.765690139887650E-19";
+        results[9][68]="2.218702669166555E+37";
+        results[9][69]="1.672541323348396E-24";
+        results[9][70]="1.629035383588871E+32";
+        results[9][71]="1.022138749735799E-29";
+        results[9][72]="3.970506917681290E+27";
+        results[9][73]="1.936841806071609E-34";
+        results[9][74]="1.108916422308302E+22";
+        results[10][0]="2446684.518852554";
+        results[10][1]="5.379968330412397";
+        results[10][2]="0.0001207091152184304";
+        results[10][3]="1.407599942164664E-9";
+        results[10][4]="9.824600322966481E-15";
+        results[10][5]="30.65214346248511";
+        results[10][6]="19048903683.41529";
+        results[10][7]="0.0002939521440563168";
+        results[10][8]="28081.67239549524";
+        results[10][9]="2.740054039641405E-9";
+        results[10][10]="1";
+        results[10][11]="3.320438467449187E-14";
+        results[10][12]="0.000004458445319778002";
+        results[10][13]="4.177673057560849E-19";
+        results[10][14]="3.359157823281803E-11";
+        results[10][15]="0.003608562785085618";
+        results[10][16]="41455190501253.18";
+        results[10][17]="4.270849268387010E-8";
+        results[10][18]="325345453.9358852";
+        results[10][19]="2.752760228542944E-13";
+        results[10][20]="11009.94605494694";
+        results[10][21]="5.132532318219450E-18";
+        results[10][22]="0.06325211819412893";
+        results[10][23]="5.625296326342124E-23";
+        results[10][24]="3.350387754800450E-7";
+        results[10][25]="3.353961192111453E-7";
+        results[10][26]="8.983494593536299E+17";
+        results[10][27]="3.909977017876616E-12";
+        results[10][28]="13854566011748.89";
+        results[10][29]="6.674394491149785E-17";
+        results[10][30]="31224338.90003856";
+        results[10][31]="8.143671507496243E-22";
+        results[10][32]="634.8072020898827";
+        results[10][33]="3.504109070472339E-27";
+        results[10][34]="0.01679418625303079";
+        results[10][35]="4.122595393865199E-11";
+        results[10][36]="8.687053401928578E+21";
+        results[10][37]="3.488040758693718E-16";
+        results[10][38]="4.251500422304194E+16";
+        results[10][39]="3.717547954312753E-21";
+        results[10][40]="770834474302.0734";
+        results[10][41]="5.951730878927634E-26";
+        results[10][42]="2783770.779678667";
+        results[10][43]="1.073671814080092E-30";
+        results[10][44]="73.12744443686990";
+        results[10][45]="9.417726010240848E-15";
+        results[10][46]="5.127565407269577E+25";
+        results[10][47]="3.423585338923651E-20";
+        results[10][48]="4.245930573949562E+20";
+        results[10][49]="1.449910930627067E-24";
+        results[10][50]="1.430939931563421E+16";
+        results[10][51]="3.608951799423663E-30";
+        results[10][52]="256407684391.6768";
+        results[10][53]="7.517465912828107E-35";
+        results[10][54]="1045659.476688773";
+        results[10][55]="3.807368804590335E-19";
+        results[10][56]="4.395020375313125E+29";
+        results[10][57]="3.818835862329240E-24";
+        results[10][58]="3.512883209599986E+24";
+        results[10][59]="7.493141749474667E-29";
+        results[10][60]="1.814458746048353E+20";
+        results[10][61]="3.463848415416480E-34";
+        results[10][62]="1297232529877061";
+        results[10][63]="2.946131550536850E-39";
+        results[10][64]="13554677762.92165";
+        results[10][65]="3.196453961262399E-23";
+        results[10][66]="2.849673307116934E+33";
+        results[10][67]="1.031819447983696E-27";
+        results[10][68]="6.079365211412986E+28";
+        results[10][69]="4.582853609507953E-33";
+        results[10][70]="4.463644983521472E+23";
+        results[10][71]="2.800715410287590E-38";
+        results[10][72]="1.087940351921676E+19";
+        results[10][73]="5.307051214872866E-43";
+        results[10][74]="30384909225705.58";
+        results[11][0]="7.368558528753992E+19";
+        results[11][1]="162025840356721.7";
+        results[11][2]="3635336609.961668";
+        results[11][3]="42391.98997251724";
+        results[11][4]="0.2958826196985332";
+        results[11][5]="923135416089567.4";
+        results[11][6]="5.736863932325467E+23";
+        results[11][7]="8852811065.104166";
+        results[11][8]="8.457218126697593E+17";
+        results[11][9]="82520.84977639587";
+        results[11][10]="30116504485873.39";
+        results[11][11]="1";
+        results[11][12]="134272788.4731154";
+        results[11][13]="0.00001258169093785437";
+        results[11][14]="1011.660916536231";
+        results[11][15]="108677297304.5868";
+        results[11][16]="1.248485430693727E+27";
+        results[11][17]="1286230.511498665";
+        results[11][18]="9.798267822918602E+21";
+        results[11][19]="8.290351577144743";
+        results[11][20]="3.315810897530334E+17";
+        results[11][21]="0.0001545739325855462";
+        results[11][22]="1904932701334.478";
+        results[11][23]="1.694142620466497E-9";
+        results[11][24]="10090196.78468630";
+        results[11][25]="10100958.72876698";
+        results[11][26]="2.705514552250553E+31";
+        results[11][27]="117.7548403985430";
+        results[11][28]="4.172510994426643E+26";
+        results[11][29]="0.002010094316332011";
+        results[11][30]="9.403679425514422E+20";
+        results[11][31]="2.452589194869899E-8";
+        results[11][32]="1.911817394940469E+16";
+        results[11][33]="1.055315165398698E-13";
+        results[11][34]="505782185625.9951";
+        results[11][35]="1241.581626727822";
+        results[11][36]="2.616236827482037E+35";
+        results[11][37]="0.01050475951561086";
+        results[11][38]="1.280403315400169E+30";
+        results[11][39]="1.119595496425095E-7";
+        results[11][40]="2.321483990318425E+25";
+        results[11][41]="1.792453297139352E-12";
+        results[11][42]="8.383744517383584E+19";
+        results[11][43]="3.233524200509892E-17";
+        results[11][44]="2202343008423450";
+        results[11][45]="0.2836289876341450";
+        results[11][46]="1.544243465896434E+39";
+        results[11][47]="0.000001031064232174645";
+        results[11][48]="1.278725871770590E+34";
+        results[11][49]="4.366624904634691E-11";
+        results[11][50]="4.309490886794513E+29";
+        results[11][51]="1.086890130566436E-16";
+        results[11][52]="7.722103177194344E+24";
+        results[11][53]="2.263997958860880E-21";
+        results[11][54]="3.149160832039346E+19";
+        results[11][55]="0.00001146646396828192";
+        results[11][56]="1.323626508486227E+43";
+        results[11][57]="1.150099873786527E-10";
+        results[11][58]="1.057957629402673E+38";
+        results[11][59]="2.256672371113390E-15";
+        results[11][60]="5.464515496479744E+33";
+        results[11][61]="1.043190063412758E-20";
+        results[11][62]="3.906810930526339E+28";
+        results[11][63]="8.872718405771617E-26";
+        results[11][64]="4.082195136515981E+23";
+        results[11][65]="9.626602006324680E-10";
+        results[11][66]="8.582219893706080E+46";
+        results[11][67]="3.107479503381239E-14";
+        results[11][68]="1.830892296607818E+42";
+        results[11][69]="1.380195312888473E-19";
+        results[11][70]="1.344293841695707E+37";
+        results[11][71]="8.434775821758094E-25";
+        results[11][72]="3.276496048901183E+32";
+        results[11][73]="1.598298317194785E-29";
+        results[11][74]="9.150872549988179E+26";
+        results[12][0]="548775266570.8102";
+        results[12][1]="1206691.558276256";
+        results[12][2]="27.07426166761666";
+        results[12][3]="0.0003157154212300068";
+        results[12][4]="2.203593319712548E-9";
+        results[12][5]="6875074.440525237";
+        results[12][6]="4272543973773303";
+        results[12][7]="65.93153509191260";
+        results[12][8]="6298534664.297173";
+        results[12][9]="0.0006145761230907817";
+        results[12][10]="224293.4315161216";
+        results[12][11]="7.447525380023099E-9";
+        results[12][12]="1";
+        results[12][13]="9.370246258327704E-14";
+        results[12][14]="0.000007534370351881011";
+        results[12][15]="809.3769299082260";
+        results[12][16]="9.298126931680603E+18";
+        results[12][17]="0.009579234378946397";
+        results[12][18]="72972848291449.96";
+        results[12][19]="6.174260378010000E-8";
+        results[12][20]="2469458581.471433";
+        results[12][21]="1.151193286020835E-12";
+        results[12][22]="14187.03464042448";
+        results[12][23]="1.261717016330308E-17";
+        results[12][24]="0.07514699664337871";
+        results[12][25]="0.07522714649505796";
+        results[12][26]="2.014938829390782E+23";
+        results[12][27]="8.769821624887181E-7";
+        results[12][28]="3.107488152941784E+18";
+        results[12][29]="1.497022843712283E-11";
+        results[12][30]="7003414118711.969";
+        results[12][31]="1.826572027556399E-16";
+        results[12][32]="142383085.7078879";
+        results[12][33]="7.859486478230080E-22";
+        results[12][34]="3766.825664213152";
+        results[12][35]="0.000009246710676425823";
+        results[12][36]="1.948449017282359E+27";
+        results[12][37]="7.823446310355102E-11";
+        results[12][38]="9.535836188108477E+21";
+        results[12][39]="8.338215874985453E-16";
+        results[12][40]="1.728931093721377E+17";
+        results[12][41]="1.334934142295141E-20";
+        results[12][42]="624381500728.4375";
+        results[12][43]="2.408175355021632E-25";
+        results[12][44]="16402005.45075007";
+        results[12][45]="2.112334083915552E-9";
+        results[12][46]="1.150079240519853E+31";
+        results[12][47]="7.678877037554697E-15";
+        results[12][48]="9.523343384103629E+25";
+        results[12][49]="3.252054980230781E-19";
+        results[12][50]="3.209504275438039E+21";
+        results[12][51]="8.094641832690152E-25";
+        results[12][52]="5.751055939931189E+16";
+        results[12][53]="1.686118225893689E-29";
+        results[12][54]="234534552223.8769";
+        results[12][55]="8.539678142289999E-14";
+        results[12][56]="9.857742015622534E+34";
+        results[12][57]="8.565397999586525E-19";
+        results[12][58]="7.879166295965479E+29";
+        results[12][59]="1.680662475826388E-23";
+        results[12][60]="4.069711784956242E+25";
+        results[12][61]="7.769184473454425E-29";
+        results[12][62]="2.909607356004657E+20";
+        results[12][63]="6.607979551678220E-34";
+        results[12][64]="3040225188540963";
+        results[12][65]="7.169436276548434E-18";
+        results[12][66]="6.391630047531518E+38";
+        results[12][67]="2.314303246933335E-22";
+        results[12][68]="1.363561684707550E+34";
+        results[12][69]="1.027903962212583E-27";
+        results[12][70]="1.001166250423753E+29";
+        results[12][71]="6.281820700734860E-33";
+        results[12][72]="2.440178748173697E+24";
+        results[12][73]="1.190336728215637E-37";
+        results[12][74]="6.815135556539365E+18";
+        results[13][0]="5.856572510920854E+24";
+        results[13][1]="1.287790656733084E+19";
+        results[13][2]="288938635348614.2";
+        results[13][3]="3369339636.612199";
+        results[13][4]="23516.92003563011";
+        results[13][5]="7.337133145689837E+19";
+        results[13][6]="4.559692302618115E+28";
+        results[13][7]="703626492562206.3";
+        results[13][8]="6.721845393016666E+22";
+        results[13][9]="6558804391.555706";
+        results[13][10]="2.393677021207241E+18";
+        results[13][11]="79480.57259865707";
+        results[13][12]="10672078112261.57";
+        results[13][13]="1";
+        results[13][14]="80407388.92198187";
+        results[13][15]="8637733818243049";
+        results[13][16]="9.923033691261843E+31";
+        results[13][17]="102230337547.7774";
+        results[13][18]="7.787719370405676E+26";
+        results[13][19]="658921.8903956439";
+        results[13][20]="2.635425487645780E+22";
+        results[13][21]="12.28562467072543";
+        results[13][22]="1.514051418639709E+17";
+        results[13][23]="0.0001346514255384665";
+        results[13][24]="801974618079.9959";
+        results[13][25]="802829983557.8030";
+        results[13][26]="2.150358457868733E+36";
+        results[13][27]="9359222.141139671";
+        results[13][28]="3.316335630112216E+31";
+        results[13][29]="159.7634472393744";
+        results[13][30]="7.474098252740968E+25";
+        results[13][31]="0.001949331935575389";
+        results[13][32]="1.519523412539414E+21";
+        results[13][33]="8.387705361793504E-9";
+        results[13][34]="4.019985772375435E+16";
+        results[13][35]="98681618.62029944";
+        results[13][36]="2.079400011019663E+40";
+        results[13][37]="834.9243013119425";
+        results[13][38]="1.017671886652243E+35";
+        results[13][39]="0.008898609113474424";
+        results[13][40]="1.845128768291237E+30";
+        results[13][41]="1.424652144129865E-7";
+        results[13][42]="6.663448147624991E+24";
+        results[13][43]="2.570023549681410E-12";
+        results[13][44]="1.750434833681448E+20";
+        results[13][45]="22542.99434273927";
+        results[13][46]="1.227373549011834E+44";
+        results[13][47]="0.08194957555923548";
+        results[13][48]="1.016338644850434E+39";
+        results[13][49]="0.000003470618477439216";
+        results[13][50]="3.425208032911223E+34";
+        results[13][51]="8.638664992924948E-12";
+        results[13][52]="6.137571821893155E+29";
+        results[13][53]="1.799438541324536E-16";
+        results[13][54]="2.502971061357505E+24";
+        results[13][55]="0.9113611218809168";
+        results[13][56]="1.052025928012465E+48";
+        results[13][57]="0.000009141059651419642";
+        results[13][58]="8.408707817004228E+42";
+        results[13][59]="1.793616122236614E-10";
+        results[13][60]="4.343228206344449E+38";
+        results[13][61]="8.291334356927543E-16";
+        results[13][62]="3.105155697929257E+33";
+        results[13][63]="7.052087393973718E-21";
+        results[13][64]="3.244552069097433E+28";
+        results[13][65]="0.00007651278396420666";
+        results[13][66]="6.821197513193451E+51";
+        results[13][67]="2.469842502673314E-9";
+        results[13][68]="1.455203681008597E+47";
+        results[13][69]="1.096987137663585E-14";
+        results[13][70]="1.068452442788232E+42";
+        results[13][71]="6.704008120546416E-20";
+        results[13][72]="2.604177820839036E+37";
+        results[13][73]="1.270336654341115E-24";
+        results[13][74]="7.273165900503936E+31";
+        results[14][0]="7.283624788019671E+16";
+        results[14][1]="160158248389.6609";
+        results[14][2]="3593433.877438394";
+        results[14][3]="41.90335840753915";
+        results[14][4]="0.0002924721266406031";
+        results[14][5]="912494889345.1759";
+        results[14][6]="5.670737930617694E+20";
+        results[14][7]="8750769.077266332";
+        results[14][8]="835973594359440.8";
+        results[14][9]="81.56967263194704";
+        results[14][10]="29769366389.07392";
+        results[14][11]="0.0009884734930986993";
+        results[14][12]="132725.0922501232";
+        results[14][13]="1.243666799042916E-8";
+        results[14][14]="1";
+        results[14][15]="107424627.6871908";
+        results[14][16]="1.234094754760663E+24";
+        results[14][17]="1271.404766631212";
+        results[14][18]="9.685328021236938E+18";
+        results[14][19]="0.008194792782476575";
+        results[14][20]="327759118033654.3";
+        results[14][21]="1.527922350848377E-7";
+        results[14][22]="1882975481.406032";
+        results[14][23]="1.674615073859902E-12";
+        results[14][24]="9973.892061812134";
+        results[14][25]="9984.529958270096";
+        results[14][26]="2.674329420092467E+28";
+        results[14][27]="0.1163975384180276";
+        results[14][28]="4.124416517653632E+23";
+        results[14][29]="0.000001986924950322545";
+        results[14][30]="9.295287849718610E+17";
+        results[14][31]="2.424319408589176E-11";
+        results[14][32]="18897808185436.61";
+        results[14][33]="1.043151067861683E-16";
+        results[14][34]="499952283.7728221";
+        results[14][35]="1.227270527538816";
+        results[14][36]="2.586080755634628E+32";
+        results[14][37]="0.00001038367633255766";
+        results[14][38]="1.265644737748760E+27";
+        results[14][39]="1.106690471208886E-10";
+        results[14][40]="2.294725389082761E+22";
+        results[14][41]="1.771792571839617E-15";
+        results[14][42]="8.287109228345220E+16";
+        results[14][43]="3.196252961497192E-20";
+        results[14][44]="2176957686537.825";
+        results[14][45]="0.0002803597361507711";
+        results[14][46]="1.526443732929490E+36";
+        results[14][47]="1.019179663186800E-9";
+        results[14][48]="1.263986629184754E+31";
+        results[14][49]="4.316292972536028E-14";
+        results[14][50]="4.259817510346784E+26";
+        results[14][51]="1.074362083975506E-19";
+        results[14][52]="7.633094301629857E+21";
+        results[14][53]="2.237901970763539E-24";
+        results[14][54]="3.112862007975538E+16";
+        results[14][55]="1.133429569221800E-8";
+        results[14][56]="1.308369718401416E+40";
+        results[14][57]="1.136843239654142E-13";
+        results[14][58]="1.045763073486079E+35";
+        results[14][59]="2.230660821453777E-18";
+        results[14][60]="5.401528720897306E+30";
+        results[14][61]="1.031165725947463E-23";
+        results[14][62]="3.861779047373550E+25";
+        results[14][63]="8.770446955834192E-29";
+        results[14][64]="4.035141686102474E+20";
+        results[14][65]="9.515640911862703E-13";
+        results[14][66]="8.483296876872797E+43";
+        results[14][67]="3.071661119439865E-17";
+        results[14][68]="1.809788503915430E+39";
+        results[14][69]="1.364286482089321E-22";
+        results[14][70]="1.328798829452025E+34";
+        results[14][71]="8.337552320037675E-28";
+        results[14][72]="3.238729494581439E+29";
+        results[14][73]="1.579875520611302E-32";
+        results[14][74]="9.045394954387817E+23";
+        results[15][0]="678021878.6728144";
+        results[15][1]="1490.889490034119";
+        results[15][2]="0.03345074546501661";
+        results[15][3]="3.900721772064906E-7";
+        results[15][4]="2.722579849122226E-12";
+        results[15][5]="8494.280212934647";
+        results[15][6]="5278806222284.789";
+        results[15][7]="0.08145961746078984";
+        results[15][8]="7781954.774781330";
+        results[15][9]="7.593200403679254E-7";
+        results[15][10]="277.1186368526144";
+        results[15][11]="9.201553818525026E-12";
+        results[15][12]="0.001235518289498798";
+        results[15][13]="1.157711062927156E-16";
+        results[15][14]="9.308852369606484E-9";
+        results[15][15]="1";
+        results[15][16]="1.148800588217273E+16";
+        results[15][17]="0.00001183531927458393";
+        results[15][18]="90159288700.90755";
+        results[15][19]="7.628411621159118E-11";
+        results[15][20]="3051061.242567714";
+        results[15][21]="1.422320359626963E-15";
+        results[15][22]="17.52834077199745";
+        results[15][23]="1.558874449847949E-20";
+        results[15][24]="0.00009284548875379919";
+        results[15][25]="0.00009294451536144952";
+        results[15][26]="2.489493775933610E+20";
+        results[15][27]="1.083527501319018E-9";
+        results[15][28]="3839358447360413";
+        results[15][29]="1.849599103204027E-14";
+        results[15][30]="8652846232.602745";
+        results[15][31]="2.256763147132834E-19";
+        results[15][32]="175916.9065073704";
+        results[15][33]="9.710539289921761E-25";
+        results[15][34]="4.653982001488808";
+        results[15][35]="1.142448015842791E-8";
+        results[15][36]="2.407344397008314E+24";
+        results[15][37]="9.666011003355619E-14";
+        results[15][38]="1.178170001607253E+19";
+        results[15][39]="1.030201821533375E-18";
+        results[15][40]="213612598757592.2";
+        results[15][41]="1.649335548082038E-23";
+        results[15][42]="771434763.7746916";
+        results[15][43]="2.975344695449488E-28";
+        results[15][44]="20264.97771886068";
+        results[15][45]="2.609827394209354E-12";
+        results[15][46]="1.420943936035166E+28";
+        results[15][47]="9.487393022711177E-18";
+        results[15][48]="1.176626492823741E+23";
+        results[15][49]="4.017973406530782E-22";
+        results[15][50]="3.965401232528285E+18";
+        results[15][51]="1.000107803123075E-27";
+        results[15][52]="71055347977156.85";
+        results[15][53]="2.083229906348919E-32";
+        results[15][54]="289771728.7920109";
+        results[15][55]="1.055092853123241E-16";
+        results[15][56]="1.217942055346239E+32";
+        results[15][57]="1.058270588532557E-21";
+        results[15][58]="9.734854064667849E+26";
+        results[15][59]="2.076489227357834E-26";
+        results[15][60]="5.028203343302236E+22";
+        results[15][61]="9.598969511443032E-32";
+        results[15][62]="3.594873103603994E+17";
+        results[15][63]="8.164279592732510E-37";
+        results[15][64]="3756253824637.292";
+        results[15][65]="8.857969645071753E-21";
+        results[15][66]="7.896975823435262E+35";
+        results[15][67]="2.859363989032589E-25";
+        results[15][68]="1.684705400315972E+31";
+        results[15][69]="1.269994145161927E-30";
+        results[15][70]="1.236959213227480E+26";
+        results[15][71]="7.761304367110075E-36";
+        results[15][72]="3.014885473014884E+21";
+        results[15][73]="1.470682798372580E-40";
+        results[15][74]="8420224625517956";
+        results[16][0]="5.901998011029744E-8";
+        results[16][1]="1.297779184068582E-13";
+        results[16][2]="2.911797383123386E-18";
+        results[16][3]="3.395473341564099E-23";
+        results[16][4]="2.369932499205253E-28";
+        results[16][5]="7.394042360403217E-13";
+        results[16][6]="0.0004595058773843880";
+        results[16][7]="7.090840507594115E-18";
+        results[16][8]="6.773982233816134E-10";
+        results[16][9]="6.609676632793603E-23";
+        results[16][10]="2.412243166437193E-14";
+        results[16][11]="8.009705002679486E-28";
+        results[16][12]="1.075485425556837E-19";
+        results[16][13]="1.007756328470993E-32";
+        results[16][14]="8.103105504195564E-25";
+        results[16][15]="8.704730918982346E-17";
+        results[16][16]="1";
+        results[16][17]="1.030232696254985E-21";
+        results[16][18]="0.000007848123479882456";
+        results[16][19]="6.640327050142802E-27";
+        results[16][20]="2.655866713388787E-10";
+        results[16][21]="1.238091601114291E-31";
+        results[16][22]="1.525794898764651E-15";
+        results[16][23]="1.356958262240303E-36";
+        results[16][24]="8.081949966432234E-21";
+        results[16][25]="8.090569966166392E-21";
+        results[16][26]="21670.37344398340";
+        results[16][27]="9.431815342299341E-26";
+        results[16][28]="0.3342058218579424";
+        results[16][29]="1.610026250138211E-30";
+        results[16][30]="7.532069813813702E-7";
+        results[16][31]="1.964451594366708E-35";
+        results[16][32]="1.531309335246434E-11";
+        results[16][33]="8.452763159697483E-41";
+        results[16][34]="4.051166102474697E-16";
+        results[16][35]="9.944702566836774E-25";
+        results[16][36]="209552852.0527718";
+        results[16][37]="8.414002484413322E-30";
+        results[16][38]="1025.565284080813";
+        results[16][39]="8.967629648693503E-35";
+        results[16][40]="0.01859440193089382";
+        results[16][41]="1.435702214116641E-39";
+        results[16][42]="6.715132040207400E-8";
+        results[16][43]="2.589957496510927E-44";
+        results[16][44]="1.764011781218549E-12";
+        results[16][45]="2.271784521158129E-28";
+        results[16][46]="1236893461414.578";
+        results[16][47]="8.258520338533136E-34";
+        results[16][48]="10242217.01217658";
+        results[16][49]="3.497537734347732E-38";
+        results[16][50]="345.1775071495967";
+        results[16][51]="8.705669316160942E-44";
+        results[16][52]="0.006185176844958069";
+        results[16][53]="1.813395577714413E-48";
+        results[16][54]="2.522384927062784E-8";
+        results[16][55]="9.184299380979178E-33";
+        results[16][56]="1.060185786670131E+16";
+        results[16][57]="9.211960712648993E-38";
+        results[16][58]="84739285168.49519";
+        results[16][59]="1.807527998031550E-42";
+        results[16][60]="4376915.710937338";
+        results[16][61]="8.355644669662702E-48";
+        results[16][62]="31.29240305475972";
+        results[16][63]="7.106785700207527E-53";
+        results[16][64]="0.0003269717880686592";
+        results[16][65]="7.710624224886317E-37";
+        results[16][66]="6.874104961671300E+19";
+        results[16][67]="2.488999412395668E-41";
+        results[16][68]="1466490718750697";
+        results[16][69]="1.105495730231758E-46";
+        results[16][70]="10767397108.90133";
+        results[16][71]="6.756006609601578E-52";
+        results[16][72]="262437.6679414338";
+        results[16][73]="1.280189802700927E-56";
+        results[16][74]="0.7329578964252270";
+        results[17][0]="57288009131181.63";
+        results[17][1]="125969520.1662847";
+        results[17][2]="2826.349225478968";
+        results[17][3]="0.03295831469829135";
+        results[17][4]="2.300385638914618E-7";
+        results[17][5]="717706047.1174538";
+        results[17][6]="4.460214464700500E+17";
+        results[17][7]="6882.756229121966";
+        results[17][8]="657519632063.7410";
+        results[17][9]="0.06415712350055034";
+        results[17][10]="23414546.78351770";
+        results[17][11]="7.774656183788081E-7";
+        results[17][12]="104.3924765216976";
+        results[17][13]="9.781832125249994E-12";
+        results[17][14]="0.0007865315800645127";
+        results[17][15]="84492.86215264814";
+        results[17][16]="9.706544974112313E+20";
+        results[17][17]="1";
+        results[17][18]="7617816351986589";
+        results[17][19]="0.000006445463315502565";
+        results[17][20]="257792896987.5612";
+        results[17][21]="1.201759180828659E-10";
+        results[17][22]="1481019.680613023";
+        results[17][23]="1.317137640042879E-15";
+        results[17][24]="7.844781082769998";
+        results[17][25]="7.853148124279642";
+        results[17][26]="2.103444544398340E+25";
+        results[17][27]="0.00009155033980755107";
+        results[17][28]="3.243983840474286E+20";
+        results[17][29]="1.562779220646795E-9";
+        results[17][30]="731103743959364.5";
+        results[17][31]="1.906803775018709E-14";
+        results[17][32]="14863722931.84754";
+        results[17][33]="8.204712576512332E-20";
+        results[17][34]="393228.2597126994";
+        results[17][35]="0.0009652870271917130";
+        results[17][36]="2.034034182903733E+29";
+        results[17][37]="8.167089352725064E-9";
+        results[17][38]="9.954695553818683E+23";
+        results[17][39]="8.704470049622648E-14";
+        results[17][40]="1.804873986089417E+19";
+        results[17][41]="1.393570811075580E-18";
+        results[17][42]="65180731155375.70";
+        results[17][43]="2.513953892092264E-23";
+        results[17][44]="1712245968.926182";
+        results[17][45]="2.205117862611359E-7";
+        results[17][46]="1.200596201140605E+33";
+        results[17][47]="8.016169908559313E-13";
+        results[17][48]="9.941654006331020E+27";
+        results[17][49]="3.394900731710114E-17";
+        results[17][50]="3.350480997199534E+23";
+        results[17][51]="8.450197074706576E-23";
+        results[17][52]="6.003669721842360E+18";
+        results[17][53]="1.760180573094133E-27";
+        results[17][54]="24483642736557.92";
+        results[17][55]="8.914781499718627E-12";
+        results[17][56]="1.029074101922827E+37";
+        results[17][57]="8.941631095708316E-17";
+        results[17][58]="8.225256825621270E+31";
+        results[17][59]="1.754485180486043E-21";
+        results[17][60]="4.248472919611204E+27";
+        results[17][61]="8.110444077378283E-27";
+        results[17][62]="3.037411175990747E+22";
+        results[17][63]="6.898233502044262E-32";
+        results[17][64]="3.173766366154361E+17";
+        results[17][65]="7.484352081733892E-16";
+        results[17][66]="6.672380896723107E+40";
+        results[17][67]="2.415958473695767E-20";
+        results[17][68]="1.423455811567193E+36";
+        results[17][69]="1.073054402418369E-25";
+        results[17][70]="1.045142242916776E+31";
+        results[17][71]="6.557748200149776E-31";
+        results[17][72]="2.547363026774680E+26";
+        results[17][73]="1.242621989531652E-35";
+        results[17][74]="7.114488785782220E+20";
+        results[18][0]="0.007520266502124582";
+        results[18][1]="1.653617183005917E-8";
+        results[18][2]="3.710182938109170E-13";
+        results[18][3]="4.326477979440449E-18";
+        results[18][4]="3.019744153210938E-23";
+        results[18][5]="9.421414404802356E-8";
+        results[18][6]="58.54977671570353";
+        results[18][7]="9.035077653620603E-13";
+        results[18][8]="0.00008631340028199442";
+        results[18][9]="8.421983483996608E-18";
+        results[18][10]="3.073655979828342E-9";
+        results[18][11]="1.020588555112725E-22";
+        results[18][12]="1.370372711787334E-14";
+        results[18][13]="1.284072977513965E-27";
+        results[18][14]="1.032489553071727E-19";
+        results[18][15]="1.109148058296442E-11";
+        results[18][16]="127418.9941790999";
+        results[18][17]="1.312712139272323E-16";
+        results[18][18]="1";
+        results[18][19]="8.461037937494653E-22";
+        results[18][20]="0.00003384078652937511";
+        results[18][21]="1.577563865155743E-26";
+        results[18][22]="1.944152513241934E-10";
+        results[18][23]="1.729022569176787E-31";
+        results[18][24]="1.029793935728606E-15";
+        results[18][25]="1.030892287424556E-15";
+        results[18][26]="2761217187.717842";
+        results[18][27]="1.201792424198785E-20";
+        results[18][28]="42584.16966993846";
+        results[18][29]="2.051479253945588E-25";
+        results[18][30]="0.09597287597629022";
+        results[18][31]="2.503084462677351E-30";
+        results[18][32]="0.000001951178952741667";
+        results[18][33]="1.077042579842804E-35";
+        results[18][34]="5.161955100297903E-11";
+        results[18][35]="1.267143998476655E-19";
+        results[18][36]="26701013635925.91";
+        results[18][37]="1.072103733584393E-24";
+        results[18][38]="130676496.9625801";
+        results[18][39]="1.142646350007201E-29";
+        results[18][40]="2369.279991396404";
+        results[18][41]="1.829357320634491E-34";
+        results[18][42]="0.008556353703430740";
+        results[18][43]="3.300097791720419E-39";
+        results[18][44]="2.247686068829500E-7";
+        results[18][45]="2.894684986776169E-23";
+        results[18][46]="1.576037207601508E+17";
+        results[18][47]="1.052292354943532E-28";
+        results[18][48]="1305052989855.606";
+        results[18][49]="4.456527402140359E-33";
+        results[18][50]="43982170.77425067";
+        results[18][51]="1.109267627921080E-38";
+        results[18][52]="788.1090124044157";
+        results[18][53]="2.310610405611983E-43";
+        results[18][54]="0.003213997503388622";
+        results[18][55]="1.170254189364097E-27";
+        results[18][56]="1.350878065804859E+21";
+        results[18][57]="1.173778768423119E-32";
+        results[18][58]="1.079739448362558E+16";
+        results[18][59]="2.303133994597421E-37";
+        results[18][60]="557702197494.3356";
+        results[18][61]="1.064667839526379E-42";
+        results[18][62]="3987246.522684476";
+        results[18][63]="9.055394857668533E-48";
+        results[18][64]="41.66241636065038";
+        results[18][65]="9.824799832280163E-32";
+        results[18][66]="8.758915400977171E+24";
+        results[18][67]="3.171458016398266E-36";
+        results[18][68]="1.868587723561991E+20";
+        results[18][69]="1.408611540154202E-41";
+        results[18][70]="1371970909543155";
+        results[18][71]="8.608435668627840E-47";
+        results[18][72]="33439543683.80610";
+        results[18][73]="1.631204970184925E-51";
+        results[18][74]="93392.75793813131";
+        results[19][0]="8.888113441495055E+18";
+        results[19][1]="19543904603925.69";
+        results[19][2]="438502104.0583787";
+        results[19][3]="5113.412812236528";
+        results[19][4]="0.03568999661175253";
+        results[19][5]="111350575123317.2";
+        results[19][6]="6.919928399829436E+22";
+        results[19][7]="1067845070.589050";
+        results[19][8]="1.020127801336300E+17";
+        results[19][9]="9953.842006398556";
+        results[19][10]="3632717407172.463";
+        results[19][11]="0.1206221462014772";
+        results[19][12]="16196271.92208414";
+        results[19][13]="0.000001517630563767670";
+        results[19][14]="122.0287109807536";
+        results[19][15]="13108888844.25527";
+        results[19][16]="1.505949921515530E+26";
+        results[19][17]="155147.8848067927";
+        results[19][18]="1.181888093857317E+21";
+        results[19][19]="1";
+        results[19][20]="3.999602268583552E+16";
+        results[19][21]="0.00001864503949527103";
+        results[19][22]="229777070804.3422";
+        results[19][23]="2.043511188520634E-10";
+        results[19][24]="1217101.191764106";
+        results[19][25]="1218399.320556418";
+        results[19][26]="3.263449718717902E+30";
+        results[19][27]="14.20384157448466";
+        results[19][28]="5.032972311970014E+25";
+        results[19][29]="0.0002424618905033581";
+        results[19][30]="1.134291994496223E+20";
+        results[19][31]="2.958365724357601E-9";
+        results[19][32]="2306075173230364";
+        results[19][33]="1.272943801693578E-14";
+        results[19][34]="61008532740.68144";
+        results[19][35]="149.7622405002312";
+        results[19][36]="3.155761011022271E+34";
+        results[19][37]="0.001267106638103371";
+        results[19][38]="1.544449959070552E+29";
+        results[19][39]="1.350480116563032E-8";
+        results[19][40]="2.800223812845777E+24";
+        results[19][41]="2.162095636668628E-13";
+        results[19][42]="1.011265256891675E+19";
+        results[19][43]="3.900346288599187E-18";
+        results[19][44]="265651340347854.4";
+        results[19][45]="0.03421193721338280";
+        results[19][46]="1.862699611140355E+38";
+        results[19][47]="1.243691805564838E-7";
+        results[19][48]="1.542426590563234E+33";
+        results[19][49]="5.267116676538570E-12";
+        results[19][50]="5.198200398008612E+28";
+        results[19][51]="1.311030202341272E-17";
+        results[19][52]="9.314566584224275E+23";
+        results[19][53]="2.730882927935629E-22";
+        results[19][54]="3.798585382942154E+18";
+        results[19][55]="0.000001383109493196072";
+        results[19][56]="1.596586702227764E+42";
+        results[19][57]="1.387275151221789E-11";
+        results[19][58]="1.276131198487774E+37";
+        results[19][59]="2.722046646772734E-16";
+        results[19][60]="6.591415871366172E+32";
+        results[19][61]="1.258318243449020E-21";
+        results[19][62]="4.712479192434771E+27";
+        results[19][63]="1.070246336745521E-26";
+        results[19][64]="4.924031385797897E+22";
+        results[19][65]="1.161181394630329E-10";
+        results[19][66]="1.035205782751841E+46";
+        results[19][67]="3.748308469749455E-15";
+        results[19][68]="2.208461582805865E+41";
+        results[19][69]="1.664821208178269E-20";
+        results[19][70]="1.621516083107649E+36";
+        results[19][71]="1.017420762348790E-25";
+        results[19][72]="3.952179854391208E+31";
+        results[19][73]="1.927901732902443E-30";
+        results[19][74]="1.103797886595758E+26";
+        results[20][0]="222.2249324966694";
+        results[20][1]="0.0004886462025847162";
+        results[20][2]="1.096364274774934E-8";
+        results[20][3]="1.278480326006873E-13";
+        results[20][4]="8.923386430719285E-19";
+        results[20][5]="0.002784041203245736";
+        results[20][6]="1730154.134120969";
+        results[20][7]="2.669878150077217E-8";
+        results[20][8]="2.550573114105107";
+        results[20][9]="2.488707960935246E-13";
+        results[20][10]="0.00009082696636380747";
+        results[20][11]="3.015853529960997E-18";
+        results[20][12]="4.049470630943514E-10";
+        results[20][13]="3.794453702780639E-23";
+        results[20][14]="3.051021146259370E-15";
+        results[20][15]="3.277548107026588E-7";
+        results[20][16]="3765249193.262553";
+        results[20][17]="3.879082828446787E-12";
+        results[20][18]="29550.14060125232";
+        results[20][19]="2.500248606854969E-17";
+        results[20][20]="1";
+        results[20][21]="4.661723402280728E-22";
+        results[20][22]="0.000005744998011657722";
+        results[20][23]="5.109286002191258E-27";
+        results[20][24]="3.043055559109729E-11";
+        results[20][25]="3.046301203814225E-11";
+        results[20][26]="81594356127656.76";
+        results[20][27]="3.551313510859396E-16";
+        results[20][28]="1258368201.134266";
+        results[20][29]="6.062150039464433E-21";
+        results[20][30]="2836.011979005927";
+        results[20][31]="7.396649780892585E-26";
+        results[20][32]="0.05765761239172050";
+        results[20][33]="3.182675966789038E-31";
+        results[20][34]="0.000001525364989911545";
+        results[20][35]="3.744428331701820E-15";
+        results[20][36]="7.890187071375662E+17";
+        results[20][37]="3.168081606654638E-20";
+        results[20][38]="3861508858523.363";
+        results[20][39]="3.376536030022057E-25";
+        results[20][40]="70012556.86949763";
+        results[20][41]="5.405776603467944E-30";
+        results[20][42]="252.8414549704244";
+        results[20][43]="9.751835374322068E-35";
+        results[20][44]="0.006641943936138782";
+        results[20][45]="8.553834835557002E-19";
+        results[20][46]="4.657212107742966E+21";
+        results[20][47]="3.109538704220428E-24";
+        results[20][48]="3.856449934231786E+16";
+        results[20][49]="1.316910113265814E-28";
+        results[20][50]="1299679330327.398";
+        results[20][51]="3.277901436948555E-34";
+        results[20][52]="23288732.12566459";
+        results[20][53]="6.827886236055077E-39";
+        results[20][54]="94.97407811720772";
+        results[20][55]="3.458117583491362E-23";
+        results[20][56]="3.991863677968137E+25";
+        results[20][57]="3.468532764166796E-28";
+        results[20][58]="3.190645251183220E+20";
+        results[20][59]="6.805793336387770E-33";
+        results[20][60]="1.648017834958501E+16";
+        results[20][61]="3.146108435163604E-38";
+        results[20][62]="117823695357.1807";
+        results[20][63]="2.675881912439624E-43";
+        results[20][64]="1231130.261245134";
+        results[20][65]="2.903242164230390E-27";
+        results[20][66]="2.588271816133498E+29";
+        results[20][67]="9.371703029553756E-32";
+        results[20][68]="5.521702995703085E+24";
+        results[20][69]="4.162466906410325E-37";
+        results[20][70]="4.054193327782826E+19";
+        results[20][71]="2.543804843647882E-42";
+        results[20][72]="988143217498189.4";
+        results[20][73]="4.820233621842614E-47";
+        results[20][74]="2759769128.210504";
+        results[21][0]="4.767012396916274E+23";
+        results[21][1]="1.048209343234839E+18";
+        results[21][2]="23518432565916.35";
+        results[21][3]="274250575.5235032";
+        results[21][4]="1914.181872385126";
+        results[21][5]="5.972128680744241E+18";
+        results[21][6]="3.711404527506926E+27";
+        results[21][7]="57272341571595.42";
+        results[21][8]="5.471309415005725E+21";
+        results[21][9]="533860065.5108917";
+        results[21][10]="1.948355973230217E+17";
+        results[21][11]="6469.396121798011";
+        results[21][12]="868663857010.9776";
+        results[21][13]="0.08139594255901624";
+        results[21][14]="6544835.210014115";
+        results[21][15]="703076485709783.2";
+        results[21][16]="8.076946803451319E+30";
+        results[21][17]="8321134682.827734";
+        results[21][18]="6.338887585392785E+25";
+        results[21][19]="53633.56834152223";
+        results[21][20]="2.145129416109833E+21";
+        results[21][21]="1";
+        results[21][22]="1.232376423029948E+16";
+        results[21][23]="0.00001096007969861868";
+        results[21][24]="65277479947.02833";
+        results[21][25]="65347103226.32689";
+        results[21][26]="1.750304535179781E+35";
+        results[21][27]="761802.7077972777";
+        results[21][28]="2.699362644550329E+30";
+        results[21][29]="13.00409637452654";
+        results[21][30]="6.083612720605475E+24";
+        results[21][31]="0.0001586677102565503";
+        results[21][32]="1.236830404041385E+20";
+        results[21][33]="6.827251838304966E-10";
+        results[21][34]="3272105310163334";
+        results[21][35]="8032283.360848641";
+        results[21][36]="1.692547238541742E+39";
+        results[21][37]="67.95945047071364";
+        results[21][38]="8.283436242987168E+33";
+        results[21][39]="0.0007243106762555027";
+        results[21][40]="1.501859952378219E+29";
+        results[21][41]="1.159609040901739E-8";
+        results[21][42]="5.423776426690670E+23";
+        results[21][43]="2.091894892251871E-13";
+        results[21][44]="1.424782931756363E+19";
+        results[21][45]="1834.908272629834";
+        results[21][46]="9.990322689382312E+42";
+        results[21][47]="0.006670362944955292";
+        results[21][48]="8.272584195675434E+37";
+        results[21][49]="2.824942622339028E-7";
+        results[21][50]="2.787980362995230E+33";
+        results[21][51]="7.031522795507035E-13";
+        results[21][52]="4.995734434666519E+28";
+        results[21][53]="1.464669961481319E-17";
+        results[21][54]="2.037316887371354E+23";
+        results[21][55]="0.07418109752713971";
+        results[21][56]="8.563064200709839E+46";
+        results[21][57]="7.440451663154942E-7";
+        results[21][58]="6.844346984684270E+41";
+        results[21][59]="1.459930748584969E-11";
+        results[21][60]="3.535211536043119E+37";
+        results[21][61]="6.748809750540721E-17";
+        results[21][62]="2.527470748254518E+32";
+        results[21][63]="5.740113004410473E-22";
+        results[21][64]="2.640933738459919E+27";
+        results[21][65]="0.000006227830168580984";
+        results[21][66]="5.552178009675986E+50";
+        results[21][67]="2.010351584774140E-10";
+        results[21][68]="1.184476752310447E+46";
+        results[21][69]="8.929030204524482E-16";
+        results[21][70]="8.696769366023154E+40";
+        results[21][71]="5.456790598951745E-21";
+        results[21][72]="2.119695083184782E+36";
+        results[21][73]="1.034002493473623E-25";
+        results[21][74]="5.920061938596140E+30";
+        results[22][0]="38681463.77870482";
+        results[22][1]="85.05593937424482";
+        results[22][2]="0.001908380599175486";
+        results[22][3]="2.225379927743381E-8";
+        results[22][4]="1.553244476779973E-13";
+        results[22][5]="484.6026400002877";
+        results[22][6]="301158352119.5565";
+        results[22][7]="0.004647309093335652";
+        results[22][8]="443964.1421858626";
+        results[22][9]="4.331956174545530E-8";
+        results[22][10]="15.80974722349805";
+        results[22][11]="5.249529284155089E-13";
+        results[22][12]="0.00007048689351547812";
+        results[22][13]="6.604795502245522E-18";
+        results[22][14]="5.310743606992122E-10";
+        results[22][15]="0.05705046547232572";
+        results[22][16]="655396082926770.0";
+        results[22][17]="6.752104736286019E-7";
+        results[22][18]="5143629387.040573";
+        results[22][19]="4.352044338016266E-12";
+        results[22][20]="174064.4640730606";
+        results[22][21]="8.114403856748394E-17";
+        results[22][22]="1";
+        results[22][23]="8.893451297674116E-22";
+        results[22][24]="0.000005296878350409827";
+        results[22][25]="0.000005302527864470423";
+        results[22][26]="1.420267787074702E+19";
+        results[22][27]="6.181574830231600E-11";
+        results[22][28]="219037186537017.3";
+        results[22][29]="1.055204897749860E-15";
+        results[22][30]="493648905.2304466";
+        results[22][31]="1.287493880047189E-20";
+        results[22][32]="10036.14140069709";
+        results[22][33]="5.539907864773438E-26";
+        results[22][34]="0.2655118394847626";
+        results[22][35]="6.517719108176616E-10";
+        results[22][36]="1.373401184015196E+23";
+        results[22][37]="5.514504270020602E-15";
+        results[22][38]="6.721514699722450E+17";
+        results[22][39]="5.877349344891688E-20";
+        results[22][40]="12186698189873.78";
+        results[22][41]="9.409536073813374E-25";
+        results[22][42]="44010712.35487979";
+        results[22][43]="1.697447998160085E-29";
+        results[22][44]="1156.126411647312";
+        results[22][45]="1.488918676420706E-13";
+        results[22][46]="8.106551296088482E+26";
+        results[22][47]="5.412601880645680E-19";
+        results[22][48]="6.712708910266456E+21";
+        results[22][49]="2.292272530980073E-23";
+        results[22][50]="2.262279861002728E+17";
+        results[22][51]="5.705661569067654E-29";
+        results[22][52]="4053740676394.876";
+        results[22][53]="1.188492358430754E-33";
+        results[22][54]="16531612.00830475";
+        results[22][55]="6.019353838720512E-18";
+        results[22][56]="6.948416117582402E+30";
+        results[22][57]="6.037482967145447E-23";
+        results[22][58]="5.553779556944628E+25";
+        results[22][59]="1.184646769690344E-27";
+        results[22][60]="2.868613412248970E+21";
+        results[22][61]="5.476256786824880E-33";
+        results[22][62]="2.050891838745521E+16";
+        results[22][63]="4.657759510115996E-38";
+        results[22][64]="214296029127.7612";
+        results[22][65]="5.053512913910754E-22";
+        results[22][66]="4.505261465506844E+34";
+        results[22][67]="1.631280465291153E-26";
+        results[22][68]="9.611322727176706E+29";
+        results[22][69]="7.245375712861636E-32";
+        results[22][70]="7.056909888490957E+24";
+        results[22][71]="4.427860268160242E-37";
+        results[22][72]="1.720006195812521E+20";
+        results[22][73]="8.390313820929822E-42";
+        results[22][74]="480377734267339.0";
+        results[23][0]="4.349432237720928E+28";
+        results[23][1]="9.563884315247705E+22";
+        results[23][2]="2.145826783438484E+18";
+        results[23][3]="25022680771022.83";
+        results[23][4]="174650360.6745100";
+        results[23][5]="5.448982895167197E+23";
+        results[23][6]="3.386293375197521E+32";
+        results[23][7]="5.225540611608288E+18";
+        results[23][8]="4.992034333194938E+26";
+        results[23][9]="48709505787460.23";
+        results[23][10]="1.777684128953709E+22";
+        results[23][11]="590269076.4751797";
+        results[23][12]="7.925707484777299E+16";
+        results[23][13]="7426.583090383436";
+        results[23][14]="597152154909.8750";
+        results[23][15]="6.414884791379698E+19";
+        results[23][16]="7.369423421683034E+35";
+        results[23][17]="759222096156514.8";
+        results[23][18]="5.783614498890633E+30";
+        results[23][19]="4893538169.095777";
+        results[23][20]="1.957220636251567E+26";
+        results[23][21]="91240.21243440706";
+        results[23][22]="1.124422866364071E+21";
+        results[23][23]="1";
+        results[23][24]="5955931137549612";
+        results[23][25]="5962283580343192";
+        results[23][26]="1.596981576147093E+40";
+        results[23][27]="69507040892.53014";
+        results[23][28]="2.462904211262749E+35";
+        results[23][29]="1186496.515729304";
+        results[23][30]="5.550701169967046E+29";
+        results[23][31]="14.47687559028860";
+        results[23][32]="1.128486688100694E+25";
+        results[23][33]="0.00006229199080701412";
+        results[23][34]="2.985475836070540E+20";
+        results[23][35]="732867240177.1831";
+        results[23][36]="1.544283695998176E+44";
+        results[23][37]="6200634.697873477";
+        results[23][38]="7.557824824970159E+38";
+        results[23][39]="66.08625997006110";
+        results[23][40]="1.370300211017172E+34";
+        results[23][41]="0.001058029752327336";
+        results[23][42]="4.948665133679859E+28";
+        results[23][43]="1.908649343595118E-8";
+        results[23][44]="1.299974973663679E+24";
+        results[23][45]="167417420.5923969";
+        results[23][46]="9.115191644675190E+47";
+        results[23][47]="608.6053321123179";
+        results[23][48]="7.547923393949451E+42";
+        results[23][49]="0.02577483649772239";
+        results[23][50]="2.543759205826400E+38";
+        results[23][51]="6.415576335994377E-8";
+        results[23][52]="4.558118710848557E+33";
+        results[23][53]="1.336367984318503E-12";
+        results[23][54]="1.858852255999673E+28";
+        results[23][55]="6768.299096993695";
+        results[23][56]="7.812957967622318E+51";
+        results[23][57]="0.06788683903541942";
+        results[23][58]="6.244796728573862E+46";
+        results[23][59]="0.000001332043916404155";
+        results[23][60]="3.225534515491407E+42";
+        results[23][61]="6.157628353187331E-12";
+        results[23][62]="2.306069679924920E+37";
+        results[23][63]="5.237291299199141E-17";
+        results[23][64]="2.409593553222759E+32";
+        results[23][65]="0.5682285475867381";
+        results[23][66]="5.065819010764803E+55";
+        results[23][67]="0.00001834249056626394";
+        results[23][68]="1.080719105044218E+51";
+        results[23][69]="8.146866126940509E-11";
+        results[23][70]="7.934950844489962E+45";
+        results[23][71]="4.978787334584325E-16";
+        results[23][72]="1.934014296859477E+41";
+        results[23][73]="9.434260716223996E-21";
+        results[23][74]="5.401477089023595E+35";
+        results[24][0]="7302690607518.291";
+        results[24][1]="16057748.30899485";
+        results[24][2]="360.2840150232697";
+        results[24][3]="0.004201304580784266";
+        results[24][4]="2.932377098408908E-8";
+        results[24][5]="91488346.14311905";
+        results[24][6]="5.685581812469896E+16";
+        results[24][7]="877.3675334597941";
+        results[24][8]="83816186216.83326";
+        results[24][9]="0.008178319168327438";
+        results[24][10]="2984729.151326427";
+        results[24][11]="9.910609488981233E-8";
+        results[24][12]="13.30725171553627";
+        results[24][13]="1.246922255961287E-12";
+        results[24][14]="0.0001002617627905542";
+        results[24][15]="10770.58253903672";
+        results[24][16]="1.237325155628808E+20";
+        results[24][17]="0.1274732831227585";
+        results[24][18]="971068060613965.9";
+        results[24][19]="8.216243700744122E-7";
+        results[24][20]="32861706944.73151";
+        results[24][21]="1.531921883031460E-11";
+        results[24][22]="188790.4410571613";
+        results[24][23]="1.678998593008280E-16";
+        results[24][24]="1";
+        results[24][25]="1.001066574251259";
+        results[24][26]="2.681329819411114E+24";
+        results[24][27]="0.00001167022238627271";
+        results[24][28]="4.135212705424321E+19";
+        results[24][29]="1.992125980518727E-10";
+        results[24][30]="93196194545840.82";
+        results[24][31]="2.430665374725046E-15";
+        results[24][32]="1894727561.549639";
+        results[24][33]="1.045881649206614E-20";
+        results[24][34]="50126.09728222654";
+        results[24][35]="0.0001230483065119351";
+        results[24][36]="2.592850152786563E+28";
+        results[24][37]="1.041085693348789E-9";
+        results[24][38]="1.268957724732794E+23";
+        results[24][39]="1.109587375069120E-14";
+        results[24][40]="2.300732126296780E+18";
+        results[24][41]="1.776430465518496E-19";
+        results[24][42]="8308801796717.613";
+        results[24][43]="3.204619562442379E-24";
+        results[24][44]="218265615.1727291";
+        results[24][45]="2.810936136197098E-8";
+        results[24][46]="1.530439394641047E+32";
+        results[24][47]="1.021847496313918E-13";
+        results[24][48]="1.267295275857541E+27";
+        results[24][49]="4.327591421469434E-18";
+        results[24][50]="4.270968127534385E+22";
+        results[24][51]="1.077174364147177E-23";
+        results[24][52]="7.653074902279439E+17";
+        results[24][53]="2.243759965412078E-28";
+        results[24][54]="3121010322433.718";
+        results[24][55]="1.136396466091162E-12";
+        results[24][56]="1.311794543487070E+36";
+        results[24][57]="1.139819072242488E-17";
+        results[24][58]="1.048500492089822E+31";
+        results[24][59]="2.236499861467814E-22";
+        results[24][60]="5.415667913209714E+26";
+        results[24][61]="1.033864934126942E-27";
+        results[24][62]="3.871887747972994E+21";
+        results[24][63]="8.793404722529862E-33";
+        results[24][64]="4.045704185582832E+16";
+        results[24][65]="9.540549319052715E-17";
+        results[24][66]="8.505502991508699E+39";
+        results[24][67]="3.079701585302480E-21";
+        results[24][68]="1.814525856806408E+35";
+        results[24][69]="1.367857676455993E-26";
+        results[24][70]="1.332277130348850E+30";
+        results[24][71]="8.359376929654525E-32";
+        results[24][72]="3.247207283284959E+25";
+        results[24][73]="1.584011046861337E-36";
+        results[24][74]="9.069072432637074E+19";
+        results[25][0]="7294910044299.792";
+        results[25][1]="16040639.77563644";
+        results[25][2]="359.9001547851519";
+        results[25][3]="0.004196828351727361";
+        results[25][4]="2.929252832762058E-8";
+        results[25][5]="91390870.99331748";
+        results[25][6]="5.679524178222003E+16";
+        results[25][7]="876.4327528526417";
+        results[25][8]="83726885276.85887";
+        results[25][9]="0.008169605677269126";
+        results[25][10]="2981549.107819164";
+        results[25][11]="9.900050350191554E-8";
+        results[25][12]="13.29307366544463";
+        results[25][13]="1.245593737753071E-12";
+        results[25][14]="0.0001001549401102962";
+        results[25][15]="10759.10715238146";
+        results[25][16]="1.236006862534849E+20";
+        results[25][17]="0.1273374682578942";
+        results[25][18]="970033447915559.5";
+        results[25][19]="8.207489803452292E-7";
+        results[25][20]="32826694837.26416";
+        results[25][21]="1.530289715424023E-11";
+        results[25][22]="188589.2965693774";
+        results[25][23]="1.677209724302378E-16";
+        results[25][24]="0.9989345621173533";
+        results[25][25]="1";
+        results[25][26]="2.678473029045643E+24";
+        results[25][27]="0.00001165778848924346";
+        results[25][28]="4.130806893155160E+19";
+        results[25][29]="1.990003494032078E-10";
+        results[25][30]="93096899789653.17";
+        results[25][31]="2.428075651754777E-15";
+        results[25][32]="1892708847.028269";
+        results[25][33]="1.044767327276784E-20";
+        results[25][34]="50072.69103927282";
+        results[25][35]="0.0001229172061847818";
+        results[25][36]="2.590087632009758E+28";
+        results[25][37]="1.039976481212013E-9";
+        results[25][38]="1.267605729101387E+23";
+        results[25][39]="1.108405178645614E-14";
+        results[25][40]="2.298280839131601E+18";
+        results[25][41]="1.774537789204645E-19";
+        results[25][42]="8299949284523.987";
+        results[25][43]="3.201205239361082E-24";
+        results[25][44]="218033066.7178449";
+        results[25][45]="2.807941258351893E-8";
+        results[25][46]="1.528808806532901E+32";
+        results[25][47]="1.020758781281058E-13";
+        results[25][48]="1.265945051462143E+27";
+        results[25][49]="4.322980641628383E-18";
+        results[25][50]="4.266417676295733E+22";
+        results[25][51]="1.076026701773399E-23";
+        results[25][52]="7.644921026359818E+17";
+        results[25][53]="2.241369378545362E-28";
+        results[25][54]="3117685079804.065";
+        results[25][55]="1.135185706246483E-12";
+        results[25][56]="1.310396907886189E+36";
+        results[25][57]="1.138604665823557E-17";
+        results[25][58]="1.047383379945576E+31";
+        results[25][59]="2.234117009790872E-22";
+        results[25][60]="5.409897855455146E+26";
+        results[25][61]="1.032763415260583E-27";
+        results[25][62]="3.867762492088947E+21";
+        results[25][63]="8.784035896021034E-33";
+        results[25][64]="4.041393739081530E+16";
+        results[25][65]="9.530384456386937E-17";
+        results[25][66]="8.496440906410580E+39";
+        results[25][67]="3.076420354566251E-21";
+        results[25][68]="1.812592592219525E+35";
+        results[25][69]="1.366400309069427E-26";
+        results[25][70]="1.330857671823993E+30";
+        results[25][71]="8.350470532798348E-32";
+        results[25][72]="3.243747585632540E+25";
+        results[25][73]="1.582323381485480E-36";
+        results[25][74]="9.059409899306875E+19";
+        results[26][0]="2.723533134436308E-12";
+        results[26][1]="5.988725516997952E-18";
+        results[26][2]="1.343676605597132E-22";
+        results[26][3]="1.566873478364917E-27";
+        results[26][4]="1.093627899552070E-32";
+        results[26][5]="3.412051194925813E-17";
+        results[26][6]="2.120433589075808E-8";
+        results[26][7]="3.272135815251872E-22";
+        results[26][8]="3.125918550193178E-14";
+        results[26][9]="3.050098167380094E-27";
+        results[26][10]="1.113152559494507E-18";
+        results[26][11]="3.696154578685082E-32";
+        results[26][12]="4.962929819077190E-24";
+        results[26][13]="4.650387456755103E-37";
+        results[26][14]="3.739255128732137E-29";
+        results[26][15]="4.016880900314683E-21";
+        results[26][16]="0.00004614595141080237";
+        results[26][17]="4.754106794320244E-26";
+        results[26][18]="3.621591247686330E-10";
+        results[26][19]="3.064242094077263E-31";
+        results[26][20]="1.225574963096063E-14";
+        results[26][21]="5.713291486714258E-36";
+        results[26][22]="7.040925726124371E-20";
+        results[26][23]="6.261813003582785E-41";
+        results[26][24]="3.729492704555177E-25";
+        results[26][25]="3.733470485444113E-25";
+        results[26][26]="1";
+        results[26][27]="4.352400925014057E-30";
+        results[26][28]="0.00001542224561666388";
+        results[26][29]="7.429619310899423E-35";
+        results[26][30]="3.475745276510183E-11";
+        results[26][31]="9.065148782251936E-40";
+        results[26][32]="7.066372617918999E-16";
+        results[26][33]="3.900607980544203E-45";
+        results[26][34]="1.869449141218870E-20";
+        results[26][35]="4.589077614441313E-29";
+        results[26][36]="9670.015728822264";
+        results[26][37]="3.882721498161075E-34";
+        results[26][38]="0.04732568576779893";
+        results[26][39]="4.138198020386811E-39";
+        results[26][40]="8.580563680159561E-7";
+        results[26][41]="6.625184461300789E-44";
+        results[26][42]="3.098761568445328E-12";
+        results[26][43]="1.195160527900366E-48";
+        results[26][44]="8.140200194419411E-17";
+        results[26][45]="1.048336581291759E-32";
+        results[26][46]="57077625.57077626";
+        results[26][47]="3.810972782670732E-38";
+        results[26][48]="472.6368485827938";
+        results[26][49]="1.613972063466582E-42";
+        results[26][50]="0.01592854447302717";
+        results[26][51]="4.017313932620759E-48";
+        results[26][52]="2.854208701546549E-7";
+        results[26][53]="8.368086421777320E-53";
+        results[26][54]="1.163978522835795E-12";
+        results[26][55]="4.238182329769274E-37";
+        results[26][56]="489232817981.0316";
+        results[26][57]="4.250946914441208E-42";
+        results[26][58]="3910374.935971505";
+        results[26][59]="8.341009917082876E-47";
+        results[26][60]="201.9769397260919";
+        results[26][61]="3.855791729321848E-52";
+        results[26][62]="0.001444017710892185";
+        results[26][63]="3.279493876087616E-57";
+        results[26][64]="1.508842424491952E-8";
+        results[26][65]="3.558140908285596E-41";
+        results[26][66]="3172121135540393";
+        results[26][67]="1.148572459459261E-45";
+        results[26][68]="67672609451.86232";
+        results[26][69]="5.101415225212420E-51";
+        results[26][70]="496871.7838081744";
+        results[26][71]="3.117623527377340E-56";
+        results[26][72]="12.11043587318969";
+        results[26][73]="5.907557643204166E-61";
+        results[26][74]="0.00003382303947460244";
+        results[27][0]="6.257541943766386E+17";
+        results[27][1]="1375959067231.062";
+        results[27][2]="30872077.93461244";
+        results[27][3]="360.0021012218345";
+        results[27][4]="0.002512700273696726";
+        results[27][5]="7839468959112.017";
+        results[27][6]="4.871871010065461E+21";
+        results[27][7]="75180018.37666884";
+        results[27][8]="7182055614931850";
+        results[27][9]="700.7852033691596";
+        results[27][10]="255755978980.9374";
+        results[27][11]="0.008492219908884301";
+        results[27][12]="1140274.047492801";
+        results[27][13]="1.068464862698761E-7";
+        results[27][14]="8.591246976449121";
+        results[27][15]="922911507.8137501";
+        results[27][16]="1.060241283048926E+25";
+        results[27][17]="10922.95235716340";
+        results[27][18]="8.320904507836979E+19";
+        results[27][19]="0.07040348871507895";
+        results[27][20]="2815859531810263";
+        results[27][21]="0.000001312675827697515";
+        results[27][22]="16177107411.35740";
+        results[27][23]="1.438703169001500E-11";
+        results[27][24]="85688.17001947338";
+        results[27][25]="85779.56281525363";
+        results[27][26]="2.297582454439834E+29";
+        results[27][27]="1";
+        results[27][28]="3.543388093690857E+24";
+        results[27][29]="0.00001707016297188988";
+        results[27][30]="7.985811363411926E+18";
+        results[27][31]="2.082792678898868E-10";
+        results[27][32]="162355737434647.7";
+        results[27][33]="8.961968457746355E-16";
+        results[27][34]="4295213546.332090";
+        results[27][35]="10.54378420900297";
+        results[27][36]="2.221765847269926E+33";
+        results[27][37]="0.00008920872789651233";
+        results[27][38]="1.087346652644278E+28";
+        results[27][39]="9.507851164638391E-10";
+        results[27][40]="1.971455256073830E+23";
+        results[27][41]="1.522190757571212E-14";
+        results[27][42]="7.119660210152448E+17";
+        results[27][43]="2.745979859142930E-19";
+        results[27][44]="18702781142325.76";
+        results[27][45]="0.002408639735523385";
+        results[27][46]="1.311405510525019E+37";
+        results[27][47]="8.756024199812025E-9";
+        results[27][48]="1.085922130625564E+32";
+        results[27][49]="3.708233894976874E-13";
+        results[27][50]="3.659714430599182E+27";
+        results[27][51]="9.230110005566145E-19";
+        results[27][52]="6.557779833982852E+22";
+        results[27][53]="1.922636853991178E-23";
+        results[27][54]="2.674336631412318E+17";
+        results[27][55]="9.737573359594823E-8";
+        results[27][56]="1.124052738729375E+41";
+        results[27][57]="9.766901045375269E-13";
+        results[27][58]="8.984408843169418E+35";
+        results[27][59]="1.916415803779827E-17";
+        results[27][60]="4.640586729161206E+31";
+        results[27][61]="8.858999425264104E-23";
+        results[27][62]="3.317749756446258E+26";
+        results[27][63]="7.534907589141790E-28";
+        results[27][64]="3.466689881027168E+21";
+        results[27][65]="8.175122121301600E-12";
+        results[27][66]="7.288209864375369E+44";
+        results[27][67]="2.638939930506406E-16";
+        results[27][68]="1.554834001227581E+40";
+        results[27][69]="1.172092211426029E-21";
+        results[27][70]="1.141603892583884E+35";
+        results[27][71]="7.162997116051003E-27";
+        results[27][72]="2.782472497785938E+30";
+        results[27][73]="1.357310078961783E-31";
+        results[27][74]="7.771122205267246E+24";
+        results[28][0]="1.765977019256848E-7";
+        results[28][1]="3.883173479306462E-13";
+        results[28][2]="8.712587252178613E-18";
+        results[28][3]="1.015982702721253E-22";
+        results[28][4]="7.091236430383361E-28";
+        results[28][5]="2.212421770302413E-12";
+        results[28][6]="0.001374918829450271";
+        results[28][7]="2.121698679027844E-17";
+        results[28][8]="2.026889357030855E-9";
+        results[28][9]="1.977726359178481E-22";
+        results[28][10]="7.217837059291388E-14";
+        results[28][11]="2.396638382345144E-27";
+        results[28][12]="3.218033185591791E-19";
+        results[28][13]="3.015376341646586E-32";
+        results[28][14]="2.424585382489199E-24";
+        results[28][15]="2.604601820097072E-16";
+        results[28][16]="2.992168102999295";
+        results[28][17]="3.082629412401127E-21";
+        results[28][18]="0.00002348290474490412";
+        results[28][19]="1.986897479292069E-26";
+        results[28][20]="7.946799665619501E-10";
+        results[28][21]="3.704578197445509E-31";
+        results[28][22]="4.565434827802628E-15";
+        results[28][23]="4.060247229376789E-36";
+        results[28][24]="2.418255289959476E-20";
+        results[28][25]="2.420834538784717E-20";
+        results[28][26]="64841.40019917012";
+        results[28][27]="2.822157702060747E-25";
+        results[28][28]="1";
+        results[28][29]="4.817469190655120E-30";
+        results[28][30]="0.000002253721904645720";
+        results[28][31]="5.877969400550175E-35";
+        results[28][32]="4.581934948749433E-11";
+        results[28][33]="2.529208830865435E-40";
+        results[28][34]="1.212176999177676E-15";
+        results[28][35]="2.975622181430421E-24";
+        results[28][36]="627017359.8048342";
+        results[28][37]="2.517610985241837E-29";
+        results[28][38]="3068.663730570020";
+        results[28][39]="2.683265539433148E-34";
+        results[28][40]="0.05563757635196901";
+        results[28][41]="4.295862370485278E-39";
+        results[28][42]="2.009280389813716E-7";
+        results[28][43]="7.749588209183903E-44";
+        results[28][44]="5.278219785077115E-12";
+        results[28][45]="6.797561181096882E-28";
+        results[28][46]="3700993162053.089";
+        results[28][47]="2.471088113492979E-33";
+        results[28][48]="30646435.04783151";
+        results[28][49]="1.046522084775171E-37";
+        results[28][50]="1032.829126765834";
+        results[28][51]="2.604882604307646E-43";
+        results[28][52]="0.01850708886689335";
+        results[28][53]="5.425984405757048E-48";
+        results[28][54]="7.547399722243467E-8";
+        results[28][55]="2.748096765616207E-32";
+        results[28][56]="3.172254094127582E+16";
+        results[28][57]="2.756373501047097E-37";
+        results[28][58]="253554186152.1326";
+        results[28][59]="5.408427620988176E-42";
+        results[28][60]="13096467.57978319";
+        results[28][61]="2.500149346056082E-47";
+        results[28][62]="93.63213028664973";
+        results[28][63]="2.126469748701247E-52";
+        results[28][64]="0.0009783545548396877";
+        results[28][65]="2.307148385991850E-36";
+        results[28][66]="2.056847760298206E+20";
+        results[28][67]="7.447504650154305E-41";
+        results[28][68]="4387986751990347";
+        results[28][69]="3.307829062001381E-46";
+        results[28][70]="32217862181.58138";
+        results[28][71]="2.021510748090225E-51";
+        results[28][72]="785257.6190398789";
+        results[28][73]="3.830543093426676E-56";
+        results[28][74]="2.193133238525025";
+        results[29][0]="3.665777505505325E+22";
+        results[29][1]="8.060608850055552E+16";
+        results[29][2]="1808540315956.603";
+        results[29][3]="21089552.67824123";
+        results[29][4]="147.1983763619884";
+        results[29][5]="4.592498016581085E+17";
+        results[29][6]="2.854027239276019E+26";
+        results[29][7]="4404176954869.778";
+        results[29][8]="4.207373782405491E+20";
+        results[29][9]="41053222.77960500";
+        results[29][10]="1.498263252683064E+16";
+        results[29][11]="497.4890938574387";
+        results[29][12]="66799247867.20172";
+        results[29][13]="0.006259254023867518";
+        results[29][14]="503290.2726585955";
+        results[29][15]="54065770158934.34";
+        results[29][16]="6.211078856100365E+29";
+        results[29][17]="639885651.6572606";
+        results[29][18]="4.874531380596274E+24";
+        results[29][19]="4124.359493873326";
+        results[29][20]="1.649579758814986E+20";
+        results[29][21]="0.07689884565596421";
+        results[29][22]="947683243446292.2";
+        results[29][23]="8.428174771211442E-7";
+        results[29][24]="5019762855.256830";
+        results[29][25]="5025116805.065672";
+        results[29][26]="1.345963983017241E+34";
+        results[29][27]="58581.74884719846";
+        results[29][28]="2.075778713727511E+29";
+        results[29][29]="1";
+        results[29][30]="4.678227956325009E+23";
+        results[29][31]="0.00001220136376160371";
+        results[29][32]="9.511083034298228E+18";
+        results[29][33]="5.250077853682115E-11";
+        results[29][34]="251621121216311.1";
+        results[29][35]="617673.3184308691";
+        results[29][36]="1.301549288620499E+38";
+        results[29][37]="5.226003292611552";
+        results[29][38]="6.369866851504902E+32";
+        results[29][39]="0.00005569865490033896";
+        results[29][40]="1.154912966748064E+28";
+        results[29][41]="8.917259665756348E-10";
+        results[29][42]="4.170821463085429E+22";
+        results[29][43]="1.608643024477765E-14";
+        results[29][44]="1.095641627623847E+18";
+        results[29][45]="141.1023280498135";
+        results[29][46]="7.682442825440876E+41";
+        results[29][47]="0.0005129432105733799";
+        results[29][48]="6.361521752392140E+36";
+        results[29][49]="2.172348267022037E-8";
+        results[29][50]="2.143924716258292E+32";
+        results[29][51]="5.407159861780895E-14";
+        results[29][52]="3.841662112296063E+27";
+        results[29][53]="1.126314293048790E-18";
+        results[29][54]="1.566673168742592E+22";
+        results[29][55]="0.005704440769329544";
+        results[29][56]="6.584897523124984E+45";
+        results[29][57]="5.721621440556141E-8";
+        results[29][58]="5.263223823910997E+40";
+        results[29][59]="1.122669893038318E-12";
+        results[29][60]="2.718536862713640E+36";
+        results[29][61]="5.189756793682972E-18";
+        results[29][62]="1.943595829699885E+31";
+        results[29][63]="4.414080639739539E-23";
+        results[29][64]="2.030847559414579E+26";
+        results[29][65]="4.789129509052666E-7";
+        results[29][66]="4.269560798205122E+49";
+        results[29][67]="1.545937162317696E-11";
+        results[29][68]="9.108489495899883E+44";
+        results[29][69]="6.866321155551707E-17";
+        results[29][70]="6.687715251833322E+39";
+        results[29][71]="4.196208980457067E-22";
+        results[29][72]="1.630021050395328E+35";
+        results[29][73]="7.951359815351027E-27";
+        results[29][74]="4.552459292898528E+29";
+        results[30][0]="0.07835824888672127";
+        results[30][1]="1.723004720015306E-7";
+        results[30][2]="3.865866163087327E-12";
+        results[30][3]="4.508021600300163E-17";
+        results[30][4]="3.146455831913338E-22";
+        results[30][5]="9.816746980813501E-7";
+        results[30][6]="610.0658766354783";
+        results[30][7]="9.414199128358610E-12";
+        results[30][8]="0.0008993520242460782";
+        results[30][9]="8.775378874836710E-17";
+        results[30][10]="3.202629856156106E-8";
+        results[30][11]="1.063413537138199E-21";
+        results[30][12]="1.427875009316049E-13";
+        results[30][13]="1.337954046340334E-26";
+        results[30][14]="1.075813913638266E-18";
+        results[30][15]="1.155689091332903E-10";
+        results[30][16]="1327656.307919525";
+        results[30][17]="1.367794937807870E-15";
+        results[30][18]="10.41961064339727";
+        results[30][19]="8.816072094770739E-21";
+        results[30][20]="0.0003526078195024119";
+        results[30][21]="1.643760124001572E-25";
+        results[30][22]="2.025731221936322E-9";
+        results[30][23]="1.801574196446855E-30";
+        results[30][24]="1.073005185322375E-14";
+        results[30][25]="1.074149625024506E-14";
+        results[30][26]="28770807997.87632";
+        results[30][27]="1.252220913433587E-19";
+        results[30][28]="443710.4675331262";
+        results[30][29]="2.137561506912014E-24";
+        results[30][30]="1";
+        results[30][31]="2.608116550863527E-29";
+        results[30][32]="0.00002033052498315981";
+        results[30][33]="1.122236432832213E-34";
+        results[30][34]="5.378556230380286E-10";
+        results[30][35]="1.320314709324433E-18";
+        results[30][36]="278214165870389.4";
+        results[30][37]="1.117090347328190E-23";
+        results[30][38]="1361598218.593171";
+        results[30][39]="1.190593007017408E-28";
+        results[30][40]="24686.97501554217";
+        results[30][41]="1.906119100865986E-33";
+        results[30][42]="0.08915387411693861";
+        results[30][43]="3.438573407486192E-38";
+        results[30][44]="0.000002342001368579163";
+        results[30][45]="3.016149049749527E-22";
+        results[30][46]="1.642169406271479E+18";
+        results[30][47]="1.096447662153521E-27";
+        results[30][48]="13598144023296.90";
+        results[30][49]="4.643528035193328E-32";
+        results[30][50]="458277094.7190988";
+        results[30][51]="1.155813678226253E-37";
+        results[30][52]="8211.789053806363";
+        results[30][53]="2.407566077505911E-42";
+        results[30][54]="0.03348860259416035";
+        results[30][55]="1.219359300697839E-26";
+        results[30][56]="1.407562347239223E+22";
+        results[30][57]="1.223031774845527E-31";
+        results[30][58]="1.125046464825440E+17";
+        results[30][59]="2.399775948327737E-36";
+        results[30][60]="5811039752858.027";
+        results[30][61]="1.109342435241184E-41";
+        results[30][62]="41545556.30561193";
+        results[30][63]="9.435368863912798E-47";
+        results[30][64]="434.1061569410814";
+        results[30][65]="1.023705889016741E-30";
+        results[30][66]="9.126448813663803E+25";
+        results[30][67]="3.304535770275098E-35";
+        results[30][68]="1.946995653254801E+21";
+        results[30][69]="1.467718379620295E-40";
+        results[30][70]="1.429540269150730E+16";
+        results[30][71]="8.969654791583536E-46";
+        results[30][72]="348427025278.1341";
+        results[30][73]="1.699652066890138E-50";
+        results[30][74]="973116.1746283781";
+        results[31][0]="3.004399817208225E+27";
+        results[31][1]="6.606317955556214E+21";
+        results[31][2]="1.482244404226248E+17";
+        results[31][3]="1728458645303.865";
+        results[31][4]="12064092.11609646";
+        results[31][5]="3.763921891283291E+22";
+        results[31][6]="2.339105115657083E+31";
+        results[31][7]="3.609577618470172E+17";
+        results[31][8]="3.448281572954666E+25";
+        results[31][9]="3364642148346.955";
+        results[31][10]="1.227947368799811E+21";
+        results[31][11]="40773236.79365905";
+        results[31][12]="5474736199359228";
+        results[31][13]="512.9962638737704";
+        results[31][14]="41248690104.82190";
+        results[31][15]="4.431125177094802E+18";
+        results[31][16]="5.090479209910875E+34";
+        results[31][17]="52443781216564.26";
+        results[31][18]="3.995070941115503E+29";
+        results[31][19]="338024467.9576074";
+        results[31][20]="1.351963428879995E+25";
+        results[31][21]="6302.479555437567";
+        results[31][22]="7.767027210749525E+19";
+        results[31][23]="0.06907567822651053";
+        results[31][24]="411409982796631.8";
+        results[31][25]="411848782090993.5";
+        results[31][26]="1.103125854876022E+39";
+        results[31][27]="4801245991.169322";
+        results[31][28]="1.701267787999033E+34";
+        results[31][29]="81958.05153739330";
+        results[31][30]="3.834184479481592E+28";
+        results[31][31]="1";
+        results[31][32]="7.795098335014412E+23";
+        results[31][33]="0.000004302861513074059";
+        results[31][34]="2.062237682054311E+19";
+        results[31][35]="50623301665.22991";
+        results[31][36]="1.066724436752164E+43";
+        results[31][37]="428313.0471904447";
+        results[31][38]="5.220618757019720E+37";
+        results[31][39]="4.564953228885464";
+        results[31][40]="9.465441644994164E+32";
+        results[31][41]="0.00007308412272583773";
+        results[31][42]="3.418324004248217E+27";
+        results[31][43]="1.318412479054169E-9";
+        results[31][44]="8.979665298330876E+22";
+        results[31][45]="11564471.87435279";
+        results[31][46]="6.296380450205607E+46";
+        results[31][47]="42.03982608792905";
+        results[31][48]="5.213779276388035E+41";
+        results[31][49]="0.001780414312257591";
+        results[31][50]="1.757118923873884E+37";
+        results[31][51]="4.431602866227630E-9";
+        results[31][52]="3.148551413888119E+32";
+        results[31][53]="9.231052487699542E-14";
+        results[31][54]="1.284014803060566E+27";
+        results[31][55]="467.5248505647183";
+        results[31][56]="5.396853705687309E+50";
+        results[31][57]="0.004689329449025547";
+        results[31][58]="4.313635694129337E+45";
+        results[31][59]="9.201183695311428E-8";
+        results[31][60]="2.228059843005880E+41";
+        results[31][61]="4.253423547632060E-13";
+        results[31][62]="1.592933271784059E+36";
+        results[31][63]="3.617694485619832E-18";
+        results[31][64]="1.664443089390894E+31";
+        results[31][65]="0.03925077231221895";
+        results[31][66]="3.499248839413294E+54";
+        results[31][67]="0.000001267019976228053";
+        results[31][68]="7.465140515327681E+49";
+        results[31][69]="5.627503031390007E-12";
+        results[31][70]="5.481121112771666E+44";
+        results[31][71]="3.439131118819729E-17";
+        results[31][72]="1.335933492553362E+40";
+        results[31][73]="6.516779575388975E-22";
+        results[31][74]="3.731106933492626E+34";
+        results[32][0]="3854.216698861785";
+        results[32][1]="0.008474964229612891";
+        results[32][2]="1.901508281900985E-7";
+        results[32][3]="2.217366056230347E-12";
+        results[32][4]="1.547651049109460E-17";
+        results[32][5]="0.04828575252702482";
+        results[32][6]="30007384.32189076";
+        results[32][7]="4.630573551915940E-7";
+        results[32][8]="44.23653717702960";
+        results[32][9]="4.316356258436777E-12";
+        results[32][10]="0.001575281434595963";
+        results[32][11]="5.230625072490977E-17";
+        results[32][12]="7.023306139407549E-9";
+        results[32][13]="6.581010807387358E-22";
+        results[32][14]="5.291618954893612E-14";
+        results[32][15]="0.000005684501960919277";
+        results[32][16]="65303591964.26306";
+        results[32][17]="6.727789562447809E-11";
+        results[32][18]="512510.6534153962";
+        results[32][19]="4.336372081917841E-16";
+        results[32][20]="17.34376361626097";
+        results[32][21]="8.085182873354881E-21";
+        results[32][22]="0.00009963988749008084";
+        results[32][23]="8.861424866987624E-26";
+        results[32][24]="5.277803628834801E-10";
+        results[32][25]="5.283432798288516E-10";
+        results[32][26]="1415153225099094";
+        results[32][27]="6.159314205957922E-15";
+        results[32][28]="21824840622.69226";
+        results[32][29]="1.051404972907783E-19";
+        results[32][30]="49187.12137676328";
+        results[32][31]="1.282857453520695E-24";
+        results[32][32]="1";
+        results[32][33]="5.519957963514394E-30";
+        results[32][34]="0.00002645556981354615";
+        results[32][35]="6.494247986306681E-14";
+        results[32][36]="1.368455394540179E+19";
+        results[32][37]="5.494645850284232E-19";
+        results[32][38]="66973096844326.95";
+        results[32][39]="5.856184274649082E-24";
+        results[32][40]="1214281236.514595";
+        results[32][41]="9.375651157286216E-29";
+        results[32][42]="4385.222427398534";
+        results[32][43]="1.691335275569338E-33";
+        results[32][44]="0.1151963055808490";
+        results[32][45]="1.483556894004392E-17";
+        results[32][46]="8.077358590748254E+22";
+        results[32][47]="5.393110424161355E-23";
+        results[32][48]="6.688535605726128E+17";
+        results[32][49]="2.284017770834574E-27";
+        results[32][50]="22541331082138.75";
+        results[32][51]="5.685114767983791E-33";
+        results[32][52]="403914264.9099497";
+        results[32][53]="1.184212448768611E-37";
+        results[32][54]="1647.207960537155";
+        results[32][55]="5.997677392530980E-22";
+        results[32][56]="6.923394001901749E+26";
+        results[32][57]="6.015741235696518E-27";
+        results[32][58]="5.533779701986738E+21";
+        results[32][59]="1.180380708474336E-31";
+        results[32][60]="2.858283176490243E+17";
+        results[32][61]="5.456536101060227E-37";
+        results[32][62]="2043506320669.287";
+        results[32][63]="4.640986335438119E-42";
+        results[32][64]="21352432.23186122";
+        results[32][65]="5.035314581717381E-26";
+        results[32][66]="4.489037455364987E+30";
+        results[32][67]="1.625406020263772E-30";
+        results[32][68]="9.576711151667440E+25";
+        results[32][69]="7.219284208528977E-36";
+        results[32][70]="7.031497073168779E+20";
+        results[32][71]="4.411914989412857E-41";
+        results[32][72]="1.713812238330015E+16";
+        results[32][73]="8.360099251239178E-46";
+        results[32][74]="47864783395.13761";
+        results[33][0]="6.982329800946383E+32";
+        results[33][1]="1.535331298830604E+27";
+        results[33][2]="3.444787613364996E+22";
+        results[33][3]="4.016998083837972E+17";
+        results[33][4]="2803737019990.124";
+        results[33][5]="8.747485550828852E+27";
+        results[33][6]="5.436161746200319E+36";
+        results[33][7]="8.388784085898711E+22";
+        results[33][8]="8.013926459118452E+30";
+        results[33][9]="7.819545523655909E+17";
+        results[33][10]="2.853792447348690E+26";
+        results[33][11]="9475842220292.549";
+        results[33][12]="1.272347758049958E+21";
+        results[33][13]="119222118.1915926";
+        results[33][14]="9586339225533875";
+        results[33][15]="1.029808922186089E+24";
+        results[33][16]="1.183045095558775E+40";
+        results[33][17]="1.218811738588753E+19";
+        results[33][18]="9.284683992214605E+34";
+        results[33][19]="78558063495777.08";
+        results[33][20]="3.142010089732407E+30";
+        results[33][21]="1464718196.550773";
+        results[33][22]="1.805084171812118E+25";
+        results[33][23]="16053.42817021349";
+        results[33][24]="9.561311270339060E+19";
+        results[33][25]="9.571509118748273E+19";
+        results[33][26]="2.563702902183168E+44";
+        results[33][27]="1115826288292324";
+        results[33][28]="3.953805584562284E+39";
+        results[33][29]="19047336589.46896";
+        results[33][30]="8.910778252638594E+33";
+        results[33][31]="232403.4824178150";
+        results[33][32]="1.811607998846661E+29";
+        results[33][33]="1";
+        results[33][34]="4.792712188826647E+24";
+        results[33][35]="1.176503159848700E+16";
+        results[33][36]="2.479104738813852E+48";
+        results[33][37]="99541443732.04527";
+        results[33][38]="1.213289979507148E+43";
+        results[33][39]="1060911.027467431";
+        results[33][40]="2.199801600919255E+38";
+        results[33][41]="16.98500463093566";
+        results[33][42]="7.944304026196954E+32";
+        results[33][43]="0.0003064036513952934";
+        results[33][44]="2.086905486278503E+28";
+        results[33][45]="2687623535922.464";
+        results[33][46]="1.463300743255233E+52";
+        results[33][47]="9770201.983074019";
+        results[33][48]="1.211700460390415E+47";
+        results[33][49]="413.7744863151833";
+        results[33][50]="4.083605569305342E+42";
+        results[33][51]="0.001029919938804072";
+        results[33][52]="7.317343131591340E+37";
+        results[33][53]="2.145328744523008E-8";
+        results[33][54]="2.984095117073005E+32";
+        results[33][55]="108654403.3881091";
+        results[33][56]="1.254247595301220E+56";
+        results[33][57]="1089.816494157951";
+        results[33][58]="1.002503957197447E+51";
+        results[33][59]="0.02138387133156396";
+        results[33][60]="5.178088665498566E+46";
+        results[33][61]="9.885104446676278E-8";
+        results[33][62]="3.702032396218190E+41";
+        results[33][63]="8.407647967817748E-13";
+        results[33][64]="3.868223702607104E+36";
+        results[33][65]="9122.016172948436";
+        results[33][66]="8.132376161261471E+59";
+        results[33][67]="0.2944598547683367";
+        results[33][68]="1.734924652500475E+55";
+        results[33][69]="0.000001307851301811848";
+        results[33][70]="1.273831634161944E+50";
+        results[33][71]="7.992660485051813E-12";
+        results[33][72]="3.104755959479955E+45";
+        results[33][73]="1.514522267469688E-16";
+        results[33][74]="8.671222446169412E+39";
+        results[34][0]="145686398.9710135";
+        results[34][1]="320.3470682862941";
+        results[34][2]="0.007187553680765358";
+        results[34][3]="8.381471545908569E-8";
+        results[34][4]="5.850000812747606E-13";
+        results[34][5]="1825.163958566520";
+        results[34][6]="1134255830941.353";
+        results[34][7]="0.01750320852868166";
+        results[34][8]="1672106.761971122";
+        results[34][9]="1.631549155379241E-7";
+        results[34][10]="59.54441524783812";
+        results[34][11]="1.977135669106896E-12";
+        results[34][12]="0.0002654755194806417";
+        results[34][13]="2.487570993091087E-17";
+        results[34][14]="2.000190883125157E-9";
+        results[34][15]="0.2148697609230333";
+        results[34][16]="2468425077384854";
+        results[34][17]="0.000002543052222977617";
+        results[34][18]="19372504808.15474";
+        results[34][19]="1.639114981260948E-11";
+        results[34][20]="655580.7997520574";
+        results[34][21]="3.056136356290082E-16";
+        results[34][22]="3.766310391056549";
+        results[34][23]="3.349549803478537E-21";
+        results[34][24]="0.00001994968797131100";
+        results[34][25]="0.00001997096579482185";
+        results[34][26]="5.349169324542341E+19";
+        results[34][27]="2.328172951619490E-10";
+        results[34][28]="824962031682160.1";
+        results[34][29]="3.974229171089060E-15";
+        results[34][30]="1859235001.303121";
+        results[34][31]="4.849101578843441E-20";
+        results[34][32]="37799.22364355827";
+        results[34][33]="2.086501255659210E-25";
+        results[34][34]="1";
+        results[34][35]="2.454775320311342E-9";
+        results[34][36]="5.172655150445800E+23";
+        results[34][37]="2.076933473370431E-14";
+        results[34][38]="2.531531065720401E+18";
+        results[34][39]="2.213592190953497E-19";
+        results[34][40]="45898888025191.66";
+        results[34][41]="3.543923348982476E-24";
+        results[34][42]="165758003.2599846";
+        results[34][43]="6.393116033748466E-29";
+        results[34][44]="4354.330917562191";
+        results[34][45]="5.607729882441468E-13";
+        results[34][46]="3.053178838209099E+27";
+        results[34][47]="2.038553870572805E-18";
+        results[34][48]="2.528214532087444E+22";
+        results[34][49]="8.633409852563746E-23";
+        results[34][50]="8.520448147972540E+17";
+        results[34][51]="2.148929245543152E-28";
+        results[34][52]="15267645632154.63";
+        results[34][53]="4.476231119249052E-33";
+        results[34][54]="62263182.08779341";
+        results[34][55]="2.267075491021919E-17";
+        results[34][56]="2.616989182503541E+31";
+        results[34][57]="2.273903483498682E-22";
+        results[34][58]="2.091725765495799E+26";
+        results[34][59]="4.461747438416318E-27";
+        results[34][60]="1.080408850247748E+22";
+        results[34][61]="2.062528284031250E-32";
+        results[34][62]="7.724295243200328E+16";
+        results[34][63]="1.754256804199234E-37";
+        results[34][64]="807105361266.0442";
+        results[34][65]="1.903309819900053E-21";
+        results[34][66]="1.696821307196509E+35";
+        results[34][67]="6.143908567153631E-26";
+        results[34][68]="3.619922465916360E+30";
+        results[34][69]="2.728833383445953E-31";
+        results[34][70]="2.657851304177320E+25";
+        results[34][71]="1.667669613811836E-36";
+        results[34][72]="6.478077207970342E+20";
+        results[34][73]="3.160052612799337E-41";
+        results[34][74]="1809251652203281";
+        results[35][0]="5.934816020251334E+16";
+        results[35][1]="130499547406.9147";
+        results[35][2]="2927988.407449751";
+        results[35][3]="34.14353841900911";
+        results[35][4]="0.0002383110488501100";
+        results[35][5]="743515686940.7634";
+        results[35][6]="4.620609558668262E+20";
+        results[35][7]="7130269.065301548";
+        results[35][8]="681164890381514.3";
+        results[35][9]="66.46429682910084";
+        results[35][10]="24256564238.34587";
+        results[35][11]="0.0008054242898515592";
+        results[35][12]="108146.5653023476";
+        results[35][13]="1.013359948875315E-8";
+        results[35][14]="0.8148162752717714";
+        results[35][15]="87531335.00453358";
+        results[35][16]="1.005560491406513E+24";
+        results[35][17]="1035.961296309220";
+        results[35][18]="7.891762903049598E+18";
+        results[35][19]="0.006677250531641558";
+        results[35][20]="267063463742543.0";
+        results[35][21]="1.244975998822763E-7";
+        results[35][22]="1534279068.187334";
+        results[35][23]="1.364503616996488E-12";
+        results[35][24]="8126.889579768451";
+        results[35][25]="8135.557510937055";
+        results[35][26]="2.179087136929461E+28";
+        results[35][27]="0.09484260870458016";
+        results[35][28]="3.360641704583902E+23";
+        results[35][29]="0.000001618978787266365";
+        results[35][30]="7.573951823286671E+17";
+        results[35][31]="1.975374910575696E-11";
+        results[35][32]="15398241676457.85";
+        results[35][33]="8.499764676608273E-17";
+        results[35][34]="407369257.6773865";
+        results[35][35]="1";
+        results[35][36]="2.107180688858216E+32";
+        results[35][37]="0.000008460788472922284";
+        results[35][38]="1.031267931029763E+27";
+        results[35][39]="9.017494076291857E-11";
+        results[35][40]="1.869779594303981E+22";
+        results[35][41]="1.443685423940549E-15";
+        results[35][42]="6.752471474210576E+16";
+        results[35][43]="2.604358932913510E-20";
+        results[35][44]="1773820553569.003";
+        results[35][45]="0.0002284416759465479";
+        results[35][46]="1.243771196877546E+36";
+        results[35][47]="8.304441769906065E-10";
+        results[35][48]="1.029916877185643E+31";
+        results[35][49]="3.516985762863528E-14";
+        results[35][50]="3.470968637118237E+26";
+        results[35][51]="8.754077115581401E-20";
+        results[35][52]="6.219569467652223E+21";
+        results[35][53]="1.823478948240904E-24";
+        results[35][54]="2.536410626773635E+16";
+        results[35][55]="9.235368598761958E-9";
+        results[35][56]="1.066080940626218E+40";
+        results[35][57]="9.263183741028816E-14";
+        results[35][58]="8.521047723546869E+34";
+        results[35][59]="1.817578741931636E-18";
+        results[35][60]="4.401253513135038E+30";
+        results[35][61]="8.402106160044240E-24";
+        results[35][62]="3.146640419303486E+25";
+        results[35][63]="7.146302921021462E-29";
+        results[35][64]="3.287899118863873E+20";
+        results[35][65]="7.753499084627650E-13";
+        results[35][66]="6.912328363238143E+43";
+        results[35][67]="2.502839472239110E-17";
+        results[35][68]="1.474645127790042E+39";
+        results[35][69]="1.111642829739649E-22";
+        results[35][70]="1.082726912799589E+34";
+        results[35][71]="6.793573326296614E-28";
+        results[35][72]="2.638969503387675E+29";
+        results[35][73]="1.287308287097552E-32";
+        results[35][74]="7.370335025096355E+23";
+        results[36][0]="2.816472290028026E-16";
+        results[36][1]="6.193087669080073E-22";
+        results[36][2]="1.389528872835434E-26";
+        results[36][3]="1.620342223120407E-31";
+        results[36][4]="1.130947384389897E-36";
+        results[36][5]="3.528485672216559E-21";
+        results[36][6]="2.192792285493067E-12";
+        results[36][7]="3.383795752781463E-26";
+        results[36][8]="3.232588899391471E-18";
+        results[36][9]="3.154181185340816E-31";
+        results[36][10]="1.151138313225971E-22";
+        results[36][11]="3.822283936590086E-36";
+        results[36][12]="5.132287225019476E-28";
+        results[36][13]="4.809079516690182E-41";
+        results[36][14]="3.866855270552440E-33";
+        results[36][15]="4.153954877593472E-25";
+        results[36][16]="4.772065806807389E-9";
+        results[36][17]="4.916338222853396E-30";
+        results[36][18]="3.745176170594929E-14";
+        results[36][19]="3.168807766200464E-35";
+        results[36][20]="1.267397073040055E-18";
+        results[36][21]="5.908254595372923E-40";
+        results[36][22]="7.281193664595935E-24";
+        results[36][23]="6.475494124501726E-45";
+        results[36][24]="3.856759708713939E-29";
+        results[36][25]="3.860873229312546E-29";
+        results[36][26]="0.0001034124481327801";
+        results[36][27]="4.500924349110802E-34";
+        results[36][28]="1.594852174924249E-9";
+        results[36][29]="7.683151216346878E-39";
+        results[36][30]="3.594353281298647E-15";
+        results[36][31]="9.374492282605629E-44";
+        results[36][32]="7.307508918374459E-20";
+        results[36][33]="4.033714204743355E-49";
+        results[36][34]="1.933243123531666E-24";
+        results[36][35]="4.745677507807144E-33";
+        results[36][36]="1";
+        results[36][37]="4.015217355426124E-38";
+        results[36][38]="0.000004894065024810755";
+        results[36][39]="4.279411881464243E-43";
+        results[36][40]="8.873370965245172E-11";
+        results[36][41]="6.851265444743684E-48";
+        results[36][42]="3.204505199727048E-16";
+        results[36][43]="1.235944761018426E-52";
+        results[36][44]="8.417980303958437E-21";
+        results[36][45]="1.084110523385301E-36";
+        results[36][46]="5902.536993880142";
+        results[36][47]="3.941020252233737E-42";
+        results[36][48]="0.04887653358970880";
+        results[36][49]="1.669048023009940E-46";
+        results[36][50]="0.000001647209779147603";
+        results[36][51]="4.154402686902390E-52";
+        results[36][52]="2.951607093088121E-11";
+        results[36][53]="8.653643030626684E-57";
+        results[36][54]="1.203698686204266E-16";
+        results[36][55]="4.382808103545301E-41";
+        results[36][56]="50592763.41431727";
+        results[36][57]="4.396008273048529E-46";
+        results[36][58]="404.3814452458765";
+        results[36][59]="8.625642554253372E-51";
+        results[36][60]="0.02088692980344213";
+        results[36][61]="3.987368622192980E-56";
+        results[36][62]="1.493294066304539E-7";
+        results[36][63]="3.391404903626805E-61";
+        results[36][64]="1.560330889633121E-12";
+        results[36][65]="3.679560621272072E-45";
+        results[36][66]="328036812399.9663";
+        results[36][67]="1.187766898905705E-49";
+        results[36][68]="6998190.214950595";
+        results[36][69]="5.275498373810540E-55";
+        results[36][70]="51.38272757170476";
+        results[36][71]="3.224010813224441E-60";
+        results[36][72]="0.001252369821601588";
+        results[36][73]="6.109149983692593E-65";
+        results[36][74]="3.497723315360298E-9";
+        results[37][0]="7.014495208389838E+21";
+        results[37][1]="1.542404089460013E+16";
+        results[37][2]="346065667144.4297";
+        results[37][3]="4035503.136413506";
+        results[37][4]="28.16652958678678";
+        results[37][5]="8.787782478196851E+16";
+        results[37][6]="5.461204441472514E+25";
+        results[37][7]="842742858791.6008";
+        results[37][8]="8.050844109405394E+19";
+        results[37][9]="7855567.721827779";
+        results[37][10]="2866938975720293";
+        results[37][11]="95.19494458811030";
+        results[37][12]="12782090658.38928";
+        results[37][13]="0.001197713371653776";
+        results[37][14]="96305.00489162340";
+        results[37][15]="10345529294895.73";
+        results[37][16]="1.188495013939524E+29";
+        results[37][17]="122442642.2696522";
+        results[37][18]="9.327455624622005E+23";
+        results[37][19]="789.1995590022467";
+        results[37][20]="3.156484346550524E+19";
+        results[37][21]="0.01471465694724737";
+        results[37][22]="181339962947614.9";
+        results[37][23]="1.612738128796641E-7";
+        results[37][24]="960535723.8013413";
+        results[37][25]="961560206.4717620";
+        results[37][26]="2.575513078838174E+33";
+        results[37][27]="11209.66550672107";
+        results[37][28]="3.972019529077253E+28";
+        results[37][29]="0.1913508170601013";
+        results[37][30]="8.951827418361983E+22";
+        results[37][31]="0.000002334740925030381";
+        results[37][32]="1.819953509739433E+18";
+        results[37][33]="1.004606686931215E-11";
+        results[37][34]="48147907134319.92";
+        results[37][35]="118192.2941579709";
+        results[37][36]="2.490525198215260E+37";
+        results[37][37]="1";
+        results[37][38]="1.218879226599518E+32";
+        results[37][39]="0.00001065798312432847";
+        results[37][40]="2.209935398205477E+27";
+        results[37][41]="1.706324922979563E-10";
+        results[37][42]="7.980900947732038E+21";
+        results[37][43]="3.078151570918528E-15";
+        results[37][44]="2.096519206508824E+17";
+        results[37][45]="27.00004576141425";
+        results[37][46]="1.470041711665625E+41";
+        results[37][47]="0.00009815210244864781";
+        results[37][48]="1.217282385065843E+36";
+        results[37][49]="4.156806158337618E-9";
+        results[37][50]="4.102417461713700E+31";
+        results[37][51]="1.034664457526358E-14";
+        results[37][52]="7.351051840566861E+26";
+        results[37][53]="2.155211602413563E-19";
+        results[37][54]="2.997841909050329E+21";
+        results[37][55]="0.001091549402082161";
+        results[37][56]="1.260025521307003E+45";
+        results[37][57]="1.094836937559011E-8";
+        results[37][58]="1.007122179075560E+40";
+        results[37][59]="2.148238013216586E-13";
+        results[37][60]="5.201942498882593E+35";
+        results[37][61]="9.930642028144481E-19";
+        results[37][62]="3.719086500476785E+30";
+        results[37][63]="8.446379369833354E-24";
+        results[37][64]="3.886043398184922E+25";
+        results[37][65]="9.164038445638694E-8";
+        results[37][66]="8.169839472243282E+48";
+        results[37][67]="2.958163391330656E-12";
+        results[37][68]="1.742916907223793E+44";
+        results[37][69]="1.313876163311878E-17";
+        results[37][70]="1.279699777703607E+39";
+        results[37][71]="8.029480169653943E-23";
+        results[37][72]="3.119058598183105E+34";
+        results[37][73]="1.521499197406275E-27";
+        results[37][74]="8.711168053289843E+28";
+    }
+
+    private static void initResults2() {
+        results[38][0]="5.754873046740801E-11";
+        results[38][1]="1.265428153832008E-16";
+        results[38][2]="2.839212118742058E-21";
+        results[38][3]="3.310831006343367E-26";
+        results[38][4]="2.310854838782263E-31";
+        results[38][5]="7.209723725223695E-16";
+        results[38][6]="4.480513181530232E-7";
+        results[38][7]="6.914080086037084E-21";
+        results[38][8]="6.605120453046024E-13";
+        results[38][9]="6.444910660872926E-26";
+        results[38][10]="2.352110786003469E-17";
+        results[38][11]="7.810039133548062E-31";
+        results[38][12]="1.048675732545652E-22";
+        results[38][13]="9.826349859084964E-36";
+        results[38][14]="7.901111348029064E-28";
+        results[38][15]="8.487739448770601E-20";
+        results[38][16]="0.0009750720071382617";
+        results[38][17]="1.004551062956811E-24";
+        results[38][18]="7.652485513797906E-9";
+        results[38][19]="6.474797024837234E-30";
+        results[38][20]="2.589661286915703E-13";
+        results[38][21]="1.207228462519536E-34";
+        results[38][22]="1.487759894419769E-18";
+        results[38][23]="1.323132016365500E-39";
+        results[38][24]="7.880483175360085E-24";
+        results[38][25]="7.888888295802402E-24";
+        results[38][26]="21.13017452946058";
+        results[38][27]="9.196699116773269E-29";
+        results[38][28]="0.0003258747415163162";
+        results[38][29]="1.569891527267555E-33";
+        results[38][30]="7.344310431260839E-10";
+        results[38][31]="1.915481759045105E-38";
+        results[38][32]="1.493136867068297E-14";
+        results[38][33]="8.242052739990580E-44";
+        results[38][34]="3.950178662790491E-19";
+        results[38][35]="9.696801092238556E-28";
+        results[38][36]="204329.1200526434";
+        results[38][37]="8.204258290543218E-33";
+        results[38][38]="1";
+        results[38][39]="8.744084640824158E-38";
+        results[38][40]="0.00001813088081229221";
+        results[38][41]="1.399913039571560E-42";
+        results[38][42]="6.547737276643480E-11";
+        results[38][43]="2.525395054525697E-47";
+        results[38][44]="1.720038508128311E-15";
+        results[38][45]="2.215153492831292E-31";
+        results[38][46]="1206060190.037704";
+        results[38][47]="8.052652002485662E-37";
+        results[38][48]="9986.899099608667";
+        results[38][49]="3.410351138672251E-41";
+        results[38][50]="0.3365729247153389";
+        results[38][51]="8.488654453591028E-47";
+        results[38][52]="0.000006030992800718365";
+        results[38][53]="1.768191265697641E-51";
+        results[38][54]="2.459506933606407E-11";
+        results[38][55]="8.955353231570062E-36";
+        results[38][56]="10337574829479.02";
+        results[38][57]="8.982325021761465E-41";
+        results[38][58]="82626904.87270614";
+        results[38][59]="1.762469952999227E-45";
+        results[38][60]="4267.807987338662";
+        results[38][61]="8.147355218982128E-51";
+        results[38][62]="0.03051234625478403";
+        results[38][63]="6.929627797002850E-56";
+        results[38][64]="3.188210376696939E-7";
+        results[38][65]="7.518413839248804E-40";
+        results[38][66]="6.702747322255918E+16";
+        results[38][67]="2.426953652810597E-44";
+        results[38][68]="1429934048581.875";
+        results[38][69]="1.077937940559859E-49";
+        results[38][70]="10498987.51063113";
+        results[38][71]="6.587592925063573E-55";
+        results[38][72]="255.8956236283385";
+        results[38][73]="1.248277240437528E-59";
+        results[38][74]="0.0007146867272151842";
+        results[39][0]="6.581447096100371E+26";
+        results[39][1]="1.447181958788470E+21";
+        results[39][2]="3.247008961334176E+16";
+        results[39][3]="378636660364.1785";
+        results[39][4]="2642763.575267104";
+        results[39][5]="8.245258390527376E+21";
+        results[39][6]="5.124050561692560E+30";
+        results[39][7]="7.907151371518986E+16";
+        results[39][8]="7.553815778735954E+24";
+        results[39][9]="737059500863.3713";
+        results[39][10]="2.689945125899165E+20";
+        results[39][11]="8931797.271363033";
+        results[39][12]="1199297325702478";
+        results[39][13]="112.3771127878607";
+        results[39][14]="9035950213.862933";
+        results[39][15]="9.706835875242173E+17";
+        results[39][16]="1.115121876320673E+34";
+        results[39][17]="11488350172947.65";
+        results[39][18]="8.751614180482857E+28";
+        results[39][19]="74047739.59538163";
+        results[39][20]="2.961615072691725E+24";
+        results[39][21]="1380.623029291435";
+        results[39][22]="1.701447270390950E+19";
+        results[39][23]="0.01513173843478247";
+        results[39][24]="90123592108977.16";
+        results[39][25]="90219715611751.54";
+        results[39][26]="2.416510749542446E+38";
+        results[39][27]="1051762362.161496";
+        results[39][28]="3.726802231475215E+33";
+        results[39][29]="17953.75492979660";
+        results[39][30]="8.399175823358240E+27";
+        results[39][31]="0.2190602947851342";
+        results[39][32]="1.707596539147366E+23";
+        results[39][33]="9.425861114736121E-7";
+        results[39][34]="4.517543945478293E+18";
+        results[39][35]="11089555385.78204";
+        results[39][36]="2.336769695694354E+42";
+        results[39][37]="93826.38237785791";
+        results[39][38]="1.143630283873541E+37";
+        results[39][39]="1";
+        results[39][40]="2.073502437023907E+32";
+        results[39][41]="0.00001600982946843494";
+        results[39][42]="7.488190640417148E+26";
+        results[39][43]="2.888118263100058E-10";
+        results[39][44]="1.967088127324202E+22";
+        results[39][45]="2533316.617830116";
+        results[39][46]="1.379286957501396E+46";
+        results[39][47]="9.209256695537514";
+        results[39][48]="1.142132025230187E+41";
+        results[39][49]="0.0003900180840828200";
+        results[39][50]="3.849149894363509E+36";
+        results[39][51]="9.707882302464703E-10";
+        results[39][52]="6.897226008724825E+31";
+        results[39][53]="2.022157079132508E-14";
+        results[39][54]="2.812766612669237E+26";
+        results[39][55]="102.4161315840830";
+        results[39][56]="1.182236363680106E+50";
+        results[39][57]="0.001027245891448147";
+        results[39][58]="9.449463067516497E+44";
+        results[39][59]="2.015614012667092E-8";
+        results[39][60]="4.880794460077878E+40";
+        results[39][61]="9.317562161903105E-14";
+        results[39][62]="3.489484320900643E+35";
+        results[39][63]="7.924932204624348E-19";
+        results[39][64]="3.646133938150488E+30";
+        results[39][65]="0.008598285753258867";
+        results[39][66]="7.665464822884150E+53";
+        results[39][67]="2.775537694911710E-7";
+        results[39][68]="1.635315881900131E+49";
+        results[39][69]="1.232762472960531E-12";
+        results[39][70]="1.200696006716784E+44";
+        results[39][71]="7.533770766933783E-18";
+        results[39][72]="2.926499846920735E+39";
+        results[39][73]="1.427567654834451E-22";
+        results[39][74]="8.173373847257529E+33";
+        results[40][0]="0.000003174072515461667";
+        results[40][1]="6.979408043839129E-12";
+        results[40][2]="1.565953771433517E-16";
+        results[40][3]="1.826072897737389E-21";
+        results[40][4]="1.274540858056698E-26";
+        results[40][5]="3.976488401123740E-11";
+        results[40][6]="0.02471205468678926";
+        results[40][7]="3.813427575647367E-16";
+        results[40][8]="3.643022377913347E-8";
+        results[40][9]="3.554659438554945E-21";
+        results[40][10]="1.297295377072253E-12";
+        results[40][11]="4.307589473674706E-26";
+        results[40][12]="5.783920502277423E-18";
+        results[40][13]="5.419675944492992E-31";
+        results[40][14]="4.357819914999574E-23";
+        results[40][15]="4.681371818966545E-15";
+        results[40][16]="53.77962699292531";
+        results[40][17]="5.540553012050880E-20";
+        results[40][18]="0.0004220691533424975";
+        results[40][19]="3.571143118677119E-25";
+        results[40][20]="1.428315211889754E-8";
+        results[40][21]="6.658410449100025E-30";
+        results[40][22]="8.205668052327118E-14";
+        results[40][23]="7.297670918825164E-35";
+        results[40][24]="4.346442545702108E-19";
+        results[40][25]="4.351078349405929E-19";
+        results[40][26]="1165424.600614822";
+        results[40][27]="5.072395109750087E-24";
+        results[40][28]="17.97346443838419";
+        results[40][29]="8.658661118125126E-29";
+        results[40][30]="0.00004050719050715733";
+        results[40][31]="1.056474739906990E-33";
+        results[40][32]="8.235324486033761E-10";
+        results[40][33]="4.545864497880714E-39";
+        results[40][34]="2.178702018774722E-14";
+        results[40][35]="5.348223946000686E-23";
+        results[40][36]="11269674218.70173";
+        results[40][37]="4.525019151292953E-28";
+        results[40][38]="55154.51843475961";
+        results[40][39]="4.822757775174344E-33";
+        results[40][40]="1";
+        results[40][41]="7.721152954810994E-38";
+        results[40][42]="0.000003611372963305955";
+        results[40][43]="1.392869480898883E-42";
+        results[40][44]="9.486789560505935E-11";
+        results[40][45]="1.221757241561856E-26";
+        results[40][46]="66519668984864.25";
+        results[40][47]="4.441401433197993E-32";
+        results[40][48]="550822610.4954504";
+        results[40][49]="1.880962747469021E-36";
+        results[40][50]="18563.51758085312";
+        results[40][51]="4.681876485468906E-42";
+        results[40][52]="0.3326365036071236";
+        results[40][53]="9.752373776010145E-47";
+        results[40][54]="0.000001356529205100136";
+        results[40][55]="4.939281949004150E-31";
+        results[40][56]="5.701639615032074E+17";
+        results[40][57]="4.954158109997452E-36";
+        results[40][58]="4557247148008.799";
+        results[40][59]="9.720818151340577E-41";
+        results[40][60]="235388894.3136845";
+        results[40][61]="4.493634536198847E-46";
+        results[40][62]="1682.893763997254";
+        results[40][63]="3.822002840758163E-51";
+        results[40][64]="0.01758442079954232";
+        results[40][65]="4.146744946969999E-35";
+        results[40][66]="3.696868007488996E+21";
+        results[40][67]="1.338574599842493E-39";
+        results[40][68]="7.886732384299944E+16";
+        results[40][69]="5.945314801413554E-45";
+        results[40][70]="579066600201.4157";
+        results[40][71]="3.633355154261108E-50";
+        results[40][72]="14113799.89078350";
+        results[40][73]="6.884813006940251E-55";
+        results[40][74]="39.41820227126789";
+        results[41][0]="4.110878950382567E+31";
+        results[41][1]="9.039334001912643E+25";
+        results[41][2]="2.028134632999056E+21";
+        results[41][3]="2.365026192881695E+16";
+        results[41][4]="165071313250.2498";
+        results[41][5]="5.150122558634225E+26";
+        results[41][6]="3.200565360046566E+35";
+        results[41][7]="4.938935412840446E+21";
+        results[41][8]="4.718236252065705E+29";
+        results[41][9]="4.603793577667779E+16";
+        results[41][10]="1.680183496771577E+25";
+        results[41][11]="557894591505.3629";
+        results[41][12]="7.491006247549473E+19";
+        results[41][13]="7019257.326220990";
+        results[41][14]="564400153772921.7";
+        results[41][15]="6.063047638564933E+22";
+        results[41][16]="6.965232693572741E+38";
+        results[41][17]="7.175810457942816E+17";
+        results[41][18]="5.466400624527316E+33";
+        results[41][19]="4625142306567.008";
+        results[41][20]="1.849872966186717E+29";
+        results[41][21]="86235960.97719082";
+        results[41][22]="1.062751651256206E+24";
+        results[41][23]="945.1530051969814";
+        results[41][24]="5.629266213401292E+18";
+        results[41][25]="5.635270243797986E+18";
+        results[41][26]="1.509391935939637E+43";
+        results[41][27]="65694788581924.34";
+        results[41][28]="2.327821316787288E+38";
+        results[41][29]="1121420747.497299";
+        results[41][30]="5.246261891744755E+32";
+        results[41][31]="13682.86247002409";
+        results[41][32]="1.066592584583160E+28";
+        results[41][33]="0.05887546231095213";
+        results[41][34]="2.821731458405042E+23";
+        results[41][35]="692671674463882.5";
+        results[41][36]="1.459584376149378E+47";
+        results[41][37]="5860548518.823794";
+        results[41][38]="7.143300846072895E+41";
+        results[41][39]="62461.62721293222";
+        results[41][40]="1.295143362464938E+37";
+        results[41][41]="1";
+        results[41][42]="4.677245722811041E+31";
+        results[41][43]="0.00001803965662966171";
+        results[41][44]="1.228675253039092E+27";
+        results[41][45]="158235078195.2310";
+        results[41][46]="8.615250775911171E+50";
+        results[41][47]="575225.1586248642";
+        results[41][48]="7.133942478787923E+45";
+        results[41][49]="24.36116417428315";
+        results[41][50]="2.404241657884309E+41";
+        results[41][51]="0.00006063701254035724";
+        results[41][52]="4.308119597603104E+36";
+        results[41][53]="1.263072216427666E-9";
+        results[41][54]="1.756899795975280E+31";
+        results[41][55]="6397078.231595606";
+        results[41][56]="7.384440702575934E+54";
+        results[41][57]="64.16344992765041";
+        results[41][58]="5.902288394855864E+49";
+        results[41][59]="0.001258985310643743";
+        results[41][60]="3.048623640683292E+45";
+        results[41][61]="5.819900942901146E-9";
+        results[41][62]="2.179588688174679E+40";
+        results[41][63]="4.950041610530071E-14";
+        results[41][64]="2.277434588131763E+35";
+        results[41][65]="537.0629193903215";
+        results[41][66]="4.787974061808353E+58";
+        results[41][67]="0.01733646008150164";
+        results[41][68]="1.021444909906334E+54";
+        results[41][69]="7.700035002815314E-8";
+        results[41][70]="7.499742636760013E+48";
+        results[41][71]="4.705715811519044E-13";
+        results[41][72]="1.827939424770661E+44";
+        results[41][73]="8.916819867750936E-18";
+        results[41][74]="5.105222303193294E+38";
+        results[42][0]="0.8789101950179163";
+        results[42][1]="0.000001932619010762593";
+        results[42][2]="4.336172938504800E-11";
+        results[42][3]="5.056450597297903E-16";
+        results[42][4]="3.529241845156713E-21";
+        results[42][5]="0.00001101101559303791";
+        results[42][6]="6842.842026531408";
+        results[42][7]="1.055949527892695E-10";
+        results[42][8]="0.01008763817785915";
+        results[42][9]="9.842958549761383E-16";
+        results[42][10]="3.592249790463821E-7";
+        results[42][11]="1.192784438894235E-20";
+        results[42][12]="1.601584926576693E-12";
+        results[42][13]="1.500724516564931E-25";
+        results[42][14]="1.206693398681896E-17";
+        results[42][15]="1.296285890859935E-9";
+        results[42][16]="14891739.93917645";
+        results[42][17]="1.534195738946580E-14";
+        results[42][18]="116.8722138729541";
+        results[42][19]="9.888602354180532E-20";
+        results[42][20]="0.003955047640890110";
+        results[42][21]="1.843733814467261E-24";
+        results[42][22]="2.272174083292525E-8";
+        results[42][23]="2.020746954959940E-29";
+        results[42][24]="1.203542971015447E-13";
+        results[42][25]="1.204826638958615E-13";
+        results[42][26]="322709565712.6364";
+        results[42][27]="1.404561412318563E-18";
+        results[42][28]="4976906.185267212";
+        results[42][29]="2.397609221230570E-23";
+        results[42][30]="11.21656248710349";
+        results[42][31]="2.925410226640957E-28";
+        results[42][32]="0.0002280386038692306";
+        results[42][33]="1.258763507416664E-33";
+        results[42][34]="6.032891204846025E-9";
+        results[42][35]="1.480939243977938E-17";
+        results[42][36]="3120606576282596";
+        results[42][37]="1.252991368454678E-22";
+        results[42][38]="15272451501.17909";
+        results[42][39]="1.335436085991919E-27";
+        results[42][40]="276902.9978793913";
+        results[42][41]="2.138010400272485E-32";
+        results[42][42]="1";
+        results[42][43]="3.856897349156122E-37";
+        results[42][44]="0.00002626920469555007";
+        results[42][45]="3.383082428693337E-21";
+        results[42][46]="1.841949575985368E+19";
+        results[42][47]="1.229837371638349E-26";
+        results[42][48]="152524432145942.5";
+        results[42][49]="5.208442236736284E-31";
+        results[42][50]="5140293669.325014";
+        results[42][51]="1.296425634527369E-36";
+        results[42][52]="92108.04505293148";
+        results[42][53]="2.700461535017569E-41";
+        results[42][54]="0.3756270036031754";
+        results[42][55]="1.367701979050812E-25";
+        results[42][56]="1.578801102230280E+23";
+        results[42][57]="1.371821232626794E-30";
+        results[42][58]="1.261915397360943E+18";
+        results[42][59]="2.691723687946608E-35";
+        results[42][60]="65179890502974.45";
+        results[42][61]="1.244300874447829E-40";
+        results[42][62]="465998328.3633725";
+        results[42][63]="1.058324044509485E-45";
+        results[42][64]="4869.178835365991";
+        results[42][65]="1.148246107257210E-29";
+        results[42][66]="1.023673834038115E+27";
+        results[42][67]="3.706553195815928E-34";
+        results[42][68]="2.183859840685134E+22";
+        results[42][69]="1.646275491848131E-39";
+        results[42][70]="1.603452775675989E+17";
+        results[42][71]="1.006086934575439E-44";
+        results[42][72]="3908153501227.777";
+        results[42][73]="1.906425361460782E-49";
+        results[42][74]="10915018.37993031";
+        results[43][0]="2.278801107346606E+36";
+        results[43][1]="5.010812670929508E+30";
+        results[43][2]="1.124264543740979E+26";
+        results[43][3]="1.311015082733337E+21";
+        results[43][4]="9150468694555485";
+        results[43][5]="2.854889460681936E+31";
+        results[43][6]="1.774183082168003E+40";
+        results[43][7]="2.737821187083793E+26";
+        results[43][8]="2.615480077546344E+34";
+        results[43][9]="2.552040580472019E+21";
+        results[43][10]="9.313833025008547E+29";
+        results[43][11]="3.092600945563700E+16";
+        results[43][12]="4.152521525954315E+24";
+        results[43][13]="389101492911.9866";
+        results[43][14]="3.128663507069788E+19";
+        results[43][15]="3.360955124054725E+27";
+        results[43][16]="3.861067223485925E+43";
+        results[43][17]="3.977797696073652E+22";
+        results[43][18]="3.030213233404445E+38";
+        results[43][19]="2.563874912653335E+17";
+        results[43][20]="1.025447991701273E+34";
+        results[43][21]="4780354900735.599";
+        results[43][22]="5.891196673382220E+28";
+        results[43][23]="52393070.69974453";
+        results[43][24]="3.120495211724467E+23";
+        results[43][25]="3.123823451568468E+23";
+        results[43][26]="8.367076862526411E+47";
+        results[43][27]="3.641687307612366E+18";
+        results[43][28]="1.290391144673877E+43";
+        results[43][29]="62164195833605.98";
+        results[43][30]="2.908182788312382E+37";
+        results[43][31]="758487966.3133965";
+        results[43][32]="5.912488283338024E+32";
+        results[43][33]="3263.668678379727";
+        results[43][34]="1.564182465516227E+28";
+        results[43][35]="3.839716512812981E+19";
+        results[43][36]="8.090976486489524E+51";
+        results[43][37]="324870292108974.2";
+        results[43][38]="3.959776503909459E+46";
+        results[43][39]="3462462090.893108";
+        results[43][40]="7.179423583569754E+41";
+        results[43][41]="55433.42761611934";
+        results[43][42]="2.592757622182496E+36";
+        results[43][43]="1";
+        results[43][44]="6.810968070305965E+31";
+        results[43][45]="8771512753466319";
+        results[43][46]="4.775728802811879E+55";
+        results[43][47]="31886702193.60218";
+        results[43][48]="3.954588840154493E+50";
+        results[43][49]="1350422.830899525";
+        results[43][50]="1.332753559139886E+46";
+        results[43][51]="3.361317445513614";
+        results[43][52]="2.388138358753168E+41";
+        results[43][53]="0.00007001642228327445";
+        results[43][54]="9.739097766897050E+35";
+        results[43][55]="354611973105.8077";
+        results[43][56]="4.093448591717685E+59";
+        results[43][57]="3556799.957164907";
+        results[43][58]="3.271840765057037E+54";
+        results[43][59]="69.78987108732747";
+        results[43][60]="1.689956579146075E+50";
+        results[43][61]="0.0003226170576512954";
+        results[43][62]="1.208220717788436E+45";
+        results[43][63]="2.743977733140975E-9";
+        results[43][64]="1.262460053916486E+40";
+        results[43][65]="29771238.46732512";
+        results[43][66]="2.654138135831102E+63";
+        results[43][67]="961.0194050476638";
+        results[43][68]="5.662219247714633E+58";
+        results[43][69]="0.004268393329701480";
+        results[43][70]="4.157364405943601E+53";
+        results[43][71]="2.608539568198692E-8";
+        results[43][72]="1.013289477896753E+49";
+        results[43][73]="4.942898887049463E-13";
+        results[43][74]="2.829999710082635E+43";
+        results[44][0]="33457.81515672613";
+        results[44][1]="0.07356975717997179";
+        results[44][2]="0.000001650667764311622";
+        results[44][3]="1.924858653278701E-11";
+        results[44][4]="1.343490176447769E-16";
+        results[44][5]="0.4191605996698921";
+        results[44][6]="260489120.4677608";
+        results[44][7]="0.000004019724008133258";
+        results[44][8]="384.0100336028812";
+        results[44][9]="3.746957193351482E-11";
+        results[44][10]="0.01367475655276438";
+        results[44][11]="4.540618769080169E-16";
+        results[44][12]="6.096815435177592E-8";
+        results[44][13]="5.712866201918743E-21";
+        results[44][14]="4.593566545569257E-13";
+        results[44][15]="0.00004934621759141124";
+        results[44][16]="566889637953.1077";
+        results[44][17]="5.840282401874423E-10";
+        results[44][18]="4449019.878121849";
+        results[44][19]="3.764332597345680E-15";
+        results[44][20]="150.5583319604680";
+        results[44][21]="7.018612995084639E-20";
+        results[44][22]="0.0008649573177513917";
+        results[44][23]="7.692455779988837E-25";
+        results[44][24]="4.581573690425900E-9";
+        results[44][25]="4.586460278954353E-9";
+        results[44][26]="1.228471015596839E+16";
+        results[44][27]="5.346798384636640E-14";
+        results[44][28]="189457817354.8698";
+        results[44][29]="9.127071980358501E-19";
+        results[44][30]="426985.2329790381";
+        results[44][31]="1.113627253106948E-23";
+        results[44][32]="8.680833946520647";
+        results[44][33]="4.791783847304273E-29";
+        results[44][34]="0.0002296564085119783";
+        results[44][35]="5.637548837665439E-13";
+        results[44][36]="1.187933404322369E+20";
+        results[44][37]="4.769810822125617E-18";
+        results[44][38]="581382332589848.2";
+        results[44][39]="5.083656324845414E-23";
+        results[44][40]="10540973778.55897";
+        results[44][41]="8.138847083690577E-28";
+        results[44][42]="38067.38771080486";
+        results[44][43]="1.468220067511016E-32";
+        results[44][44]="1";
+        results[44][45]="1.287851104706806E-16";
+        results[44][46]="7.011820865278762E+23";
+        results[44][47]="4.681669604739426E-22";
+        results[44][48]="5.806206693869941E+18";
+        results[44][49]="1.982717899951718E-26";
+        results[44][50]="195677552057591.1";
+        results[44][51]="4.935153726777955E-32";
+        results[44][52]="3506312662.314225";
+        results[44][53]="1.027995162516290E-36";
+        results[44][54]="14299.13878080998";
+        results[44][55]="5.206484150936237E-21";
+        results[44][56]="6.010083367684613E+27";
+        results[44][57]="5.222165073231839E-26";
+        results[44][58]="4.803782268957339E+22";
+        results[44][59]="1.024668892394211E-30";
+        results[44][60]="2.481228162724536E+18";
+        results[44][61]="4.736728381649903E-36";
+        results[44][62]="17739339038395.46";
+        results[44][63]="4.028763172600968E-41";
+        results[44][64]="185356918.5591225";
+        results[44][65]="4.371072975238266E-25";
+        results[44][66]="3.896858872973504E+31";
+        results[44][67]="1.410987975758478E-29";
+        results[44][68]="8.313383926141755E+26";
+        results[44][69]="6.266940742697879E-35";
+        results[44][70]="6.103925848762411E+21";
+        results[44][71]="3.829910140925841E-40";
+        results[44][72]="1.487731945645773E+17";
+        results[44][73]="7.257263337643890E-45";
+        results[44][74]="415506236539.3683";
+        results[45][0]="2.597956785100805E+20";
+        results[45][1]="571259805664574.7";
+        results[45][2]="12817225207.78065";
+        results[45][3]="149462.8258067859";
+        results[45][4]="1.043203031420026";
+        results[45][5]="3254728734851059";
+        results[45][6]="2.022664883508130E+24";
+        results[45][7]="31212645572.47396";
+        results[45][8]="2.981789060858130E+18";
+        results[45][9]="290946.4595446784";
+        results[45][10]="106182745061026.3";
+        results[45][11]="3.525732712799818";
+        results[45][12]="473409962.7585133";
+        results[45][13]="0.00004435967932193017";
+        results[45][14]="3566.845987692836";
+        results[45][15]="383167102245.4531";
+        results[45][16]="4.401825924450844E+27";
+        results[45][17]="4534904.990592084";
+        results[45][18]="3.454607339203797E+22";
+        results[45][19]="29.22956375615078";
+        results[45][20]="1.169066295088082E+18";
+        results[45][21]="0.0005449863706629740";
+        results[45][22]="6716283540777.093";
+        results[45][23]="5.973094057127134E-9";
+        results[45][24]="35575336.88235604";
+        results[45][25]="35613280.62065461";
+        results[45][26]="9.538921161825726E+31";
+        results[45][27]="415.1720928836645";
+        results[45][28]="1.471115850756691E+27";
+        results[45][29]="0.007087055286904757";
+        results[45][30]="3.315486017121880E+21";
+        results[45][31]="8.647173955412170E-8";
+        results[45][32]="6.740557130241340E+16";
+        results[45][33]="3.720759200959941E-13";
+        results[45][34]="1783252797412.961";
+        results[45][35]="4377.484956965496";
+        results[45][36]="9.224151767085032E+35";
+        results[45][37]="0.03703697426428437";
+        results[45][38]="4.514359854683718E+30";
+        results[45][39]="3.947394466849308E-7";
+        results[45][40]="8.184932046906727E+25";
+        results[45][41]="6.319711225890107E-12";
+        results[45][42]="2.955884230069542E+20";
+        results[45][43]="1.140054205136760E-16";
+        results[45][44]="7764872789604521";
+        results[45][45]="1";
+        results[45][46]="5.444589704238428E+39";
+        results[45][47]="0.000003635256892375972";
+        results[45][48]="4.508445636805033E+34";
+        results[45][49]="1.539555227079692E-10";
+        results[45][50]="1.519411299508411E+30";
+        results[45][51]="3.832084088557348E-16";
+        results[45][52]="2.722607178344951E+25";
+        results[45][53]="7.982251665267820E-21";
+        results[45][54]="1.110309936338901E+20";
+        results[45][55]="0.00004042768711311199";
+        results[45][56]="4.666753280498896E+43";
+        results[45][57]="4.054944747996101E-10";
+        results[45][58]="3.730075822741150E+38";
+        results[45][59]="7.956423600906009E-15";
+        results[45][60]="1.926642104554017E+34";
+        results[45][61]="3.678009332242079E-20";
+        results[45][62]="1.377437110048061E+29";
+        results[45][63]="3.128283353469004E-25";
+        results[45][64]="1.439272893284671E+24";
+        results[45][65]="3.394082560680328E-9";
+        results[45][66]="3.025861342768090E+47";
+        results[45][67]="1.095614213942617E-13";
+        results[45][68]="6.455236863763371E+42";
+        results[45][69]="4.866199764703870E-19";
+        results[45][70]="4.739620773281892E+37";
+        results[45][71]="2.973876503990548E-24";
+        results[45][72]="1.155204930297025E+33";
+        results[45][73]="5.635172661746553E-29";
+        results[45][74]="3.226353070015521E+27";
+        results[46][0]="4.771630051532411E-20";
+        results[46][1]="1.049224710578041E-25";
+        results[46][2]="2.354121413006176E-30";
+        results[46][3]="2.745162334095334E-35";
+        results[46][4]="1.916036080015227E-40";
+        results[46][5]="5.977913693510024E-25";
+        results[46][6]="3.714999648060815E-16";
+        results[46][7]="5.732781948321280E-30";
+        results[46][8]="5.476609299938448E-22";
+        results[46][9]="5.343771989249925E-35";
+        results[46][10]="1.950243284234377E-26";
+        results[46][11]="6.475662821856263E-40";
+        results[46][12]="8.695053043023237E-32";
+        results[46][13]="8.147478824234940E-45";
+        results[46][14]="6.551174985538704E-37";
+        results[46][15]="7.037575337351325E-29";
+        results[46][16]="8.084770687172574E-13";
+        results[46][17]="8.329195103649068E-34";
+        results[46][18]="6.345027865946450E-18";
+        results[46][19]="5.368552148823365E-39";
+        results[46][20]="2.147207335344303E-22";
+        results[46][21]="1.000968668472338E-43";
+        results[46][22]="1.233570187216990E-27";
+        results[46][23]="1.097069638227704E-48";
+        results[46][24]="6.534071218380670E-33";
+        results[46][25]="6.541040290498085E-33";
+        results[46][26]="1.752E-8";
+        results[46][27]="7.625406420624627E-38";
+        results[46][28]="2.701977432039512E-13";
+        results[46][29]="1.301669303269579E-42";
+        results[46][30]="6.089505724445841E-19";
+        results[46][31]="1.588214066650539E-47";
+        results[46][32]="1.238028482659409E-23";
+        results[46][33]="6.833865181913444E-53";
+        results[46][34]="3.275274895415460E-28";
+        results[46][35]="8.040063980501181E-37";
+        results[46][36]="0.0001694186755689661";
+        results[46][37]="6.802528064778204E-42";
+        results[46][38]="8.291460146518372E-10";
+        results[46][39]="7.250122931717692E-47";
+        results[46][40]="1.503314756763955E-14";
+        results[46][41]="1.160732317619898E-51";
+        results[46][42]="5.429030267916215E-20";
+        results[46][43]="2.093921244881440E-56";
+        results[46][44]="1.426163074062281E-24";
+        results[46][45]="1.836685690423163E-40";
+        results[46][46]="1";
+        results[46][47]="6.676824315239122E-46";
+        results[46][48]="0.000008280597587170547";
+        results[46][49]="2.827679055193452E-50";
+        results[46][50]="2.790680991674361E-10";
+        results[46][51]="7.038334009951569E-56";
+        results[46][52]="5.000573645109554E-15";
+        results[46][53]="1.466088741095387E-60";
+        results[46][54]="2.039290372008313E-20";
+        results[46][55]="7.425295441755768E-45";
+        results[46][56]="8571.358971027673";
+        results[46][57]="7.447658994100996E-50";
+        results[46][58]="0.06850976887822076";
+        results[46][59]="1.461344937472920E-54";
+        results[46][60]="0.000003538635984001130";
+        results[46][61]="6.755347109771878E-60";
+        results[46][62]="2.529919029483109E-11";
+        results[46][63]="5.745673270905503E-65";
+        results[46][64]="2.643491927709899E-16";
+        results[46][65]="6.233862871316364E-49";
+        results[46][66]="55575562.29466768";
+        results[46][67]="2.012298948972625E-53";
+        results[46][68]="1185.624117596628";
+        results[46][69]="8.937679474572159E-59";
+        results[46][70]="0.008705193652319216";
+        results[46][71]="5.462076419965100E-64";
+        results[46][72]="2.121748364982833E-7";
+        results[46][73]="1.035004099089370E-68";
+        results[46][74]="5.925796515950347E-13";
+        results[47][0]="7.146556246270681E+25";
+        results[47][1]="1.571442741399231E+20";
+        results[47][2]="3525810028628656";
+        results[47][3]="41114790572.36538";
+        results[47][4]="286968.1737232600";
+        results[47][5]="8.953228977234115E+20";
+        results[47][6]="5.564021865277680E+29";
+        results[47][7]="8586090748616571";
+        results[47][8]="8.202416360482460E+23";
+        results[47][9]="80034635283.92306";
+        results[47][10]="2.920914482927399E+19";
+        results[47][11]="969871.6809241588";
+        results[47][12]="130227375058794.5";
+        results[47][13]="12.20262573876507";
+        results[47][14]="981181273.6462696";
+        results[47][15]="1.054030330150941E+17";
+        results[47][16]="1.210870663276248E+33";
+        results[47][17]="1247478548243.150";
+        results[47][18]="9.503062483559163E+27";
+        results[47][19]="8040577.219577623";
+        results[47][20]="3.215911088814389E+23";
+        results[47][21]="149.9168798238013";
+        results[47][22]="1.847540281090668E+18";
+        results[47][23]="0.001643100951037101";
+        results[47][24]="9786196116419.247";
+        results[47][25]="9796633821214.788";
+        results[47][26]="2.624001946556017E+37";
+        results[47][27]="114207084.9942909";
+        results[47][28]="4.046800251839102E+32";
+        results[47][29]="1949.533553397026";
+        results[47][30]="9.120362371295601E+26";
+        results[47][31]="0.02378696805044898";
+        results[47][32]="1.854217550450959E+22";
+        results[47][33]="1.023520293369992E-7";
+        results[47][34]="4.905438185545787E+17";
+        results[47][35]="1204174859.319065";
+        results[47][36]="2.537414009565692E+41";
+        results[47][37]="10188.26876910955";
+        results[47][38]="1.241826915768028E+36";
+        results[47][39]="0.1085863966072925";
+        results[47][40]="2.251541579928655E+31";
+        results[47][41]="0.000001738449692274594";
+        results[47][42]="8.131156387513517E+25";
+        results[47][43]="3.136103551657476E-11";
+        results[47][44]="2.135990115551220E+21";
+        results[47][45]="275083.7229955457";
+        results[47][46]="1.497718006025124E+45";
+        results[47][47]="1";
+        results[47][48]="1.240200010695352E+40";
+        results[47][49]="0.00004235065836223342";
+        results[47][50]="4.179653170302738E+35";
+        results[47][51]="1.054143957912348E-10";
+        results[47][52]="7.489449188735266E+30";
+        results[47][53]="2.195787505969266E-15";
+        results[47][54]="3.054281909670523E+25";
+        results[47][55]="11.12099868317389";
+        results[47][56]="1.283747866701312E+49";
+        results[47][57]="0.0001115449297820002";
+        results[47][58]="1.026083144375309E+44";
+        results[47][59]="2.188682625866851E-9";
+        results[47][60]="5.299878830006924E+39";
+        results[47][61]="1.011760500325512E-14";
+        results[47][62]="3.789105284242457E+34";
+        results[47][63]="8.605398314572440E-20";
+        results[47][64]="3.959205458913181E+29";
+        results[47][65]="0.0009336568669461997";
+        results[47][66]="8.323652034369472E+52";
+        results[47][67]="3.013856369381733E-8";
+        results[47][68]="1.775730589302118E+48";
+        results[47][69]="1.338612348114789E-13";
+        results[47][70]="1.303792527901410E+43";
+        results[47][71]="8.180650204466976E-19";
+        results[47][72]="3.177780730489156E+38";
+        results[47][73]="1.550144275515960E-23";
+        results[47][74]="8.875172141979778E+32";
+        results[48][0]="5.762422338848205E-15";
+        results[48][1]="1.267088153400481E-20";
+        results[48][2]="2.842936621692024E-25";
+        results[48][3]="3.315174183018531E-30";
+        results[48][4]="2.313886238094478E-35";
+        results[48][5]="7.219181503001472E-20";
+        results[48][6]="4.486390757373126E-11";
+        results[48][7]="6.923150035938593E-25";
+        results[48][8]="6.613785107035720E-17";
+        results[48][9]="6.453365150275192E-30";
+        results[48][10]="2.355196305223146E-21";
+        results[48][11]="7.820284410257130E-35";
+        results[48][12]="1.050051394418058E-26";
+        results[48][13]="9.839240149597593E-40";
+        results[48][14]="7.911476094054727E-32";
+        results[48][15]="8.498873738599392E-24";
+        results[48][16]="9.763511150087314E-8";
+        results[48][17]="1.005868841707006E-28";
+        results[48][18]="7.662524110309441E-13";
+        results[48][19]="6.483290719429564E-34";
+        results[48][20]="2.593058426931717E-17";
+        results[48][21]="1.208812115230884E-38";
+        results[48][22]="1.489711550683502E-22";
+        results[48][23]="1.324867712358631E-43";
+        results[48][24]="7.890820861170891E-28";
+        results[48][25]="7.899237007522711E-28";
+        results[48][26]="0.002115789327468880";
+        results[48][27]="9.208763426010420E-33";
+        results[48][28]="3.263022268134115E-8";
+        results[48][29]="1.571950924515769E-37";
+        results[48][30]="7.353944761040615E-14";
+        results[48][31]="1.917994504540616E-42";
+        results[48][32]="1.495095576891135E-18";
+        results[48][33]="8.252864735875365E-48";
+        results[48][34]="3.955360541236747E-23";
+        results[48][35]="9.709521439561277E-32";
+        results[48][36]="20.45971607549835";
+        results[48][37]="8.215020707343183E-37";
+        results[48][38]="0.0001001311808626548";
+        results[48][39]="8.755555206487259E-42";
+        results[48][40]="1.815466505814869E-9";
+        results[48][41]="1.401749457573287E-46";
+        results[48][42]="6.556326654887352E-15";
+        results[48][43]="2.528707889543666E-51";
+        results[48][44]="1.722294869481269E-19";
+        results[48][45]="2.218059350292316E-35";
+        results[48][46]="120764.2310199132";
+        results[48][47]="8.063215540849113E-41";
+        results[48][48]="1";
+        results[48][49]="3.414824866715520E-45";
+        results[48][50]="0.00003370144439814430";
+        results[48][51]="8.499789943731035E-51";
+        results[48][52]="6.038904309100998E-10";
+        results[48][53]="1.770510794253370E-55";
+        results[48][54]="2.462733336018967E-15";
+        results[48][55]="8.967100941193022E-40";
+        results[48][56]="1035113574.931792";
+        results[48][57]="8.994108113211472E-45";
+        results[48][58]="8273.529555930313";
+        results[48][59]="1.764781976287603E-49";
+        results[48][60]="0.4273406534672904";
+        results[48][61]="8.158042989841942E-55";
+        results[48][62]="0.000003055237261381728";
+        results[48][63]="6.938718142525727E-60";
+        results[48][64]="3.192392698572340E-11";
+        results[48][65]="7.528276559381090E-44";
+        results[48][66]="6711540044014.826";
+        results[48][67]="2.430137351548587E-48";
+        results[48][68]="143180984.8402199";
+        results[48][69]="1.079351988849169E-53";
+        results[48][70]="1051.276017301760";
+        results[48][71]="6.596234586290859E-59";
+        results[48][72]="0.02562313097149101";
+        results[48][73]="1.249914741289858E-63";
+        results[48][74]="7.156242594292246E-8";
+        results[49][0]="1.687472290311238E+30";
+        results[49][1]="3.710550915072856E+24";
+        results[49][2]="8.325277964917845E+19";
+        results[49][3]="970818215402995.0";
+        results[49][4]="6776002660.189255";
+        results[49][5]="2.114070789798686E+25";
+        results[49][6]="1.313798198291870E+34";
+        results[49][7]="2.027380702131727E+20";
+        results[49][8]="1.936786033011718E+28";
+        results[49][9]="1889808526690925";
+        results[49][10]="6.896975385705340E+23";
+        results[49][11]="22900982379.74620";
+        results[49][12]="3.074978762902205E+18";
+        results[49][13]="288133.0824752154";
+        results[49][14]="23168028823874.12";
+        results[49][15]="2.488816870650781E+21";
+        results[49][16]="2.859154284968690E+37";
+        results[49][17]="2.945594228012286E+16";
+        results[49][18]="2.243899587646931E+32";
+        results[49][19]="189857195390.0929";
+        results[49][20]="7.593532693891262E+27";
+        results[49][21]="3539894.906509671";
+        results[49][22]="4.362483022786321E+22";
+        results[49][23]="38.79753030008030";
+        results[49][24]="2.310754187742728E+17";
+        results[49][25]="2.313218778660363E+17";
+        results[49][26]="6.195894108923685E+41";
+        results[49][27]="2696701525096.859";
+        results[49][28]="9.555460076266186E+36";
+        results[49][29]="46033134.51994738";
+        results[49][30]="2.153534968284877E+31";
+        results[49][31]="561.6670193647148";
+        results[49][32]="4.378249647482396E+26";
+        results[49][33]="0.002416775400787454";
+        results[49][34]="1.158290892101044E+22";
+        results[49][35]="28433438956710.49";
+        results[49][36]="5.991439348740924E+45";
+        results[49][37]="240569312.5704755";
+        results[49][38]="2.932249376494788E+40";
+        results[49][39]="2563.983673607429";
+        results[49][40]="5.316426395714516E+35";
+        results[49][41]="0.04104894137430629";
+        results[49][42]="1.919959854688953E+30";
+        results[49][43]="7.405088074035996E-7";
+        results[49][44]="5.043581843006266E+25";
+        results[49][45]="6495382448.194808";
+        results[49][46]="3.536469240253245E+49";
+        results[49][47]="23612.38381341809";
+        results[49][48]="2.928407865794388E+44";
+        results[49][49]="1";
+        results[49][50]="9.869157486415798E+39";
+        results[49][51]="0.000002489085172882200";
+        results[49][52]="1.768437487955098E+35";
+        results[49][53]="5.184777736365438E-11";
+        results[49][54]="7.211887672551995E+29";
+        results[49][55]="262593.2892956190";
+        results[49][56]="3.031234734820807E+53";
+        results[49][57]="2.633841694453359";
+        results[49][58]="2.422826902946868E+48";
+        results[49][59]="0.00005168001420772782";
+        results[49][60]="1.251427730987327E+44";
+        results[49][61]="2.389007726094191E-10";
+        results[49][62]="8.946980828098355E+38";
+        results[49][63]="2.031939678710256E-15";
+        results[49][64]="9.348627889203813E+33";
+        results[49][65]="22.04586429236709";
+        results[49][66]="1.965412665648703E+57";
+        results[49][67]="0.0007116433335235624";
+        results[49][68]="4.192923222382870E+52";
+        results[49][69]="3.160782854106722E-9";
+        results[49][70]="3.078564958187471E+47";
+        results[49][71]="1.931646524711914E-14";
+        results[49][72]="7.503497828319405E+42";
+        results[49][73]="3.660260159965578E-19";
+        results[49][74]="2.095639710265825E+37";
+        results[50][0]="1.709844323220016E-10";
+        results[50][1]="3.759744355260485E-16";
+        results[50][2]="8.435652158126978E-21";
+        results[50][3]="9.836890501942623E-26";
+        results[50][4]="6.865836997247178E-31";
+        results[50][5]="2.142098545603874E-15";
+        results[50][6]="0.000001331216165209868";
+        results[50][7]="2.054259145142100E-20";
+        results[50][8]="1.962463397384800E-12";
+        results[50][9]="1.914863076500820E-25";
+        results[50][10]="6.988413545126361E-17";
+        results[50][11]="2.320459716168051E-30";
+        results[50][12]="3.115745966294182E-22";
+        results[50][13]="2.919530698256769E-35";
+        results[50][14]="2.347518403243974E-27";
+        results[50][15]="2.521812904573124E-19";
+        results[50][16]="0.002897060148147514";
+        results[50][17]="2.984646087638879E-24";
+        results[50][18]="2.273648577130825E-8";
+        results[50][19]="1.923742686763465E-29";
+        results[50][20]="7.694205614150171E-13";
+        results[50][21]="3.586825837344361E-34";
+        results[50][22]="4.420319595457841E-18";
+        results[50][23]="3.931189704235886E-39";
+        results[50][24]="2.341389516707296E-23";
+        results[50][25]="2.343886782477983E-23";
+        results[50][26]="62.78037530003851";
+        results[50][27]="2.732453635286172E-28";
+        results[50][28]="0.0009682143677835323";
+        results[50][29]="4.664342886746792E-33";
+        results[50][30]="2.182085929066454E-9";
+        results[50][31]="5.691134427004636E-38";
+        results[50][32]="4.436295249628704E-14";
+        results[50][33]="2.448816329168904E-43";
+        results[50][34]="1.173647186900553E-18";
+        results[50][35]="2.881040149156310E-27";
+        results[50][36]="607087.2166127371";
+        results[50][37]="2.437587128400801E-32";
+        results[50][38]="2.971124313834108";
+        results[50][39]="2.597976247857604E-37";
+        results[50][40]="0.00005386910081262968";
+        results[50][41]="4.159315669124470E-42";
+        results[50][42]="1.945414142323337E-10";
+        results[50][43]="7.503262648537709E-47";
+        results[50][44]="5.110448232230970E-15";
+        results[50][45]="6.581496401425599E-31";
+        results[50][46]="3583354754.568408";
+        results[50][47]="2.392543015543006E-36";
+        results[50][48]="29672.31873465527";
+        results[50][49]="1.013257718682096E-40";
+        results[50][50]="1";
+        results[50][51]="2.522084763880048E-46";
+        results[50][52]="0.00001791882934677280";
+        results[50][53]="5.253516061023365E-51";
+        results[50][54]="7.307500850481565E-11";
+        results[50][55]="2.660746772529066E-35";
+        results[50][56]="30714219921944.59";
+        results[50][57]="2.668760426691597E-40";
+        results[50][58]="245494806.0441551";
+        results[50][59]="5.236517329758060E-45";
+        results[50][60]="12680.18807795731";
+        results[50][61]="2.420680518456101E-50";
+        results[50][62]="0.09065597382971390";
+        results[50][63]="2.058878563349585E-55";
+        results[50][64]="9.472569367822474E-7";
+        results[50][65]="2.233814215925896E-39";
+        results[50][66]="1.991469553864102E+17";
+        results[50][67]="7.210781006414067E-44";
+        results[50][68]="4248511818920.849";
+        results[50][69]="3.202687624001662E-49";
+        results[50][70]="31193797.06347679";
+        results[50][71]="1.957255750929793E-54";
+        results[50][72]="760.2977091658982";
+        results[50][73]="3.708786859469685E-59";
+        results[50][74]="0.002123423112003558";
+        results[51][0]="6.779487936755711E+35";
+        results[51][1]="1.490728784815458E+30";
+        results[51][2]="3.344713975889266E+25";
+        results[51][3]="3.900301307403033E+20";
+        results[51][4]="2722286378148756";
+        results[51][5]="8.493364601705167E+30";
+        results[51][6]="5.278237211829022E+39";
+        results[51][7]="8.145083680620504E+25";
+        results[51][8]="7.781115946181321E+33";
+        results[51][9]="7.592381921196569E+20";
+        results[51][10]="2.770887658182901E+29";
+        results[51][11]="9200561969210697";
+        results[51][12]="1.235385111125618E+24";
+        results[51][13]="115758627151.1858";
+        results[51][14]="9.307848954420085E+18";
+        results[51][15]="9.998922084971854E+26";
+        results[51][16]="1.148676757275435E+43";
+        results[51][17]="1.183404352773304E+22";
+        results[51][18]="9.014957029568579E+37";
+        results[51][19]="7.627589343206385E+16";
+        results[51][20]="3.050732364091198E+33";
+        results[51][21]="1422167045577.915";
+        results[51][22]="1.752645136580379E+28";
+        results[51][23]="15587064.16428300";
+        results[51][24]="9.283548079903686E+22";
+        results[51][25]="9.293449673246033E+22";
+        results[51][26]="2.489225429658254E+47";
+        results[51][27]="1.083410706261310E+18";
+        results[51][28]="3.838944597143528E+42";
+        results[51][29]="18493997321370.88";
+        results[51][30]="8.651913529303709E+36";
+        results[51][31]="225651988.7241708";
+        results[51][32]="1.758979441596474E+32";
+        results[51][33]="970.9492576298560";
+        results[51][34]="4.653480341774795E+27";
+        results[51][35]="1.142324869654275E+19";
+        results[51][36]="2.407084905737968E+51";
+        results[51][37]="96649690895033.44";
+        results[51][38]="1.178043004892208E+46";
+        results[51][39]="1030090774.530830";
+        results[51][40]="2.135895731345520E+41";
+        results[51][41]="16491.57763724665";
+        results[51][42]="7.713516096621809E+35";
+        results[51][43]="0.2975023978573374";
+        results[51][44]="2.026279332645786E+31";
+        results[51][45]="2609546076992446";
+        results[51][46]="1.420790770352885E+55";
+        results[51][47]="9486370362.359466";
+        results[51][48]="1.176499662485828E+50";
+        results[51][49]="401754.0303139023";
+        results[51][50]="3.964973795970168E+45";
+        results[51][51]="1";
+        results[51][52]="7.104768881441538E+40";
+        results[51][53]="0.00002083005351866606";
+        results[51][54]="2.897404938618912E+35";
+        results[51][55]="105497912307.8994";
+        results[51][56]="1.217810771541752E+59";
+        results[51][57]="1058156.515955435";
+        results[51][58]="9.733804730118538E+53";
+        results[51][59]="20.76265399463438";
+        results[51][60]="5.027661345707404E+49";
+        results[51][61]="0.00009597934824093921";
+        results[51][62]="3.594485606829729E+44";
+        results[51][63]="8.163399552765810E-10";
+        results[51][64]="3.755848932392581E+39";
+        results[51][65]="8857014.831211825";
+        results[51][66]="7.896124596543564E+62";
+        results[51][67]="285.9055773891117";
+        results[51][68]="1.684523803389072E+58";
+        results[51][69]="0.001269857250584455";
+        results[51][70]="1.236825879534966E+53";
+        results[51][71]="7.760467764448543E-9";
+        results[51][72]="3.014560493978934E+48";
+        results[51][73]="1.470524271263579E-13";
+        results[51][74]="8.419316996851535E+42";
+        results[52][0]="0.000009542165339768479";
+        results[52][1]="2.098208695724657E-11";
+        results[52][2]="4.707702715884311E-16";
+        results[52][3]="5.489694840870986E-21";
+        results[52][4]="3.831632560574457E-26";
+        results[52][5]="1.195445586399130E-10";
+        results[52][6]="0.07429146957357580";
+        results[52][7]="1.146424861461206E-15";
+        results[52][8]="1.095196209197808E-7";
+        results[52][9]="1.068631794769388E-20";
+        results[52][10]="3.900039120795011E-12";
+        results[52][11]="1.294983992124446E-25";
+        results[52][12]="1.738811116505963E-17";
+        results[52][13]="1.629308835837862E-30";
+        results[52][14]="1.310084692372364E-22";
+        results[52][15]="1.407353603167891E-14";
+        results[52][16]="161.6768647148971";
+        results[52][17]="1.665647922572809E-19";
+        results[52][18]="0.001268859998122764";
+        results[52][19]="1.073587258148610E-24";
+        results[52][20]="4.293922033213574E-8";
+        results[52][21]="2.001707682980056E-29";
+        results[52][22]="2.466857354302527E-13";
+        results[52][23]="2.193887573879874E-34";
+        results[52][24]="1.306664331355432E-18";
+        results[52][25]="1.308057985886294E-18";
+        results[52][26]="3503598.035624204";
+        results[52][27]="1.524906333112822E-23";
+        results[52][28]="54.03334944745757";
+        results[52][29]="2.603039962310287E-28";
+        results[52][30]="0.0001217761432311118";
+        results[52][31]="3.176063746613903E-33";
+        results[52][32]="2.475772922312967E-9";
+        results[52][33]="1.366616245837476E-38";
+        results[52][34]="6.549798338873787E-14";
+        results[52][35]="1.607828331528359E-22";
+        results[52][36]="33879848111.95684";
+        results[52][37]="1.360349541383301E-27";
+        results[52][38]="165810.1796906287";
+        results[52][39]="1.449858245525120E-32";
+        results[52][40]="3.006284605435543";
+        results[52][41]="2.321198326426144E-37";
+        results[52][42]="0.00001085681494407283";
+        results[52][43]="4.187362077807307E-42";
+        results[52][44]="2.851998941075561E-10";
+        results[52][45]="3.672949986886802E-26";
+        results[52][46]="199977056827865.5";
+        results[52][47]="1.335211675518248E-31";
+        results[52][48]="1655929534.258291";
+        results[52][49]="5.654709351113861E-36";
+        results[52][50]="55807.21712605078";
+        results[52][51]="1.407505320281584E-41";
+        results[52][52]="1";
+        results[52][53]="2.931841114927259E-46";
+        results[52][54]="0.000004078112866116254";
+        results[52][55]="1.484888728519684E-30";
+        results[52][56]="1.714075140041236E+18";
+        results[52][57]="1.489360925897899E-35";
+        results[52][58]="13700381944223.89";
+        results[52][59]="2.922354596061357E-40";
+        results[52][60]="707646009.2657238";
+        results[52][61]="1.350914432862808E-45";
+        results[52][62]="5059.257615288420";
+        results[52][63]="1.149002830210218E-50";
+        results[52][64]="0.05286377354516463";
+        results[52][65]="1.246629549674354E-34";
+        results[52][66]="1.111383737924134E+22";
+        results[52][67]="4.024136212733528E-39";
+        results[52][68]="2.370976215411088E+17";
+        results[52][69]="1.787330836195764E-44";
+        results[52][70]="1740839005707.414";
+        results[52][71]="1.092289966633505E-49";
+        results[52][72]="42430099.33586029";
+        results[52][73]="2.069770735406687E-54";
+        results[52][74]="118.5023346620570";
+        results[53][0]="3.254666595398102E+40";
+        results[53][1]="7.156624842464271E+34";
+        results[53][2]="1.605715497990454E+30";
+        results[53][3]="1.872439407756647E+25";
+        results[53][4]="1.306903208726412E+20";
+        results[53][5]="4.077456927364187E+35";
+        results[53][6]="2.533952784662378E+44";
+        results[53][7]="3.910255762579582E+30";
+        results[53][8]="3.735523741793833E+38";
+        results[53][9]="3.644917145504665E+25";
+        results[53][10]="1.330235496370605E+34";
+        results[53][11]="4.416965112915320E+20";
+        results[53][12]="5.930782222996091E+28";
+        results[53][13]="5557288993398558";
+        results[53][14]="4.468470974440470E+23";
+        results[53][15]="4.800238307602860E+31";
+        results[53][16]="5.514516591357251E+47";
+        results[53][17]="5.681235296456829E+26";
+        results[53][18]="4.327860714083221E+42";
+        results[53][19]="3.661819369005083E+21";
+        results[53][20]="1.464582105541592E+38";
+        results[53][21]="6.827476675964822E+16";
+        results[53][22]="8.414021284245927E+32";
+        results[53][23]="748296885090.3456";
+        results[53][24]="4.456804718040974E+27";
+        results[53][25]="4.461558231196124E+27";
+        results[53][26]="1.195016338977540E+52";
+        results[53][27]="5.201190219172758E+22";
+        results[53][28]="1.842983549563809E+47";
+        results[53][29]="8.878516468907865E+17";
+        results[53][30]="4.153572395553678E+41";
+        results[53][31]="10833000910053.42";
+        results[53][32]="8.444430735716701E+36";
+        results[53][33]="46612902.68696511";
+        results[53][34]="2.234022268644081E+32";
+        results[53][35]="5.484022730093443E+23";
+        results[53][36]="1.155582679411242E+56";
+        results[53][37]="4.639915630001839E+18";
+        results[53][38]="5.655496774583657E+50";
+        results[53][39]="49452142482867.52";
+        results[53][40]="1.025391379542793E+46";
+        results[53][41]="791720367.9994558";
+        results[53][42]="3.703070704887838E+40";
+        results[53][43]="14282.36358541959";
+        results[53][44]="9.727672234879347E+35";
+        results[53][45]="1.252779343391509E+20";
+        results[53][46]="6.820869514711989E+59";
+        results[53][47]="455417474269022.8";
+        results[53][48]="5.648087564592924E+54";
+        results[53][49]="19287229864.95862";
+        results[53][50]="1.903487090139787E+50";
+        results[53][51]="48007.55788283925";
+        results[53][52]="3.410826033199997E+45";
+        results[53][53]="1";
+        results[53][54]="1.390973353007717E+40";
+        results[53][55]="5064697131640181";
+        results[53][56]="5.846412110513578E+63";
+        results[53][57]="50799510188.83404";
+        results[53][58]="4.672961940014202E+58";
+        results[53][59]="996764.3134487737";
+        results[53][60]="2.413657430693617E+54";
+        results[53][61]="4.607734116234075";
+        results[53][62]="1.725624758289108E+49";
+        results[53][63]="0.00003919048765501487";
+        results[53][64]="1.803091350210368E+44";
+        results[53][65]="425203652178.5674";
+        results[53][66]="3.790736586186758E+67";
+        results[53][67]="13725628.55553436";
+        results[53][68]="8.086987399622141E+62";
+        results[53][69]="60.96274546037631";
+        results[53][70]="5.937699000276846E+57";
+        results[53][71]="0.0003725611053996715";
+        results[53][72]="1.447216874060142E+53";
+        results[53][73]="7.059627907080629E-9";
+        results[53][74]="4.041908480603224E+47";
+        results[54][0]="2.339848271255880";
+        results[54][1]="0.000005145048125465107";
+        results[54][2]="1.154382644727447E-10";
+        results[54][3]="1.346136073496915E-15";
+        results[54][4]="9.395602050179328E-21";
+        results[54][5]="0.00002931369546761954";
+        results[54][6]="18217.11953851009";
+        results[54][7]="2.811165112634539E-10";
+        results[54][8]="0.02685546587730432";
+        results[54][9]="2.620407599917871E-15";
+        results[54][10]="9.563342773563720E-7";
+        results[54][11]="3.175449122274317E-20";
+        results[54][12]="4.263764083022794E-12";
+        results[54][13]="3.995251944533639E-25";
+        results[54][14]="3.212477769454207E-17";
+        results[54][15]="3.450992283369952E-9";
+        results[54][16]="39645019.65068670";
+        results[54][17]="4.084359548780881E-14";
+        results[54][18]="311.1390095809556";
+        results[54][19]="2.632558963898978E-19";
+        results[54][20]="0.01052918880419032";
+        results[54][21]="4.908416585552623E-24";
+        results[54][22]="6.049016874444212E-8";
+        results[54][23]="5.379663697167850E-29";
+        results[54][24]="3.204090652350726E-13";
+        results[54][25]="3.207508052939222E-13";
+        results[54][26]="859122381024.4411";
+        results[54][27]="3.739245045871056E-18";
+        results[54][28]="13249596.37493202";
+        results[54][29]="6.382952232485079E-23";
+        results[54][30]="29.86090557789883";
+        results[54][31]="7.788072206149096E-28";
+        results[54][32]="0.0006070878868712484";
+        results[54][33]="3.351099615688073E-33";
+        results[54][34]="1.606085597408052E-8";
+        results[54][35]="3.942579286824783E-17";
+        results[54][36]="8307726937489580";
+        results[54][37]="3.335732938354928E-22";
+        results[54][38]="40658555840.44592";
+        results[54][39]="3.555218536425345E-27";
+        results[54][40]="737175.4299430523";
+        results[54][41]="5.691844249118863E-32";
+        results[54][42]="2.662215416909782";
+        results[54][43]="1.026789158436190E-36";
+        results[54][44]="0.00006993428173045223";
+        results[54][45]="9.006494198343990E-21";
+        results[54][46]="4.903666558358682E+19";
+        results[54][47]="3.274092011067419E-26";
+        results[54][48]="406052894714338.1";
+        results[54][49]="1.386599522072340E-30";
+        results[54][50]="13684569053.92081";
+        results[54][51]="3.451364311115807E-36";
+        results[54][52]="245211.4575613350";
+        results[54][53]="7.189210331295627E-41";
+        results[54][54]="1";
+        results[54][55]="3.641117294367092E-25";
+        results[54][56]="4.203108634591608E+23";
+        results[54][57]="3.652083634743231E-30";
+        results[54][58]="3.359490625690135E+18";
+        results[54][59]="7.165948300112717E-35";
+        results[54][60]="173522909369510.1";
+        results[54][61]="3.312596971229334E-40";
+        results[54][62]="1240587934.023157";
+        results[54][63]="2.817486587379466E-45";
+        results[54][64]="12962.80296320216";
+        results[54][65]="3.056878489146789E-29";
+        results[54][66]="2.725240262863416E+27";
+        results[54][67]="9.867643061497388E-34";
+        results[54][68]="5.813905336242105E+22";
+        results[54][69]="4.382739994878830E-39";
+        results[54][70]="4.268736699691402E+17";
+        results[54][71]="2.678420147978238E-44";
+        results[54][72]="10404346502618.53";
+        results[54][73]="5.075314988468698E-49";
+        results[54][74]="29058130.20690411";
+        results[55][0]="6.426182081186150E+24";
+        results[55][1]="1.413041028209840E+19";
+        results[55][2]="317040773861723.4";
+        results[55][3]="3697041222.976872";
+        results[55][4]="25804.17297930660";
+        results[55][5]="8.050741873371843E+19";
+        results[55][6]="5.003167452664180E+28";
+        results[55][7]="772061124475030.9";
+        results[55][8]="7.375611304488999E+22";
+        results[55][9]="7196712953.937829";
+        results[55][10]="2.626485773572434E+18";
+        results[55][11]="87210.84396777946";
+        results[55][12]="11710043204647.52";
+        results[55][13]="1.097259885232042";
+        results[55][14]="88227802.34034201";
+        results[55][15]="9477838818070297";
+        results[55][16]="1.088814680922766E+32";
+        results[55][17]="112173248444.9072";
+        results[55][18]="8.545152062590683E+26";
+        results[55][19]="723008.5578324046";
+        results[55][20]="2.891746668111807E+22";
+        results[55][21]="13.48052311620413";
+        results[55][22]="1.661307885852018E+17";
+        results[55][23]="0.0001477476077326687";
+        results[55][24]="879974577393.4671";
+        results[55][25]="880913135619.4773";
+        results[55][26]="2.359502074688797E+36";
+        results[55][27]="10269499.01244810";
+        results[55][28]="3.638882052887863E+31";
+        results[55][29]="175.3020217821514";
+        results[55][30]="8.201028191015562E+25";
+        results[55][31]="0.002138923735908606";
+        results[55][32]="1.667312085250398E+21";
+        results[55][33]="9.203492622641725E-9";
+        results[55][34]="4.410969127231112E+16";
+        results[55][35]="108279381.5218219";
+        results[55][36]="2.281642217442943E+40";
+        results[55][37]="916.1289430349850";
+        results[55][38]="1.116650537551916E+35";
+        results[55][39]="0.009764086814575751";
+        results[55][40]="2.024585780533582E+30";
+        results[55][41]="1.563213648163519E-7";
+        results[55][42]="7.311534349712662E+24";
+        results[55][43]="2.819983745167070E-12";
+        results[55][44]="1.920681924711475E+20";
+        results[55][45]="24735.52338530067";
+        results[55][46]="1.346747759525569E+44";
+        results[55][47]="0.08991998187294129";
+        results[55][48]="1.115187624805477E+39";
+        results[55][49]="0.000003808170432239159";
+        results[55][50]="3.758343373088038E+34";
+        results[55][51]="9.478860558694889E-12";
+        results[55][52]="6.734511352893900E+29";
+        results[55][53]="1.974451727335874E-16";
+        results[55][54]="2.746409739524259E+24";
+        results[55][55]="1";
+        results[55][56]="1.154345849032090E+48";
+        results[55][57]="0.00001003011806401597";
+        results[55][58]="9.226537774235836E+42";
+        results[55][59]="1.968063020435687E-10";
+        results[55][60]="4.765650083230079E+38";
+        results[55][61]="9.097748584902804E-16";
+        results[55][62]="3.407162784737478E+33";
+        results[55][63]="7.737972604557934E-21";
+        results[55][64]="3.560116830967234E+28";
+        results[55][65]="0.00008395440855134944";
+        results[55][66]="7.484626400471738E+51";
+        results[55][67]="2.710059101024540E-9";
+        results[55][68]="1.596736624012738E+47";
+        results[55][69]="1.203679980773772E-14";
+        results[55][70]="1.172370004749711E+42";
+        results[55][71]="7.356039180945439E-20";
+        results[55][72]="2.857459856817670E+37";
+        results[55][73]="1.393889451548389E-24";
+        results[55][74]="7.980553181260552E+31";
+        results[56][0]="5.566946930657264E-24";
+        results[56][1]="1.224105435467771E-29";
+        results[56][2]="2.746497283526938E-34";
+        results[56][3]="3.202715395976701E-39";
+        results[56][4]="2.235393578184839E-44";
+        results[56][5]="6.974289273983464E-29";
+        results[56][6]="4.334201449989442E-20";
+        results[56][7]="6.688299915682963E-34";
+        results[56][8]="6.389429399060419E-26";
+        results[56][9]="6.234451278160885E-39";
+        results[56][10]="2.275302307167926E-30";
+        results[56][11]="7.555001305796269E-44";
+        results[56][12]="1.014431092247293E-35";
+        results[56][13]="9.505469146461484E-49";
+        results[56][14]="7.643099545454276E-41";
+        results[56][15]="8.210571230465625E-33";
+        results[56][16]="9.432309059158727E-17";
+        results[56][17]="9.717473193927414E-38";
+        results[56][18]="7.402592619669160E-22";
+        results[56][19]="6.263361699083869E-43";
+        results[56][20]="2.505095566061517E-26";
+        results[56][21]="1.167806262525866E-47";
+        results[56][22]="1.439176904603599E-31";
+        results[56][23]="1.279924970982950E-52";
+        results[56][24]="7.623144988404633E-37";
+        results[56][25]="7.631275638562877E-37";
+        results[56][26]="2.044016597510373E-12";
+        results[56][27]="8.896379729748234E-42";
+        results[56][28]="3.152332601134258E-17";
+        results[56][29]="1.518626518466200E-46";
+        results[56][30]="7.104481033905097E-23";
+        results[56][31]="1.852931456982391E-51";
+        results[56][32]="1.444378291521926E-27";
+        results[56][33]="7.972907452613771E-57";
+        results[56][34]="3.821185072852883E-32";
+        results[56][35]="9.380150811181354E-41";
+        results[56][36]="1.976567264789908E-8";
+        results[56][37]="7.936347185751581E-46";
+        results[56][38]="9.673448719794147E-14";
+        results[56][39]="8.458545437455212E-51";
+        results[56][40]="1.753881457824083E-18";
+        results[56][41]="1.354198700046664E-55";
+        results[56][42]="6.333920077629528E-24";
+        results[56][43]="2.442927955717607E-60";
+        results[56][44]="1.663870430445044E-28";
+        results[56][45]="2.142817371937639E-44";
+        results[56][46]="0.0001166676140131492";
+        results[56][47]="7.789691620439270E-50";
+        results[56][48]="9.660775630982277E-10";
+        results[56][49]="3.298985685643760E-54";
+        results[56][50]="3.255820927704967E-14";
+        results[56][51]="8.211456355686501E-60";
+        results[56][52]="5.834049958719679E-19";
+        results[56][53]="1.710450753551403E-64";
+        results[56][54]="2.379191419821972E-24";
+        results[56][55]="8.662915025323579E-49";
+        results[56][56]="1";
+        results[56][57]="8.689006048253338E-54";
+        results[56][58]="0.000007992871271614319";
+        results[56][59]="1.704916271051602E-58";
+        results[56][60]="4.128442171144841E-10";
+        results[56][61]="7.881302291277083E-64";
+        results[56][62]="2.951596168162563E-15";
+        results[56][63]="6.703339914156715E-69";
+        results[56][64]="3.084098958689342E-20";
+        results[56][65]="7.272899072816394E-53";
+        results[56][66]="6483.868250358015";
+        results[56][67]="2.347701170578040E-57";
+        results[56][68]="0.1383239369164440";
+        results[56][69]="1.042737739112631E-62";
+        results[56][70]="0.000001015614172938495";
+        results[56][71]="6.372474234748120E-68";
+        results[56][72]="2.475393192788476E-11";
+        results[56][73]="1.207514587345858E-72";
+        results[56][74]="6.913485406433592E-17";
+        results[57][0]="6.406885781574903E+29";
+        results[57][1]="1.408798001370755E+24";
+        results[57][2]="3.160887756637065E+19";
+        results[57][3]="368593988563342.1";
+        results[57][4]="2572668917.216598";
+        results[57][5]="8.026567406274776E+24";
+        results[57][6]="4.988144128246639E+33";
+        results[57][7]="7.697428081578381E+19";
+        results[57][8]="7.353464094256007E+27";
+        results[57][9]="717510293299212.7";
+        results[57][10]="2.618599060159830E+23";
+        results[57][11]="8694897050.180986";
+        results[57][12]="1.167488072414467E+18";
+        results[57][13]="109396.5074218388";
+        results[57][14]="8796287518974.268";
+        results[57][15]="9.449379117552936E+20";
+        results[57][16]="1.085545228853283E+37";
+        results[57][17]="1.118364188028252E+16";
+        results[57][18]="8.519492999037822E+31";
+        results[57][19]="72083753473.07911";
+        results[57][20]="2.883063439189447E+27";
+        results[57][21]="1344004.430472940";
+        results[57][22]="1.656319372562645E+22";
+        results[57][23]="14.73039567328003";
+        results[57][24]="8.773322225891460E+16";
+        results[57][25]="8.782679625475591E+16";
+        results[57][26]="2.352417049958506E+41";
+        results[57][27]="1023866214425.824";
+        results[57][28]="3.627955353728795E+36";
+        results[57][29]="17477563.14166077";
+        results[57][30]="8.176402449775297E+30";
+        results[57][31]="213.2501055578004";
+        results[57][32]="1.662305542775258E+26";
+        results[57][33]="0.0009175856718636401";
+        results[57][34]="4.397724033833556E+21";
+        results[57][35]="10795424423794.65";
+        results[57][36]="2.274790987384843E+45";
+        results[57][37]="91337802.52514549";
+        results[57][38]="1.113297501011488E+40";
+        results[57][39]="973.4767579262472";
+        results[57][40]="2.018506429946206E+35";
+        results[57][41]="0.01558519688588414";
+        results[57][42]="7.289579547366953E+29";
+        results[57][43]="2.811516003270229E-7";
+        results[57][44]="1.914914572742777E+25";
+        results[57][45]="2466124847.925947";
+        results[57][46]="1.342703795638417E+49";
+        results[57][47]="8964.997350882443";
+        results[57][48]="1.111838981044821E+44";
+        results[57][49]="0.3796735400255500";
+        results[57][50]="3.747057959937145E+39";
+        results[57][51]="9.450397790132930E-7";
+        results[57][52]="6.714289213658032E+34";
+        results[57][53]="1.968522917411524E-11";
+        results[57][54]="2.738162922904441E+29";
+        results[57][55]="99699.72373382105";
+        results[57][56]="1.150879622417825E+53";
+        results[57][57]="1";
+        results[57][58]="9.198832671109769E+47";
+        results[57][59]="0.00001962153394281874";
+        results[57][60]="4.751339967101001E+43";
+        results[57][61]="9.070430205145709E-11";
+        results[57][62]="3.396931883544830E+38";
+        results[57][63]="7.714737309343017E-16";
+        results[57][64]="3.549426645075597E+33";
+        results[57][65]="8.370231338805882";
+        results[57][66]="7.462151843778957E+56";
+        results[57][67]="0.0002701921436744741";
+        results[57][68]="1.591942002897441E+52";
+        results[57][69]="1.200065615470761E-9";
+        results[57][70]="1.168849655873646E+47";
+        results[57][71]="7.333950741154235E-15";
+        results[57][72]="2.848879583052055E+42";
+        results[57][73]="1.389703932348617E-19";
+        results[57][74]="7.956589474147437E+36";
+        results[58][0]="6.964890014465238E-19";
+        results[58][1]="1.531496497153692E-24";
+        results[58][2]="3.436183556816159E-29";
+        results[58][3]="4.006964815448415E-34";
+        results[58][4]="2.796734117467348E-39";
+        results[58][5]="8.725636929437082E-24";
+        results[58][6]="5.422583828394453E-15";
+        results[58][7]="8.367831394252054E-29";
+        results[58][8]="7.993910050511732E-21";
+        results[58][9]="7.800014620905704E-34";
+        results[58][10]="2.846664521232035E-25";
+        results[58][11]="9.452174380221672E-39";
+        results[58][12]="1.269169811166505E-30";
+        results[58][13]="1.189243367426543E-43";
+        results[58][14]="9.562395396755339E-36";
+        results[58][15]="1.027236765294149E-27";
+        results[58][16]="1.180090200208327E-11";
+        results[58][17]="1.215767508784710E-32";
+        results[58][18]="9.261493608634160E-17";
+        results[58][19]="7.836184878051788E-38";
+        results[58][20]="3.134162281529605E-21";
+        results[58][21]="1.461059765435212E-42";
+        results[58][22]="1.800575607560021E-26";
+        results[58][23]="1.601333147361503E-47";
+        results[58][24]="9.537429953960697E-32";
+        results[58][25]="9.547602331172774E-32";
+        results[58][26]="2.557299533609959E-7";
+        results[58][27]="1.113039285562200E-36";
+        results[58][28]="3.943930152271277E-12";
+        results[58][29]="1.899976199866263E-41";
+        results[58][30]="8.888521774566507E-18";
+        results[58][31]="2.318230075295776E-46";
+        results[58][32]="1.807083140011844E-22";
+        results[58][33]="9.975022969440973E-52";
+        results[58][34]="4.780741416946553E-27";
+        results[58][35]="1.173564604311067E-35";
+        results[58][36]="0.002472912671331814";
+        results[58][37]="9.929281876384678E-41";
+        results[58][38]="1.210259541417636E-8";
+        results[58][39]="1.058261186752084E-45";
+        results[58][40]="2.194307149738259E-13";
+        results[58][41]="1.694258113296445E-50";
+        results[58][42]="7.924461513753702E-19";
+        results[58][43]="3.056383460588637E-55";
+        results[58][44]="2.081693016068045E-23";
+        results[58][45]="2.680910650403675E-39";
+        results[58][46]="14.59645852517100";
+        results[58][47]="9.745798919724109E-45";
+        results[58][48]="0.0001208673992447659";
+        results[58][49]="4.127410005162593E-49";
+        results[58][50]="4.073405935195787E-9";
+        results[58][51]="1.027347504625585E-54";
+        results[58][52]="7.299066581290476E-14";
+        results[58][53]="2.139970350361897E-59";
+        results[58][54]="2.976641733579987E-19";
+        results[58][55]="1.083830169527293E-43";
+        results[58][56]="125111.4857249578";
+        results[58][57]="1.087094456170119E-48";
+        results[58][58]="1";
+        results[58][59]="2.133046077079208E-53";
+        results[58][60]="0.00005165155337615015";
+        results[58][61]="9.860414391091898E-59";
+        results[58][62]="3.692785818589105E-10";
+        results[58][63]="8.386648159795576E-64";
+        results[58][64]="3.858562028444187E-15";
+        results[58][65]="9.099232085277269E-48";
+        results[58][66]="811206390.0471738";
+        results[58][67]="2.937243814892411E-52";
+        results[58][68]="17305.91325894164";
+        results[58][69]="1.304584677618646E-57";
+        results[58][70]="0.1270649980996593";
+        results[58][71]="7.972697192533506E-63";
+        results[58][72]="0.000003097001201032130";
+        results[58][73]="1.510739440573996E-67";
+        results[58][74]="8.649564307367203E-12";
+        results[59][0]="3.265231862221327E+34";
+        results[59][1]="7.179856607930284E+28";
+        results[59][2]="1.610927955912394E+24";
+        results[59][3]="1.878517702221967E+19";
+        results[59][4]="131114566512174.5";
+        results[59][5]="4.090693128103987E+29";
+        results[59][6]="2.542178477372429E+38";
+        results[59][7]="3.922949196535957E+24";
+        results[59][8]="3.747649962375796E+32";
+        results[59][9]="3.656749239841227E+19";
+        results[59][10]="1.334553693809554E+28";
+        results[59][11]="443130342180164.7";
+        results[59][12]="5.950034670157650E+22";
+        results[59][13]="5575329010.496484";
+        results[59][14]="4.482976481149991E+17";
+        results[59][15]="4.815820794179703E+25";
+        results[59][16]="5.532417761102616E+41";
+        results[59][17]="5.699677666829715E+20";
+        results[59][18]="4.341909773142817E+36";
+        results[59][19]="3673706331174018";
+        results[59][20]="1.469336417627336E+32";
+        results[59][21]="68496399638.76680";
+        results[59][22]="8.441334797725325E+26";
+        results[59][23]="750725.9991093196";
+        results[59][24]="4.471272353863239E+21";
+        results[59][25]="4.476041297826234E+21";
+        results[59][26]="1.198895589312202E+46";
+        results[59][27]="5.218074271917703E+16";
+        results[59][28]="1.848966224710778E+41";
+        results[59][29]="890733782210.6083";
+        results[59][30]="4.167055681580780E+35";
+        results[59][31]="10868166.89150073";
+        results[59][32]="8.471842964059609E+30";
+        results[59][33]="46.76421703510423";
+        results[59][34]="2.241274329850788E+26";
+        results[59][35]="5.501824910965054E+17";
+        results[59][36]="1.159333920586464E+50";
+        results[59][37]="4654977678672.980";
+        results[59][38]="5.673855592818941E+44";
+        results[59][39]="49612673.54342235";
+        results[59][40]="1.028719994995578E+40";
+        results[59][41]="794.2904429033256";
+        results[59][42]="3.715091576739267E+34";
+        results[59][43]="0.01432872685419792";
+        results[59][44]="9.759250109207765E+29";
+        results[59][45]="125684610342532.4";
+        results[59][46]="6.843011354521704E+53";
+        results[59][47]="456895846.0132791";
+        results[59][48]="5.666422331123308E+48";
+        results[59][49]="19349.83988163200";
+        results[59][50]="1.909666171287554E+44";
+        results[59][51]="0.04816339954701486";
+        results[59][52]="3.421898223260666E+39";
+        results[59][53]="0.000001003246190205216";
+        results[59][54]="1.395488717081967E+34";
+        results[59][55]="5081138101.861297";
+        results[59][56]="5.865390676242383E+57";
+        results[59][57]="50964.41506123880";
+        results[59][58]="4.688131263293223E+52";
+        results[59][59]="1";
+        results[59][60]="2.421492621803881E+48";
+        results[59][61]="0.000004622691697590433";
+        results[59][62]="1.731226464477344E+43";
+        results[59][63]="3.931770743217822E-11";
+        results[59][64]="1.808944527690531E+38";
+        results[59][65]="426583.9441094915";
+        results[59][66]="3.803042038163392E+61";
+        results[59][67]="13.77018455651177";
+        results[59][68]="8.113239298908500E+56";
+        results[59][69]="0.00006116064212757286";
+        results[59][70]="5.956973900613066E+51";
+        results[59][71]="3.737705096108644E-10";
+        results[59][72]="1.451914815301539E+47";
+        results[59][73]="7.082544802045064E-15";
+        results[59][74]="4.055029284323338E+41";
+        results[60][0]="1.348437667255375E-14";
+        results[60][1]="2.965054092372860E-20";
+        results[60][2]="6.652623846164517E-25";
+        results[60][3]="7.757685013397121E-30";
+        results[60][4]="5.414617634246651E-35";
+        results[60][5]="1.689327108110964E-19";
+        results[60][6]="1.049839447984212E-10";
+        results[60][7]="1.620054160484525E-24";
+        results[60][8]="1.547661111428041E-16";
+        results[60][9]="1.510121982992930E-29";
+        results[60][10]="5.511285402205287E-21";
+        results[60][11]="1.829988405457360E-34";
+        results[60][12]="2.457176460742298E-26";
+        results[60][13]="2.302434853732143E-39";
+        results[60][14]="1.851327747515669E-31";
+        results[60][15]="1.988781940038362E-23";
+        results[60][16]="2.284713862551959E-7";
+        results[60][17]="2.353786922788046E-28";
+        results[60][18]="1.793071650950697E-12";
+        results[60][19]="1.517124726334002E-33";
+        results[60][20]="6.067895497169673E-17";
+        results[60][21]="2.828685044174972E-38";
+        results[60][22]="3.486004756618662E-22";
+        results[60][23]="3.100261352644838E-43";
+        results[60][24]="1.846494312475907E-27";
+        results[60][25]="1.848463735764689E-27";
+        results[60][26]="0.004951060261414672";
+        results[60][27]="2.154899926158156E-32";
+        results[60][28]="7.635646741444116E-8";
+        results[60][29]="3.678449292763319E-37";
+        results[60][30]="1.720862431732932E-13";
+        results[60][31]="4.488209789961917E-42";
+        results[60][32]="3.498603666092752E-18";
+        results[60][33]="1.931214516782934E-47";
+        results[60][34]="9.255755353824531E-23";
+        results[60][35]="2.272079981340803E-31";
+        results[60][36]="47.87683060222675";
+        results[60][37]="1.922358811568574E-36";
+        results[60][38]="0.0002343123221491472";
+        results[60][39]="2.048846777260200E-41";
+        results[60][40]="4.248288785737604E-9";
+        results[60][41]="3.280168751088831E-46";
+        results[60][42]="1.534215526112867E-14";
+        results[60][43]="5.917311795698881E-51";
+        results[60][44]="4.030262170254993E-19";
+        results[60][45]="5.190377588220942E-35";
+        results[60][46]="282594.7637793763";
+        results[60][47]="1.886835590161396E-40";
+        results[60][48]="2.340053519098534";
+        results[60][49]="7.990872946462834E-45";
+        results[60][50]="0.00007886318356258115";
+        results[60][51]="1.988996336942614E-50";
+        results[60][52]="1.413135928001109E-9";
+        results[60][53]="4.143090014694539E-55";
+        results[60][54]="5.762927809552455E-15";
+        results[60][55]="2.098349611355051E-39";
+        results[60][56]="2422221163.685803";
+        results[60][57]="2.104669434147318E-44";
+        results[60][58]="19360.50195272046";
+        results[60][59]="4.129684274053472E-49";
+        results[60][60]="1";
+        results[60][61]="1.909025720733676E-54";
+        results[60][62]="0.000007149418705177280";
+        results[60][63]="1.623697180745017E-59";
+        results[60][64]="7.470369768638670E-11";
+        results[60][65]="1.761657005552672E-43";
+        results[60][66]="15705362898567.62";
+        results[60][67]="5.686651461384062E-48";
+        results[60][68]="335051167.4433505";
+        results[60][69]="2.525741419852499E-53";
+        results[60][70]="2460.042143830875";
+        results[60][71]="1.543554195644939E-58";
+        results[60][72]="0.05995949780016016";
+        results[60][73]="2.924867388928466E-63";
+        results[60][74]="1.674599066629639E-7";
+        results[61][0]="7.063486115509977E+39";
+        results[61][1]="1.553176607402299E+34";
+        results[61][2]="3.484826722820572E+29";
+        results[61][3]="4.063688052571492E+24";
+        results[61][4]="2.836325134564299E+19";
+        results[61][5]="8.849158446444201E+34";
+        results[61][6]="5.499346795499110E+43";
+        results[61][7]="8.486287758668364E+29";
+        results[61][8]="8.107073124364424E+37";
+        results[61][9]="7.910432879932915E+24";
+        results[61][10]="2.886962361139478E+33";
+        results[61][11]="9.585980878005454E+19";
+        results[61][12]="1.287136382739755E+28";
+        results[61][13]="1206078487432465";
+        results[61][14]="9.697762200941783E+22";
+        results[61][15]="1.041778493835083E+31";
+        results[61][16]="1.196795746509847E+47";
+        results[61][17]="1.232978108793337E+26";
+        results[61][18]="9.392600798807385E+41";
+        results[61][19]="7.947115169045187E+20";
+        results[61][20]="3.178529985880788E+37";
+        results[61][21]="1.481742762003150E+16";
+        results[61][22]="1.826064844887958E+32";
+        results[61][23]="162400187644.0589";
+        results[61][24]="9.672443343331502E+26";
+        results[61][25]="9.682759722348257E+26";
+        results[61][26]="2.593501076303929E+51";
+        results[61][27]="1.128795648353017E+22";
+        results[61][28]="3.999761060584132E+46";
+        results[61][29]="1.926872567934611E+17";
+        results[61][30]="9.014349115587456E+40";
+        results[61][31]="2351047312362.565";
+        results[61][32]="1.832664499013753E+36";
+        results[61][33]="10116230.99578109";
+        results[61][34]="4.848418359846594E+31";
+        results[61][35]="1.190177773229581E+23";
+        results[61][36]="2.507919620057646E+55";
+        results[61][37]="1.006984238446915E+18";
+        results[61][38]="1.227392169756080E+50";
+        results[61][39]="10732421019831.98";
+        results[61][40]="2.225370113978822E+45";
+        results[61][41]="171824230.3109566";
+        results[61][42]="8.036641462972210E+39";
+        results[61][43]="3099.650115465570";
+        results[61][44]="2.111161796555619E+35";
+        results[61][45]="2.718862051908959E+19";
+        results[61][46]="1.480308833506809E+59";
+        results[61][47]="98837620136215.22";
+        results[61][48]="1.225784175500373E+54";
+        results[61][49]="4185838283.725054";
+        results[61][50]="4.131069723475097E+49";
+        results[61][51]="10418.90800810271";
+        results[61][52]="7.402393339457015E+44";
+        results[61][53]="0.2170264114148377";
+        results[61][54]="3.018779551769291E+39";
+        results[61][55]="1099173043382890";
+        results[61][56]="1.268825839997009E+63";
+        results[61][57]="11024835397.91414";
+        results[61][58]="1.014156160519400E+58";
+        results[61][59]="216324.1819741618";
+        results[61][60]="5.238274105681931E+53";
+        results[61][61]="1";
+        results[61][62]="3.745061487400818E+48";
+        results[61][63]="0.000008505370897365375";
+        results[61][64]="3.913184451892906E+43";
+        results[61][65]="92280422752.79732";
+        results[61][66]="8.226899579190449E+66";
+        results[61][67]="2978823.909820644";
+        results[61][68]="1.755089854497003E+62";
+        results[61][69]="13.23052587726166";
+        results[61][70]="1.288637506091553E+57";
+        results[61][71]="0.00008085559973763583";
+        results[61][72]="3.140842847162717E+52";
+        results[61][73]="1.532125710597750E-9";
+        results[61][74]="8.772008928125169E+46";
+        results[62][0]="1.886080145619249E-9";
+        results[62][1]="4.147265973142270E-15";
+        results[62][2]="9.305125522088941E-20";
+        results[62][3]="1.085079127870824E-24";
+        results[62][4]="7.573507522122931E-30";
+        results[62][5]="2.362887358782933E-14";
+        results[62][6]="0.00001468426303279687";
+        results[62][7]="2.265994239939194E-19";
+        results[62][8]="2.164736988067710E-11";
+        results[62][9]="2.112230441755173E-24";
+        results[62][10]="7.708718190213518E-16";
+        results[62][11]="2.559632441351024E-29";
+        results[62][12]="3.436889853664501E-21";
+        results[62][13]="3.220450429158424E-34";
+        results[62][14]="2.589480101613048E-26";
+        results[62][15]="2.781739358191706E-18";
+        results[62][16]="0.03195663810957770";
+        results[62][17]="3.292277344287504E-23";
+        results[62][18]="2.507996418858833E-7";
+        results[62][19]="2.122025284706531E-28";
+        results[62][20]="8.487257142703900E-12";
+        results[62][21]="3.956524524331703E-33";
+        results[62][22]="4.875927540926171E-17";
+        results[62][23]="4.336382411621481E-38";
+        results[62][24]="2.582719502969886E-22";
+        results[62][25]="2.585474165089977E-22";
+        results[62][26]="692.5122818487806";
+        results[62][27]="3.014091096102228E-27";
+        results[62][28]="0.01068009450322826";
+        results[62][29]="5.145102622258724E-32";
+        results[62][30]="2.406996292561188E-8";
+        results[62][31]="6.277726868495983E-37";
+        results[62][32]="4.893549826028827E-13";
+        results[62][33]="2.701218933204230E-42";
+        results[62][34]="1.294616490585723E-17";
+        results[62][35]="3.177992610357912E-26";
+        results[62][36]="6696604.657880305";
+        results[62][37]="2.688832324474842E-31";
+        results[62][38]="32.77361864111679";
+        results[62][39]="2.865752953840177E-36";
+        results[62][40]="0.0005942145733696068";
+        results[62][41]="4.588021608964494E-41";
+        results[62][42]="2.145930444669381E-9";
+        results[62][43]="8.276633443518753E-46";
+        results[62][44]="5.637188611343273E-14";
+        results[62][45]="7.259859580559060E-30";
+        results[62][46]="39526956726.52857";
+        results[62][47]="2.639145457790906E-35";
+        results[62][48]="327306.8224978871";
+        results[62][49]="1.117695476511428E-39";
+        results[62][50]="11.03071267954583";
+        results[62][51]="2.782039238382100E-45";
+        results[62][52]="0.0001976574580780646";
+        results[62][53]="5.795002622652810E-50";
+        results[62][54]="8.060694228719894E-10";
+        results[62][55]="2.934993316079701E-34";
+        results[62][56]="338799735135353.3";
+        results[62][57]="2.943832947737714E-39";
+        results[62][58]="2707982669.793906";
+        results[62][59]="5.776251810602371E-44";
+        results[62][60]="139871.5114105495";
+        results[62][61]="2.670183128806329E-49";
+        results[62][62]="1";
+        results[62][63]="2.271089787438537E-54";
+        results[62][64]="0.00001044891910335168";
+        results[62][65]="2.464056279536351E-38";
+        results[62][66]="2.196732845873822E+18";
+        results[62][67]="7.954005347687989E-43";
+        results[62][68]="46864113190170.53";
+        results[62][69]="3.532792698269964E-48";
+        results[62][70]="344089812.7912729";
+        results[62][71]="2.158992582889526E-53";
+        results[62][72]="8386.625580725921";
+        results[62][73]="4.091056223648521E-58";
+        results[62][74]="0.02342287024561831";
+        results[63][0]="8.304736149364119E+44";
+        results[63][1]="1.826112730584637E+39";
+        results[63][2]="4.097207241015242E+34";
+        results[63][3]="4.777790529781906E+29";
+        results[63][4]="3.334745972621699E+24";
+        results[63][5]="1.040420053778644E+40";
+        results[63][6]="6.465734254108293E+48";
+        results[63][7]="9.977563425596263E+34";
+        results[63][8]="9.531710283058522E+42";
+        results[63][9]="9.300514904509633E+29";
+        results[63][10]="3.394281561588036E+38";
+        results[63][11]="1.127050306645041E+25";
+        results[63][12]="1.513321874227095E+33";
+        results[63][13]="1.418019862962190E+20";
+        results[63][14]="1.140192746202962E+28";
+        results[63][15]="1.224847812524888E+36";
+        results[63][16]="1.407105887505231E+52";
+        results[63][17]="1.449646492400778E+31";
+        results[63][18]="1.104314075441065E+47";
+        results[63][19]="9.343643287216183E+25";
+        results[63][20]="3.737085688838532E+42";
+        results[63][21]="1.742125981198698E+21";
+        results[63][22]="2.146954985177189E+37";
+        results[63][23]="1.909383959897199E+16";
+        results[63][24]="1.137215938028950E+32";
+        results[63][25]="1.138428863266573E+32";
+        results[63][26]="3.049251005746606E+56";
+        results[63][27]="1.327156289801157E+27";
+        results[63][28]="4.702629795748353E+51";
+        results[63][29]="2.265477415607447E+22";
+        results[63][30]="1.059841978011769E+46";
+        results[63][31]="2.764191404152434E+17";
+        results[63][32]="2.154714381216979E+41";
+        results[63][33]="1189393280769.765";
+        results[63][34]="5.700419674053768E+36";
+        results[63][35]="1.399324953128441E+28";
+        results[63][36]="2.948630518669679E+60";
+        results[63][37]="1.183939243330163E+23";
+        results[63][38]="1.443078949251087E+55";
+        results[63][39]="1.261840447564310E+18";
+        results[63][40]="2.616429243159934E+50";
+        results[63][41]="20201850381878.22";
+        results[63][42]="9.448901829150850E+44";
+        results[63][43]="364434444.1728835";
+        results[63][44]="2.482151362981211E+40";
+        results[63][45]="3.196641374864857E+24";
+        results[63][46]="1.740440071773177E+64";
+        results[63][47]="1.162061259043167E+19";
+        results[63][48]="1.441188385893991E+59";
+        results[63][49]="492140593777240.2";
+        results[63][50]="4.857013025445766E+54";
+        results[63][51]="1224979854.944370";
+        results[63][52]="8.703198753801531E+49";
+        results[63][53]="25516.39593777902";
+        results[63][54]="3.549262681424497E+44";
+        results[63][55]="1.292328173158645E+20";
+        results[63][56]="1.491793662272907E+68";
+        results[63][57]="1296220415423529";
+        results[63][58]="1.192371470635743E+63";
+        results[63][59]="25433832878.60738";
+        results[63][60]="6.158783865974074E+58";
+        results[63][61]="117572.7680858409";
+        results[63][62]="4.403172457253908E+53";
+        results[63][63]="1";
+        results[63][64]="4.600839280395232E+48";
+        results[63][65]="1.084966474317800E+16";
+        results[63][66]="9.672593562896609E+71";
+        results[63][67]="350228572717.9005";
+        results[63][68]="2.063507724325885E+67";
+        results[63][69]="1555549.550621002";
+        results[63][70]="1.515086786504186E+62";
+        results[63][71]="9.506416676394638";
+        results[63][72]="3.692775876635344E+57";
+        results[63][73]="0.0001801362608504635";
+        results[63][74]="1.031349371353387E+52";
+        results[64][0]="0.0001805048088671923";
+        results[64][1]="3.969086115148465E-10";
+        results[64][2]="8.905347462307516E-15";
+        results[64][3]="1.038460645678428E-19";
+        results[64][4]="7.248125329722949E-25";
+        results[64][5]="2.261370133514570E-9";
+        results[64][6]="1.405337995973826";
+        results[64][7]="2.168639854061398E-14";
+        results[64][8]="0.000002071732938743234";
+        results[64][9]="2.021482242194446E-19";
+        results[64][10]="7.377526913516641E-11";
+        results[64][11]="2.449662415828232E-24";
+        results[64][12]="3.289230033910451E-16";
+        results[64][13]="3.082089541802851E-29";
+        results[64][14]="2.478227724801148E-21";
+        results[64][15]="2.662226906608371E-13";
+        results[64][16]="3058.367836279547";
+        results[64][17]="3.150830542109802E-18";
+        results[64][18]="0.02400244842602282";
+        results[64][19]="2.030856267253379E-23";
+        results[64][20]="8.122617333673738E-7";
+        results[64][21]="3.786539531215795E-28";
+        results[64][22]="4.666442043141217E-12";
+        results[64][23]="4.150077504409531E-33";
+        results[64][24]="2.471757583175691E-17";
+        results[64][25]="2.474393896169260E-17";
+        results[64][26]="66275973.14124528";
+        results[64][27]="2.884596068061627E-22";
+        results[64][28]="1022.124336267703";
+        results[64][29]="4.924052498988474E-27";
+        results[64][30]="0.002303584005917990";
+        results[64][31]="6.008015572139217E-32";
+        results[64][32]="4.683307218312307E-8";
+        results[64][33]="2.585165897530746E-37";
+        results[64][34]="1.238995610723459E-12";
+        results[64][35]="3.041455847178024E-21";
+        results[64][36]="640889702718.8438";
+        results[64][37]="2.573311457270591E-26";
+        results[64][38]="3136555.878837656";
+        results[64][39]="2.742631008523106E-31";
+        results[64][40]="56.86852080029998";
+        results[64][41]="4.390905474129667E-36";
+        results[64][42]="0.0002053734384814057";
+        results[64][43]="7.921042704660115E-41";
+        results[64][44]="5.394996894497005E-9";
+        results[64][45]="6.947952710467755E-25";
+        results[64][46]="3782875179294822";
+        results[64][47]="2.525759297863022E-30";
+        results[64][48]="31324467082.23605";
+        results[64][49]="1.069675691290314E-34";
+        results[64][50]="1055679.785673480";
+        results[64][51]="2.662513902983238E-40";
+        results[64][52]="18.91654592432077";
+        results[64][53]="5.546030709333330E-45";
+        results[64][54]="0.00007714380931645150";
+        results[64][55]="2.808896582554887E-29";
+        results[64][56]="3.242438110432659E+19";
+        results[64][57]="2.817356435263650E-34";
+        results[64][58]="259163904228646.2";
+        results[64][59]="5.528085492354452E-39";
+        results[64][60]="13386218232.43738";
+        results[64][61]="2.555463490907705E-44";
+        results[64][62]="95703.67902257296";
+        results[64][63]="2.173516480484612E-49";
+        results[64][64]="1";
+        results[64][65]="2.358192512703023E-33";
+        results[64][66]="2.102354151798515E+23";
+        results[64][67]="7.612275747389602E-38";
+        results[64][68]="4.485068046429608E+18";
+        results[64][69]="3.381012584485181E-43";
+        results[64][70]="32930660998313.20";
+        results[64][71]="2.066235331649750E-48";
+        results[64][72]="802630922.6602931";
+        results[64][73]="3.915291316913575E-53";
+        results[64][74]="2241.654855774030";
+        results[65][0]="7.654371214175933E+28";
+        results[65][1]="1.683105214594628E+23";
+        results[65][2]="3.776344558103940E+18";
+        results[65][3]="44036296446727.19";
+        results[65][4]="307359356.4002524";
+        results[65][5]="9.589421225506852E+23";
+        results[65][6]="5.959386218061519E+32";
+        results[65][7]="9.196195146831527E+18";
+        results[65][8]="8.785257893845823E+26";
+        results[65][9]="85721680113273.25";
+        results[65][10]="3.128466770111285E+22";
+        results[65][11]="1038788140.761402";
+        results[65][12]="1.394809802928366E+17";
+        results[65][13]="13069.71133696832";
+        results[65][14]="1050901362569.648";
+        results[65][15]="1.128926876100059E+20";
+        results[65][16]="1.296911859318036E+36";
+        results[65][17]="1336121001630285";
+        results[65][18]="1.017832441445189E+31";
+        results[65][19]="8611918901.080548";
+        results[65][20]="3.444425037361932E+26";
+        results[65][21]="160569.5680407179";
+        results[65][22]="1.978821499094838E+21";
+        results[65][23]="1.759855262899042";
+        results[65][24]="1.048157675788096E+16";
+        results[65][25]="1.049275613776351E+16";
+        results[65][26]="2.810456431535270E+40";
+        results[65][27]="122322331723.2581";
+        results[65][28]="4.334354938206963E+35";
+        results[65][29]="2088062.137617592";
+        results[65][30]="9.768430666746378E+29";
+        results[65][31]="25.47720569790407";
+        results[65][32]="1.985973237165517E+25";
+        results[65][33]="0.0001096248878581826";
+        results[65][34]="5.254005362366659E+20";
+        results[65][35]="1289740269632.112";
+        results[65][36]="2.717715789811575E+44";
+        results[65][37]="10912219.60636705";
+        results[65][38]="1.330067779429277E+39";
+        results[65][39]="116.3022524136263";
+        results[65][40]="2.411530038110238E+34";
+        results[65][41]="0.001861979227937033";
+        results[65][42]="8.708934379831493E+28";
+        results[65][43]="3.358946592354670E-8";
+        results[65][44]="2.287767799039069E+24";
+        results[65][45]="294630428.7305122";
+        results[65][46]="1.604141798821501E+48";
+        results[65][47]="1071.057296746282";
+        results[65][48]="1.328325270880074E+43";
+        results[65][49]="0.04535998166087906";
+        results[65][50]="4.476648025921479E+38";
+        results[65][51]="1.129048577943026E-7";
+        results[65][52]="8.021629202205431E+33";
+        results[65][53]="2.351814230372703E-12";
+        results[65][54]="3.271310925672783E+28";
+        results[65][55]="11911.22678671919";
+        results[65][56]="1.374967519812914E+52";
+        results[65][57]="0.1194710109580630";
+        results[65][58]="1.098993838851543E+47";
+        results[65][59]="0.000002344204496696504";
+        results[65][60]="5.676473892750065E+42";
+        results[65][61]="1.083653466433309E-11";
+        results[65][62]="4.058348862827780E+37";
+        results[65][63]="9.216874656230971E-17";
+        results[65][64]="4.240535896086675E+32";
+        results[65][65]="1";
+        results[65][66]="8.915108246988459E+55";
+        results[65][67]="0.00003228012855771563";
+        results[65][68]="1.901909204727609E+51";
+        results[65][69]="1.433730522963019E-10";
+        results[65][70]="1.396436500452086E+46";
+        results[65][71]="8.761945093623320E-16";
+        results[65][72]="3.403585238850141E+41";
+        results[65][73]="1.660293337300849E-20";
+        results[65][74]="9.505817882546773E+35";
+        results[66][0]="8.585842148087876E-28";
+        results[66][1]="1.887924597172652E-33";
+        results[66][2]="4.235893108061360E-38";
+        results[66][3]="4.939513377372926E-43";
+        results[66][4]="3.447623381399535E-48";
+        results[66][5]="1.075637104994903E-32";
+        results[66][6]="6.684592102484691E-24";
+        results[66][7]="1.031529275030174E-37";
+        results[66][8]="9.854347979244672E-30";
+        results[66][9]="9.615326896589304E-43";
+        results[66][10]="3.509174183238983E-34";
+        results[66][11]="1.165199694700630E-47";
+        results[66][12]="1.564546121354764E-39";
+        results[66][13]="1.466018243960560E-52";
+        results[66][14]="1.178786991088576E-44";
+        results[66][15]="1.266307536401941E-36";
+        results[66][16]="1.454734842682516E-20";
+        results[66][17]="1.498715399312880E-41";
+        results[66][18]="1.141693867585976E-25";
+        results[66][19]="9.659915126649943E-47";
+        results[66][20]="3.863581845487368E-30";
+        results[66][21]="1.801094990573543E-51";
+        results[66][22]="2.219627002020180E-35";
+        results[66][23]="1.974014464146888E-56";
+        results[66][24]="1.175709421298576E-40";
+        results[66][25]="1.176963402694295E-40";
+        results[66][26]="3.152464730290456E-16";
+        results[66][27]="1.372079040819037E-45";
+        results[66][28]="4.861808536840948E-21";
+        results[66][29]="2.342161283709532E-50";
+        results[66][30]="1.095716439567200E-26";
+        results[66][31]="2.857756181088471E-55";
+        results[66][32]="2.227649044907988E-31";
+        results[66][33]="1.229652908535508E-60";
+        results[66][34]="5.893372482764269E-36";
+        results[66][35]="1.446690532409171E-44";
+        results[66][36]="3.048438352646615E-12";
+        results[66][37]="1.224014258049331E-49";
+        results[66][38]="1.491925552197951E-17";
+        results[66][39]="1.304552330622721E-54";
+        results[66][40]="2.704992436771430E-22";
+        results[66][41]="2.088566034591912E-59";
+        results[66][42]="9.768736552103434E-28";
+        results[66][43]="3.767701411241225E-64";
+        results[66][44]="2.566169401041071E-32";
+        results[66][45]="3.304844097995546E-48";
+        results[66][46]="1.799352015005968E-8";
+        results[66][47]="1.201395728546636E-53";
+        results[66][48]="1.489970995392888E-13";
+        results[66][49]="5.087990005752511E-58";
+        results[66][50]="5.021417465608115E-18";
+        results[66][51]="1.266444048309139E-63";
+        results[66][52]="8.997792264513616E-23";
+        results[66][53]="2.638009730467547E-68";
+        results[66][54]="3.669401240055428E-28";
+        results[66][55]="1.336072031513787E-52";
+        results[66][56]="0.0001542289203585813";
+        results[66][57]="1.340096021811295E-57";
+        results[66][58]="1.232731906786197E-9";
+        results[66][59]="2.629473957860669E-62";
+        results[66][60]="6.367251788185060E-14";
+        results[66][61]="1.215524743403277E-67";
+        results[66][62]="4.552214903502375E-19";
+        results[66][63]="1.033848877756975E-72";
+        results[66][64]="4.756572526776819E-24";
+        results[66][65]="1.121691371877399E-56";
+        results[66][66]="1";
+        results[66][67]="3.620834168628286E-61";
+        results[66][68]="0.00002133355145037165";
+        results[66][69]="1.608203157204890E-66";
+        results[66][70]="1.566370773931775E-10";
+        results[66][71]="9.828198212380789E-72";
+        results[66][72]="3.817772195867480E-15";
+        results[66][73]="1.862336711235894E-76";
+        results[66][74]="1.066259390149060E-20";
+        results[67][0]="2.371233187776874E+33";
+        results[67][1]="5.214059825026099E+27";
+        results[67][2]="1.169866641439169E+23";
+        results[67][3]="1.364192102518798E+18";
+        results[67][4]="9521627395340.313";
+        results[67][5]="2.970688672556348E+28";
+        results[67][6]="1.846146990216091E+37";
+        results[67][7]="2.848871909041218E+23";
+        results[67][8]="2.721568434319621E+31";
+        results[67][9]="2.655555722462696E+18";
+        results[67][10]="9.691618063161386E+26";
+        results[67][11]="32180421428746.45";
+        results[67][12]="4.320954919477782E+21";
+        results[67][13]="404884116.6663938";
+        results[67][14]="3.255567463712780E+16";
+        results[67][15]="3.497281226998773E+24";
+        results[67][16]="4.017678730737416E+40";
+        results[67][17]="4.139143991453913E+19";
+        results[67][18]="3.153123878132466E+35";
+        results[67][19]="266787007544990.6";
+        results[67][20]="1.067041920605562E+31";
+        results[67][21]="4974254292.501521";
+        results[67][22]="6.130153712234388E+25";
+        results[67][23]="54518.22348701272";
+        results[67][24]="3.247067848301876E+20";
+        results[67][25]="3.250531087260965E+20";
+        results[67][26]="8.706459847302905E+44";
+        results[67][27]="3789400389299890";
+        results[67][28]="1.342731622167273E+40";
+        results[67][29]="64685682211.09210";
+        results[67][30]="3.026143668938864E+34";
+        results[67][31]="789253.5388250330";
+        results[67][32]="6.152308946399247E+29";
+        results[67][33]="3.396048676267737";
+        results[67][34]="1.627628388459699E+25";
+        results[67][35]="3.995461998628989E+16";
+        results[67][36]="8.419160366577858E+48";
+        results[67][37]="338047588219.9918";
+        results[67][38]="4.120391828834159E+43";
+        results[67][39]="3602905.490468613";
+        results[67][40]="7.470633314853486E+38";
+        results[67][41]="57.68190249329044";
+        results[67][42]="2.697924317203462E+33";
+        results[67][43]="0.001040561714724588";
+        results[67][44]="7.087232614171990E+28";
+        results[67][45]="9127300351475.501";
+        results[67][46]="4.969440552113530E+52";
+        results[67][47]="33180081.51148695";
+        results[67][48]="4.114993744541877E+47";
+        results[67][49]="1405.198296524041";
+        results[67][50]="1.386812328803897E+43";
+        results[67][51]="0.003497658244837316";
+        results[67][52]="2.485005345583759E+38";
+        results[67][53]="7.285640842996488E-8";
+        results[67][54]="1.013413227219280E+33";
+        results[67][55]="368995642.7968486";
+        results[67][56]="4.259485885734702E+56";
+        results[67][57]="3701.069862359855";
+        results[67][58]="3.404552236793557E+51";
+        results[67][59]="0.07262066792903739";
+        results[67][60]="1.758504115806338E+47";
+        results[67][61]="3.357029587090330E-7";
+        results[67][62]="1.257228221867707E+42";
+        results[67][63]="2.855278175163260E-12";
+        results[67][64]="1.313667598474634E+37";
+        results[67][65]="30978.81094903443";
+        results[67][66]="2.761794529736332E+60";
+        results[67][67]="1";
+        results[67][68]="5.891888569548503E+55";
+        results[67][69]="0.000004441526682273164";
+        results[67][70]="4.325994234983640E+50";
+        results[67][71]="2.714346406011766E-11";
+        results[67][72]="1.054390236632627E+46";
+        results[67][73]="5.143391341618445E-16";
+        results[67][74]="2.944789350993672E+40";
+        results[68][0]="4.024572358737908E-23";
+        results[68][1]="8.849556069295544E-29";
+        results[68][2]="1.985554593624666E-33";
+        results[68][3]="2.315373222720905E-38";
+        results[68][4]="1.616056937083241E-43";
+        results[68][5]="5.041997379091630E-28";
+        results[68][6]="3.133370511719575E-19";
+        results[68][7]="4.835244040026928E-33";
+        results[68][8]="4.619178387700187E-25";
+        results[68][9]="4.507138400728770E-38";
+        results[68][10]="1.644908580459467E-29";
+        results[68][11]="5.461817725994849E-43";
+        results[68][12]="7.333734962012186E-35";
+        results[68][13]="6.871890258736175E-48";
+        results[68][14]="5.525507526633783E-40";
+        results[68][15]="5.935755888314043E-32";
+        results[68][16]="6.818999856009313E-16";
+        results[68][17]="7.025156607418828E-37";
+        results[68][18]="5.351635287926178E-21";
+        results[68][19]="4.528038919877851E-42";
+        results[68][20]="1.811035473617807E-25";
+        results[68][21]="8.442546449724692E-47";
+        results[68][22]="1.040439519497590E-30";
+        results[68][23]="9.253098194827277E-52";
+        results[68][24]="5.511081565737588E-36";
+        results[68][25]="5.516959543432190E-36";
+        results[68][26]="1.477702733941909E-11";
+        results[68][27]="6.431554746104564E-41";
+        results[68][28]="2.278949451126784E-16";
+        results[68][29]="1.097876876786368E-45";
+        results[68][30]="5.136118297584773E-22";
+        results[68][31]="1.339559513912385E-50";
+        results[68][32]="1.044199813655115E-26";
+        results[68][33]="5.763939076885797E-56";
+        results[68][34]="2.762490106944477E-31";
+        results[68][35]="6.781292537131541E-40";
+        results[68][36]="1.428940867974192E-7";
+        results[68][37]="5.737508172967645E-45";
+        results[68][38]="6.993329524475215E-13";
+        results[68][39]="6.115026528318585E-50";
+        results[68][40]="1.267952240893443E-17";
+        results[68][41]="9.790053191333628E-55";
+        results[68][42]="4.579048441525779E-23";
+        results[68][43]="1.766091979577825E-59";
+        results[68][44]="1.202879608212802E-27";
+        results[68][45]="1.549129832266147E-43";
+        results[68][46]="0.0008434376335284867";
+        results[68][47]="5.631484899930744E-49";
+        results[68][48]="6.984167633124823E-9";
+        results[68][49]="2.384970930690432E-53";
+        results[68][50]="2.353765371550753E-13";
+        results[68][51]="5.936395781336616E-59";
+        results[68][52]="4.217672001516121E-18";
+        results[68][53]="1.236554418332251E-63";
+        results[68][54]="1.720014245444119E-23";
+        results[68][55]="6.262773615644344E-48";
+        results[68][56]="7.229406726646745";
+        results[68][57]="6.281635877311693E-53";
+        results[68][58]="0.00005778371733623009";
+        results[68][59]="1.232553315830994E-57";
+        results[68][60]="2.984618760264661E-9";
+        results[68][61]="5.697713979929495E-63";
+        results[68][62]="2.133828919245919E-14";
+        results[68][63]="4.846117066640417E-68";
+        results[68][64]="2.229620575759295E-19";
+        results[68][65]="5.257874547924172E-52";
+        results[68][66]="46874.52074382950";
+        results[68][67]="1.697248663473332E-56";
+        results[68][68]="1";
+        results[68][69]="7.538375225269271E-62";
+        results[68][70]="0.000007342287933519324";
+        results[68][71]="4.606920809807113E-67";
+        results[68][72]="1.789562419904057E-10";
+        results[68][73]="8.729614080282214E-72";
+        results[68][74]="4.998039790184512E-16";
+        results[69][0]="5.338779562533849E+38";
+        results[69][1]="1.173934144274364E+33";
+        results[69][2]="2.633929108448886E+28";
+        results[69][3]="3.071448625904928E+23";
+        results[69][4]="2.143773543755267E+18";
+        results[69][5]="6.688440450921611E+33";
+        results[69][6]="4.156559494698874E+42";
+        results[69][7]="6.414172677182188E+28";
+        results[69][8]="6.127551693389194E+36";
+        results[69][9]="5.978925519149620E+23";
+        results[69][10]="2.182046570122424E+32";
+        results[69][11]="7.245351369200056E+18";
+        results[69][12]="9.728535318099962E+26";
+        results[69][13]="91158771663435.09";
+        results[69][14]="7.329838806791966E+21";
+        results[69][15]="7.874052048267494E+29";
+        results[69][16]="9.045715624703119E+45";
+        results[69][17]="9.319191997593739E+24";
+        results[69][18]="7.099189318657215E+40";
+        results[69][19]="6.006651015061551E+19";
+        results[69][20]="2.402421502642987E+36";
+        results[69][21]="1119942454101324";
+        results[69][22]="1.380190675584772E+31";
+        results[69][23]="12274658554.81710";
+        results[69][24]="7.310702108942491E+25";
+        results[69][25]="7.318499515570511E+25";
+        results[69][26]="1.960240356553922E+50";
+        results[69][27]="8.531751941115174E+20";
+        results[69][28]="3.023130824647137E+45";
+        results[69][29]="1.456383960705739E+16";
+        results[69][30]="6.813296160116931E+39";
+        results[69][31]="177698704811.3589";
+        results[69][32]="1.385178878009241E+35";
+        results[69][33]="764612.9178559042";
+        results[69][34]="3.664569651142300E+30";
+        results[69][35]="8.995695139186061E+21";
+        results[69][36]="1.895555508014859E+54";
+        results[69][37]="7.611067373954845E+16";
+        results[69][38]="9.276971914362904E+48";
+        results[69][39]="811186276297.3776";
+        results[69][40]="1.681996720782961E+44";
+        results[69][41]="12986953.95065576";
+        results[69][42]="6.074317481804861E+38";
+        results[69][43]="234.2801899350586";
+        results[69][44]="1.595674893152901E+34";
+        results[69][45]="2.054991673899878E+18";
+        results[69][46]="1.118858651001097E+58";
+        results[69][47]="7470422646319.768";
+        results[69][48]="9.264818245864578E+52";
+        results[69][49]="316377317.3157802";
+        results[69][50]="3.122377569719179E+48";
+        results[69][51]="787.4900895669555";
+        results[69][52]="5.594935082798914E+43";
+        results[69][53]="0.01640346071109881";
+        results[69][54]="2.281677674624746E+38";
+        results[69][55]="83078560412474.54";
+        results[69][56]="9.590139135570173E+61";
+        results[69][57]="833287769.5256027";
+        results[69][58]="7.665274758748302E+56";
+        results[69][59]="16350.38425388234";
+        results[69][60]="3.959233483443444E+52";
+        results[69][61]="0.07558278554283523";
+        results[69][62]="2.830621792469476E+47";
+        results[69][63]="6.428596244978392E-7";
+        results[69][64]="2.957693812169788E+42";
+        results[69][65]="6974811402.726853";
+        results[69][66]="6.218119865763931E+65";
+        results[69][67]="225147.8087458437";
+        results[69][68]="1.326545800808529E+61";
+        results[69][69]="1";
+        results[69][70]="9.739881226537191E+55";
+        results[69][71]="0.000006111291454907054";
+        results[69][72]="2.373936513408476E+51";
+        results[69][73]="1.158023290087738E-10";
+        results[69][74]="6.630128695943206E+45";
+        results[70][0]="5.481360027253576E-18";
+        results[70][1]="1.205285893092693E-23";
+        results[70][2]="2.704272308036475E-28";
+        results[70][3]="3.153476469031765E-33";
+        results[70][4]="2.201026371773776E-38";
+        results[70][5]="6.867065722216763E-23";
+        results[70][6]="4.267566922042078E-14";
+        results[70][7]="6.585473198283149E-28";
+        results[70][8]="6.291197552485674E-20";
+        results[70][9]="6.138602083626537E-33";
+        results[70][10]="2.240321539216762E-24";
+        results[70][11]="7.438849818270307E-38";
+        results[70][12]="9.988351081318820E-30";
+        results[70][13]="9.359330934659115E-43";
+        results[70][14]="7.525593625126715E-35";
+        results[70][15]="8.084340933043336E-27";
+        results[70][16]="9.287295619229160E-11";
+        results[70][17]="9.568075606715566E-32";
+        results[70][18]="7.288784281388184E-16";
+        results[70][19]="6.167068032304013E-37";
+        results[70][20]="2.466581929251223E-20";
+        results[70][21]="1.149852270323317E-41";
+        results[70][22]="1.417050827913914E-25";
+        results[70][23]="1.260247252438118E-46";
+        results[70][24]="7.505945851807534E-31";
+        results[70][25]="7.513951500384414E-31";
+        results[70][26]="0.000002012591643533670";
+        results[70][27]="8.759605730991504E-36";
+        results[70][28]="3.103868265262150E-11";
+        results[70][29]="1.495278973975256E-40";
+        results[70][30]="6.995255898556019E-17";
+        results[70][31]="1.824444268654967E-45";
+        results[70][32]="1.422172248091892E-21";
+        results[70][33]="7.850331026344006E-51";
+        results[70][34]="3.762437719628292E-26";
+        results[70][35]="9.235939258352015E-35";
+        results[70][36]="0.01946179284866684";
+        results[70][37]="7.814332841367511E-40";
+        results[70][38]="9.524727970077244E-8";
+        results[70][39]="8.328502755118070E-45";
+        results[70][40]="1.726917075949764E-12";
+        results[70][41]="1.333379088368309E-49";
+        results[70][42]="6.236541637956356E-18";
+        results[70][43]="2.405370091133565E-54";
+        results[70][44]="1.638289888797966E-22";
+        results[70][45]="2.109873443118451E-38";
+        results[70][46]="114.8739522564880";
+        results[70][47]="7.669931976137371E-44";
+        results[70][48]="0.0009512249718838192";
+        results[70][49]="3.248266687829637E-48";
+        results[70][50]="3.205765550006891E-8";
+        results[70][51]="8.085212450243923E-54";
+        results[70][52]="5.744356581633671E-13";
+        results[70][53]="1.684154080483660E-58";
+        results[70][54]="2.342613448311986E-18";
+        results[70][55]="8.529730340665701E-43";
+        results[70][56]="984625.8812110530";
+        results[70][57]="8.555420237109612E-48";
+        results[70][58]="7.869987919219759";
+        results[70][59]="1.678704685775246E-52";
+        results[70][60]="0.0004064971010792362";
+        results[70][61]="7.760134213639389E-58";
+        results[70][62]="2.906217978056231E-9";
+        results[70][63]="6.600281970033780E-63";
+        results[70][64]="3.036683654941584E-14";
+        results[70][65]="7.161084658530892E-47";
+        results[70][66]="6384184489.665129";
+        results[70][67]="2.311607333900624E-51";
+        results[70][68]="136197.3282789357";
+        results[70][69]="1.026706565245795E-56";
+        results[70][70]="1";
+        results[70][71]="6.274503058883598E-62";
+        results[70][72]="0.00002437336203793195";
+        results[70][73]="1.188950114640616E-66";
+        results[70][74]="6.807196660549431E-11";
+        results[71][0]="8.735926934473208E+43";
+        results[71][1]="1.920926457094031E+38";
+        results[71][2]="4.309938624075892E+33";
+        results[71][3]="5.025858525269176E+28";
+        results[71][4]="3.507889550962140E+23";
+        results[71][5]="1.094439775990578E+39";
+        results[71][6]="6.801442093489699E+47";
+        results[71][7]="1.049560919244317E+34";
+        results[71][8]="1.002660687778045E+42";
+        results[71][9]="9.783407587849290E+28";
+        results[71][10]="3.570516291397545E+37";
+        results[71][11]="1.185567964261042E+24";
+        results[71][12]="1.591895164857249E+32";
+        results[71][13]="1.491644971215360E+19";
+        results[71][14]="1.199392773340319E+27";
+        results[71][15]="1.288443221267910E+35";
+        results[71][16]="1.480164330477132E+51";
+        results[71][17]="1.524913689087910E+30";
+        results[71][18]="1.161651243610208E+46";
+        results[71][19]="9.828775242323811E+24";
+        results[71][20]="3.931119175659616E+41";
+        results[71][21]="1.832579025832696E+20";
+        results[71][22]="2.258427184775404E+36";
+        results[71][23]="2008521217714331";
+        results[71][24]="1.196261406101385E+31";
+        results[71][25]="1.197537307714907E+31";
+        results[71][26]="3.207571379990312E+55";
+        results[71][27]="1.396063664131845E+26";
+        results[71][28]="4.946795365519211E+50";
+        results[71][29]="2.383103426586433E+21";
+        results[71][30]="1.114870107307058E+45";
+        results[71][31]="2.907711178930534E+16";
+        results[71][32]="2.266589456958420E+40";
+        results[71][33]="125114785229.5539";
+        results[71][34]="5.996391561721113E+35";
+        results[71][35]="1.471979401663617E+27";
+        results[71][36]="3.101726569582645E+59";
+        results[71][37]="1.245410635397457E+22";
+        results[71][38]="1.518005152072067E+54";
+        results[71][39]="1.327356553492530E+17";
+        results[71][40]="2.752277048466415E+49";
+        results[71][41]="2125075206522.494";
+        results[71][42]="9.939498920359126E+43";
+        results[71][43]="38335627.03787325";
+        results[71][44]="2.611027317101128E+39";
+        results[71][45]="3.362614414748335E+23";
+        results[71][46]="1.830805582186251E+63";
+        results[71][47]="1.222396722761668E+18";
+        results[71][48]="1.516016428642984E+58";
+        results[71][49]="51769305988793.17";
+        results[71][50]="5.109194337658483E+53";
+        results[71][51]="128858211.9471067";
+        results[71][52]="9.155078143600022E+48";
+        results[71][53]="2684.123451177847";
+        results[71][54]="3.733544196771496E+43";
+        results[71][55]="1.359427234414859E+19";
+        results[71][56]="1.569249185107967E+67";
+        results[71][57]="136352156606197.4";
+        results[71][58]="1.254280672965365E+62";
+        results[71][59]="2675438469.025040";
+        results[71][60]="6.478554512834406E+57";
+        results[71][61]="12367.72719817611";
+        results[71][62]="4.631789881656898E+52";
+        results[71][63]="0.1051921069779213";
+        results[71][64]="4.839719777715578E+47";
+        results[71][65]="1141299094338961";
+        results[71][66]="1.017480496822173E+71";
+        results[71][67]="36841281488.06609";
+        results[71][68]="2.170647252870554E+66";
+        results[71][69]="163631.5347383819";
+        results[71][70]="1.593751713267834E+61";
+        results[71][71]="1";
+        results[71][72]="3.884508750605123E+56";
+        results[71][73]="0.00001894891282198470";
+        results[71][74]="1.084898134030173E+51";
+        results[72][0]="2.248914211639332E-13";
+        results[72][1]="4.945094941013564E-19";
+        results[72][2]="1.109519607441867E-23";
+        results[72][3]="1.293820878762663E-28";
+        results[72][4]="9.030458614401850E-34";
+        results[72][5]="2.817447060249479E-18";
+        results[72][6]="1.750914344685201E-9";
+        results[72][7]="2.701914158594232E-23";
+        results[72][8]="2.581177575212958E-15";
+        results[72][9]="2.518570098812429E-28";
+        results[72][10]="9.191680391610227E-20";
+        results[72][11]="3.052040915280100E-33";
+        results[72][12]="4.098060442286985E-25";
+        results[72][13]="3.839983552574039E-38";
+        results[72][14]="3.087630509658344E-30";
+        results[72][15]="3.316875579356586E-22";
+        results[72][16]="0.000003810428616608354";
+        results[72][17]="3.925628147575576E-27";
+        results[72][18]="2.990471429442005E-11";
+        results[72][19]="2.530249221550267E-32";
+        results[72][20]="1.011999052659421E-15";
+        results[72][21]="4.717659666868350E-37";
+        results[72][22]="5.813932545327873E-21";
+        results[72][23]="5.170592593983595E-42";
+        results[72][24]="3.079569343009031E-26";
+        results[72][25]="3.082853932375250E-26";
+        results[72][26]="0.08257341110354408";
+        results[72][27]="3.593925908686312E-31";
+        results[72][28]="0.000001273467427444617";
+        results[72][29]="6.134890097017279E-36";
+        results[72][30]="2.870041436084768E-12";
+        results[72][31]="7.485402571116811E-41";
+        results[72][32]="5.834944911902525E-17";
+        results[72][33]="3.220865063312414E-46";
+        results[72][34]="1.543667924750332E-21";
+        results[72][35]="3.789357924433339E-30";
+        results[72][36]="798.4861841537783";
+        results[72][37]="3.206095584682231E-35";
+        results[72][38]="0.003907843306661606";
+        results[72][39]="3.417051263652724E-40";
+        results[72][40]="7.085264122619546E-8";
+        results[72][41]="5.470640801598023E-45";
+        results[72][42]="2.558753129030992E-13";
+        results[72][43]="9.868848160504565E-50";
+        results[72][44]="6.721640971189435E-18";
+        results[72][45]="8.656472750188841E-34";
+        results[72][46]="4713094.241069868";
+        results[72][47]="3.146850222878877E-39";
+        results[72][48]="39.02723680071055";
+        results[72][49]="1.332711787062614E-43";
+        results[72][50]="0.001315274251052358";
+        results[72][51]="3.317233148902893E-49";
+        results[72][52]="2.356817484881160E-8";
+        results[72][53]="6.909814402554038E-54";
+        results[72][54]="9.611367708181607E-14";
+        results[72][55]="3.499611718478145E-38";
+        results[72][56]="40397622604.49307";
+        results[72][57]="3.510151871454961E-43";
+        results[72][58]="322892.9971569699";
+        results[72][59]="6.887456409020225E-48";
+        results[72][60]="16.67792487743833";
+        results[72][61]="3.183858755949381E-53";
+        results[72][62]="0.0001192374680822991";
+        results[72][63]="2.707989960417380E-58";
+        results[72][64]="1.245902658080421E-9";
+        results[72][65]="2.938078319842043E-42";
+        results[72][66]="261932862595217.9";
+        results[72][67]="9.484154587713828E-47";
+        results[72][68]="5587958200.718210";
+        results[72][69]="4.212412566013441E-52";
+        results[72][70]="41028.39807014366";
+        results[72][71]="2.574328091922103E-57";
+        results[72][72]="1";
+        results[72][73]="4.878071858901815E-62";
+        results[72][74]="0.000002792883743307747";
+        results[73][0]="4.610252322411714E+48";
+        results[73][1]="1.013739666829516E+43";
+        results[73][2]="2.274504434405050E+38";
+        results[73][3]="2.652320253137757E+33";
+        results[73][4]="1.851235257619769E+28";
+        results[73][5]="5.775739148057081E+43";
+        results[73][6]="3.589357425085942E+52";
+        results[73][7]="5.538897820177879E+38";
+        results[73][8]="5.291388995229049E+46";
+        results[73][9]="5.163044275816442E+33";
+        results[73][10]="1.884285565584005E+42";
+        results[73][11]="6.256654275624378E+28";
+        results[73][12]="8.400984161003253E+36";
+        results[73][13]="7.871929040091104E+23";
+        results[73][14]="6.329612598928488E+31";
+        results[73][15]="6.799562768440446E+39";
+        results[73][16]="7.811341708004652E+55";
+        results[73][17]="8.047499629206652E+34";
+        results[73][18]="6.130437426797644E+50";
+        results[73][19]="5.186986364157197E+29";
+        results[73][20]="2.074588242919507E+46";
+        results[73][21]="9.671156562114322E+24";
+        results[73][22]="1.191850533058106E+41";
+        results[73][23]="1.059966466985920E+20";
+        results[73][24]="6.313087285479891E+35";
+        results[73][25]="6.319820661824533E+35";
+        results[73][26]="1.692746919110240E+60";
+        results[73][27]="7.367513256550102E+30";
+        results[73][28]="2.610595875336918E+55";
+        results[73][29]="1.257646519868694E+26";
+        results[73][30]="5.883557108424581E+49";
+        results[73][31]="1.534500267243291E+21";
+        results[73][32]="1.196158047826734E+45";
+        results[73][33]="6602742141723014";
+        results[73][34]="3.164504274231525E+40";
+        results[73][35]="7.768146993403301E+31";
+        results[73][36]="1.636888933271145E+64";
+        results[73][37]="6.572464853775255E+26";
+        results[73][38]="8.011040877822095E+58";
+        results[73][39]="7.004921949677867E+21";
+        results[73][40]="1.452472273381932E+54";
+        results[73][41]="1.121476058540394E+17";
+        results[73][42]="5.245419098043044E+48";
+        results[73][43]="2023104301445.511";
+        results[73][44]="1.377929880004403E+44";
+        results[73][45]="1.774568518172187E+28";
+        results[73][46]="9.661797483505934E+67";
+        results[73][47]="6.451012436678859E+22";
+        results[73][48]="8.000545692964971E+62";
+        results[73][49]="2.732046237963053E+18";
+        results[73][50]="2.696299458262718E+58";
+        results[73][51]="6800295782542.430";
+        results[73][52]="4.831452986040559E+53";
+        results[73][53]="141650525.0931179";
+        results[73][54]="1.970321058440780E+48";
+        results[73][55]="7.174170081344397E+23";
+        results[73][56]="8.281473453650119E+71";
+        results[73][57]="7.195777292721534E+18";
+        results[73][58]="6.619275125431665E+66";
+        results[73][59]="141192188394099.9";
+        results[73][60]="3.418958424526566E+62";
+        results[73][61]="652687957.0540302";
+        results[73][62]="2.444356531253368E+57";
+        results[73][63]="5551.353154988210";
+        results[73][64]="2.554088365481576E+52";
+        results[73][65]="6.023032060260553E+19";
+        results[73][66]="5.369598279230475E+75";
+        results[73][67]="1944242492124535";
+        results[73][68]="1.145526011577904E+71";
+        results[73][69]="8635404905.580393";
+        results[73][70]="8.410781812340964E+65";
+        results[73][71]="52773.47620913591";
+        results[73][72]="2.049990301342397E+61";
+        results[73][73]="1";
+        results[73][74]="5.725384586557730E+55";
+        results[74][0]="8.052301557585906E-8";
+        results[74][1]="1.770605365462456E-13";
+        results[74][2]="3.972666639277327E-18";
+        results[74][3]="4.632562604379404E-23";
+        results[74][4]="3.233381495395381E-28";
+        results[74][5]="1.008794965777072E-12";
+        results[74][6]="0.0006269198812448631";
+        results[74][7]="9.674280804091849E-18";
+        results[74][8]="9.241980019390084E-10";
+        results[74][9]="9.017812162240471E-23";
+        results[74][10]="3.291107413129942E-14";
+        results[74][11]="1.092791965506384E-27";
+        results[74][12]="1.467322244295588E-19";
+        results[74][13]="1.374917076937174E-32";
+        results[74][14]="1.105534921407618E-24";
+        results[74][15]="1.187616773274011E-16";
+        results[74][16]="1.364334847713883";
+        results[74][17]="1.405582368754908E-21";
+        results[74][18]="0.00001070746835276518";
+        results[74][19]="9.059629594726956E-27";
+        results[74][20]="3.623491507959662E-10";
+        results[74][21]="1.689171516062104E-31";
+        results[74][22]="2.081695150848690E-15";
+        results[74][23]="1.851345444067719E-36";
+        results[74][24]="1.102648597668354E-20";
+        results[74][25]="1.103824654270814E-20";
+        results[74][26]="29565.64565260007";
+        results[74][27]="1.286815434870144E-25";
+        results[74][28]="0.4559686490696489";
+        results[74][29]="2.196614918797670E-30";
+        results[74][30]="0.000001027626532239985";
+        results[74][31]="2.680169766841597E-35";
+        results[74][32]="2.089218688706290E-11";
+        results[74][33]="1.153239933824738E-40";
+        results[74][34]="5.527147087483460E-16";
+        results[74][35]="1.356790426208511E-24";
+        results[74][36]="285900258.4934282";
+        results[74][37]="1.147951679823628E-29";
+        results[74][38]="1399.214455677041";
+        results[74][39]="1.223484963110475E-34";
+        results[74][40]="0.02536899052671676";
+        results[74][41]="1.958778561659312E-39";
+        results[74][42]="9.161688649454979E-8";
+        results[74][43]="3.533569266587664E-44";
+        results[74][44]="2.406702744894305E-12";
+        results[74][45]="3.099474788713032E-28";
+        results[74][46]="1687536852317.355";
+        results[74][47]="1.126738708841461E-33";
+        results[74][48]="13973813.58756047";
+        results[74][49]="4.771812612164872E-38";
+        results[74][50]="470.9377016512027";
+        results[74][51]="1.187744802071186E-43";
+        results[74][52]="0.008438652308849302";
+        results[74][53]="2.474078779366023E-48";
+        results[74][54]="3.441377655339997E-8";
+        results[74][55]="1.253045969730694E-32";
+        results[74][56]="1.446448413805017E+16";
+        results[74][57]="1.256819901603824E-37";
+        results[74][58]="115612759725.7422";
+        results[74][59]="2.466073435932954E-42";
+        results[74][60]="5971578.629938194";
+        results[74][61]="1.139989719793558E-47";
+        results[74][62]="42.69331595631704";
+        results[74][63]="9.696035386027837E-53";
+        results[74][64]="0.0004460990046813902";
+        results[74][65]="1.051987332763925E-36";
+        results[74][66]="9.378580946051059E+19";
+        results[74][67]="3.395828634270787E-41";
+        results[74][68]="2000784391440555";
+        results[74][69]="1.508266348754094E-46";
+        results[74][70]="14690335094.84779";
+        results[74][71]="9.217455248864755E-52";
+        results[74][72]="358052.8557252626";
+        results[74][73]="1.746607559512835E-56";
+        results[74][74]="1";
+    }
+
+    public static int mcDivideTests() {
+        int failures = 0;
+        for(int i=0; i<value.length; i++) {
+            for(int j=0; j<value.length; j++) {
+                BigDecimal v1 = new BigDecimal(value[i]);
+                BigDecimal v2 = new BigDecimal(value[j]);
+                BigDecimal res1  = v1.divide(v2, MathContext.DECIMAL64);
+                if(!res1.toString().equals(results[i][j])) {
+                    failures++;
+                    System.err.println("Unexpected result from " + v1 + " / " + v2 +
+                                       "; expected " + results[i][j] + " got " + res1);
+
+                }
+            }
+        }
+        for (int mpc = 1; mpc < 23; mpc++) {
+            for (int i = 0; i < value.length; i++) {
+                for (int j = 0; j < value.length; j++) {
+                    BigDecimal v1 = new BigDecimal(value[i]);
+                    BigDecimal v2 = new BigDecimal(value[j]);
+                    BigDecimal res1 = v1.divide(v2, new MathContext(mpc, RoundingMode.HALF_EVEN));
+                    BigDecimal res2 = v1.divide(v2, new MathContext(128, RoundingMode.HALF_EVEN)).round(new MathContext(mpc, RoundingMode.HALF_EVEN));
+                    if (!res1.equals(res2)) {
+                        failures++;
+                        System.err.println("Unexpected result from " + v1 + " / " + v2 +
+                                           "; expected " + res2 + " got " + res1);
+
+                    }
+                }
+            }
+        }
+        return failures;
+    }
+
+    public static void main(String argv[]) {
+        int failures = 0;
+        failures += mcDivideTests();
+        if (failures > 0) {
+            throw new RuntimeException("Incurred " + failures +
+                                       " failures while testing DECIMAL64 divide.");
+        }
+    }
+
+}
--- a/jdk/test/java/math/BigDecimal/FloatDoubleValueTests.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/math/BigDecimal/FloatDoubleValueTests.java	Wed Apr 20 09:31:11 2011 -0700
@@ -25,6 +25,8 @@
  * @test
  * @bug 6274390
  * @summary Verify {float, double}Value methods work with condensed representation
+ * @run main FloatDoubleValueTests
+ * @run main/othervm -XX:+AggressiveOpts FloatDoubleValueTests
  */
 import java.math.*;
 
@@ -64,6 +66,7 @@
 
     static void checkDouble(BigDecimal bd, double d) {
         double dbd = bd.doubleValue();
+
         if (d != dbd ) {
             String message = String.format("Bad conversion:"+
                                            "got %g (%a)\texpected %g (%a)",
@@ -156,9 +159,29 @@
         }
     }
 
+    static void testFloatValue1() {
+        checkFloat(new BigDecimal("85070591730234615847396907784232501249"), 8.507059e+37f);
+        checkFloat(new BigDecimal("7784232501249e12"), 7.7842326e24f);
+        checkFloat(new BigDecimal("907784232501249e-12"),907.78424f);
+        checkFloat(new BigDecimal("7784e8"),7.7839997e11f);
+        checkFloat(new BigDecimal("9077e-8"),9.077e-5f);
+
+    }
+
+    static void testDoubleValue1() {
+        checkDouble(new BigDecimal("85070591730234615847396907784232501249"), 8.507059173023462e37);
+        checkDouble(new BigDecimal("7784232501249e12"), 7.784232501249e24);
+        checkDouble(new BigDecimal("907784232501249e-12"), 907.784232501249);
+        checkDouble(new BigDecimal("7784e8"), 7.784e11);
+        checkDouble(new BigDecimal("9077e-8"), 9.077e-5);
+
+    }
+
     public static void main(String[] args) throws Exception {
         testFloatDoubleValue();
         testDoubleValue();
         testFloatValue();
+        testFloatValue1();
+        testDoubleValue1();
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/math/BigDecimal/RangeTests.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,245 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 7036582
+ * @summary Some new tests for the add method and constructor with MathContext.
+ * @run main RangeTests
+ * @run main/othervm -XX:+AggressiveOpts RangeTests
+ * @author Sergey V. Kuksenko
+ */
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.math.MathContext;
+
+public class RangeTests {
+
+
+    private static int addTest(BigDecimal arg1, BigDecimal arg2, BigDecimal expectedResult) {
+        int failures = 0;
+        BigDecimal result = arg1.add(arg2);
+        if (!result.equals(expectedResult)) {
+            System.out.println("Sum:" +
+                    arg1 + " + " +
+                    arg2 + " == " +
+                    result + "; expected  " +
+                    expectedResult
+            );
+            failures++;
+        }
+        result = arg2.add(arg1);
+        if (!result.equals(expectedResult)) {
+            System.out.println("Sum:" +
+                    arg2 + " + " +
+                    arg1 + " == " +
+                    result + "; expected  " +
+                    expectedResult
+            );
+            failures++;
+        }
+        return failures;
+    }
+
+    /*
+     *  Test BigDecimal.add(BigDecimal) when values are withing different ranges:
+     *  1. within 32 bits
+     *  2. within 64 bits
+     *  3. outside 64 bits.
+     */
+    private static int addBoundaryTest() {
+        int failures = 0;
+        failures += addTest(
+                new BigDecimal("85070591730234615847396907784232501249"),
+                BigDecimal.valueOf(0),
+                new BigDecimal("85070591730234615847396907784232501249") );
+        failures += addTest(
+                new BigDecimal("-85070591730234615847396907784232501249"),
+                BigDecimal.valueOf(0),
+                new BigDecimal("-85070591730234615847396907784232501249") );
+        failures += addTest(
+                new BigDecimal("85070591730234615847396907784232501249"),
+                BigDecimal.valueOf(1),
+                new BigDecimal("85070591730234615847396907784232501250") );
+        failures += addTest(
+                new BigDecimal("85070591730234615847396907784232501249"),
+                BigDecimal.valueOf(-1),
+                new BigDecimal("85070591730234615847396907784232501248") );
+        failures += addTest(
+                new BigDecimal("-85070591730234615847396907784232501250"),
+                BigDecimal.valueOf(-1),
+                new BigDecimal("-85070591730234615847396907784232501251") );
+        failures += addTest(
+                new BigDecimal("-85070591730234615847396907784232501249"),
+                BigDecimal.valueOf(1),
+                new BigDecimal("-85070591730234615847396907784232501248") );
+        failures += addTest(
+                new BigDecimal("147573952589676412927"),
+                BigDecimal.valueOf(Integer.MAX_VALUE),
+                new BigDecimal("147573952591823896574") );
+        failures += addTest(
+                new BigDecimal("-147573952589676412927"),
+                BigDecimal.valueOf(Integer.MAX_VALUE),
+                new BigDecimal("-147573952587528929280") );
+        failures += addTest(
+                new BigDecimal("79228162514264337593543950335"),
+                BigDecimal.valueOf(999),
+                new BigDecimal("79228162514264337593543951334") );
+        failures += addTest(
+                new BigDecimal("79228162514264337593543950335"),
+                BigDecimal.valueOf(Integer.MAX_VALUE/2),
+                new BigDecimal("79228162514264337594617692158") );
+        failures += addTest(
+                new BigDecimal("79228162514264337593543950335"),
+                BigDecimal.valueOf(Integer.MIN_VALUE/2),
+                new BigDecimal("79228162514264337592470208511") );
+        failures += addTest(
+                new BigDecimal("-79228162514264337593543950335"),
+                BigDecimal.valueOf(Integer.MAX_VALUE/2),
+                new BigDecimal("-79228162514264337592470208512") );
+        failures += addTest(
+                new BigDecimal("79228162514264337593543950335"),
+                BigDecimal.valueOf(-(Integer.MIN_VALUE/2)),
+                new BigDecimal("79228162514264337594617692159") );
+        failures += addTest(
+                new BigDecimal("79228162514264337593543950335"),
+                BigDecimal.valueOf(Long.MAX_VALUE/2),
+                new BigDecimal("79228162518876023611971338238") );
+        failures += addTest(
+                new BigDecimal("79228162514264337593543950335"),
+                BigDecimal.valueOf(Long.MIN_VALUE/2),
+                new BigDecimal("79228162509652651575116562431") );
+        failures += addTest(
+                new BigDecimal("-79228162514264337593543950335"),
+                BigDecimal.valueOf(Long.MAX_VALUE/2),
+                new BigDecimal("-79228162509652651575116562432") );
+        failures += addTest(
+                new BigDecimal("79228162514264337593543950335"),
+                BigDecimal.valueOf(-(Long.MIN_VALUE/2)),
+                new BigDecimal("79228162518876023611971338239") );
+        failures += addTest(
+                new BigDecimal("-9223372036854775808"),
+                BigDecimal.valueOf(1),
+                new BigDecimal("-9223372036854775807") );
+        failures += addTest(
+                new BigDecimal("-9223372036854775808"),
+                BigDecimal.valueOf(Long.MAX_VALUE/2),
+                new BigDecimal("-4611686018427387905") );
+        failures += addTest(
+                new BigDecimal("9223372036854775808"),
+                BigDecimal.valueOf(-1),
+                new BigDecimal("9223372036854775807") );
+        failures += addTest(
+                new BigDecimal("9223372036854775808"),
+                BigDecimal.valueOf(-Long.MAX_VALUE/2),
+                new BigDecimal("4611686018427387905") );
+
+        return failures;
+    }
+
+    private static int testRoundingFromBigInteger(BigInteger bi, int scale, MathContext mc) {
+        int failures = 0;
+        BigDecimal bd1 = new BigDecimal(bi,scale, mc);
+        BigDecimal bd2 = (new BigDecimal(bi,scale)).round(mc);
+        if (!bd1.equals(bd2)) {
+            System.out.println("new BigDecimal(BigInteger,int,MathContext):" +
+                    "BigInteger == " +
+                    bi + ";  scale == " + scale + "; result == " +
+                    bd1 + "; expected  == " +
+                    bd2
+            );
+            failures++;
+        }
+        return failures;
+    }
+
+    private static int roundingConstructorTest() {
+        int failures = 0;
+        failures += testRoundingFromBigInteger(
+                new BigInteger("85070591730234615847396907784232501249"),
+                7, MathContext.DECIMAL64);
+        failures += testRoundingFromBigInteger(
+                new BigInteger("85070591730234615847396907784232501249"),
+                0, MathContext.DECIMAL64);
+        failures += testRoundingFromBigInteger(
+                new BigInteger("85070591730234615847396907784232501249"),
+                -7, MathContext.DECIMAL64);
+        failures += testRoundingFromBigInteger(
+                new BigInteger("85070591730234615847396907784232501249"),
+                7, MathContext.DECIMAL128);
+        failures += testRoundingFromBigInteger(
+                new BigInteger("85070591730234615847396907784232501249"),
+                177, MathContext.DECIMAL128);
+        failures += testRoundingFromBigInteger(
+                new BigInteger("85070591730234615847396907784232501249"),
+                177, MathContext.DECIMAL32);
+        failures += testRoundingFromBigInteger(
+                new BigInteger("85070591730234615847396907784232501249"),
+                177, MathContext.UNLIMITED);
+        failures += testRoundingFromBigInteger(
+                new BigInteger("85070591730234615847396907784232501249"),
+                0, MathContext.UNLIMITED);
+        return failures;
+    }
+
+    private static int minLongConstructorTest(MathContext mc) {
+        int failures = 0;
+        BigDecimal bd1 = new BigDecimal(Long.MIN_VALUE,mc);
+        BigDecimal bd2 = new BigDecimal(Long.MIN_VALUE).round(mc);
+        if (!bd1.equals(bd2)) {
+            System.out.println("new BigDecimal(long,MathContext):" +
+                    "long == " +
+                    Long.MIN_VALUE + "; result == " +
+                    bd1 + "; expected  == " +
+                    bd2
+            );
+            failures++;
+        }
+        return failures;
+    }
+
+    private static int minLongConstructorTest() {
+        int failures = 0;
+        failures+=minLongConstructorTest(MathContext.UNLIMITED);
+        failures+=minLongConstructorTest(MathContext.DECIMAL32);
+        failures+=minLongConstructorTest(MathContext.DECIMAL64);
+        failures+=minLongConstructorTest(MathContext.DECIMAL128);
+        return failures;
+    }
+
+    public static void main(String argv[]) {
+        int failures = 0;
+
+        failures += addBoundaryTest();
+        failures += roundingConstructorTest();
+        failures += minLongConstructorTest();
+        if (failures > 0) {
+            throw new RuntimeException("Incurred " + failures +
+                                       " failures while testing.");
+        }
+    }
+
+
+
+}
--- a/jdk/test/java/math/BigDecimal/StrippingZerosTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/math/BigDecimal/StrippingZerosTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -25,6 +25,8 @@
  * @test
  * @bug 4108852
  * @summary A few tests of stripTrailingZeros
+ * @run main StrippingZerosTest
+ * @run main/othervm -XX:+AggressiveOpts StrippingZerosTest
  * @author Joseph D. Darcy
  */
 
@@ -53,6 +55,11 @@
             {new BigDecimal("10000000e2"),      new BigDecimal("1e9")},
             {new BigDecimal("1000000e3"),       new BigDecimal("1e9")},
             {new BigDecimal("100000e4"),        new BigDecimal("1e9")},
+            // BD value which larger than Long.MaxValue
+            {new BigDecimal("1.0000000000000000000000000000"),    new BigDecimal("1")},
+            {new BigDecimal("-1.0000000000000000000000000000"),   new BigDecimal("-1")},
+            {new BigDecimal("1.00000000000000000000000000001"),   new BigDecimal("1.00000000000000000000000000001")},
+            {new BigDecimal("1000000000000000000000000000000e4"), new BigDecimal("1e34")},
         };
 
         for(int i = 0; i < testCases.length; i++) {
--- a/jdk/test/java/math/BigDecimal/ToPlainStringTests.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/math/BigDecimal/ToPlainStringTests.java	Wed Apr 20 09:31:11 2011 -0700
@@ -25,6 +25,8 @@
  * @test
  * @bug 4984872
  * @summary Basic tests of toPlainString method
+ * @run main ToPlainStringTests
+ * @run main/othervm -XX:+AggressiveOpts ToPlainStringTests
  * @author Joseph D. Darcy
  */
 
@@ -60,6 +62,11 @@
             {"8e-8",                    "0.00000008"},
             {"9e-9",                    "0.000000009"},
             {"9000e-12",                "0.000000009000"},
+
+            {"9000e-22",                 "0.0000000000000000009000"},
+            {"12345678901234567890",     "12345678901234567890"},
+            {"12345678901234567890e22",  "123456789012345678900000000000000000000000"},
+            {"12345678901234567890e-22", "0.0012345678901234567890"},
         };
 
         int errors = 0;
@@ -73,8 +80,8 @@
                                    s + "'' from BigDecimal " +
                                    bd);
             }
-
-            if (!(s=("-"+bd.toPlainString())).equals("-"+testCase[1])) {
+            bd = new BigDecimal("-"+testCase[0]);
+            if (bd.signum()!=0 && !(s=(bd.toPlainString())).equals("-"+testCase[1])) {
                 errors++;
                 System.err.println("Unexpected plain result ``" +
                                    s + "'' from BigDecimal " +
--- a/jdk/test/java/math/BigInteger/BigIntegerTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/math/BigInteger/BigIntegerTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/net/URI/Test.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/net/URI/Test.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/net/URL/Equals.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/net/URL/Equals.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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,16 +23,19 @@
 
 /*
  * @test
- * @bug 4052976
- * @summary Test URL.equals involving anchors
- *
+ * @bug 4052976 7030649
+ * @summary Test URL.equals with anchors, and jar URLs
  */
 
 import java.net.*;
 
 public class Equals {
+    public static void main(String[] args) throws Exception {
+        anchors();
+        jarURLs();
+    }
 
-    public static void main(String[] args) throws Exception {
+    static void anchors() throws Exception {
         URL url1, url2;
 
         url1 = new URL(null, "http://JavaSoft/Test#bar");
@@ -45,4 +48,74 @@
         if (url1.equals(null))
             throw new RuntimeException("URL.equals fails given null");
     }
+
+    static final String HTTP_URL1A = "http://localhost/xyz";
+    static final String HTTP_URL1B = "http://LOCALHOST/xyz";
+    static final String FILE_URL1A = "file:///c:/foo/xyz";
+    static final String FILE_URL1B = "file:/c:/foo/xyz";
+
+    static void jarURLs() throws Exception {
+        int failed = 0;
+        failed = compareJarURLS(HTTP_URL1A, HTTP_URL1A, "!/abc", "!/abc", true);
+        failed = compareJarURLS(HTTP_URL1A, HTTP_URL1B, "!/abc", "!/abc", true);
+        failed = compareJarURLS(HTTP_URL1B, HTTP_URL1A, "!/", "!/", true);
+        failed = compareJarURLS(HTTP_URL1A, HTTP_URL1B, "!/abc", "!/", false);
+        failed = compareJarURLS(HTTP_URL1A, HTTP_URL1B, "!/abc", "!/xy", false);
+        failed = compareJarURLS(FILE_URL1A, FILE_URL1A, "!/abc", "!/abc", true);
+        failed = compareJarURLS(FILE_URL1A, FILE_URL1B, "!/abc", "!/abc", true);
+        failed = compareJarURLS(FILE_URL1A, FILE_URL1B, "!/", "!/", true);
+        failed = compareJarURLS(FILE_URL1A, FILE_URL1B, "!/abc", "!/", false);
+        failed = compareJarURLS(FILE_URL1A, FILE_URL1B, "!/abc", "!/xy", false);
+
+        failed = (new URL("jar:file://xzy!/abc")).equals(
+                      new URL("file://xzy!/abc")) ? 1 : 0;
+
+        if (failed > 0)
+            throw new RuntimeException("Some jar URL tests failed. Check output");
+    }
+
+    static int compareJarURLS(String urlStr1, String urlStr2,
+                                  String entry1,  String entry2,
+                                  boolean expectEqual) throws Exception {
+        int failed = 0;
+
+        URL url1 = new URL(urlStr1);
+        URL url2 = new URL(urlStr2);
+
+        if (!url1.equals(url2)) {
+            System.out.println("Urls are not equal, so the test cannot run.");
+            System.out.println("url1: " + url1 + ", url2:" + url2);
+            return 1;
+        }
+
+        URL jarUrl1 = new URL("jar:" + urlStr1 + entry1);
+        URL jarUrl2 = new URL("jar:" + urlStr2 + entry2);
+        jarUrl2.openConnection();
+
+        boolean equal = jarUrl1.equals(jarUrl2);
+        if (expectEqual && !equal) {
+            System.out.println("URLs should be equal, but are not. " +
+                                jarUrl1 + ", " + jarUrl2);
+            failed++;
+        } else if (!expectEqual && equal) {
+            System.out.println("URLs should NOT be equal, but are. " +
+                                jarUrl1 + ", " + jarUrl2);
+            failed++;
+        }
+
+        if (expectEqual) {
+            // hashCode MUST produce the same integer result for equal urls
+            int hash1 = jarUrl1.hashCode();
+            int hash2 = jarUrl2.hashCode();
+            if (hash1 != hash2) {
+                System.out.println("jarUrl1.hashCode = " + hash1);
+                System.out.println("jarUrl2.hashCode = " + hash2);
+                System.out.println("Equal urls should have same hashCode. " +
+                                    jarUrl1 + ", " + jarUrl2);
+                failed++;
+            }
+        }
+
+        return failed;
+    }
 }
--- a/jdk/test/java/net/URLClassLoader/closetest/CloseTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/net/URLClassLoader/closetest/CloseTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/MappedByteBuffer/Force.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/MappedByteBuffer/Force.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/MappedByteBuffer/ZeroMap.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/MappedByteBuffer/ZeroMap.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/channels/AsynchronousSocketChannel/Basic.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/channels/AsynchronousSocketChannel/Basic.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/channels/DatagramChannel/MulticastSendReceiveTests.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/channels/DatagramChannel/MulticastSendReceiveTests.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/channels/FileChannel/AtomicAppend.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/channels/FileChannel/AtomicAppend.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/channels/FileChannel/Position.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/channels/FileChannel/Position.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/channels/FileChannel/Transfer.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/channels/FileChannel/Transfer.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/charset/coders/CheckSJISMappingProp.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/charset/coders/CheckSJISMappingProp.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2010, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/DirectoryStream/Basic.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/DirectoryStream/Basic.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/DirectoryStream/DriveLetter.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/DirectoryStream/DriveLetter.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/DirectoryStream/SecureDS.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/DirectoryStream/SecureDS.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/FileStore/Basic.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/FileStore/Basic.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Files/CheckPermissions.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Files/CheckPermissions.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Files/CopyAndMove.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Files/CopyAndMove.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Files/DeleteOnClose.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Files/DeleteOnClose.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Files/FileAttributes.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Files/FileAttributes.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Files/InterruptCopy.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Files/InterruptCopy.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Files/Links.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Files/Links.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Files/Misc.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Files/Misc.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Files/PassThroughFileSystem.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Files/PassThroughFileSystem.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Files/SBC.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Files/SBC.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Files/TemporaryFiles.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Files/TemporaryFiles.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Files/delete_on_close.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Files/delete_on_close.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Files/probeContentType/Basic.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Files/probeContentType/Basic.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Files/probeContentType/ForceLoad.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Files/probeContentType/ForceLoad.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Files/probeContentType/SimpleFileTypeDetector.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Files/probeContentType/SimpleFileTypeDetector.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Files/walkFileTree/CreateFileTree.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Files/walkFileTree/CreateFileTree.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Files/walkFileTree/MaxDepth.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Files/walkFileTree/MaxDepth.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Files/walkFileTree/PrintFileTree.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Files/walkFileTree/PrintFileTree.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Files/walkFileTree/SkipSiblings.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Files/walkFileTree/SkipSiblings.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Files/walkFileTree/TerminateWalk.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Files/walkFileTree/TerminateWalk.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Files/walkFileTree/WalkWithSecurity.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Files/walkFileTree/WalkWithSecurity.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Files/walkFileTree/walk_file_tree.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Files/walkFileTree/walk_file_tree.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Path/Misc.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Path/Misc.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Path/PathOps.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Path/PathOps.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/Path/UriImportExport.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/Path/UriImportExport.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/TestUtil.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/TestUtil.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/WatchService/Basic.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/WatchService/Basic.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/WatchService/FileTreeModifier.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/WatchService/FileTreeModifier.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/WatchService/LotsOfEvents.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/WatchService/LotsOfEvents.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/WatchService/SensitivityModifier.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/WatchService/SensitivityModifier.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/attribute/AclFileAttributeView/Basic.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/attribute/AclFileAttributeView/Basic.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/attribute/BasicFileAttributeView/Basic.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/attribute/BasicFileAttributeView/Basic.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/attribute/DosFileAttributeView/Basic.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/attribute/DosFileAttributeView/Basic.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/attribute/FileTime/Basic.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/attribute/FileTime/Basic.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/attribute/PosixFileAttributeView/Basic.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/attribute/PosixFileAttributeView/Basic.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/attribute/UserDefinedFileAttributeView/Basic.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/attribute/UserDefinedFileAttributeView/Basic.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/spi/SetDefaultProvider.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/spi/SetDefaultProvider.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/nio/file/spi/TestProvider.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/nio/file/spi/TestProvider.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/rmi/server/UnicastRemoteObject/exportObject/GcDuringExport.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2011 Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * Portions Copyright (c) 2011 IBM Corporation
+ */
+
+/*
+ * @test
+ * @bug 6597112
+ * @summary GC'ing objects whilst being exported to RMI should not cause exceptions
+ * @author Neil Richards <neil.richards@ngmr.net>, <neil_richards@uk.ibm.com>
+ */
+
+import java.rmi.Remote;
+import java.rmi.server.UnicastRemoteObject;
+
+public class GcDuringExport {
+    private static final long MAX_EXPORT_ITERATIONS = 50000;
+
+    public static void main(String[] args) throws Exception {
+        Thread gcInducingThread = new Thread() {
+            public void run() {
+                while (true) {
+                    System.gc();
+                    try { Thread.sleep(1); } catch (InterruptedException e) { }
+                }
+            }
+        };
+        gcInducingThread.setDaemon(true);
+        gcInducingThread.start();
+
+        long i = 0;
+        try {
+            while (i < MAX_EXPORT_ITERATIONS) {
+                i++;
+                UnicastRemoteObject.exportObject(new Remote() { }, 0);
+            }
+        } catch (Throwable e) {
+            throw new RuntimeException("Test FAILED on iteration " + i + ".", e);
+        }
+
+        System.out.println("Test successfully exported " + i + " objects.");
+    }
+}
--- a/jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2009, 2010, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/Arrays/Sorting.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/Arrays/Sorting.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/Collection/MOAT.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/Collection/MOAT.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/Currency/ValidateISO4217.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/Currency/ValidateISO4217.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/Locale/LocaleEnhanceTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/Locale/LocaleEnhanceTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/Locale/LocaleTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/Locale/LocaleTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/Objects/BasicObjectsTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/Objects/BasicObjectsTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/ResourceBundle/Bug6204853.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/ResourceBundle/Bug6204853.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/WeakHashMap/GCDuringIteration.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/WeakHashMap/GCDuringIteration.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/concurrent/Executors/AutoShutdown.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/concurrent/Executors/AutoShutdown.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/concurrent/ThreadPoolExecutor/CoreThreadTimeOut.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/concurrent/ThreadPoolExecutor/CoreThreadTimeOut.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/jar/JarEntry/GetMethodsReturnClones.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/jar/JarEntry/GetMethodsReturnClones.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/jar/JarFile/ScanSignedJar.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/jar/JarFile/ScanSignedJar.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/logging/ClassLoaderLeakTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/logging/ClassLoaderLeakTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2010, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/regex/RegExTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/regex/RegExTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/zip/Available.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/zip/Available.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/zip/FileBuilder.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/zip/FileBuilder.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/zip/GZIP/Accordion.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/zip/GZIP/Accordion.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/zip/GZIP/GZIPInputStreamRead.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/zip/GZIP/GZIPInputStreamRead.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/zip/InfoZip.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/zip/InfoZip.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/zip/LargeZip.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/zip/LargeZip.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/zip/TestEmptyZip.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/zip/TestEmptyZip.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/zip/ZipCoding.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/zip/ZipCoding.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/zip/ZipFile/Assortment.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/zip/ZipFile/Assortment.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/zip/ZipFile/ClearStaleZipFileInputStreams.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,148 @@
+/*
+ * Copyright (c) 2011 Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * Portions Copyright (c) 2011 IBM Corporation
+ */
+
+/*
+ * @test
+ * @bug 7031076
+ * @summary Allow stale InputStreams from ZipFiles to be GC'd
+ * @author Neil Richards <neil.richards@ngmr.net>, <neil_richards@uk.ibm.com>
+ */
+import java.lang.ref.ReferenceQueue;
+import java.lang.ref.WeakReference;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Random;
+import java.util.Set;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+import java.util.zip.ZipOutputStream;
+
+public class ClearStaleZipFileInputStreams {
+    private static final int ZIP_ENTRY_NUM = 5;
+
+    private static final byte[][] data;
+
+    static {
+        data = new byte[ZIP_ENTRY_NUM][];
+        Random r = new Random();
+        for (int i = 0; i < ZIP_ENTRY_NUM; i++) {
+            data[i] = new byte[1000];
+            r.nextBytes(data[i]);
+        }
+    }
+
+    private static File createTestFile(int compression) throws Exception {
+        File tempZipFile =
+            File.createTempFile("test-data" + compression, ".zip");
+        tempZipFile.deleteOnExit();
+
+        ZipOutputStream zos =
+            new ZipOutputStream(new FileOutputStream(tempZipFile));
+        zos.setLevel(compression);
+
+        try {
+            for (int i = 0; i < ZIP_ENTRY_NUM; i++) {
+                String text = "Entry" + i;
+                ZipEntry entry = new ZipEntry(text);
+                zos.putNextEntry(entry);
+                try {
+                    zos.write(data[i], 0, data[i].length);
+                } finally {
+                    zos.closeEntry();
+                }
+            }
+        } finally {
+            zos.close();
+        }
+
+        return tempZipFile;
+    }
+
+    private static void startGcInducingThread(final int sleepMillis) {
+        final Thread gcInducingThread = new Thread() {
+            public void run() {
+                while (true) {
+                    System.gc();
+                    try {
+                        Thread.sleep(sleepMillis);
+                    } catch (InterruptedException e) { }
+                }
+            }
+        };
+
+        gcInducingThread.setDaemon(true);
+        gcInducingThread.start();
+    }
+
+    public static void main(String[] args) throws Exception {
+        startGcInducingThread(500);
+        runTest(ZipOutputStream.DEFLATED);
+        runTest(ZipOutputStream.STORED);
+    }
+
+    private static void runTest(int compression) throws Exception {
+        ReferenceQueue<InputStream> rq = new ReferenceQueue<>();
+
+        System.out.println("Testing with a zip file with compression level = "
+                + compression);
+        File f = createTestFile(compression);
+        try {
+            ZipFile zf = new ZipFile(f);
+            try {
+                Set<Object> refSet = createTransientInputStreams(zf, rq);
+
+                System.out.println("Waiting for 'stale' input streams from ZipFile to be GC'd ...");
+                System.out.println("(The test will hang on failure)");
+                while (false == refSet.isEmpty()) {
+                    refSet.remove(rq.remove());
+                }
+                System.out.println("Test PASSED.");
+                System.out.println();
+            } finally {
+                zf.close();
+            }
+        } finally {
+            f.delete();
+        }
+    }
+
+    private static Set<Object> createTransientInputStreams(ZipFile zf,
+            ReferenceQueue<InputStream> rq) throws Exception {
+        Enumeration<? extends ZipEntry> zfe = zf.entries();
+        Set<Object> refSet = new HashSet<>();
+
+        while (zfe.hasMoreElements()) {
+            InputStream is = zf.getInputStream(zfe.nextElement());
+            refSet.add(new WeakReference<InputStream>(is, rq));
+        }
+
+        return refSet;
+    }
+}
--- a/jdk/test/java/util/zip/ZipFile/Comment.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/zip/ZipFile/Comment.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/zip/ZipFile/CopyJar.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/zip/ZipFile/CopyJar.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/zip/ZipFile/CorruptedZipFiles.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/zip/ZipFile/CorruptedZipFiles.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/zip/ZipFile/DeleteTempJar.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/zip/ZipFile/DeleteTempJar.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/zip/ZipFile/EnumAfterClose.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/zip/ZipFile/EnumAfterClose.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/zip/ZipFile/FinalizeZipFile.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/zip/ZipFile/FinalizeZipFile.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/zip/ZipFile/GetDirEntry.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/zip/ZipFile/GetDirEntry.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/zip/ZipFile/LargeZipFile.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/zip/ZipFile/LargeZipFile.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/zip/ZipFile/ManyEntries.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/zip/ZipFile/ManyEntries.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/zip/ZipFile/ManyZipFiles.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/zip/ZipFile/ManyZipFiles.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/zip/ZipFile/ReadAfterClose.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/zip/ZipFile/ReadAfterClose.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/zip/ZipFile/ReadZip.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/zip/ZipFile/ReadZip.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/zip/ZipFile/ShortRead.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/zip/ZipFile/ShortRead.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/java/util/zip/zip.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/java/util/zip/zip.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/crypto/Cipher/GCMAPI.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,138 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 7031343
+ * @summary Provide API changes to support GCM AEAD ciphers
+ * @author Brad Wetmore
+ */
+
+import javax.crypto.*;
+import javax.crypto.spec.*;
+import java.nio.ByteBuffer;
+
+/*
+ * At this point in time, we can't really do any testing since only the API
+ * is available, the underlying implementation doesn't exist yet.  Test
+ * what we can...
+ */
+public class GCMAPI {
+
+    // 16 elements
+    private static byte[] bytes = new byte[] {
+        0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+        0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f };
+
+    private static int failed = 0;
+    private static Cipher c;
+
+    public static void main(String[] args) throws Exception {
+        c = Cipher.getInstance("AES");
+        c.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(new byte[16], "AES"));
+
+        updateAADFail((byte[]) null);
+        updateAADPass(bytes);
+
+        updateAADFail(null, 2, 4);
+        updateAADFail(bytes, -2, 4);
+        updateAADFail(bytes, 2, -4);
+        updateAADFail(bytes, 2, 15);  // one too many
+
+        updateAADPass(bytes, 2, 14);  // ok.
+        updateAADPass(bytes, 4, 4);
+        updateAADPass(bytes, 0, 0);
+
+        ByteBuffer bb = ByteBuffer.wrap(bytes);
+
+        updateAADFail((ByteBuffer) null);
+        updateAADPass(bb);
+
+        if (failed != 0) {
+            throw new Exception("Test(s) failed");
+        }
+    }
+
+    private static void updateAADPass(byte[] src) {
+        try {
+            c.updateAAD(src);
+        } catch (UnsupportedOperationException e) {
+            // swallow
+        }catch (Exception e) {
+            e.printStackTrace();
+            failed++;
+        }
+    }
+
+    private static void updateAADFail(byte[] src) {
+        try {
+            c.updateAAD(src);
+            new Exception("Didn't Fail as Expected").printStackTrace();
+            failed++;
+        } catch (IllegalArgumentException e) {
+            // swallow
+        }
+    }
+
+    private static void updateAADPass(byte[] src, int offset, int len) {
+        try {
+            c.updateAAD(src, offset, len);
+        } catch (UnsupportedOperationException e) {
+            // swallow
+        } catch (Exception e) {
+            e.printStackTrace();
+            failed++;
+        }
+    }
+
+    private static void updateAADFail(byte[] src, int offset, int len) {
+        try {
+            c.updateAAD(src, offset, len);
+            new Exception("Didn't Fail as Expected").printStackTrace();
+            failed++;
+        } catch (IllegalArgumentException e) {
+            // swallow
+        }
+    }
+
+    private static void updateAADPass(ByteBuffer src) {
+        try {
+            c.updateAAD(src);
+        } catch (UnsupportedOperationException e) {
+            // swallow
+        }catch (Exception e) {
+            e.printStackTrace();
+            failed++;
+        }
+    }
+
+    private static void updateAADFail(ByteBuffer src) {
+        try {
+            c.updateAAD(src);
+            new Exception("Didn't Fail as Expected").printStackTrace();
+            failed++;
+        } catch (IllegalArgumentException e) {
+            // swallow
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/crypto/spec/GCMParameterSpec/GCMParameterSpecTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,130 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 7031343
+ * @summary Provide API changes to support GCM AEAD ciphers
+ * @author Brad Wetmore
+ */
+
+import javax.crypto.AEADBadTagException;
+import javax.crypto.spec.GCMParameterSpec;
+import java.util.Arrays;
+
+public class GCMParameterSpecTest {
+
+    // 16 elements
+    private static byte[] bytes = new byte[] {
+        0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+        0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f };
+
+    private static int failed = 0;
+
+    public static void main(String[] args) throws Exception {
+        newGCMParameterSpecFail(-1, bytes);
+        newGCMParameterSpecFail(128, null);
+        newGCMParameterSpecPass(128, bytes);
+
+        newGCMParameterSpecFail(-1, bytes, 2, 4);
+        newGCMParameterSpecFail(128, null, 2, 4);
+        newGCMParameterSpecFail(128, bytes, -2, 4);
+        newGCMParameterSpecFail(128, bytes, 2, -4);
+        newGCMParameterSpecFail(128, bytes, 2, 15);  // one too many
+
+        newGCMParameterSpecPass(128, bytes, 2, 14);  // ok.
+        newGCMParameterSpecPass(96, bytes, 4, 4);
+        newGCMParameterSpecPass(96, bytes, 0, 0);
+
+        // Might as well check the Exception constructors.
+        try {
+            new AEADBadTagException();
+            new AEADBadTagException("Bad Tag Seen");
+        } catch (Exception e) {
+            e.printStackTrace();
+            failed++;
+        }
+
+        if (failed != 0) {
+            throw new Exception("Test(s) failed");
+        }
+    }
+
+    private static void newGCMParameterSpecPass(
+            int tLen, byte[] src) {
+        try {
+            GCMParameterSpec gcmps = new GCMParameterSpec(tLen, src);
+            if (gcmps.getTLen() != tLen) {
+                throw new Exception("tLen's not equal");
+            }
+            if (!Arrays.equals(gcmps.getIV(), src)) {
+                throw new Exception("IV's not equal");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            failed++;
+        }
+    }
+
+    private static void newGCMParameterSpecFail(
+            int tLen, byte[] src) {
+        try {
+            new GCMParameterSpec(tLen, src);
+            new Exception("Didn't Fail as Expected").printStackTrace();
+            failed++;
+        } catch (IllegalArgumentException e) {
+            // swallow
+        }
+    }
+
+    private static void newGCMParameterSpecPass(
+            int tLen, byte[] src, int offset, int len) {
+        try {
+            GCMParameterSpec gcmps =
+                new GCMParameterSpec(tLen, src, offset, len);
+            if (gcmps.getTLen() != tLen) {
+                throw new Exception("tLen's not equal");
+            }
+            if (!Arrays.equals(gcmps.getIV(),
+                    Arrays.copyOfRange(src, offset, offset + len))) {
+                System.out.println(offset + " " + len);
+                System.out.println(Arrays.copyOfRange(src, offset, len)[0]);
+                throw new Exception("IV's not equal");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            failed++;
+        }
+    }
+
+    private static void newGCMParameterSpecFail(
+            int tLen, byte[] src, int offset, int len) {
+        try {
+            new GCMParameterSpec(tLen, src, offset, len);
+            new Exception("Didn't Fail as Expected").printStackTrace();
+            failed++;
+        } catch (IllegalArgumentException e) {
+            // swallow
+        }
+    }
+}
--- a/jdk/test/javax/imageio/stream/StreamCloserLeak/run_test.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/javax/imageio/stream/StreamCloserLeak/run_test.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 #!/bin/ksh -p
 #
-# Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2009, 2010, Oracle and/or its affiliates. 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
--- a/jdk/test/javax/print/DialogMargins.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/javax/print/DialogMargins.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/javax/print/attribute/ServiceDialogTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/javax/print/attribute/ServiceDialogTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/javax/script/CommonSetup.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/javax/script/CommonSetup.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2010, Oracle and/or its affiliates. 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
--- a/jdk/test/javax/script/VersionTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/javax/script/VersionTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. 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
--- a/jdk/test/javax/sound/sampled/Clip/ClipSetPos.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/javax/sound/sampled/Clip/ClipSetPos.java	Wed Apr 20 09:31:11 2011 -0700
@@ -33,6 +33,7 @@
 import javax.sound.sampled.AudioFormat;
 import javax.sound.sampled.AudioSystem;
 import javax.sound.sampled.Clip;
+import javax.sound.sampled.DataLine;
 import javax.sound.sampled.LineUnavailableException;
 
 public class ClipSetPos {
@@ -48,12 +49,16 @@
         boolean testPassed = true;
         Clip clip = null;
         try {
-            clip = AudioSystem.getClip();
+            clip = (Clip)AudioSystem.getLine(new DataLine.Info(Clip.class, audioFormat));
             clip.open(audioFormat, dataBuffer, 0, dataBuffer.length);
         } catch (LineUnavailableException ex) {
             log(ex);
             log("Cannot test (this is not failure)");
             return;
+        } catch (IllegalArgumentException ex) {
+            log(ex);
+            log("Cannot test (this is not failure)");
+            return;
         }
 
         log("clip: " + clip.getClass().getName());
--- a/jdk/test/javax/swing/JFileChooser/6342301/bug6342301.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/javax/swing/JFileChooser/6342301/bug6342301.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/javax/swing/JFileChooser/6798062/bug6798062.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/javax/swing/JFileChooser/6798062/bug6798062.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/javax/swing/JLabel/7004134/bug7004134.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/javax/swing/JLabel/7004134/bug7004134.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/javax/swing/JScrollBar/6542335/bug6542335.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/javax/swing/JScrollBar/6542335/bug6542335.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/javax/swing/UIDefaults/6795356/bug6795356.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/javax/swing/UIDefaults/6795356/bug6795356.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/javax/swing/border/Test4856008.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/javax/swing/border/Test4856008.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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,7 +23,7 @@
 
 /*
  * @test
- * @bug 4856008
+ * @bug 4856008 7025987
  * @summary Tests border insets
  * @author Sergey Malenkov
  */
@@ -59,6 +59,7 @@
 import javax.swing.plaf.basic.BasicToolBarUI;
 import javax.swing.plaf.metal.MetalBorders;
 import javax.swing.plaf.metal.MetalComboBoxEditor;
+import javax.swing.plaf.nimbus.NimbusLookAndFeel;
 
 import sun.swing.plaf.synth.SynthFileChooserUI;
 
@@ -134,6 +135,9 @@
 
             //+ SynthFileChooserUI.UIBorder:
             new SynthFileChooser().getUIBorder(),
+
+            //+ LoweredBorder:
+            new NimbusLookAndFeel().getDefaults().getBorder("TitledBorder.border"),
     };
 
     public static void main(String[] args) {
--- a/jdk/test/javax/swing/border/Test6978482.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/javax/swing/border/Test6978482.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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,7 +23,7 @@
 
 /*
  * @test
- * @bug 6978482
+ * @bug 6978482 7025987
  * @summary Tests unchecked casts
  * @author Sergey Malenkov
  */
@@ -58,6 +58,7 @@
 import javax.swing.plaf.basic.BasicToolBarUI;
 import javax.swing.plaf.metal.MetalBorders;
 import javax.swing.plaf.metal.MetalComboBoxEditor;
+import javax.swing.plaf.nimbus.NimbusLookAndFeel;
 
 import sun.swing.plaf.synth.SynthFileChooserUI;
 
@@ -132,6 +133,9 @@
 
             //+ SynthFileChooserUI.UIBorder:
             new SynthFileChooser().getUIBorder(),
+
+            //+ LoweredBorder:
+            new NimbusLookAndFeel().getDefaults().getBorder("TitledBorder.border"),
     };
 
     public static void main(String[] args) {
--- a/jdk/test/javax/swing/text/NavigationFilter/6735293/bug6735293.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/javax/swing/text/NavigationFilter/6735293/bug6735293.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/javax/swing/text/html/parser/Parser/6990651/bug6990651.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/javax/swing/text/html/parser/Parser/6990651/bug6990651.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/java2d/SunGraphicsEnvironment/TestSGEuseAlternateFontforJALocales.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 7032930
+ *
+ * @summary verify the existence of the  method
+ *           SunGraphicsEnvironment.useAlternateFontforJALocales
+ *
+ * @run main/othervm TestSGEuseAlternateFontforJALocales
+ * @run main/othervm -Dfile.encoding=windows-31j -Duser.language=ja -Duser.country=JA TestSGEuseAlternateFontforJALocales
+ *
+ */
+
+import java.lang.reflect.Method;
+import java.nio.charset.Charset;
+import java.util.Locale;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Graphics2D;
+import java.awt.GraphicsEnvironment;
+import java.awt.image.BufferedImage;
+
+public class TestSGEuseAlternateFontforJALocales {
+
+    public static void main(String args[]) throws Exception {
+        System.out.println("Default Charset = "
+            + Charset.defaultCharset().name());
+        System.out.println("Locale = " + Locale.getDefault());
+        String os = System.getProperty("os.name");
+        String encoding = System.getProperty("file.encoding");
+        /* Want to test the JA locale uses alternate font for DialogInput. */
+        boolean jaTest = encoding.equalsIgnoreCase("windows-31j");
+        if (!os.startsWith("Win") && jaTest) {
+            System.out.println("Skipping Windows only test");
+            return;
+        }
+
+        String className = "sun.java2d.SunGraphicsEnvironment";
+        String methodName = "useAlternateFontforJALocales";
+        Class sge = Class.forName(className);
+        Method uafMethod = sge.getMethod(methodName, (Class[])null);
+        Object ret = uafMethod.invoke(null);
+        GraphicsEnvironment ge =
+            GraphicsEnvironment.getLocalGraphicsEnvironment();
+        ge.preferLocaleFonts();
+        ge.preferProportionalFonts();
+        if (jaTest) {
+            Font msMincho = new Font("MS Mincho", Font.PLAIN, 12);
+            if (!msMincho.getFamily(Locale.ENGLISH).equals("MS Mincho")) {
+                 System.out.println("MS Mincho not installed. Skipping test");
+                 return;
+            }
+            Font dialogInput = new Font("DialogInput", Font.PLAIN, 12);
+            Font courierNew = new Font("Courier New", Font.PLAIN, 12);
+            Font msGothic = new Font("MS Gothic", Font.PLAIN, 12);
+            BufferedImage bi = new BufferedImage(1,1,1);
+            Graphics2D g2d = bi.createGraphics();
+            FontMetrics cnMetrics = g2d.getFontMetrics(courierNew);
+            FontMetrics diMetrics = g2d.getFontMetrics(dialogInput);
+            FontMetrics mmMetrics = g2d.getFontMetrics(msMincho);
+            FontMetrics mgMetrics = g2d.getFontMetrics(msGothic);
+            // This tests to make sure we at least have applied
+            //  "preferLocaleFonts for Japanese
+            if (cnMetrics.charWidth('A') == diMetrics.charWidth('A')) {
+                 throw new RuntimeException
+                       ("Courier New should not be used for DialogInput");
+            }
+            // This is supposed to make sure we are using MS Mincho instead
+            //  of MS Gothic. However they are metrics identical so its
+            // not definite proof.
+            if (diMetrics.charWidth('A') != mmMetrics.charWidth('A')) {
+                 throw new RuntimeException
+                     ("MS Mincho should be used for DialogInput");
+            }
+       }
+   }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/java2d/XRenderBlitsTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,94 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+* @test
+* @bug     6985593
+* @summary Test verifies that rendering standard images to screen does
+*          not caiuse a crash in case of XRender.
+* @run main/othervm -Dsun.java2d.xrender=True XRenderBlitsTest
+*/
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.image.BufferedImage;
+import java.util.ArrayList;
+import java.util.concurrent.CountDownLatch;
+
+public class XRenderBlitsTest {
+
+    private static final int w = 10;
+    private static final int h = 10;
+
+    public static void main(String[] args) {
+        final CountDownLatch done = new CountDownLatch(1);
+
+        final ArrayList<BufferedImage> images = new ArrayList<BufferedImage>();
+
+        int type = BufferedImage.TYPE_INT_RGB;
+        do {
+            BufferedImage img = new BufferedImage(w, h, type++);
+            Graphics2D g2d = img.createGraphics();
+            g2d.setColor(Color.pink);
+            g2d.fillRect(0, 0, w, h);
+            g2d.dispose();
+
+            images.add(img);
+        } while (type <= BufferedImage.TYPE_BYTE_INDEXED);
+
+        Frame f = new Frame("Draw images");
+        Component c = new Component() {
+
+            @Override
+            public Dimension getPreferredSize() {
+                return new Dimension(w * images.size(), h);
+            }
+
+            @Override
+            public void paint(Graphics g) {
+                int x = 0;
+                for (BufferedImage img : images) {
+                    System.out.println("Draw image " + img.getType());
+                    g.drawImage(img, x, 0, this);
+                    x += w;
+                }
+                done.countDown();
+            }
+        };
+        f.add("Center", c);
+        f.pack();
+        f.setVisible(true);
+
+        // now wait for test results
+        try {
+        done.await();
+        } catch (InterruptedException e) {
+        }
+        System.out.println("Test passed");
+        f.dispose();
+    }
+}
--- a/jdk/test/sun/java2d/pipe/RegionOps.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/sun/java2d/pipe/RegionOps.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/sun/misc/URLClassPath/ClassnameCharTest.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/sun/misc/URLClassPath/ClassnameCharTest.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,7 +1,7 @@
 #! /bin/sh
 
 #
-# Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2010, Oracle and/or its affiliates. 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
--- a/jdk/test/sun/net/InetAddress/nameservice/chaining/Providers.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/sun/net/InetAddress/nameservice/chaining/Providers.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/sun/net/InetAddress/nameservice/chaining/Simple1NameServiceDescriptor.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/sun/net/InetAddress/nameservice/chaining/Simple1NameServiceDescriptor.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/sun/net/InetAddress/nameservice/chaining/Simple2NameServiceDescriptor.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/sun/net/InetAddress/nameservice/chaining/Simple2NameServiceDescriptor.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/sun/net/InetAddress/nameservice/chaining/SimpleNameService.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/sun/net/InetAddress/nameservice/chaining/SimpleNameService.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/sun/net/InetAddress/nameservice/dns/cname.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/sun/net/InetAddress/nameservice/dns/cname.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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,16 +26,16 @@
 
 # @test
 # @bug 4763315
-# @build CanonicalName Lookup 
+# @build CanonicalName Lookup
 # @run shell/timeout=120 cname.sh
 # @summary Test DNS provider's handling of CNAME records
 
 
 # The host that we try to resolve
 
-HOST=webcache.sfbay.sun.com
+HOST=www-proxy.us.oracle.com
 
-# fail gracefully if DNS is not configured or there 
+# fail gracefully if DNS is not configured or there
 # isn't a CNAME record.
 
 CLASSPATH=${TESTCLASSES}
@@ -43,7 +43,7 @@
 JAVA="${TESTJAVA}/bin/java"
 
 sh -xc "$JAVA CanonicalName $HOST" 2>&1
-if [ $? != 0 ]; then 
+if [ $? != 0 ]; then
     echo "DNS not configured or host doesn't resolve to CNAME record"
     exit 0
 fi
@@ -70,7 +70,7 @@
 go "$np $sm" "$HOST"
 
 
-# 
+#
 # Results
 #
 echo ''
--- a/jdk/test/sun/net/InetAddress/nameservice/simple/CacheTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/sun/net/InetAddress/nameservice/simple/CacheTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/sun/net/InetAddress/nameservice/simple/DefaultCaching.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/sun/net/InetAddress/nameservice/simple/DefaultCaching.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/sun/net/InetAddress/nameservice/simple/SimpleNameService.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/sun/net/InetAddress/nameservice/simple/SimpleNameService.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/sun/net/InetAddress/nameservice/simple/SimpleNameServiceDescriptor.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/sun/net/InetAddress/nameservice/simple/SimpleNameServiceDescriptor.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/sun/security/krb5/auto/Context.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/sun/security/krb5/auto/Context.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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
@@ -44,6 +44,7 @@
 import com.sun.security.jgss.AuthorizationDataEntry;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
+import javax.security.auth.kerberos.KeyTab;
 
 /**
  * Context of a JGSS subject, encapsulating Subject and GSSContext.
@@ -107,15 +108,19 @@
         return out;
     }
 
+    public static Context fromUserPass(
+            String user, char[] pass, boolean storeKey) throws Exception {
+        return fromUserPass(null, user, pass, storeKey);
+    }
     /**
      * Logins with a username and a password, using Krb5LoginModule directly
      * @param storeKey true if key should be saved, used on acceptor side
      */
-    public static Context fromUserPass(String user, char[] pass, boolean storeKey)
-            throws Exception {
+    public static Context fromUserPass(Subject s,
+            String user, char[] pass, boolean storeKey) throws Exception {
         Context out = new Context();
         out.name = user;
-        out.s = new Subject();
+        out.s = s == null ? new Subject() : s;
         Krb5LoginModule krb5 = new Krb5LoginModule();
         Map<String, String> map = new HashMap<>();
         Map<String, Object> shared = new HashMap<>();
@@ -198,12 +203,25 @@
      * @throws java.lang.Exception
      */
     public void startAsServer(final Oid mech) throws Exception {
+        startAsServer(null, mech);
+    }
+
+    /**
+     * Starts as a server with the specified service name
+     * @param name the service name
+     * @param mech GSS mech
+     * @throws java.lang.Exception
+     */
+    public void startAsServer(final String name, final Oid mech) throws Exception {
         doAs(new Action() {
             @Override
             public byte[] run(Context me, byte[] dummy) throws Exception {
                 GSSManager m = GSSManager.getInstance();
                 me.x = (ExtendedGSSContext)m.createContext(m.createCredential(
-                        null,
+                        name == null ? null :
+                          (name.indexOf('@') < 0 ?
+                            m.createName(name, null) :
+                            m.createName(name, GSSName.NT_HOSTBASED_SERVICE)),
                         GSSCredential.INDEFINITE_LIFETIME,
                         mech,
                         GSSCredential.ACCEPT_ONLY));
@@ -230,6 +248,14 @@
     }
 
     /**
+     * Accesses the internal subject.
+     * @return the subject
+     */
+    public Subject s() {
+        return s;
+    }
+
+    /**
      * Disposes the GSSContext within
      * @throws org.ietf.jgss.GSSException
      */
@@ -297,7 +323,7 @@
         } catch (Exception e) {
             ;// Don't care
         }
-        System.out.println("=====================================");
+        System.out.println("====== Private Credentials Set ======");
         for (Object o : s.getPrivateCredentials()) {
             System.out.println("    " + o.getClass());
             if (o instanceof KerberosTicket) {
@@ -315,6 +341,8 @@
                 for (Object k : map.keySet()) {
                     System.out.println("        " + k + ": " + map.get(k));
                 }
+            } else {
+                System.out.println("        " + o);
             }
         }
         if (x != null && x instanceof ExtendedGSSContext) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/krb5/auto/DynamicKeytab.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,140 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 6894072
+ * @run main/othervm DynamicKeytab
+ * @summary always refresh keytab
+ */
+
+import java.io.File;
+import java.io.FileOutputStream;
+import org.ietf.jgss.GSSException;
+import sun.security.jgss.GSSUtil;
+import sun.security.krb5.KrbException;
+import sun.security.krb5.internal.Krb5;
+
+public class DynamicKeytab {
+
+    Context c, s;
+    public static void main(String[] args)
+            throws Exception {
+        new DynamicKeytab().go();
+    }
+
+    void go() throws Exception {
+        OneKDC k = new OneKDC(null);
+        k.writeJAASConf();
+
+        new File(OneKDC.KTAB).delete();
+
+
+        // Starts with no keytab
+        c = Context.fromJAAS("client");
+        s = Context.fromJAAS("com.sun.security.jgss.krb5.accept");
+
+        // Test 1: read new key 1 from keytab
+        k.addPrincipal(OneKDC.SERVER, "pass1".toCharArray());
+        k.writeKtab(OneKDC.KTAB);
+        connect();
+
+        // Test 2: service key cached, find 1 in keytab (now contains 1 and 2)
+        k.addPrincipal(OneKDC.SERVER, "pass2".toCharArray());
+        k.appendKtab(OneKDC.KTAB);
+        connect();
+
+        // Test 3: re-login. Now find 2 in keytab
+        c = Context.fromJAAS("client");
+        connect();
+
+        // Test 4: re-login, KDC use 3 this time.
+        c = Context.fromJAAS("client");
+        // Put 3 and 4 into keytab but keep the real key back to 3.
+        k.addPrincipal(OneKDC.SERVER, "pass3".toCharArray());
+        k.appendKtab(OneKDC.KTAB);
+        k.addPrincipal(OneKDC.SERVER, "pass4".toCharArray());
+        k.appendKtab(OneKDC.KTAB);
+        k.addPrincipal(OneKDC.SERVER, "pass3".toCharArray());
+        connect();
+
+        // Test 5: invalid keytab file, should ignore
+        new FileOutputStream(OneKDC.KTAB).write("BADBADBAD".getBytes());
+        connect();
+
+        // Test 6: delete keytab file, identical to revoke all
+        new File(OneKDC.KTAB).delete();
+        try {
+            connect();
+            throw new Exception("Should not success");
+        } catch (GSSException gsse) {
+            System.out.println(gsse);
+            KrbException ke = (KrbException)gsse.getCause();
+            // KrbApReq.authenticate(*) if (dkey == null)...
+            // This should have been Krb5.KRB_AP_ERR_NOKEY
+            if (ke.returnCode() != Krb5.API_INVALID_ARG) {
+                throw new Exception("Not expected failure code: " +
+                        ke.returnCode());
+            }
+        }
+
+        // Test 7: 3 revoked, should fail (now contains only 5)
+        k.addPrincipal(OneKDC.SERVER, "pass5".toCharArray());
+        k.writeKtab(OneKDC.KTAB);   // overwrite keytab, which means
+                                    // old key is revoked
+        try {
+            connect();
+            throw new Exception("Should not success");
+        } catch (GSSException gsse) {
+            System.out.println(gsse);
+            KrbException ke = (KrbException)gsse.getCause();
+            if (ke.returnCode() != Krb5.KRB_AP_ERR_BADKEYVER) {
+                throw new Exception("Not expected failure code: " +
+                        ke.returnCode());
+            }
+        }
+
+        // Test 8: an empty KDC means revoke all
+        KDC.create("EMPTY.REALM").writeKtab(OneKDC.KTAB);
+        try {
+            connect();
+            throw new Exception("Should not success");
+        } catch (GSSException gsse) {
+            System.out.println(gsse);
+            KrbException ke = (KrbException)gsse.getCause();
+            // KrbApReq.authenticate(*) if (dkey == null)...
+            // This should have been Krb5.KRB_AP_ERR_NOKEY
+            if (ke.returnCode() != Krb5.API_INVALID_ARG) {
+                throw new Exception("Not expected failure code: " +
+                        ke.returnCode());
+            }
+        }
+    }
+
+    void connect() throws Exception {
+        Thread.sleep(2000);     // make sure ktab timestamp is different
+        c.startAsClient(OneKDC.SERVER, GSSUtil.GSS_KRB5_MECH_OID);
+        s.startAsServer(GSSUtil.GSS_KRB5_MECH_OID);
+        Context.handshake(c, s);
+    }
+}
--- a/jdk/test/sun/security/krb5/auto/KDC.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/sun/security/krb5/auto/KDC.java	Wed Apr 20 09:31:11 2011 -0700
@@ -228,7 +228,33 @@
     }
 
     /**
-     * Write all principals' keys from multiple KDCsinto one keytab file.
+     * Writes or appends KDC keys into a keytab. See doc for writeMultiKtab.
+     * @param append true if append, otherwise, overwrite.
+     */
+    private static void writeKtab0(String tab, boolean append, KDC... kdcs)
+            throws IOException, KrbException {
+        KeyTab ktab = append ? KeyTab.getInstance(tab) : KeyTab.create(tab);
+        for (KDC kdc: kdcs) {
+            for (String name : kdc.passwords.keySet()) {
+                char[] pass = kdc.passwords.get(name);
+                int kvno = 0;
+                if (Character.isDigit(pass[pass.length-1])) {
+                    kvno = pass[pass.length-1] - '0';
+                }
+                ktab.addEntry(new PrincipalName(name,
+                        name.indexOf('/') < 0 ?
+                            PrincipalName.KRB_NT_UNKNOWN :
+                            PrincipalName.KRB_NT_SRV_HST),
+                            pass,
+                            kvno,
+                            true);
+            }
+        }
+        ktab.save();
+    }
+
+    /**
+     * Writes all principals' keys from multiple KDCs into one keytab file.
      * Note that the keys for the krbtgt principals will not be written.
      * <p>
      * Attention: This method references krb5.conf settings. If you need to
@@ -252,17 +278,16 @@
      */
     public static void writeMultiKtab(String tab, KDC... kdcs)
             throws IOException, KrbException {
-        KeyTab ktab = KeyTab.create(tab);
-        for (KDC kdc: kdcs) {
-            for (String name : kdc.passwords.keySet()) {
-                ktab.addEntry(new PrincipalName(name,
-                        name.indexOf('/') < 0 ?
-                            PrincipalName.KRB_NT_UNKNOWN :
-                            PrincipalName.KRB_NT_SRV_HST),
-                            kdc.passwords.get(name), -1, true);
-            }
-        }
-        ktab.save();
+        writeKtab0(tab, false, kdcs);
+    }
+
+    /**
+     * Appends all principals' keys from multiple KDCs to one keytab file.
+     * See writeMultiKtab for details.
+     */
+    public static void appendMultiKtab(String tab, KDC... kdcs)
+            throws IOException, KrbException {
+        writeKtab0(tab, true, kdcs);
     }
 
     /**
@@ -273,6 +298,13 @@
     }
 
     /**
+     * Appends keys in this KDC to a ktab.
+     */
+    public void appendKtab(String tab) throws IOException, KrbException {
+        KDC.appendMultiKtab(tab, this);
+    }
+
+    /**
      * Adds a new principal to this realm with a given password.
      * @param user the principal's name. For a service principal, use the
      *        form of host/f.q.d.n
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/krb5/auto/KeyTabCompat.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 6894072
+ * @compile -XDignore.symbol.file KeyTabCompat.java
+ * @run main/othervm KeyTabCompat
+ * @summary always refresh keytab
+ */
+
+import javax.security.auth.kerberos.KerberosKey;
+import sun.security.jgss.GSSUtil;
+
+/*
+ * There are 2 compat issues to check:
+ *
+ * 1. If there is only KerberosKeys in private credential set and no
+ *    KerberosPrincipal. JAAS login should go on.
+ * 2. Even if KeyTab is used, user can still get KerberosKeys from
+ *    private credentials set.
+ */
+public class KeyTabCompat {
+
+    public static void main(String[] args)
+            throws Exception {
+        OneKDC kdc = new OneKDC("aes128-cts");
+        kdc.writeJAASConf();
+        kdc.addPrincipal(OneKDC.SERVER, "pass1".toCharArray());
+        kdc.writeKtab(OneKDC.KTAB);
+
+        Context c, s;
+
+        // Part 1
+        c = Context.fromUserPass(OneKDC.USER, OneKDC.PASS, false);
+        s = Context.fromUserPass(OneKDC.USER2, OneKDC.PASS2, true);
+
+        s.s().getPrincipals().clear();
+
+        c.startAsClient(OneKDC.USER2, GSSUtil.GSS_KRB5_MECH_OID);
+        s.startAsServer(GSSUtil.GSS_KRB5_MECH_OID);
+
+        Context.handshake(c, s);
+
+        // Part 2
+        c = Context.fromJAAS("client");
+        s = Context.fromJAAS("server");
+
+        c.startAsClient(OneKDC.SERVER, GSSUtil.GSS_KRB5_MECH_OID);
+        s.startAsServer(GSSUtil.GSS_KRB5_MECH_OID);
+        s.status();
+
+        if (s.s().getPrivateCredentials(KerberosKey.class).size() != 1) {
+            throw new Exception("There should be one KerberosKey");
+        }
+
+        Thread.sleep(2000);     // make sure ktab timestamp is different
+
+        kdc.addPrincipal(OneKDC.SERVER, "pass2".toCharArray());
+        kdc.writeKtab(OneKDC.KTAB);
+
+        Context.handshake(c, s);
+        s.status();
+
+        if (s.s().getPrivateCredentials(KerberosKey.class).size() != 1) {
+            throw new Exception("There should be only one KerberosKey");
+        }
+
+    }
+}
--- a/jdk/test/sun/security/krb5/auto/LoginModuleOptions.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/sun/security/krb5/auto/LoginModuleOptions.java	Wed Apr 20 09:31:11 2011 -0700
@@ -28,7 +28,6 @@
  * @summary Krb5LoginModule a little too restrictive, and the doc is not clear.
  */
 import com.sun.security.auth.module.Krb5LoginModule;
-import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 import javax.security.auth.Subject;
@@ -36,7 +35,6 @@
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.callback.NameCallback;
 import javax.security.auth.callback.PasswordCallback;
-import javax.security.auth.callback.UnsupportedCallbackException;
 
 public class LoginModuleOptions {
 
@@ -61,10 +59,12 @@
         // 1. ccache -> keytab
         login(null, "useTicketCache", "true", "ticketCache", "krbcc_non_exists",
                 "useKeyTab", "true", "principal", "dummy");
+
         // 2. keytab -> shared
         login(null, "useKeyTab", "true", "principal", "dummy",
                 "keyTab", "ktab_non_exist",
                 "tryFirstPass", "true", NAME, OneKDC.USER, PWD, OneKDC.PASS);
+
         // 3. shared -> callback
         // 3.1. useFirstPass, no callback
         boolean failed = false;
--- a/jdk/test/sun/security/krb5/auto/SSL.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/sun/security/krb5/auto/SSL.java	Wed Apr 20 09:31:11 2011 -0700
@@ -48,7 +48,7 @@
 public class SSL {
 
     private static String krb5Cipher;
-    private static final int LOOP_LIMIT = 1;
+    private static final int LOOP_LIMIT = 3;
     private static int loopCount = 0;
     private static volatile String server;
     private static volatile int port;
@@ -98,13 +98,13 @@
         fos.close();
         f.deleteOnExit();
 
-        final Context c = Context.fromUserPass(OneKDC.USER, OneKDC.PASS, false);
+        Context c;
         final Context s = Context.fromJAAS("ssl");
 
-        c.startAsClient("host/" + server, GSSUtil.GSS_KRB5_MECH_OID);
+        // There's no keytab file when server starts.
         s.startAsServer(GSSUtil.GSS_KRB5_MECH_OID);
 
-        new Thread(new Runnable() {
+        Thread server = new Thread(new Runnable() {
             public void run() {
                 try {
                     s.doAs(new JsseServerAction(), null);
@@ -112,12 +112,57 @@
                     e.printStackTrace();
                 }
             }
-        }).start();
+        });
+        server.setDaemon(true);
+        server.start();
 
         // Warm the server
         Thread.sleep(2000);
 
+        // Now create the keytab
+
+        /*
+        // Add 3 versions of keys into keytab
+        KeyTab ktab = KeyTab.create(OneKDC.KTAB);
+        PrincipalName service = new PrincipalName(
+                "host/" + server, PrincipalName.KRB_NT_SRV_HST);
+        ktab.addEntry(service, "pass1".toCharArray(), 1);
+        ktab.addEntry(service, "pass2".toCharArray(), 2);
+        ktab.addEntry(service, "pass3".toCharArray(), 3);
+        ktab.save();
+
+        // and use the middle one as the  real key
+        kdc.addPrincipal("host/" + server, "pass2".toCharArray());
+         */
+        c = Context.fromUserPass(OneKDC.USER, OneKDC.PASS, false);
+        c.startAsClient("host/" + server, GSSUtil.GSS_KRB5_MECH_OID);
         c.doAs(new JsseClientAction(), null);
+
+        // Add another version of key, make sure it can be loaded
+        Thread.sleep(2000);
+        ktab = KeyTab.getInstance(OneKDC.KTAB);
+        ktab.addEntry(service, "pass4".toCharArray(), 4, true);
+        ktab.save();
+        kdc.addPrincipal("host/" + server, "pass4".toCharArray());
+
+        c = Context.fromUserPass(OneKDC.USER, OneKDC.PASS, false);
+        c.startAsClient("host/" + server, GSSUtil.GSS_KRB5_MECH_OID);
+        c.doAs(new JsseClientAction(), null);
+
+        // Revoke the old key
+        /*Thread.sleep(2000);
+        ktab = KeyTab.create(OneKDC.KTAB);
+        ktab.addEntry(service, "pass5".toCharArray(), 5, false);
+        ktab.save();
+
+        c = Context.fromUserPass(OneKDC.USER, OneKDC.PASS, false);
+        c.startAsClient("host/" + server, GSSUtil.GSS_KRB5_MECH_OID);
+        try {
+            c.doAs(new JsseClientAction(), null);
+            throw new Exception("Should fail this time.");
+        } catch (SSLException e) {
+            // Correct behavior.
+        }*/
     }
 
     // Following codes copied from
@@ -126,6 +171,7 @@
         public byte[] run(Context s, byte[] input) throws Exception {
             SSLSocketFactory sslsf =
                 (SSLSocketFactory) SSLSocketFactory.getDefault();
+            System.out.println("Connecting " + server + ":" + port);
             SSLSocket sslSocket = (SSLSocket) sslsf.createSocket(server, port);
 
             // Enable only a KRB5 cipher suite.
@@ -154,6 +200,9 @@
             System.out.println("Server is: " + peer.toString());
 
             sslSocket.close();
+            // This line should not be needed. It's the server's duty to
+            // forget the old key
+            //sslSocket.getSession().invalidate();
             return null;
         }
     }
@@ -165,6 +214,7 @@
             SSLServerSocket sslServerSocket =
                 (SSLServerSocket) sslssf.createServerSocket(0); // any port
             port = sslServerSocket.getLocalPort();
+            System.out.println("Listening on " + port);
 
             // Enable only a KRB5 cipher suite.
             String enabledSuites[] = {krb5Cipher};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/krb5/auto/TwoPrinces.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 6894072
+ * @compile -XDignore.symbol.file TwoPrinces.java
+ * @run main/othervm TwoPrinces
+ * @summary always refresh keytab
+ */
+
+import java.io.File;
+import java.io.FileOutputStream;
+import sun.security.jgss.GSSUtil;
+import sun.security.krb5.Config;
+
+public class TwoPrinces {
+
+    public static void main(String[] args)
+            throws Exception {
+
+        KDC k1 = KDC.create("R1");
+        k1.addPrincipal("u1", "hello".toCharArray());
+        k1.addPrincipalRandKey("krbtgt/R1");
+        k1.addPrincipalRandKey("host/same.host");
+
+        KDC k2 = KDC.create("R2");
+        k2.addPrincipal("u2", "hello".toCharArray());
+        k2.addPrincipalRandKey("krbtgt/R2");
+        k2.addPrincipalRandKey("host/same.host");
+
+        System.setProperty("java.security.krb5.conf", "krb5.conf");
+
+        // R1 is the default realm now
+        KDC.saveConfig("krb5.conf", k1, k2);
+        Config.refresh();
+
+        k1.writeKtab("ktab1");
+        k2.writeKtab("ktab2");
+
+        // A JAAS config file with 2 Krb5LoginModules, after commit, the
+        // subject with have principals and keytabs from both sides
+        System.setProperty("java.security.auth.login.config", "jaas.conf");
+        File f = new File("jaas.conf");
+        FileOutputStream fos = new FileOutputStream(f);
+        fos.write((
+                "me {\n"
+                + "  com.sun.security.auth.module.Krb5LoginModule required"
+                + "    isInitiator=true principal=\"host/same.host@R1\""
+                + "    useKeyTab=true keyTab=ktab1 storeKey=true;\n"
+                + "  com.sun.security.auth.module.Krb5LoginModule required"
+                + "    isInitiator=true principal=\"host/same.host@R2\""
+                + "    useKeyTab=true keyTab=ktab2 storeKey=true;\n"
+                + "};\n"
+                ).getBytes());
+        fos.close();
+
+        /*
+         * This server side context will be able to act as services in both
+         * realms. Please note that we still don't support a single instance
+         * of server to accept connections from two realms at the same time.
+         * Therefore, we must call startAsServer in a given realm to start
+         * working there. The same Subject never changes anyway.
+         */
+        Context s = Context.fromJAAS("me");
+
+        // Default realm still R1
+        s.startAsServer("host@same.host", GSSUtil.GSS_KRB5_MECH_OID);
+        Context c1 = Context.fromUserPass("u1", "hello".toCharArray(), false);
+        c1.startAsClient("host@same.host", GSSUtil.GSS_KRB5_MECH_OID);
+        Context.handshake(c1, s);
+
+        KDC.saveConfig("krb5.conf", k2, k1);
+        Config.refresh();
+
+        // Default realm now R2
+        s.startAsServer("host@same.host", GSSUtil.GSS_KRB5_MECH_OID);
+        Context c2 = Context.fromUserPass("u2", "hello".toCharArray(), false);
+        c2.startAsClient("host@same.host", GSSUtil.GSS_KRB5_MECH_OID);
+        Context.handshake(c2, s);
+    }
+}
--- a/jdk/test/sun/security/krb5/ktab/KeyTabIndex.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/sun/security/krb5/ktab/KeyTabIndex.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
@@ -44,7 +44,6 @@
                 KeyTab.getInstance("ktab").getClass();
             }
         };
-        KeyTab.refresh();
         for (int i=0; i<10; i++) {
             new Thread(t).start();
         }
--- a/jdk/test/sun/security/krb5/tools/KtabCheck.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/sun/security/krb5/tools/KtabCheck.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/sun/security/pkcs11/Provider/ConfigShortPath.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/sun/security/pkcs11/Provider/ConfigShortPath.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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,27 +22,44 @@
  */
 /**
  * @test
- * @bug 6581254
- * @summary Allow "~" in config to support windows short path
+ * @bug 6581254 6986789
+ * @summary Allow '~' and '+' in config file
  * @author Valerie Peng
  */
 
 import java.security.*;
 import java.io.*;
+import java.lang.reflect.*;
 
 public class ConfigShortPath {
 
-    public static void main(String[] args) {
-        String testSrc = System.getProperty("test.src", ".");
-        String configFile = testSrc + File.separator + "csp.cfg";
-        System.out.println("Testing against " + configFile);
+    private static final String[] configNames = { "csp.cfg", "cspPlus.cfg" };
+
+    public static void main(String[] args) throws Exception {
+        Constructor cons = null;
         try {
-            Provider p = new sun.security.pkcs11.SunPKCS11(configFile);
-        } catch (ProviderException pe) {
-            String cause = pe.getCause().getMessage();
-            if (cause.indexOf("Unexpected token") != -1) {
-                // re-throw to indicate test failure
-                throw pe;
+            Class clazz = Class.forName("sun.security.pkcs11.SunPKCS11");
+            cons = clazz.getConstructor(String.class);
+        } catch (Exception ex) {
+            System.out.println("Skipping test - no PKCS11 provider available");
+            return;
+        }
+        String testSrc = System.getProperty("test.src", ".");
+        for (int i = 0; i < configNames.length; i++) {
+            String configFile = testSrc + File.separator + configNames[i];
+
+            System.out.println("Testing against " + configFile);
+            try {
+                Object obj = cons.newInstance(configFile);
+            } catch (InvocationTargetException ite) {
+                Throwable cause = ite.getCause();
+                if (cause instanceof ProviderException) {
+                    String causeMsg = cause.getCause().getMessage();
+                    // Indicate failure if due to parsing config
+                    if (causeMsg.indexOf("Unexpected token") != -1) {
+                        throw (ProviderException) cause;
+                    }
+                }
             }
         }
     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/pkcs11/Provider/cspPlus.cfg	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,4 @@
+showInfo = false
+name = NSS
+nssSecmodDirectory = /export/local/38289.JDK7.PIT.JSN-TL+7-b112_pit_security_oel5.5-x64-32/results/ResultDir/KeytoolNSS/db
+nssLibraryDirectory = /export/local/common/testbase/7/security/tools/lib/nss/Linux2.6
--- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/CookieHandlerTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/CookieHandlerTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/sun/text/resources/LocaleData	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/sun/text/resources/LocaleData	Wed Apr 20 09:31:11 2011 -0700
@@ -6356,3 +6356,589 @@
 
 # bug 7020960
 CurrencyNames/sr_RS/RSD=\u0434\u0438\u043d.
+
+# bug 7025837
+CurrencyNames/sr-Latn-BA/bam=Bosansko-Hercegova\u010dka konvertibilna marka
+CurrencyNames/sr-Latn-BA/eur=Evro
+CurrencyNames/sr-Latn-ME/eur=Evro
+CurrencyNames/sr-Latn-RS/rsd=Srpski dinar
+
+CurrencyNames//afa=Afghan Afghani (1927-2002)
+CurrencyNames//afn=Afghan Afghani
+CurrencyNames//ang=Netherlands Antillean Guilder
+CurrencyNames//awg=Aruban Florin
+CurrencyNames//azm=Azerbaijani Manat (1993-2006)
+CurrencyNames//azn=Azerbaijani Manat
+CurrencyNames//bbd=Barbadian Dollar
+CurrencyNames//bdt=Bangladeshi Taka
+CurrencyNames//bgn=Bulgarian Lev
+CurrencyNames//bif=Burundian Franc
+CurrencyNames//bob=Bolivian Boliviano
+CurrencyNames//btn=Bhutanese Ngultrum
+CurrencyNames//byb=Belarusian New Ruble (1994-1999)
+CurrencyNames//byr=Belarusian Ruble
+CurrencyNames//cdf=Congolese Franc
+CurrencyNames//clf=Chilean Unit of Account (UF)
+CurrencyNames//cny=Chinese Yuan
+CurrencyNames//crc=Costa Rican Col\u00f3n
+CurrencyNames//csd=Serbian Dinar (2002-2006)
+CurrencyNames//cve=Cape Verdean Escudo
+CurrencyNames//cyp=Cypriot Pound
+CurrencyNames//dem=German Mark
+CurrencyNames//djf=Djiboutian Franc
+CurrencyNames//fjd=Fijian Dollar
+CurrencyNames//ghc=Ghanaian Cedi (1979-2007)
+CurrencyNames//ghs=Ghanaian Cedi
+CurrencyNames//gmd=Gambian Dalasi
+CurrencyNames//gnf=Guinean Franc
+CurrencyNames//gtq=Guatemalan Quetzal
+CurrencyNames//gyd=Guyanaese Dollar
+CurrencyNames//hnl=Honduran Lempira
+CurrencyNames//isk=Icelandic Kr\u00f3na
+CurrencyNames//kgs=Kyrgystani Som
+CurrencyNames//kmf=Comorian Franc
+CurrencyNames//kzt=Kazakhstani Tenge
+CurrencyNames//lkr=Sri Lankan Rupee
+CurrencyNames//ltl=Lithuanian Litas
+CurrencyNames//luf=Luxembourgian Franc
+CurrencyNames//mga=Malagasy Ariary
+CurrencyNames//mgf=Malagasy Franc
+CurrencyNames//mmk=Myanma Kyat
+CurrencyNames//mop=Macanese Pataca
+CurrencyNames//mro=Mauritanian Ouguiya
+CurrencyNames//mur=Mauritian Rupee
+CurrencyNames//mvr=Maldivian Rufiyaa
+CurrencyNames//mwk=Malawian Kwacha
+CurrencyNames//mxv=Mexican Investment Unit
+CurrencyNames//mzm=Mozambican Metical (1980-2006)
+CurrencyNames//mzn=Mozambican Metical
+CurrencyNames//nad=Namibian Dollar
+CurrencyNames//nio=Nicaraguan C\u00f3rdoba
+CurrencyNames//nlg=Dutch Guilder
+CurrencyNames//omr=Omani Rial
+CurrencyNames//pen=Peruvian Nuevo Sol
+CurrencyNames//pgk=Papua New Guinean Kina
+CurrencyNames//pkr=Pakistani Rupee
+CurrencyNames//pyg=Paraguayan Guarani
+CurrencyNames//rol=Romanian Leu (1952-2006)
+CurrencyNames//rsd=Serbian Dinar
+CurrencyNames//scr=Seychellois Rupee
+CurrencyNames//sdd=Sudanese Dinar (1992-2007)
+CurrencyNames//sit=Slovenian Tolar
+CurrencyNames//sll=Sierra Leonean Leone
+CurrencyNames//srd=Surinamese Dollar
+CurrencyNames//srg=Surinamese Guilder
+CurrencyNames//std=S\u00e3o Tom\u00e9 and Pr\u00edncipe Dobra
+CurrencyNames//svc=Salvadoran Col\u00f3n
+CurrencyNames//szl=Swazi Lilangeni
+CurrencyNames//tjs=Tajikistani Somoni
+CurrencyNames//tmm=Turkmenistani Manat (1993-2009)
+CurrencyNames//top=Tongan Pa\u02bbanga
+CurrencyNames//tpe=Timorese Escudo
+CurrencyNames//trl=Turkish Lira (1922-2005)
+CurrencyNames//try=Turkish Lira
+CurrencyNames//twd=New Taiwan Dollar
+CurrencyNames//uyu=Uruguayan Peso
+CurrencyNames//uzs=Uzbekistan Som
+CurrencyNames//veb=Venezuelan Bol\u00edvar (1871-2008)
+CurrencyNames//vef=Venezuelan Bol\u00edvar
+CurrencyNames//wst=Samoan Tala
+CurrencyNames//xxx=Unknown Currency
+CurrencyNames//yum=Yugoslavian New Dinar (1994-2002)
+CurrencyNames//zwd=Zimbabwean Dollar (1980-2008)
+
+# bug 7020583
+CurrencyNames/de/azm=Aserbaidschan-Manat (1993-2006)
+CurrencyNames/de/azn=Aserbaidschan-Manat
+CurrencyNames/de/csd=Alter Serbischer Dinar
+CurrencyNames/de/cyp=Zypern-Pfund
+CurrencyNames/de/esp=Spanische Peseta
+CurrencyNames/de/fjd=Fidschi-Dollar
+CurrencyNames/de/fkp=Falkland-Pfund
+CurrencyNames/de/ghs=Ghanaische Cedi
+CurrencyNames/de/gip=Gibraltar-Pfund
+CurrencyNames/de/gnf=Guinea-Franc
+CurrencyNames/de/gyd=Guyana-Dollar
+CurrencyNames/de/hkd=Hongkong-Dollar
+CurrencyNames/de/itl=Italienische Lira
+CurrencyNames/de/jmd=Jamaika-Dollar
+CurrencyNames/de/kes=Kenia-Schilling
+CurrencyNames/de/mgf=Madagaskar-Franc
+CurrencyNames/de/mur=Mauritius-Rupie
+CurrencyNames/de/mzm=Alter Metical
+CurrencyNames/de/mzn=Metical
+CurrencyNames/de/nad=Namibia-Dollar
+CurrencyNames/de/nzd=Neuseeland-Dollar
+CurrencyNames/de/ron=Rum\u00e4nischer Leu
+CurrencyNames/de/rsd=Serbischer Dinar
+CurrencyNames/de/rwf=Ruanda-Franc
+CurrencyNames/de/sbd=Salomonen-Dollar
+CurrencyNames/de/scr=Seychellen-Rupie
+CurrencyNames/de/sdg=Sudanesisches Pfund
+CurrencyNames/de/sgd=Singapur-Dollar
+CurrencyNames/de/sos=Somalia-Schilling
+CurrencyNames/de/srd=Surinamischer Dollar
+CurrencyNames/de/tpe=Timor-Escudo
+CurrencyNames/de/trl=Alte T\u00fcrkische Lira
+CurrencyNames/de/try=T\u00fcrkische Lira
+CurrencyNames/de/ttd=Trinidad- und Tobago-Dollar
+CurrencyNames/de/twd=Neuer Taiwan-Dollar
+CurrencyNames/de/tzs=Tansania-Schilling
+CurrencyNames/de/ugx=Uganda-Schilling
+CurrencyNames/de/usd=US-Dollar
+CurrencyNames/de/vef=Bol\u00edvar Fuerte
+CurrencyNames/de/xag=Unze Silber
+CurrencyNames/de/xau=Unze Gold
+CurrencyNames/de/xbb=Europ\u00e4ische W\u00e4hrungseinheit (XBB)
+CurrencyNames/de/xpd=Unze Palladium
+CurrencyNames/de/xpt=Unze Platin
+CurrencyNames/de/xts=Testw\u00e4hrung
+CurrencyNames/de/xxx=Unbekannte W\u00e4hrung
+CurrencyNames/de/yer=Jemen-Rial
+CurrencyNames/de/zar=S\u00fcdafrikanischer Rand
+CurrencyNames/de/zwd=Simbabwe-Dollar
+
+CurrencyNames/es/aed=d\u00edrham de los Emiratos \u00c1rabes Unidos
+CurrencyNames/es/azm=manat azer\u00ed (1993-2006)
+CurrencyNames/es/azn=manat azer\u00ed
+CurrencyNames/es/csd=antiguo dinar serbio
+CurrencyNames/es/ghc=cedi ghan\u00e9s (1979-2007)
+CurrencyNames/es/ghs=cedi ghan\u00e9s
+CurrencyNames/es/mzm=antiguo metical mozambique\u00f1o
+CurrencyNames/es/mzn=metical mozambique\u00f1o
+CurrencyNames/es/rsd=dinar serbio
+CurrencyNames/es/sdg=libra sudanesa
+CurrencyNames/es/trl=lira turca antigua
+CurrencyNames/es/vef=bol\u00edvar fuerte venezolano
+
+CurrencyNames/fr/afa=afghani (1927\u20132002)
+CurrencyNames/fr/all=lek albanais
+CurrencyNames/fr/ang=florin antillais
+CurrencyNames/fr/awg=florin arubais
+CurrencyNames/fr/azm=manat az\u00e9ri (1993-2006)
+CurrencyNames/fr/azn=manat az\u00e9ri
+CurrencyNames/fr/bam=mark convertible bosniaque
+CurrencyNames/fr/bbd=dollar barbadien
+CurrencyNames/fr/bdt=taka bangladeshi
+CurrencyNames/fr/bgl=lev bulgare (1962\u20131999)
+CurrencyNames/fr/bgn=nouveau lev bulgare
+CurrencyNames/fr/bhd=dinar bahre\u00efni
+CurrencyNames/fr/bif=franc burundais
+CurrencyNames/fr/bmd=dollar bermudien
+CurrencyNames/fr/bnd=dollar brun\u00e9ien
+CurrencyNames/fr/bov=mvdol bolivien
+CurrencyNames/fr/brl=r\u00e9al br\u00e9silien
+CurrencyNames/fr/bsd=dollar baham\u00e9en
+CurrencyNames/fr/btn=ngultrum bouthanais
+CurrencyNames/fr/bwp=pula botswanais
+CurrencyNames/fr/bzd=dollar b\u00e9liz\u00e9en
+CurrencyNames/fr/cny=yuan renminbi chinois
+CurrencyNames/fr/crc=col\u00f3n costaricain
+CurrencyNames/fr/csd=dinar serbo-mont\u00e9n\u00e9grin
+CurrencyNames/fr/cve=escudo capverdien
+CurrencyNames/fr/cyp=livre chypriote
+CurrencyNames/fr/dem=mark allemand
+CurrencyNames/fr/djf=franc djiboutien
+CurrencyNames/fr/ern=nafka \u00e9rythr\u00e9en
+CurrencyNames/fr/etb=birr \u00e9thiopien
+CurrencyNames/fr/fjd=dollar fidjien
+CurrencyNames/fr/fkp=livre des Falkland
+CurrencyNames/fr/gel=lari g\u00e9orgien
+CurrencyNames/fr/ghs=c\u00e9di ghan\u00e9en
+CurrencyNames/fr/gmd=dalasi gambien
+CurrencyNames/fr/grd=drachme grecque
+CurrencyNames/fr/gtq=quetzal guat\u00e9malt\u00e8que
+CurrencyNames/fr/gwp=peso bissau-guin\u00e9en
+CurrencyNames/fr/hnl=lempira hondurien
+CurrencyNames/fr/hrk=kuna croate
+CurrencyNames/fr/htg=gourde ha\u00eftienne
+CurrencyNames/fr/huf=forint hongrois
+CurrencyNames/fr/idr=roupie indon\u00e9sienne
+CurrencyNames/fr/ils=nouveau shekel isra\u00e9lien
+CurrencyNames/fr/iqd=dinar irakien
+CurrencyNames/fr/jpy=yen japonais
+CurrencyNames/fr/kes=shilling k\u00e9nyan
+CurrencyNames/fr/kgs=som kirghize
+CurrencyNames/fr/khr=riel cambodgien
+CurrencyNames/fr/kmf=franc comorien
+CurrencyNames/fr/kwd=dinar kowe\u00eftien
+CurrencyNames/fr/kzt=tenge kazakh
+CurrencyNames/fr/lak=kip loatien
+CurrencyNames/fr/lkr=roupie srilankaise
+CurrencyNames/fr/lsl=loti lesothan
+CurrencyNames/fr/mga=ariary malgache
+CurrencyNames/fr/mkd=denar mac\u00e9donien
+CurrencyNames/fr/mmk=kyat myanmarais
+CurrencyNames/fr/mnt=tugrik mongol
+CurrencyNames/fr/mop=pataca macanaise
+CurrencyNames/fr/mro=ouguiya mauritanien
+CurrencyNames/fr/mvr=rufiyaa maldivienne
+CurrencyNames/fr/mwk=kwacha malawite
+CurrencyNames/fr/myr=ringgit malais
+CurrencyNames/fr/mzn=metical mozambicain
+CurrencyNames/fr/ngn=naira nig\u00e9rian
+CurrencyNames/fr/nio=c\u00f3rdoba oro nicaraguayen
+CurrencyNames/fr/npr=roupie n\u00e9palaise
+CurrencyNames/fr/pab=balboa panam\u00e9en
+CurrencyNames/fr/pgk=kina papouan-n\u00e9o-guin\u00e9en
+CurrencyNames/fr/pkr=roupie pakistanaise
+CurrencyNames/fr/pln=zloty polonais
+CurrencyNames/fr/pyg=guaran\u00ed paraguayen
+CurrencyNames/fr/qar=rial qatari
+CurrencyNames/fr/ron=leu roumain
+CurrencyNames/fr/rsd=dinar serbe
+CurrencyNames/fr/rub=rouble russe
+CurrencyNames/fr/rur=rouble russe (1991\u20131998)
+CurrencyNames/fr/sbd=dollar des \u00eeles Salomon
+CurrencyNames/fr/sdg=livre soudanaise
+CurrencyNames/fr/sit=tolar slov\u00e8ne
+CurrencyNames/fr/sll=leone sierra-l\u00e9onais
+CurrencyNames/fr/sos=shilling somalien
+CurrencyNames/fr/srg=florin surinamais
+CurrencyNames/fr/std=dobra santom\u00e9en
+CurrencyNames/fr/svc=col\u00f3n salvadorien
+CurrencyNames/fr/szl=lilangeni swazi
+CurrencyNames/fr/thb=baht tha\u00eflandais
+CurrencyNames/fr/tjs=somoni tadjik
+CurrencyNames/fr/tmm=manat turkm\u00e8ne
+CurrencyNames/fr/top=pa\u2019anga tongan
+CurrencyNames/fr/tpe=escudo timorais
+CurrencyNames/fr/ttd=dollar trinidadien
+CurrencyNames/fr/twd=nouveau dollar ta\u00efwanais
+CurrencyNames/fr/tzs=shilling tanzanien
+CurrencyNames/fr/uah=hryvnia ukrainienne
+CurrencyNames/fr/uzs=sum ouzbek
+CurrencyNames/fr/vef=bolivar fuerte v\u00e9n\u00e9zu\u00e9lien
+CurrencyNames/fr/vnd=d\u00f4ng vietnamien
+CurrencyNames/fr/vuv=vatu vanuatuan
+CurrencyNames/fr/wst=tala samoan
+CurrencyNames/fr/xts=(devise de test)
+CurrencyNames/fr/xxx=devise inconnue ou non valide
+CurrencyNames/fr/yer=rial y\u00e9m\u00e9nite
+CurrencyNames/fr/zar=rand sud-africain
+CurrencyNames/fr/zmk=kwacha zambien
+CurrencyNames/fr/zwd=dollar zimbabw\u00e9en
+
+CurrencyNames/it/azm=Manat Azero (1993-2006)
+CurrencyNames/it/ghs=Cedi ghanese
+CurrencyNames/it/iep=Sterlina irlandese
+CurrencyNames/it/mzn=Metical del Mozambico
+CurrencyNames/it/rsd=Dinaro serbo
+CurrencyNames/it/sdg=Sterlina sudanese
+CurrencyNames/it/srd=Dollaro surinamese
+CurrencyNames/it/vef=Bol\u00edvar venezuelano forte
+CurrencyNames/it/xag=Argento
+CurrencyNames/it/xpd=Palladio
+
+CurrencyNames/ja/azm=\u30a2\u30bc\u30eb\u30d0\u30a4\u30b8\u30e3\u30f3 \u30de\u30ca\u30c8 (1993-2006)
+CurrencyNames/ja/azn=\u30a2\u30bc\u30eb\u30d0\u30a4\u30b8\u30e3\u30f3 \u30de\u30ca\u30c8
+CurrencyNames/ja/ghc=\u30ac\u30fc\u30ca \u30bb\u30c7\u30a3 (1979-2007)
+CurrencyNames/ja/ghs=\u30ac\u30fc\u30ca \u30bb\u30c7\u30a3
+CurrencyNames/ja/mzn=\u30e2\u30b6\u30f3\u30d3\u30fc\u30af \u30e1\u30c6\u30a3\u30ab\u30eb
+CurrencyNames/ja/rol=\u30eb\u30fc\u30de\u30cb\u30a2 \u65e7\u30ec\u30a4
+CurrencyNames/ja/ron=\u30eb\u30fc\u30de\u30cb\u30a2 \u30ec\u30a4
+CurrencyNames/ja/rsd=\u30c7\u30a3\u30ca\u30fc\u30eb (\u30bb\u30eb\u30d3\u30a2)
+CurrencyNames/ja/sdg=\u30b9\u30fc\u30c0\u30f3 \u30dd\u30f3\u30c9
+CurrencyNames/ja/srd=\u30b9\u30ea\u30ca\u30e0 \u30c9\u30eb
+CurrencyNames/ja/vef=\u30d9\u30cd\u30ba\u30a8\u30e9 \u30dc\u30ea\u30d0\u30eb\u30d5\u30a8\u30eb\u30c6
+CurrencyNames/ja/xag=\u9280
+CurrencyNames/ja/xpd=\u30d1\u30e9\u30b8\u30a6\u30e0
+CurrencyNames/ja/xpt=\u30d7\u30e9\u30c1\u30ca
+CurrencyNames/ja/xts=\u30c6\u30b9\u30c8\u7528\u901a\u8ca8\u30b3\u30fc\u30c9
+CurrencyNames/ja/xxx=\u4e0d\u660e\u307e\u305f\u306f\u7121\u52b9\u306a\u901a\u8ca8
+CurrencyNames/ja/zmk=\u30b6\u30f3\u30d3\u30a2 \u30af\u30ef\u30c1\u30e3
+
+CurrencyNames/ko/aed=\uc544\ub78d\uc5d0\ubbf8\ub9ac\ud2b8 \ub514\ub974\ud568
+CurrencyNames/ko/ang=\ub124\ub35c\ub780\ub4dc\ub839 \uc548\ud2f8\ub808\uc2a4 \uae38\ub354
+CurrencyNames/ko/azm=\uc544\uc81c\ub974\ubc14\uc774\uc820 \ub9c8\ub098\ud2b8(1993-2006)
+CurrencyNames/ko/azn=\uc544\uc81c\ub974\ubc14\uc774\uc794 \ub9c8\ub098\ud2b8
+CurrencyNames/ko/bov=\ubcfc\ub9ac\ube44\uc544\ub178 Mvdol(\uae30\uae08)
+CurrencyNames/ko/chf=\uc2a4\uc704\uc2a4 \ud504\ub791
+CurrencyNames/ko/clf=\uce60\ub808 UF (Unidades de Fomento)
+CurrencyNames/ko/csd=\uace0 \uc138\ub974\ube44\uc544 \ub514\ub098\ub974
+CurrencyNames/ko/ghc=\uac00\ub098 \uc2dc\ub514 (1979-2007)
+CurrencyNames/ko/ghs=\uac00\ub098 \uc2dc\ub514
+CurrencyNames/ko/mxv=\uba55\uc2dc\ucf54 UDI(Unidad de Inversion)
+CurrencyNames/ko/myr=\ub9d0\ub808\uc774\uc2dc\uc544 \ub9c1\uae43
+CurrencyNames/ko/mzm=\uace0 \ubaa8\uc7a0\ube44\ud06c \uba54\ud2f0\uce7c
+CurrencyNames/ko/mzn=\ubaa8\uc7a0\ube44\ud06c \uba54\ud2f0\uce7c
+CurrencyNames/ko/ron=\ub8e8\ub9c8\ub2c8\uc544 \ub808\uc6b0
+CurrencyNames/ko/rsd=\uc138\ub974\ube44\uc544 \ub514\ub098\ub974
+CurrencyNames/ko/sdg=\uc218\ub2e8 \ud30c\uc6b4\ub4dc
+CurrencyNames/ko/srd=\uc218\ub9ac\ub0a8 \ub2ec\ub7ec
+CurrencyNames/ko/top=\ud1b5\uac00 \ud30c\uc559\uac00
+CurrencyNames/ko/trl=\ud130\ud0a4 \ub9ac\ub77c
+CurrencyNames/ko/try=\uc2e0 \ud130\ud0a4 \ub9ac\ub77c
+CurrencyNames/ko/usn=\ubbf8\uad6d \ub2ec\ub7ec(\ub2e4\uc74c\ub0a0)
+CurrencyNames/ko/uss=\ubbf8\uad6d \ub2ec\ub7ec(\ub2f9\uc77c)
+CurrencyNames/ko/vef=\ubca0\ub124\uc8fc\uc5d8\ub77c \ubcfc\ub9ac\ubc14\ub974 \ud478\uc5d0\ub974\ub5bc
+CurrencyNames/ko/xaf=CFA \ud504\ub791 BEAC
+CurrencyNames/ko/xag=\uc740\ud654
+CurrencyNames/ko/xba=\uc720\ub974\ucf54 (\uc720\ub7fd \ud68c\uacc4 \ub2e8\uc704)
+CurrencyNames/ko/xbb=\uc720\ub7fd \ud1b5\ud654 \ub3d9\ub9f9
+CurrencyNames/ko/xbc=\uc720\ub7fd \uacc4\uc0b0 \ub2e8\uc704 (XBC)
+CurrencyNames/ko/xbd=\uc720\ub7fd \uacc4\uc0b0 \ub2e8\uc704 (XBD)
+CurrencyNames/ko/xof=CFA \ud504\ub791 BCEAO
+CurrencyNames/ko/xpd=\ud314\ub77c\ub4d0
+CurrencyNames/ko/xpf=CFP \ud504\ub791
+CurrencyNames/ko/xpt=\ubc31\uae08
+CurrencyNames/ko/xts=\ud14c\uc2a4\ud2b8 \ud1b5\ud654 \ucf54\ub4dc
+CurrencyNames/ko/xxx=\uc54c\uc218\uc5c6\uac70\ub098 \uc720\ud6a8\ud558\uc9c0\uc54a\uc740 \ud1b5\ud654\ub2e8\uc704
+CurrencyNames/ko/zwd=\uc9d0\ubc14\ube0c\uc6e8 \ub2ec\ub7ec
+
+CurrencyNames/sv/adp=andorransk peseta
+CurrencyNames/sv/aed=F\u00f6renade Arabemiratens dirham
+CurrencyNames/sv/afa=afghani (1927-2002)
+CurrencyNames/sv/afn=afghani
+CurrencyNames/sv/all=albansk lek
+CurrencyNames/sv/amd=armenisk dram
+CurrencyNames/sv/ang=Nederl\u00e4ndska Antillernas gulden
+CurrencyNames/sv/aoa=angolansk kwanza
+CurrencyNames/sv/ars=argentinsk peso
+CurrencyNames/sv/ats=\u00f6sterrikisk schilling
+CurrencyNames/sv/aud=australisk dollar
+CurrencyNames/sv/awg=Aruba-gulden
+CurrencyNames/sv/azm=azerbajdzjansk manat (1993-2006)
+CurrencyNames/sv/azn=azerbajdzjansk manat
+CurrencyNames/sv/bam=bosnisk-hercegovinsk mark (konvertibel)
+CurrencyNames/sv/bbd=Barbados-dollar
+CurrencyNames/sv/bdt=bangladeshisk taka
+CurrencyNames/sv/bef=belgisk franc
+CurrencyNames/sv/bgn=bulgarisk ny lev
+CurrencyNames/sv/bhd=Bahrain-dinar
+CurrencyNames/sv/bif=burundisk franc
+CurrencyNames/sv/bnd=Brunei-dollar
+CurrencyNames/sv/bob=boliviano
+CurrencyNames/sv/bov=boliviansk mvdol
+CurrencyNames/sv/brl=brasiliansk real
+CurrencyNames/sv/bsd=Bahamas-dollar
+CurrencyNames/sv/btn=bhutanesisk ngultrum
+CurrencyNames/sv/bwp=botswansk pula
+CurrencyNames/sv/byb=vitrysk ny rubel (1994-1999)
+CurrencyNames/sv/byr=vitrysk rubel
+CurrencyNames/sv/bzd=belizisk dollar
+CurrencyNames/sv/cad=kanadensisk dollar
+CurrencyNames/sv/cdf=kongolesisk franc
+CurrencyNames/sv/chf=schweizisk franc
+CurrencyNames/sv/clf=chilensk unidad de fomento
+CurrencyNames/sv/clp=chilensk peso
+CurrencyNames/sv/cny=kinesisk yuan renminbi
+CurrencyNames/sv/cop=colombiansk peso
+CurrencyNames/sv/crc=costarikansk col\u00f3n
+CurrencyNames/sv/csd=jugoslavisk dinar
+CurrencyNames/sv/cup=kubansk peso
+CurrencyNames/sv/cve=kapverdisk escudo
+CurrencyNames/sv/cyp=cypriotiskt pund
+CurrencyNames/sv/czk=tjeckisk koruna
+CurrencyNames/sv/dem=tysk mark
+CurrencyNames/sv/djf=djiboutisk franc
+CurrencyNames/sv/dkk=dansk krona
+CurrencyNames/sv/dop=dominikansk peso
+CurrencyNames/sv/dzd=algerisk dinar
+CurrencyNames/sv/eek=estnisk krona
+CurrencyNames/sv/egp=egyptiskt pund
+CurrencyNames/sv/ern=eritreansk nakfa
+CurrencyNames/sv/esp=spansk peseta
+CurrencyNames/sv/etb=etiopisk birr
+CurrencyNames/sv/eur=euro
+CurrencyNames/sv/fim=finsk mark
+CurrencyNames/sv/fjd=Fiji-dollar
+CurrencyNames/sv/frf=fransk franc
+CurrencyNames/sv/gbp=brittiskt pund sterling
+CurrencyNames/sv/gel=georgisk lari
+CurrencyNames/sv/ghc=ghanansk cedi (1979-2007)
+CurrencyNames/sv/ghs=ghanansk cedi
+CurrencyNames/sv/gip=gibraltiskt pund
+CurrencyNames/sv/gmd=gambisk dalasi
+CurrencyNames/sv/gnf=guineansk franc
+CurrencyNames/sv/grd=grekisk drachma
+CurrencyNames/sv/gtq=guatemalansk quetzal
+CurrencyNames/sv/gyd=guyanansk dollar
+CurrencyNames/sv/hnl=honduransk lempira
+CurrencyNames/sv/hrk=kroatisk kuna
+CurrencyNames/sv/htg=haitisk gourde
+CurrencyNames/sv/huf=ungersk forint
+CurrencyNames/sv/idr=indonesisk rupiah
+CurrencyNames/sv/iep=irl\u00e4ndskt pund
+CurrencyNames/sv/ils=israelisk ny shekel
+CurrencyNames/sv/inr=indisk rupie
+CurrencyNames/sv/iqd=irakisk dinar
+CurrencyNames/sv/irr=iransk rial
+CurrencyNames/sv/isk=isl\u00e4ndsk krona
+CurrencyNames/sv/itl=italiensk lira
+CurrencyNames/sv/jmd=Jamaica-dollar
+CurrencyNames/sv/jod=jordansk dinar
+CurrencyNames/sv/jpy=japansk yen
+CurrencyNames/sv/kes=kenyansk shilling
+CurrencyNames/sv/kgs=kirgizisk som
+CurrencyNames/sv/khr=kambodjansk riel
+CurrencyNames/sv/kmf=komorisk franc
+CurrencyNames/sv/kpw=nordkoreansk won
+CurrencyNames/sv/krw=sydkoreansk won
+CurrencyNames/sv/kwd=kuwaitisk dinar
+CurrencyNames/sv/kzt=kazakisk tenge
+CurrencyNames/sv/lak=laotisk kip
+CurrencyNames/sv/lbp=libanesiskt pund
+CurrencyNames/sv/lkr=srilankesisk rupie
+CurrencyNames/sv/lrd=Liberia-dollar
+CurrencyNames/sv/lsl=lesothisk loti
+CurrencyNames/sv/ltl=litauisk litas
+CurrencyNames/sv/luf=luxemburgsk franc
+CurrencyNames/sv/lvl=lettisk lats
+CurrencyNames/sv/lyd=libysk dinar
+CurrencyNames/sv/mad=marockansk dirham
+CurrencyNames/sv/mdl=moldavisk leu
+CurrencyNames/sv/mga=madagaskisk ariary
+CurrencyNames/sv/mgf=madagaskisk franc
+CurrencyNames/sv/mkd=makedonisk denar
+CurrencyNames/sv/mmk=myanmarisk kyat
+CurrencyNames/sv/mnt=mongolisk tugrik
+CurrencyNames/sv/mop=Macao-pataca
+CurrencyNames/sv/mro=mauretansk ouguiya
+CurrencyNames/sv/mtl=maltesisk lira
+CurrencyNames/sv/mur=mauritisk rupie
+CurrencyNames/sv/mvr=maldivisk rufiyaa
+CurrencyNames/sv/mwk=malawisk kwacha
+CurrencyNames/sv/mxn=mexikansk peso
+CurrencyNames/sv/mxv=mexikansk unidad de inversion
+CurrencyNames/sv/myr=malaysisk ringgit
+CurrencyNames/sv/mzm=gammal mo\u00e7ambikisk metical
+CurrencyNames/sv/mzn=mo\u00e7ambikisk metical
+CurrencyNames/sv/nad=Namibia-dollar
+CurrencyNames/sv/ngn=nigeriansk naira
+CurrencyNames/sv/nio=nicaraguansk c\u00f3rdoba oro
+CurrencyNames/sv/nlg=nederl\u00e4ndsk gulden
+CurrencyNames/sv/nok=norsk krona
+CurrencyNames/sv/npr=nepalesisk rupie
+CurrencyNames/sv/nzd=nyzeel\u00e4ndsk dollar
+CurrencyNames/sv/omr=omansk rial
+CurrencyNames/sv/pab=panamansk balboa
+CurrencyNames/sv/pen=peruansk sol nuevo
+CurrencyNames/sv/pgk=papuansk kina
+CurrencyNames/sv/php=filippinsk peso
+CurrencyNames/sv/pkr=pakistansk rupie
+CurrencyNames/sv/pln=polsk zloty
+CurrencyNames/sv/pte=portugisisk escudo
+CurrencyNames/sv/pyg=paraguaysk guarani
+CurrencyNames/sv/qar=qatarisk rial
+CurrencyNames/sv/rol=gammal rum\u00e4nsk leu
+CurrencyNames/sv/ron=rum\u00e4nsk leu
+CurrencyNames/sv/rsd=Serbisk dinar
+CurrencyNames/sv/rub=rysk rubel
+CurrencyNames/sv/rur=rysk rubel (1991-1998)
+CurrencyNames/sv/rwf=rwandisk franc
+CurrencyNames/sv/sar=saudisk riyal
+CurrencyNames/sv/scr=seychellisk rupie
+CurrencyNames/sv/sdd=sudanesisk dinar
+CurrencyNames/sv/sdg=sudanesiskt pund
+CurrencyNames/sv/sek=svensk krona
+CurrencyNames/sv/sgd=Singapore-dollar
+CurrencyNames/sv/sit=slovensk tolar
+CurrencyNames/sv/skk=slovakisk koruna
+CurrencyNames/sv/sll=sierraleonsk leone
+CurrencyNames/sv/sos=somalisk shilling
+CurrencyNames/sv/srd=Surinam-dollar
+CurrencyNames/sv/srg=surinamesisk gulden
+CurrencyNames/sv/svc=salvadoransk col\u00f3n
+CurrencyNames/sv/syp=syriskt pund
+CurrencyNames/sv/szl=swazil\u00e4ndsk lilangeni
+CurrencyNames/sv/thb=thail\u00e4ndsk baht
+CurrencyNames/sv/tjs=tadzjikisk somoni
+CurrencyNames/sv/tmm=turkmensk manat
+CurrencyNames/sv/tnd=tunisisk dinar
+CurrencyNames/sv/top=tongansk pa\u02bbanga
+CurrencyNames/sv/tpe=timoriansk escudo
+CurrencyNames/sv/trl=gammal turkisk lira
+CurrencyNames/sv/try=ny turkisk lira
+CurrencyNames/sv/ttd=Trinidad ochTobago-dollar
+CurrencyNames/sv/twd=taiwanesisk ny dollar
+CurrencyNames/sv/tzs=tanzanisk shilling
+CurrencyNames/sv/uah=ukrainsk hryvnia
+CurrencyNames/sv/ugx=ugandisk shilling
+CurrencyNames/sv/uyu=uruguayansk peso
+CurrencyNames/sv/uzs=uzbekisk sum
+CurrencyNames/sv/veb=venezuelansk bolivar
+CurrencyNames/sv/vef=venezuelansk bolivar fuerte
+CurrencyNames/sv/vnd=vietnamesisk dong
+CurrencyNames/sv/vuv=vanuatisk vatu
+CurrencyNames/sv/wst=v\u00e4stsamoansk tala
+CurrencyNames/sv/xag=silver
+CurrencyNames/sv/xau=guld
+CurrencyNames/sv/xba=europeisk kompositenhet
+CurrencyNames/sv/xbb=europeisk monet\u00e4r enhet
+CurrencyNames/sv/xbc=europeisk kontoenhet (XBC)
+CurrencyNames/sv/xbd=europeisk kontoenhet (XBD)
+CurrencyNames/sv/xcd=\u00f6stkaribisk dollar
+CurrencyNames/sv/xdr=IMF s\u00e4rskild dragningsr\u00e4tt
+CurrencyNames/sv/xfo=fransk guldfranc
+CurrencyNames/sv/xpd=palladium
+CurrencyNames/sv/xpt=platina
+CurrencyNames/sv/xts=test-valutakod
+CurrencyNames/sv/xxx=ok\u00e4nd eller ogiltig valuta
+CurrencyNames/sv/yer=jemenitisk rial
+CurrencyNames/sv/yum=jugoslavisk ny dinar
+CurrencyNames/sv/zar=sydafrikansk rand
+CurrencyNames/sv/zmk=zambisk kwacha
+CurrencyNames/sv/zwd=Zimbabwe-dollar
+
+CurrencyNames/zh_CN/ang=\u8377\u5170\u5b89\u66ff\u5170\u76fe
+CurrencyNames/zh_CN/azm=\u963f\u585e\u62dc\u7586\u9a6c\u7eb3\u7279 (1993-2006)
+CurrencyNames/zh_CN/azn=\u963f\u585e\u62dc\u7586\u9a6c\u7eb3\u7279
+CurrencyNames/zh_CN/csd=\u65e7\u585e\u5c14\u7ef4\u4e9a\u7b2c\u7eb3\u5c14
+CurrencyNames/zh_CN/ghs=\u52a0\u7eb3\u585e\u5730
+CurrencyNames/zh_CN/mzm=\u65e7\u83ab\u6851\u6bd4\u514b\u7f8e\u63d0\u5361
+CurrencyNames/zh_CN/mzn=\u83ab\u6851\u6bd4\u514b\u7f8e\u63d0\u5361
+CurrencyNames/zh_CN/ron=\u7f57\u9a6c\u5c3c\u4e9a\u5217\u4f0a
+CurrencyNames/zh_CN/rsd=\u585e\u5c14\u7ef4\u4e9a\u7b2c\u7eb3\u5c14
+CurrencyNames/zh_CN/shp=\u5723\u8d6b\u52d2\u62ff\u7fa4\u5c9b\u78c5
+CurrencyNames/zh_CN/twd=\u65b0\u53f0\u5e01
+CurrencyNames/zh_CN/vef=\u59d4\u5185\u745e\u62c9\u5f3a\u52bf\u73bb\u5229\u74e6
+CurrencyNames/zh_CN/xxx=\u8d27\u5e01\u672a\u77e5\u6216\u65e0\u6548
+
+CurrencyNames/zh_TW/afa=\u963f\u5bcc\u6c57\u5c3c (1927-2002)
+CurrencyNames/zh_TW/ang=\u53e4\u82f1\u6587
+CurrencyNames/zh_TW/azm=\u4e9e\u585e\u62dc\u7136\u99ac\u7d0d\u7279 (1993-2006)
+CurrencyNames/zh_TW/azn=\u4e9e\u585e\u62dc\u7136\u99ac\u7d0d\u7279
+CurrencyNames/zh_TW/bwp=\u6ce2\u672d\u90a3\u666e\u62c9
+CurrencyNames/zh_TW/bzd=\u8c9d\u91cc\u65af\u5143
+CurrencyNames/zh_TW/csd=\u65e7\u585e\u5c14\u7ef4\u4e9a\u7b2c\u7eb3\u5c14
+CurrencyNames/zh_TW/cyp=\u8cfd\u666e\u52d2\u65af\u938a
+CurrencyNames/zh_TW/ghc=\u8fe6\u7d0d\u4ed9\u8515 (1979-2007)
+CurrencyNames/zh_TW/ghs=\u8fe6\u7d0d\u4ed9\u8515
+CurrencyNames/zh_TW/gwp=\u5e7e\u5167\u4e9e\u6bd4\u7d22\u62ab\u7d22
+CurrencyNames/zh_TW/huf=\u5308\u7259\u5229\u798f\u6797
+CurrencyNames/zh_TW/idr=\u5370\u5c3c\u76fe
+CurrencyNames/zh_TW/inr=\u5370\u5ea6\u76e7\u6bd4
+CurrencyNames/zh_TW/kpw=\u5317\u97d3\u571c
+CurrencyNames/zh_TW/krw=\u97d3\u571c
+CurrencyNames/zh_TW/lak=\u8001\u631d\u57fa\u666e
+CurrencyNames/zh_TW/mad=\u6469\u6d1b\u54e5\u8fea\u62c9\u59c6
+CurrencyNames/zh_TW/mxn=\u58a8\u897f\u54e5\u62ab\u7d22
+CurrencyNames/zh_TW/mxv=\u58a8\u897f\u54e5 Unidad de Inversion (UDI)\uff08\u8d44\u91d1\uff09
+CurrencyNames/zh_TW/myr=\u99ac\u4f86\u897f\u4e9e\u4ee4\u5409
+CurrencyNames/zh_TW/mzn=\u83ab\u4e09\u6bd4\u514b\u7f8e\u63d0\u5361
+CurrencyNames/zh_TW/nio=\u5c3c\u52a0\u62c9\u74dc\u91d1\u79d1\u591a\u5df4
+CurrencyNames/zh_TW/rol=\u65e7\u7f57\u9a6c\u5c3c\u4e9a\u5217\u4f0a
+CurrencyNames/zh_TW/ron=\u7f85\u99ac\u5c3c\u4e9e\u5217\u4f0a
+CurrencyNames/zh_TW/rsd=\u585e\u723e\u7dad\u4e9e\u6234\u7d0d
+CurrencyNames/zh_TW/scr=\u585e\u5e2d\u723e\u76e7\u6bd4
+CurrencyNames/zh_TW/sdg=\u8607\u4e39\u938a
+CurrencyNames/zh_TW/shp=\u5723\u8d6b\u52d2\u62ff\u7fa4\u5c9b\u78c5
+CurrencyNames/zh_TW/srd=\u82cf\u91cc\u5357\u5143
+CurrencyNames/zh_TW/srg=\u8607\u5229\u5357\u57fa\u723e
+CurrencyNames/zh_TW/svc=\u8428\u5c14\u74e6\u591a\u79d1\u6717
+CurrencyNames/zh_TW/szl=\u65af\u5a01\u58eb\u5170\u91cc\u5170\u5409\u5c3c
+CurrencyNames/zh_TW/tpe=\u5e1d\u6c76\u57c3\u65af\u5e93\u591a
+CurrencyNames/zh_TW/ttd=\u7279\u7acb\u5c3c\u8fbe\u548c\u591a\u5df4\u54e5\u5143
+CurrencyNames/zh_TW/tzs=\u5766\u6851\u5c3c\u4e9a\u5148\u4ee4
+CurrencyNames/zh_TW/uzs=\u70cf\u8332\u5225\u514b\u7d22\u59c6
+CurrencyNames/zh_TW/veb=\u59d4\u5167\u745e\u62c9\u73bb\u5229\u74e6
+CurrencyNames/zh_TW/vef=\u59d4\u5167\u745e\u62c9\u5f37\u52e2\u73bb\u5229\u74e6
+CurrencyNames/zh_TW/xaf=\u897f\u975e\u6cd5\u90ce BEAC
+CurrencyNames/zh_TW/xag=XAG
+CurrencyNames/zh_TW/xof=\u897f\u975e\u6cd5\u90ce BCEAO
+CurrencyNames/zh_TW/xpd=\u94af
+CurrencyNames/zh_TW/xpt=\u94c2
+CurrencyNames/zh_TW/xts=XTS
+CurrencyNames/zh_TW/xxx=XXX
+CurrencyNames/zh_TW/yer=\u8449\u9580\u91cc\u96c5
--- a/jdk/test/sun/text/resources/LocaleDataTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/sun/text/resources/LocaleDataTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
@@ -33,7 +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 6998391 7019267 7020960
+ *      6919624 6998391 7019267 7020960 7025837 7020583
  * @summary Verify locale data
  *
  */
--- a/jdk/test/sun/tools/native2ascii/Native2AsciiTests.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/sun/tools/native2ascii/Native2AsciiTests.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,7 +1,7 @@
 #! /bin/sh -e
 
 #
-# Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/tools/launcher/Arrrghs.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/tools/launcher/Arrrghs.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
--- a/jdk/test/tools/launcher/ClassPathWildCard.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/tools/launcher/ClassPathWildCard.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -6,7 +6,7 @@
 # @author Kumar Srinivasan 
 
 #
-# Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2010, Oracle and/or its affiliates. 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
--- a/jdk/test/tools/launcher/MiscTests.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/jdk/test/tools/launcher/MiscTests.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/langtools/.hgtags	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/.hgtags	Wed Apr 20 09:31:11 2011 -0700
@@ -110,3 +110,5 @@
 e77e98f936e83d94c9b56cc7af218dc822a06122 jdk7-b133
 3d7acdbb72cab55deedfd35f60d4732abc9d6ac4 jdk7-b134
 9d0a61ac567b983da7cc8f4a7030f2245bb6dbab jdk7-b135
+ed0f7f1f9511db4f9615b1426d22f8b961629275 jdk7-b136
+a15c9b058ae007d4ccb7e35ce44e4dfa977f090b jdk7-b137
--- a/langtools/make/build.xml	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/make/build.xml	Wed Apr 20 09:31:11 2011 -0700
@@ -806,6 +806,9 @@
                         <exclude name="**/*.java"/>
                         <exclude name="**/*.properties"/>
                         <exclude name="**/*-template"/>
+                        <exclude name="**/*.rej"/>
+                        <exclude name="**/*.orig"/>
+                        <exclude name="**/overview.html"/>
                         <exclude name="**/package.html"/>
                     </fileset>
                 </copy>
--- a/langtools/make/netbeans/langtools/build.xml	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/make/netbeans/langtools/build.xml	Wed Apr 20 09:31:11 2011 -0700
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
 
  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions
--- a/langtools/make/tools/GenStubs/GenStubs.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/make/tools/GenStubs/GenStubs.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2010, Oracle and/or its affiliates. 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
--- a/langtools/src/share/bin/launcher.sh-template	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/bin/launcher.sh-template	Wed Apr 20 09:31:11 2011 -0700
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# Copyright (c) 2006, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2006, 2011, Oracle and/or its affiliates. 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
--- a/langtools/src/share/classes/com/sun/tools/apt/resources/apt_ja.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/apt/resources/apt_ja.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/langtools/src/share/classes/com/sun/tools/apt/resources/apt_zh_CN.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/apt/resources/apt_zh_CN.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/langtools/src/share/classes/com/sun/tools/classfile/Type.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/classfile/Type.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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,6 +41,11 @@
  */
 public abstract class Type {
     protected Type() { }
+
+    public boolean isObject() {
+        return false;
+    }
+
     public abstract <R,D> R accept(Visitor<R,D> visitor, D data);
 
     protected static void append(StringBuilder sb, String prefix, List<? extends Type> types, String suffix) {
@@ -262,6 +267,13 @@
             return sb.toString();
         }
 
+        @Override
+        public boolean isObject() {
+            return (outerType == null)
+                    && name.equals("java/lang/Object")
+                    && (typeArgs == null || typeArgs.isEmpty());
+        }
+
         public final ClassType outerType;
         public final String name;
         public final List<Type> typeArgs;
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeWriterImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeWriterImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
@@ -154,8 +154,8 @@
         div.addStyle(HtmlStyle.header);
         if (pkgname.length() > 0) {
             Content pkgNameContent = new StringContent(pkgname);
-            Content pkgNamePara = HtmlTree.P(HtmlStyle.subTitle, pkgNameContent);
-            div.addContent(pkgNamePara);
+            Content pkgNameDiv = HtmlTree.DIV(HtmlStyle.subTitle, pkgNameContent);
+            div.addContent(pkgNameDiv);
         }
         LinkInfoImpl linkInfo = new LinkInfoImpl(
                 LinkInfoImpl.CONTEXT_CLASS_HEADER, annotationType, false);
@@ -216,12 +216,15 @@
         pre.addContent(modifiers);
         LinkInfoImpl linkInfo = new LinkInfoImpl(
                 LinkInfoImpl.CONTEXT_CLASS_SIGNATURE, annotationType, false);
-        Content name = new RawHtml (annotationType.name() +
-                getTypeParameterLinks(linkInfo));
+        Content annotationName = new StringContent(annotationType.name());
+        Content parameterLinks = new RawHtml(getTypeParameterLinks(linkInfo));
         if (configuration().linksource) {
-            addSrcLink(annotationType, name, pre);
+            addSrcLink(annotationType, annotationName, pre);
+            pre.addContent(parameterLinks);
         } else {
-            pre.addContent(HtmlTree.STRONG(name));
+            Content span = HtmlTree.SPAN(HtmlStyle.strong, annotationName);
+            span.addContent(parameterLinks);
+            pre.addContent(span);
         }
         annotationInfoTree.addContent(pre);
     }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/ClassWriterImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/ClassWriterImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -161,8 +161,8 @@
         div.addStyle(HtmlStyle.header);
         if (pkgname.length() > 0) {
             Content pkgNameContent = new StringContent(pkgname);
-            Content pkgNamePara = HtmlTree.P(HtmlStyle.subTitle, pkgNameContent);
-            div.addContent(pkgNamePara);
+            Content pkgNameDiv = HtmlTree.DIV(HtmlStyle.subTitle, pkgNameContent);
+            div.addContent(pkgNameDiv);
         }
         LinkInfoImpl linkInfo = new LinkInfoImpl( LinkInfoImpl.CONTEXT_CLASS_HEADER,
                 classDoc, false);
@@ -228,12 +228,15 @@
                 LinkInfoImpl.CONTEXT_CLASS_SIGNATURE, classDoc, false);
         //Let's not link to ourselves in the signature.
         linkInfo.linkToSelf = false;
-        Content name = new RawHtml (classDoc.name() +
-                getTypeParameterLinks(linkInfo));
+        Content className = new StringContent(classDoc.name());
+        Content parameterLinks = new RawHtml(getTypeParameterLinks(linkInfo));
         if (configuration().linksource) {
-            addSrcLink(classDoc, name, pre);
+            addSrcLink(classDoc, className, pre);
+            pre.addContent(parameterLinks);
         } else {
-            pre.addContent(HtmlTree.STRONG(name));
+            Content span = HtmlTree.SPAN(HtmlStyle.strong, className);
+            span.addContent(parameterLinks);
+            pre.addContent(span);
         }
         if (!isInterface) {
             Type superclass = Util.getFirstVisibleSuperClass(classDoc,
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/FrameOutputWriter.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/FrameOutputWriter.java	Wed Apr 20 09:31:11 2011 -0700
@@ -114,13 +114,10 @@
         Content noframesHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
                 getResource("doclet.Frame_Alert"));
         noframes.addContent(noframesHead);
-        Content p = HtmlTree.P(getResource("doclet.Frame_Warning_Message"));
+        Content p = HtmlTree.P(getResource("doclet.Frame_Warning_Message",
+                getHyperLinkString(configuration.topFile,
+                configuration.getText("doclet.Non_Frame_Version"))));
         noframes.addContent(p);
-        noframes.addContent(new HtmlTree(HtmlTag.BR));
-        noframes.addContent(getResource("doclet.Link_To"));
-        Content link = getHyperLink(configuration.topFile,
-                getResource("doclet.Non_Frame_Version"));
-        noframes.addContent(link);
         contentTree.addContent(noframes);
     }
 
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/HelpWriter.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/HelpWriter.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
@@ -96,7 +96,7 @@
         Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, false, HtmlStyle.title,
                 getResource("doclet.Help_line_1"));
         Content div = HtmlTree.DIV(HtmlStyle.header, heading);
-        Content line2 = HtmlTree.P(HtmlStyle.subTitle,
+        Content line2 = HtmlTree.DIV(HtmlStyle.subTitle,
                 getResource("doclet.Help_line_2"));
         div.addContent(line2);
         contentTree.addContent(div);
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/LinkFactoryImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/LinkFactoryImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
@@ -69,9 +69,6 @@
         StringBuffer label = new StringBuffer(
             classLinkInfo.getClassLinkLabel(m_writer.configuration));
         classLinkInfo.displayLength += label.length();
-        if (noLabel && classLinkInfo.excludeTypeParameterLinks) {
-            label.append(getTypeParameterLinks(linkInfo).toString());
-        }
         Configuration configuration = ConfigurationImpl.getInstance();
         LinkOutputImpl linkOutput = new LinkOutputImpl();
         if (classDoc.isIncluded()) {
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/LinkInfoImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/LinkInfoImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
@@ -408,10 +408,6 @@
 
             case CONTEXT_PACKAGE:
             case CONTEXT_CLASS_USE:
-                excludeTypeBoundsLinks = true;
-                excludeTypeParameterLinks = true;
-                break;
-
             case CONTEXT_CLASS_HEADER:
             case CONTEXT_CLASS_SIGNATURE:
                 excludeTypeParameterLinks = true;
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexWriter.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexWriter.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -163,10 +163,10 @@
      */
     protected void addOverviewHeader(Content body) {
         if (root.inlineTags().length > 0) {
-            HtmlTree p = new HtmlTree(HtmlTag.P);
-            p.addStyle(HtmlStyle.subTitle);
-            addSummaryComment(root, p);
-            Content div = HtmlTree.DIV(HtmlStyle.header, p);
+            HtmlTree subTitleDiv = new HtmlTree(HtmlTag.DIV);
+            subTitleDiv.addStyle(HtmlStyle.subTitle);
+            addSummaryComment(root, subTitleDiv);
+            Content div = HtmlTree.DIV(HtmlStyle.header, subTitleDiv);
             Content see = seeLabel;
             see.addContent(" ");
             Content descPara = HtmlTree.P(see);
@@ -188,10 +188,10 @@
     protected void addOverviewComment(Content htmltree) {
         if (root.inlineTags().length > 0) {
             htmltree.addContent(getMarkerAnchor("overview_description"));
-            HtmlTree p = new HtmlTree(HtmlTag.P);
-            p.addStyle(HtmlStyle.subTitle);
-            addInlineComment(root, p);
-            htmltree.addContent(p);
+            HtmlTree div = new HtmlTree(HtmlTag.DIV);
+            div.addStyle(HtmlStyle.subTitle);
+            addInlineComment(root, div);
+            htmltree.addContent(div);
         }
     }
 
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageWriterImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageWriterImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -115,10 +115,10 @@
         tHeading.addContent(packageHead);
         div.addContent(tHeading);
         if (packageDoc.inlineTags().length > 0 && ! configuration.nocomment) {
-            HtmlTree p = new HtmlTree(HtmlTag.P);
-            p.addStyle(HtmlStyle.subTitle);
-            addSummaryComment(packageDoc, p);
-            div.addContent(p);
+            HtmlTree subTitleDiv = new HtmlTree(HtmlTag.DIV);
+            subTitleDiv.addStyle(HtmlStyle.subTitle);
+            addSummaryComment(packageDoc, subTitleDiv);
+            div.addContent(subTitleDiv);
             Content space = getSpace();
             Content descLink = getHyperLink("", "package_description",
                     descriptionLabel, "", "");
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlTree.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlTree.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlWriter.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlWriter.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
@@ -188,8 +188,8 @@
         nextclassLabel = getResource("doclet.Next_Class");
         summaryLabel = getResource("doclet.Summary");
         detailLabel = getResource("doclet.Detail");
-        framesLabel = getResource("doclet.FRAMES");
-        noframesLabel = getResource("doclet.NO_FRAMES");
+        framesLabel = getResource("doclet.Frames");
+        noframesLabel = getResource("doclet.No_Frames");
         treeLabel = getResource("doclet.Tree");
         classLabel = getResource("doclet.Class");
         deprecatedLabel = getResource("doclet.navDeprecated");
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -11,54 +11,30 @@
 doclet.Interface_Hierarchy=Interface Hierarchy
 doclet.Enum_Hierarchy=Enum Hierarchy
 doclet.Annotation_Type_Hierarchy=Annotation Type Hierarchy
-# The following ALL CAPS words should be translated. It is used as "Previous" link on javadoc.
-doclet.Prev=PREV
-# The following ALL CAPS words should be translated. It is used as "Next" link on javadoc.
-doclet.Next=NEXT
-# The following ALL CAPS words should be translated. It is used as "Previous Class" link on javadoc.
-doclet.Prev_Class=PREV CLASS
-# The following ALL CAPS words should be translated. It is used as "Next Class" link on javadoc.
-doclet.Next_Class=NEXT CLASS
-# The following ALL CAPS words should be translated. It is used as "Previous Package" link on javadoc.
-doclet.Prev_Package=PREV PACKAGE
-# The following ALL CAPS words should be translated. It is used as "Next Package" link on javadoc.
-doclet.Next_Package=NEXT PACKAGE
-# The following ALL CAPS words should be translated. It is used as "Previous Letter" link on javadoc alphabetical index.
-doclet.Prev_Letter=PREV LETTER
-# The following ALL CAPS words should be translated. It is used as "Next Letter" link on javadoc alphabetical index.
-doclet.Next_Letter=NEXT LETTER
-# The following ALL CAPS words should be translated. It is used as "Show List" link on javadoc.
-doclet.Show_Lists=SHOW LISTS
-# The following ALL CAPS words should be translated. It is used as "Hide List" link on javadoc.
-doclet.Hide_Lists=HIDE LISTS
+doclet.Prev=Prev
+doclet.Next=Next
+doclet.Prev_Class=Prev Class
+doclet.Next_Class=Next Class
+doclet.Prev_Package=Prev Package
+doclet.Next_Package=Next Package
+doclet.Prev_Letter=Prev Letter
+doclet.Next_Letter=Next Letter
 doclet.Href_Class_Title=class in {0}
 doclet.Href_Interface_Title=interface in {0}
 doclet.Href_Annotation_Title=annotation in {0}
 doclet.Href_Enum_Title=enum in {0}
 doclet.Href_Type_Param_Title=type parameter in {0}
 doclet.Href_Class_Or_Interface_Title=class or interface in {0}
-# The following ALL CAPS words should be translated. It's used as SUMMARY: NESTED | FIELD | CONSTR | METHOD, meaning Nested Class Summary, Field Summary, Constructor Summary, or Method Summary.
-doclet.Summary=SUMMARY:
-# The following ALL CAPS words should be translated. It is used as DETAIL: FIELD | CONSTR | METHOD, meaning Field Detail, Constructor Detail, or Method Detail.
-doclet.Detail=DETAIL:
-# The following ALL CAPS words should be translated. It is used as "Nested" (Nested Class Summary) link on javadoc.
-doclet.navNested=NESTED
-# The following ALL CAPS words should be translated. It is used as "Optional" (Optional Element Summary) link on javadoc.
-doclet.navAnnotationTypeOptionalMember=OPTIONAL
-# The following ALL CAPS words should be translated. It is used as "Required" (Required Element Summary) link on javadoc.
-doclet.navAnnotationTypeRequiredMember=REQUIRED
-# The following ALL CAPS words should be translated. It is used as "Element" (Required Element Summary) link on javadoc.
-doclet.navAnnotationTypeMember=ELEMENT
-# The following ALL CAPS words should be translated. It is used as "Field" (Field Detail) link on javadoc.
-doclet.navField=FIELD
-# The following ALL CAPS words should be translated. It is used as "Enum Constants" link on javadoc.
-doclet.navEnum=ENUM CONSTANTS
-# The following ALL CAPS words should be translated. It is used as "Constructor" (Constructor Detail) link on javadoc.
-doclet.navConstructor=CONSTR
-# The following ALL CAPS words should be translated. It is used as "Method" (Method Detail) link on javadoc.
-doclet.navMethod=METHOD
-# The following resource does not seem to be used anymore.
-doclet.navFactoryMethod=FACTORY
+doclet.Summary=Summary:
+doclet.Detail=Detail:
+doclet.navNested=Nested
+doclet.navAnnotationTypeOptionalMember=Optional
+doclet.navAnnotationTypeRequiredMember=Required
+doclet.navAnnotationTypeMember=Element
+doclet.navField=Field
+doclet.navEnum=Enum Constants
+doclet.navConstructor=Constr
+doclet.navMethod=Method
 doclet.Index=Index
 doclet.Window_Single_Index=Index
 doclet.Window_Split_Index={0}-Index
@@ -66,12 +42,6 @@
 doclet.Skip_navigation_links=Skip navigation links
 doclet.New_Page=NewPage
 doclet.None=None
-# The following resource does not seem to be used anymore
-doclet.CLASSES=CLASSES
-# The following resource does not seem to be used anymore
-doclet.MEMBERS=MEMBERS
-# The following resource does not seem to be used anymore
-doclet.NONE=NONE
 doclet.Factory_Method_Detail=Static Factory Method Detail
 doclet.navDeprecated=Deprecated
 doclet.Deprecated_List=Deprecated List
@@ -136,10 +106,7 @@
 doclet.Option=Option
 doclet.Or=Or
 doclet.Frames=Frames
-# The following ALL CAPS words should be translated. It is used as "FRAMES" javadoc navigation link to indicate displaying the page with HTML frames.
-doclet.FRAMES=FRAMES
-# The following ALL CAPS words should be translated. It is used as "NO FRAMES" javadoc navigation link to indicate displaying the page without HTML frames.
-doclet.NO_FRAMES=NO FRAMES
+doclet.No_Frames=No Frames
 doclet.Package_Hierarchies=Package Hierarchies:
 doclet.Hierarchy_For_Package=Hierarchy For Package {0}
 doclet.Source_Code=Source Code:
@@ -147,11 +114,10 @@
 doclet.Cannot_handle_no_packages=Cannot handle no packages.
 doclet.Frame_Alert=Frame Alert
 doclet.Overview-Member-Frame=Overview Member Frame
-doclet.Frame_Warning_Message=This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
+doclet.Frame_Warning_Message=This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to {0}.
 doclet.No_Script_Message=JavaScript is disabled on your browser.
-doclet.Non_Frame_Version=Non-frame version.
+doclet.Non_Frame_Version=Non-frame version
 doclet.Frame_Version=Frame version
-doclet.Link_To=Link to
 doclet.Following_From_Class=Following copied from class: {0}
 doclet.Following_From_Interface=Following copied from interface: {0}
 doclet.Description_From_Interface=Description copied from interface:
@@ -200,7 +166,6 @@
 doclet.Help_annotation_type_line_1=Each annotation type has its own separate page with the following sections:
 doclet.Help_annotation_type_line_2=Annotation Type declaration
 doclet.Help_annotation_type_line_3=Annotation Type description
-doclet.The=The
 doclet.Style_line_1=Javadoc style sheet
 doclet.Style_line_2=Define colors, fonts and other style attributes here to override the defaults
 doclet.Style_line_3=Page background color
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard_ja.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard_ja.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -11,15 +11,25 @@
 doclet.Interface_Hierarchy=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u968E\u5C64
 doclet.Enum_Hierarchy=\u5217\u6319\u578B\u968E\u5C64
 doclet.Annotation_Type_Hierarchy=\u6CE8\u91C8\u578B\u968E\u5C64
+# The following ALL CAPS words should be translated. It is used as "Previous" link on javadoc.
 doclet.Prev=\u524D
+# The following ALL CAPS words should be translated. It is used as "Next" link on javadoc.
 doclet.Next=\u6B21
+# The following ALL CAPS words should be translated. It is used as "Previous Class" link on javadoc.
 doclet.Prev_Class=PREV CLASS
+# The following ALL CAPS words should be translated. It is used as "Next Class" link on javadoc.
 doclet.Next_Class=NEXT CLASS
+# The following ALL CAPS words should be translated. It is used as "Previous Package" link on javadoc.
 doclet.Prev_Package=PREV PACKAGE
+# The following ALL CAPS words should be translated. It is used as "Next Package" link on javadoc.
 doclet.Next_Package=NEXT PACKAGE
+# The following ALL CAPS words should be translated. It is used as "Previous Letter" link on javadoc alphabetical index.
 doclet.Prev_Letter=PREV LETTER
+# The following ALL CAPS words should be translated. It is used as "Next Letter" link on javadoc alphabetical index.
 doclet.Next_Letter=NEXT LETTER
+# The following ALL CAPS words should be translated. It is used as "Show List" link on javadoc.
 doclet.Show_Lists=SHOW LISTS
+# The following ALL CAPS words should be translated. It is used as "Hide List" link on javadoc.
 doclet.Hide_Lists=HIDE LISTS
 doclet.Href_Class_Title={0}\u5185\u306E\u30AF\u30E9\u30B9
 doclet.Href_Interface_Title={0}\u5185\u306E\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9
@@ -27,25 +37,40 @@
 doclet.Href_Enum_Title={0}\u5185\u306E\u5217\u6319\u578B
 doclet.Href_Type_Param_Title={0}\u5185\u306E\u578B\u30D1\u30E9\u30E1\u30FC\u30BF
 doclet.Href_Class_Or_Interface_Title={0}\u5185\u306E\u30AF\u30E9\u30B9\u307E\u305F\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9
+# The following ALL CAPS words should be translated. It's used as SUMMARY: NESTED | FIELD | CONSTR | METHOD, meaning Nested Class Summary, Field Summary, Constructor Summary, or Method Summary.
 doclet.Summary=SUMMARY:
+# The following ALL CAPS words should be translated. It is used as DETAIL: FIELD | CONSTR | METHOD, meaning Field Detail, Constructor Detail, or Method Detail.
 doclet.Detail=DETAIL:
+# The following ALL CAPS words should be translated. It is used as "Nested" (Nested Class Summary) link on javadoc.
 doclet.navNested=NESTED
+# The following ALL CAPS words should be translated. It is used as "Optional" (Optional Element Summary) link on javadoc.
 doclet.navAnnotationTypeOptionalMember=OPTIONAL
+# The following ALL CAPS words should be translated. It is used as "Required" (Required Element Summary) link on javadoc.
 doclet.navAnnotationTypeRequiredMember=REQUIRED
+# The following ALL CAPS words should be translated. It is used as "Element" (Required Element Summary) link on javadoc.
 doclet.navAnnotationTypeMember=ELEMENT
+# The following ALL CAPS words should be translated. It is used as "Field" (Field Detail) link on javadoc.
 doclet.navField=FIELD
+# The following ALL CAPS words should be translated. It is used as "Enum Constants" link on javadoc.
 doclet.navEnum=ENUM CONSTANTS
+# The following ALL CAPS words should be translated. It is used as "Constructor" (Constructor Detail) link on javadoc.
 doclet.navConstructor=CONSTR
+# The following ALL CAPS words should be translated. It is used as "Method" (Method Detail) link on javadoc.
 doclet.navMethod=METHOD
+# The following resource does not seem to be used anymore.
 doclet.navFactoryMethod=FACTORY
 doclet.Index=\u7D22\u5F15
 doclet.Window_Single_Index=\u7D22\u5F15
 doclet.Window_Split_Index={0}\u306E\u7D22\u5F15
 doclet.Help=\u30D8\u30EB\u30D7
 doclet.Skip_navigation_links=\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u30FB\u30EA\u30F3\u30AF\u3092\u30B9\u30AD\u30C3\u30D7
+doclet.New_Page=NewPage
 doclet.None=\u306A\u3057
+# The following resource does not seem to be used anymore
 doclet.CLASSES=CLASSES
+# The following resource does not seem to be used anymore
 doclet.MEMBERS=MEMBERS
+# The following resource does not seem to be used anymore
 doclet.NONE=\u306A\u3057
 doclet.Factory_Method_Detail=static\u30D5\u30A1\u30AF\u30C8\u30EA\u30FB\u30E1\u30BD\u30C3\u30C9\u306E\u8A73\u7D30
 doclet.navDeprecated=\u975E\u63A8\u5968
@@ -53,7 +78,7 @@
 doclet.Window_Deprecated_List=\u975E\u63A8\u5968API\u306E\u30EA\u30B9\u30C8
 doclet.Note_0_is_deprecated=\u6CE8\u610F: {0}\u306F\u63A8\u5968\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
 doclet.Overrides=\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9:
-doclet.in_class=\u30AF\u30E9\u30B9{1}\u5185\u306E{0}
+doclet.in_class=\u30AF\u30E9\u30B9\u5185
 doclet.0_Fields_and_Methods=&quot;{0}&quot;\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u30E1\u30BD\u30C3\u30C9
 doclet.Index_of_Fields_and_Methods=\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u30E1\u30BD\u30C3\u30C9\u306E\u7D22\u5F15
 doclet.Static_variable_in={0}\u306Estatic\u5909\u6570
@@ -103,7 +128,7 @@
 doclet.Package_Description=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306E\u8AAC\u660E
 doclet.Description=\u8AAC\u660E
 doclet.Specified_By=\u5B9A\u7FA9:
-doclet.in_interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9{1}\u5185\u306E{0}
+doclet.in_interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u5185
 doclet.Subclasses=\u76F4\u7CFB\u306E\u65E2\u77E5\u306E\u30B5\u30D6\u30AF\u30E9\u30B9:
 doclet.Subinterfaces=\u65E2\u77E5\u306E\u30B5\u30D6\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306E\u30EA\u30B9\u30C8:
 doclet.Implementing_Classes=\u65E2\u77E5\u306E\u5B9F\u88C5\u30AF\u30E9\u30B9\u306E\u30EA\u30B9\u30C8:
@@ -111,7 +136,9 @@
 doclet.Option=\u30AA\u30D7\u30B7\u30E7\u30F3
 doclet.Or=\u307E\u305F\u306F
 doclet.Frames=\u30D5\u30EC\u30FC\u30E0
+# The following ALL CAPS words should be translated. It is used as "FRAMES" javadoc navigation link to indicate displaying the page with HTML frames.
 doclet.FRAMES=FRAMES
+# The following ALL CAPS words should be translated. It is used as "NO FRAMES" javadoc navigation link to indicate displaying the page without HTML frames.
 doclet.NO_FRAMES=NO FRAMES
 doclet.Package_Hierarchies=\u30D1\u30C3\u30B1\u30FC\u30B8\u968E\u5C64:
 doclet.Hierarchy_For_Package=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306E\u968E\u5C64
@@ -121,18 +148,20 @@
 doclet.Frame_Alert=\u30D5\u30EC\u30FC\u30E0\u95A2\u9023\u306E\u30A2\u30E9\u30FC\u30C8
 doclet.Overview-Member-Frame=\u6982\u8981\u30E1\u30F3\u30D0\u30FC\u30FB\u30D5\u30EC\u30FC\u30E0
 doclet.Frame_Warning_Message=\u3053\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306F\u30D5\u30EC\u30FC\u30E0\u6A5F\u80FD\u3092\u4F7F\u7528\u3057\u3066\u8868\u793A\u3059\u308B\u3088\u3046\u306B\u4F5C\u6210\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30D5\u30EC\u30FC\u30E0\u3092\u8868\u793A\u3067\u304D\u306A\u3044Web\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u306E\u5834\u5408\u306B\u3053\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002
+doclet.No_Script_Message=\u30D6\u30E9\u30A6\u30B6\u306EJavaScript\u304C\u7121\u52B9\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3002
 doclet.Non_Frame_Version=\u30D5\u30EC\u30FC\u30E0\u306A\u3057\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3002
 doclet.Frame_Version=\u30D5\u30EC\u30FC\u30E0\u3042\u308A\u306E\u30D0\u30FC\u30B8\u30E7\u30F3
 doclet.Link_To=\u30EA\u30F3\u30AF\u5148
 doclet.Following_From_Class=\u30AF\u30E9\u30B9{0}\u304B\u3089\u30B3\u30D4\u30FC\u3055\u308C\u305F\u30BF\u30B0:
 doclet.Following_From_Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9{0}\u304B\u3089\u30B3\u30D4\u30FC\u3055\u308C\u305F\u30BF\u30B0:
-doclet.Description_From_Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9{0}\u304B\u3089\u30B3\u30D4\u30FC\u3055\u308C\u305F\u8AAC\u660E:
-doclet.Description_From_Class=\u30AF\u30E9\u30B9{0}\u304B\u3089\u30B3\u30D4\u30FC\u3055\u308C\u305F\u8AAC\u660E:
+doclet.Description_From_Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304B\u3089\u30B3\u30D4\u30FC\u3055\u308C\u305F\u8AAC\u660E:
+doclet.Description_From_Class=\u30AF\u30E9\u30B9\u304B\u3089\u30B3\u30D4\u30FC\u3055\u308C\u305F\u8AAC\u660E:
 doclet.Standard_doclet_invoked=\u6A19\u6E96\u306Edoclet\u304C\u8D77\u52D5\u3055\u308C\u307E\u3057\u305F...
 doclet.No_Non_Deprecated_Classes_To_Document=\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5316\u3059\u308B\u975E\u63A8\u5968\u4EE5\u5916\u306E\u30AF\u30E9\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
 doclet.Interfaces_Italic=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9(\u30A4\u30BF\u30EA\u30C3\u30AF)
 doclet.Enclosing_Class=\u542B\u307E\u308C\u3066\u3044\u308B\u30AF\u30E9\u30B9:
 doclet.Enclosing_Interface=\u542B\u307E\u308C\u3066\u3044\u308B\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9:
+doclet.Window_Source_title=\u30BD\u30FC\u30B9\u30FB\u30B3\u30FC\u30C9
 doclet.Help_title=API\u30D8\u30EB\u30D7
 doclet.Window_Help_title=API\u30D8\u30EB\u30D7
 doclet.Help_line_1=API\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306E\u69CB\u6210
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard_zh_CN.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard_zh_CN.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -11,15 +11,25 @@
 doclet.Interface_Hierarchy=\u63A5\u53E3\u5206\u5C42\u7ED3\u6784
 doclet.Enum_Hierarchy=\u679A\u4E3E\u5206\u5C42\u7ED3\u6784
 doclet.Annotation_Type_Hierarchy=\u6CE8\u91CA\u7C7B\u578B\u5206\u5C42\u7ED3\u6784
+# The following ALL CAPS words should be translated. It is used as "Previous" link on javadoc.
 doclet.Prev=\u4E0A\u4E00\u4E2A
+# The following ALL CAPS words should be translated. It is used as "Next" link on javadoc.
 doclet.Next=\u4E0B\u4E00\u4E2A
+# The following ALL CAPS words should be translated. It is used as "Previous Class" link on javadoc.
 doclet.Prev_Class=PREV CLASS
+# The following ALL CAPS words should be translated. It is used as "Next Class" link on javadoc.
 doclet.Next_Class=NEXT CLASS
+# The following ALL CAPS words should be translated. It is used as "Previous Package" link on javadoc.
 doclet.Prev_Package=PREV PACKAGE
+# The following ALL CAPS words should be translated. It is used as "Next Package" link on javadoc.
 doclet.Next_Package=NEXT PACKAGE
+# The following ALL CAPS words should be translated. It is used as "Previous Letter" link on javadoc alphabetical index.
 doclet.Prev_Letter=PREV LETTER
+# The following ALL CAPS words should be translated. It is used as "Next Letter" link on javadoc alphabetical index.
 doclet.Next_Letter=NEXT LETTER
+# The following ALL CAPS words should be translated. It is used as "Show List" link on javadoc.
 doclet.Show_Lists=SHOW LISTS
+# The following ALL CAPS words should be translated. It is used as "Hide List" link on javadoc.
 doclet.Hide_Lists=HIDE LISTS
 doclet.Href_Class_Title={0}\u4E2D\u7684\u7C7B
 doclet.Href_Interface_Title={0}\u4E2D\u7684\u63A5\u53E3
@@ -27,25 +37,40 @@
 doclet.Href_Enum_Title={0}\u4E2D\u7684\u679A\u4E3E
 doclet.Href_Type_Param_Title={0}\u4E2D\u7684\u7C7B\u578B\u53C2\u6570
 doclet.Href_Class_Or_Interface_Title={0}\u4E2D\u7684\u7C7B\u6216\u63A5\u53E3
+# The following ALL CAPS words should be translated. It's used as SUMMARY: NESTED | FIELD | CONSTR | METHOD, meaning Nested Class Summary, Field Summary, Constructor Summary, or Method Summary.
 doclet.Summary=SUMMARY:
+# The following ALL CAPS words should be translated. It is used as DETAIL: FIELD | CONSTR | METHOD, meaning Field Detail, Constructor Detail, or Method Detail.
 doclet.Detail=DETAIL:
+# The following ALL CAPS words should be translated. It is used as "Nested" (Nested Class Summary) link on javadoc.
 doclet.navNested=NESTED
+# The following ALL CAPS words should be translated. It is used as "Optional" (Optional Element Summary) link on javadoc.
 doclet.navAnnotationTypeOptionalMember=OPTIONAL
+# The following ALL CAPS words should be translated. It is used as "Required" (Required Element Summary) link on javadoc.
 doclet.navAnnotationTypeRequiredMember=REQUIRED
+# The following ALL CAPS words should be translated. It is used as "Element" (Required Element Summary) link on javadoc.
 doclet.navAnnotationTypeMember=ELEMENT
+# The following ALL CAPS words should be translated. It is used as "Field" (Field Detail) link on javadoc.
 doclet.navField=FIELD
+# The following ALL CAPS words should be translated. It is used as "Enum Constants" link on javadoc.
 doclet.navEnum=ENUM CONSTANTS
+# The following ALL CAPS words should be translated. It is used as "Constructor" (Constructor Detail) link on javadoc.
 doclet.navConstructor=CONSTR
+# The following ALL CAPS words should be translated. It is used as "Method" (Method Detail) link on javadoc.
 doclet.navMethod=METHOD
+# The following resource does not seem to be used anymore.
 doclet.navFactoryMethod=FACTORY
 doclet.Index=\u7D22\u5F15
 doclet.Window_Single_Index=\u7D22\u5F15
 doclet.Window_Split_Index={0} - \u7D22\u5F15
 doclet.Help=\u5E2E\u52A9
 doclet.Skip_navigation_links=\u8DF3\u8FC7\u5BFC\u822A\u94FE\u63A5
+doclet.New_Page=NewPage
 doclet.None=\u65E0
+# The following resource does not seem to be used anymore
 doclet.CLASSES=CLASSES
+# The following resource does not seem to be used anymore
 doclet.MEMBERS=MEMBERS
+# The following resource does not seem to be used anymore
 doclet.NONE=\u65E0
 doclet.Factory_Method_Detail=\u9759\u6001\u5DE5\u5382\u65B9\u6CD5\u8BE6\u7EC6\u8D44\u6599
 doclet.navDeprecated=\u5DF2\u8FC7\u65F6
@@ -53,7 +78,7 @@
 doclet.Window_Deprecated_List=\u5DF2\u8FC7\u65F6\u7684\u5217\u8868
 doclet.Note_0_is_deprecated=\u6CE8: {0}\u5DF2\u8FC7\u65F6\u3002
 doclet.Overrides=\u8986\u76D6:
-doclet.in_class=\u7C7B{1}\u4E2D\u7684{0}
+doclet.in_class=\u5728\u7C7B\u4E2D
 doclet.0_Fields_and_Methods=&quot;{0}&quot; \u5B57\u6BB5\u548C\u65B9\u6CD5
 doclet.Index_of_Fields_and_Methods=\u5B57\u6BB5\u548C\u65B9\u6CD5\u7684\u7D22\u5F15
 doclet.Static_variable_in={0}\u4E2D\u7684\u9759\u6001\u53D8\u91CF
@@ -103,7 +128,7 @@
 doclet.Package_Description=\u7A0B\u5E8F\u5305{0}\u7684\u8BF4\u660E
 doclet.Description=\u8BF4\u660E
 doclet.Specified_By=\u6307\u5B9A\u8005:
-doclet.in_interface=\u63A5\u53E3{1}\u4E2D\u7684{0}
+doclet.in_interface=\u5728\u63A5\u53E3\u4E2D
 doclet.Subclasses=\u76F4\u63A5\u5DF2\u77E5\u5B50\u7C7B:
 doclet.Subinterfaces=\u6240\u6709\u5DF2\u77E5\u5B50\u63A5\u53E3:
 doclet.Implementing_Classes=\u6240\u6709\u5DF2\u77E5\u5B9E\u73B0\u7C7B:
@@ -111,7 +136,9 @@
 doclet.Option=\u9009\u9879
 doclet.Or=\u6216
 doclet.Frames=\u6846\u67B6
+# The following ALL CAPS words should be translated. It is used as "FRAMES" javadoc navigation link to indicate displaying the page with HTML frames.
 doclet.FRAMES=FRAMES
+# The following ALL CAPS words should be translated. It is used as "NO FRAMES" javadoc navigation link to indicate displaying the page without HTML frames.
 doclet.NO_FRAMES=NO FRAMES
 doclet.Package_Hierarchies=\u7A0B\u5E8F\u5305\u5206\u5C42\u7ED3\u6784:
 doclet.Hierarchy_For_Package=\u7A0B\u5E8F\u5305{0}\u7684\u5206\u5C42\u7ED3\u6784
@@ -121,18 +148,20 @@
 doclet.Frame_Alert=\u6846\u67B6\u9884\u8B66
 doclet.Overview-Member-Frame=\u6210\u5458\u6846\u67B6\u6982\u89C8
 doclet.Frame_Warning_Message=\u8BF7\u4F7F\u7528\u6846\u67B6\u529F\u80FD\u67E5\u770B\u6B64\u6587\u6863\u3002\u5982\u679C\u770B\u5230\u6B64\u6D88\u606F, \u5219\u8868\u660E\u60A8\u4F7F\u7528\u7684\u662F\u4E0D\u652F\u6301\u6846\u67B6\u7684 Web \u5BA2\u6237\u673A\u3002
+doclet.No_Script_Message=\u60A8\u7684\u6D4F\u89C8\u5668\u5DF2\u7981\u7528 JavaScript\u3002
 doclet.Non_Frame_Version=\u975E\u6846\u67B6\u7248\u672C\u3002
 doclet.Frame_Version=\u6846\u67B6\u7248\u672C
 doclet.Link_To=\u94FE\u63A5\u5230
 doclet.Following_From_Class=\u4EE5\u4E0B\u5185\u5BB9\u662F\u4ECE\u7C7B{0}\u590D\u5236\u7684
 doclet.Following_From_Interface=\u4EE5\u4E0B\u5185\u5BB9\u662F\u4ECE\u63A5\u53E3{0}\u590D\u5236\u7684
-doclet.Description_From_Interface=\u4ECE\u63A5\u53E3{0}\u590D\u5236\u7684\u8BF4\u660E
-doclet.Description_From_Class=\u4ECE\u7C7B{0}\u590D\u5236\u7684\u8BF4\u660E
+doclet.Description_From_Interface=\u4ECE\u63A5\u53E3\u590D\u5236\u7684\u8BF4\u660E:
+doclet.Description_From_Class=\u4ECE\u7C7B\u590D\u5236\u7684\u8BF4\u660E:
 doclet.Standard_doclet_invoked=\u5DF2\u8C03\u7528\u7684\u6807\u51C6 doclet...
 doclet.No_Non_Deprecated_Classes_To_Document=\u627E\u4E0D\u5230\u53EF\u4EE5\u6587\u6863\u5316\u7684\u672A\u8FC7\u65F6\u7684\u7C7B\u3002
 doclet.Interfaces_Italic=\u63A5\u53E3 (\u659C\u4F53)
 doclet.Enclosing_Class=\u5C01\u95ED\u7C7B:
 doclet.Enclosing_Interface=\u5C01\u95ED\u63A5\u53E3:
+doclet.Window_Source_title=\u6E90\u4EE3\u7801
 doclet.Help_title=API \u5E2E\u52A9
 doclet.Window_Help_title=API \u5E2E\u52A9
 doclet.Help_line_1=\u6B64 API \u6587\u6863\u7684\u7EC4\u7EC7\u65B9\u5F0F
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/Content.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/Content.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets_ja.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets_ja.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -65,7 +65,7 @@
 doclet.Exception_Summary=\u4F8B\u5916\u306E\u6982\u8981
 doclet.Error_Summary=\u30A8\u30E9\u30FC\u306E\u6982\u8981
 doclet.Class_Summary=\u30AF\u30E9\u30B9\u306E\u6982\u8981
-doclet.Nested_Class_Summary=\u5165\u308C\u5B50\u306E\u30AF\u30E9\u30B9\u306E\u6982\u8981
+doclet.Nested_Class_Summary=\u30CD\u30B9\u30C8\u3055\u308C\u305F\u30AF\u30E9\u30B9\u306E\u6982\u8981
 doclet.Annotation_Type_Optional_Member_Summary=\u4EFB\u610F\u8981\u7D20\u306E\u6982\u8981
 doclet.Annotation_Type_Required_Member_Summary=\u5FC5\u9808\u8981\u7D20\u306E\u6982\u8981
 doclet.Field_Summary=\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u6982\u8981
@@ -84,7 +84,7 @@
 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:
-doclet.All_classes_and_interfaces=\u3059\u3079\u3066\u306E\u30AF\u30E9\u30B9\u304A\u3088\u3073\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9(\u975Estatic\u306E\u5165\u308C\u5B50\u306B\u306A\u3063\u305F\u578B\u3092\u9664\u304F)
+doclet.All_classes_and_interfaces=\u3059\u3079\u3066\u306E\u30AF\u30E9\u30B9\u304A\u3088\u3073\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9(\u975Estatic\u306E\u30CD\u30B9\u30C8\u3055\u308C\u305F\u578B\u3092\u9664\u304F)
 doclet.Package_class_and_interface_descriptions=\u30D1\u30C3\u30B1\u30FC\u30B8\u3001\u30AF\u30E9\u30B9\u304A\u3088\u3073\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306E\u8AAC\u660E
 doclet.Members=\u30E1\u30F3\u30D0\u30FC
 doclet.Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9
@@ -109,12 +109,12 @@
 doclet.extends=extends
 doclet.Package_private=(package private)
 doclet.implements=implementsdoclet.Same_package_name_used=\u30D1\u30C3\u30B1\u30FC\u30B8\u540D\u5F62\u5F0F\u304C2\u56DE\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059: {0}
-doclet.Nested_Classes_Interfaces_Inherited_From_Class=\u30AF\u30E9\u30B9{0}\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u5165\u308C\u5B50\u306E\u30AF\u30E9\u30B9/\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9
-doclet.Nested_Classes_Interface_Inherited_From_Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9{0}\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u5165\u308C\u5B50\u306E\u30AF\u30E9\u30B9/\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9
-doclet.Methods_Inherited_From_Class=\u30AF\u30E9\u30B9{0}\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9
-doclet.Methods_Inherited_From_Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9{0}\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9
-doclet.Fields_Inherited_From_Class=\u30AF\u30E9\u30B9{0}\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30EB\u30C9
-doclet.Fields_Inherited_From_Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9{0}\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30EB\u30C9
+doclet.Nested_Classes_Interfaces_Inherited_From_Class=\u30AF\u30E9\u30B9\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30CD\u30B9\u30C8\u3055\u308C\u305F\u30AF\u30E9\u30B9/\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9
+doclet.Nested_Classes_Interface_Inherited_From_Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30CD\u30B9\u30C8\u3055\u308C\u305F\u30AF\u30E9\u30B9/\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9
+doclet.Methods_Inherited_From_Class=\u30AF\u30E9\u30B9\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9
+doclet.Methods_Inherited_From_Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9
+doclet.Fields_Inherited_From_Class=\u30AF\u30E9\u30B9\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30EB\u30C9
+doclet.Fields_Inherited_From_Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30EB\u30C9
 doclet.Serializable=\u76F4\u5217\u5316\u53EF\u80FD
 doclet.Externalizable=\u5916\u90E8\u5316\u53EF\u80FD
 doclet.Annotation_Type_Member_Detail=\u8981\u7D20\u306E\u8A73\u7D30
@@ -134,12 +134,19 @@
 doclet.Constants_Table_Summary={0}\u8868\u3001\u5B9A\u6570\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u30EA\u30B9\u30C8\u304A\u3088\u3073\u5024
 doclet.Member_Table_Summary={0}\u8868\u3001{1}\u306E\u30EA\u30B9\u30C8\u304A\u3088\u3073\u8AAC\u660E
 doclet.fields=\u30D5\u30A3\u30FC\u30EB\u30C9
+doclet.Fields=\u30D5\u30A3\u30FC\u30EB\u30C9
 doclet.constructors=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF
+doclet.Constructors=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF
 doclet.methods=\u30E1\u30BD\u30C3\u30C9
+doclet.Methods=\u30E1\u30BD\u30C3\u30C9
 doclet.annotation_type_optional_members=\u4EFB\u610F\u8981\u7D20
+doclet.Annotation_Type_Optional_Members=\u4EFB\u610F\u8981\u7D20
 doclet.annotation_type_required_members=\u5FC5\u9808\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.Enum_Constants=\u5217\u6319\u5B9A\u6570
+doclet.nested_classes=\u30CD\u30B9\u30C8\u3055\u308C\u305F\u30AF\u30E9\u30B9
+doclet.Nested_Classes=\u30CD\u30B9\u30C8\u3055\u308C\u305F\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
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets_zh_CN.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets_zh_CN.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -109,12 +109,12 @@
 doclet.extends=\u6269\u5C55
 doclet.Package_private=(\u4E13\u7528\u7A0B\u5E8F\u5305)
 doclet.implements=implementsdoclet.Same_package_name_used=\u7A0B\u5E8F\u5305\u540D\u79F0\u5F62\u5F0F\u4F7F\u7528\u4E86\u4E24\u6B21: {0}
-doclet.Nested_Classes_Interfaces_Inherited_From_Class=\u4ECE\u7C7B{0}\u7EE7\u627F\u7684\u5D4C\u5957\u7C7B/\u63A5\u53E3
-doclet.Nested_Classes_Interface_Inherited_From_Interface=\u4ECE\u63A5\u53E3{0}\u7EE7\u627F\u7684\u5D4C\u5957\u7C7B/\u63A5\u53E3
-doclet.Methods_Inherited_From_Class=\u4ECE\u7C7B{0}\u7EE7\u627F\u7684\u65B9\u6CD5
-doclet.Methods_Inherited_From_Interface=\u4ECE\u63A5\u53E3{0}\u7EE7\u627F\u7684\u65B9\u6CD5
-doclet.Fields_Inherited_From_Class=\u4ECE\u7C7B{0}\u7EE7\u627F\u7684\u5B57\u6BB5
-doclet.Fields_Inherited_From_Interface=\u4ECE\u63A5\u53E3{0}\u7EE7\u627F\u7684\u5B57\u6BB5
+doclet.Nested_Classes_Interfaces_Inherited_From_Class=\u4ECE\u7C7B\u7EE7\u627F\u7684\u5D4C\u5957\u7C7B/\u63A5\u53E3
+doclet.Nested_Classes_Interface_Inherited_From_Interface=\u4ECE\u63A5\u53E3\u7EE7\u627F\u7684\u5D4C\u5957\u7C7B/\u63A5\u53E3
+doclet.Methods_Inherited_From_Class=\u4ECE\u7C7B\u7EE7\u627F\u7684\u65B9\u6CD5
+doclet.Methods_Inherited_From_Interface=\u4ECE\u63A5\u53E3\u7EE7\u627F\u7684\u65B9\u6CD5
+doclet.Fields_Inherited_From_Class=\u4ECE\u7C7B\u7EE7\u627F\u7684\u5B57\u6BB5
+doclet.Fields_Inherited_From_Interface=\u4ECE\u63A5\u53E3\u7EE7\u627F\u7684\u5B57\u6BB5
 doclet.Serializable=\u53EF\u5E8F\u5217\u5316
 doclet.Externalizable=\u53EF\u5916\u90E8\u5316
 doclet.Annotation_Type_Member_Detail=\u5143\u7D20\u8BE6\u7EC6\u8D44\u6599
@@ -134,12 +134,19 @@
 doclet.Constants_Table_Summary={0}\u8868, \u5217\u8868\u5E38\u91CF\u5B57\u6BB5\u548C\u503C
 doclet.Member_Table_Summary={0}\u8868, \u5217\u8868{1}\u548C\u89E3\u91CA
 doclet.fields=\u5B57\u6BB5
+doclet.Fields=\u5B57\u6BB5
 doclet.constructors=\u6784\u9020\u5668
+doclet.Constructors=\u6784\u9020\u5668
 doclet.methods=\u65B9\u6CD5
+doclet.Methods=\u65B9\u6CD5
 doclet.annotation_type_optional_members=\u53EF\u9009\u5143\u7D20
+doclet.Annotation_Type_Optional_Members=\u53EF\u9009\u5143\u7D20
 doclet.annotation_type_required_members=\u5FC5\u9700\u7684\u5143\u7D20
+doclet.Annotation_Type_Required_Members=\u6240\u9700\u5143\u7D20
 doclet.enum_constants=\u679A\u4E3E\u5E38\u91CF
+doclet.Enum_Constants=\u679A\u4E3E\u5E38\u91CF
 doclet.nested_classes=\u5D4C\u5957\u7C7B
+doclet.Nested_Classes=\u5D4C\u5957\u7C7B
 doclet.subclasses=\u5B50\u7C7B
 doclet.subinterfaces=\u5B50\u63A5\u53E3
 doclet.Modifier=\u9650\u5B9A\u7B26
@@ -160,4 +167,4 @@
 #Documentation for Enums
 doclet.enum_values_doc=\n\u6309\u7167\u58F0\u660E\u8BE5\u679A\u4E3E\u7C7B\u578B\u7684\u5E38\u91CF\u7684\u987A\u5E8F, \u8FD4\u56DE\n\u5305\u542B\u8FD9\u4E9B\u5E38\u91CF\u7684\u6570\u7EC4\u3002\u8BE5\u65B9\u6CD5\u53EF\u7528\u4E8E\u8FED\u4EE3\n\u5E38\u91CF, \u5982\u4E0B\u6240\u793A:\n<pre>\nfor ({0} c : {0}.values())\n&nbsp;   System.out.println(c);\n</pre>\n@\u6309\u7167\u58F0\u660E\u8BE5\u679A\u4E3E\u7C7B\u578B\u7684\u5E38\u91CF\u7684\u987A\u5E8F, \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<I>\u5B8C\u5168</I>\u5339\u914D\u3002(\u4E0D\u5141\u8BB8\u6709\u591A\u4F59\n\u7684\u7A7A\u683C\u5B57\u7B26\u3002)\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, \n\u5219\u629B\u51FA IllegalArgumentException\n@throws \u5982\u679C\u53C2\u6570\u4E3A\u7A7A\u503C, \u5219\u629B\u51FA NullPointerException\u3002
+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<i>\u5B8C\u5168</i>\u5339\u914D\u3002(\u4E0D\u5141\u8BB8\u6709\u591A\u4F59\n\u7684\u7A7A\u683C\u5B57\u7B26\u3002)\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, \n\u5219\u629B\u51FA IllegalArgumentException\n@throws \u5982\u679C\u53C2\u6570\u4E3A\u7A7A\u503C, \u5219\u629B\u51FA NullPointerException
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/stylesheet.css	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/stylesheet.css	Wed Apr 20 09:31:11 2011 -0700
@@ -142,19 +142,19 @@
 .subNav ul.navList {
     float:left;
     margin:0;
-    font-size:0.7em;
+    font-size:0.8em;
     width:350px;
 }
 ul.subNavList {
     float:left;
     margin:0;
-    font-size:0.7em;
+    font-size:0.8em;
     width:350px;
 }
 ul.subNavList li{
     list-style:none;
     float:left;
-    font-size:90%;
+    font-size:98%;
 }
 /*
 Page header and footer styles
@@ -183,8 +183,6 @@
 .subTitle {
     margin:0;
     padding-top:10px;
-    font-size:0.75em;
-    font-weight:bold;
 }
 /*
 Page layout container styles
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javac/api/ClientCodeWrapper.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,593 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+
+package com.sun.tools.javac.api;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.Writer;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.lang.model.element.NestingKind;
+import javax.tools.Diagnostic;
+import javax.tools.FileObject;
+import javax.tools.JavaFileManager;
+import javax.tools.JavaFileManager.Location;
+import javax.tools.JavaFileObject;
+
+import com.sun.source.util.TaskEvent;
+import com.sun.source.util.TaskListener;
+import com.sun.tools.javac.util.ClientCodeException;
+import com.sun.tools.javac.util.Context;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.lang.model.element.Modifier;
+import javax.tools.DiagnosticListener;
+import javax.tools.JavaFileObject.Kind;
+
+/**
+ *  Wrap objects to enable unchecked exceptions to be caught and handled.
+ *
+ *  For each method, exceptions are handled as follows:
+ *  <ul>
+ *  <li>Checked exceptions are left alone and propogate upwards in the
+ *      obvious way, since they are an expected aspect of the method's
+ *      specification.
+ *  <li>Unchecked exceptions which have already been caught and wrapped in
+ *      ClientCodeException are left alone to continue propogating upwards.
+ *  <li>All other unchecked exceptions (i.e. subtypes of RuntimeException
+ *      and Error) and caught, and rethrown as a ClientCodeException with
+ *      its cause set to the original exception.
+ *  </ul>
+ *
+ *  The intent is that ClientCodeException can be caught at an appropriate point
+ *  in the program and can be distinguished from any unanticipated unchecked
+ *  exceptions arising in the main body of the code (i.e. bugs.) When the
+ *  ClientCodeException has been caught, either a suitable message can be
+ *  generated, or if appropriate, the original cause can be rethrown.
+ *
+ *  <p><b>This is NOT part of any supported API.
+ *  If you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class ClientCodeWrapper {
+    @Retention(RetentionPolicy.RUNTIME)
+    @Target(ElementType.TYPE)
+    public @interface Trusted { }
+
+    public static ClientCodeWrapper instance(Context context) {
+        ClientCodeWrapper instance = context.get(ClientCodeWrapper.class);
+        if (instance == null)
+            instance = new ClientCodeWrapper(context);
+        return instance;
+    }
+
+    /**
+     * A map to cache the results of whether or not a specific classes can
+     * be "trusted", and thus does not need to be wrapped.
+     */
+    Map<Class<?>, Boolean> trustedClasses;
+
+    protected ClientCodeWrapper(Context context) {
+        trustedClasses = new HashMap<Class<?>, Boolean>();
+    }
+
+    public JavaFileManager wrap(JavaFileManager fm) {
+        if (isTrusted(fm))
+            return fm;
+        return new WrappedJavaFileManager(fm);
+    }
+
+    public FileObject wrap(FileObject fo) {
+        if (isTrusted(fo))
+            return fo;
+        return new WrappedFileObject(fo);
+    }
+
+    FileObject unwrap(FileObject fo) {
+        if (fo instanceof WrappedFileObject)
+            return ((WrappedFileObject) fo).clientFileObject;
+        else
+            return fo;
+    }
+
+    public JavaFileObject wrap(JavaFileObject fo) {
+        if (isTrusted(fo))
+            return fo;
+        return new WrappedJavaFileObject(fo);
+    }
+
+    public Iterable<JavaFileObject> wrapJavaFileObjects(Iterable<? extends JavaFileObject> list) {
+        List<JavaFileObject> wrapped = new ArrayList<JavaFileObject>();
+        for (JavaFileObject fo : list)
+            wrapped.add(wrap(fo));
+        return Collections.unmodifiableList(wrapped);
+    }
+
+    JavaFileObject unwrap(JavaFileObject fo) {
+        if (fo instanceof WrappedJavaFileObject)
+            return ((JavaFileObject) ((WrappedJavaFileObject) fo).clientFileObject);
+        else
+            return fo;
+    }
+
+    <T> DiagnosticListener<T> wrap(DiagnosticListener<T> dl) {
+        if (isTrusted(dl))
+            return dl;
+        return new WrappedDiagnosticListener<T>(dl);
+    }
+
+    TaskListener wrap(TaskListener tl) {
+        if (isTrusted(tl))
+            return tl;
+        return new WrappedTaskListener(tl);
+    }
+
+    protected boolean isTrusted(Object o) {
+        Class<?> c = o.getClass();
+        Boolean trusted = trustedClasses.get(c);
+        if (trusted == null) {
+            trusted = c.getName().startsWith("com.sun.tools.javac.")
+                    || c.isAnnotationPresent(Trusted.class);
+            trustedClasses.put(c, trusted);
+        }
+        return trusted;
+    }
+
+    // <editor-fold defaultstate="collapsed" desc="Wrapper classes">
+
+    // FIXME: all these classes should be converted to use multi-catch when
+    // that is available in the bootstrap compiler.
+
+    protected class WrappedJavaFileManager implements JavaFileManager {
+        protected JavaFileManager clientJavaFileManager;
+        WrappedJavaFileManager(JavaFileManager clientJavaFileManager) {
+            clientJavaFileManager.getClass(); // null check
+            this.clientJavaFileManager = clientJavaFileManager;
+        }
+
+        @Override
+        public ClassLoader getClassLoader(Location location) {
+            try {
+                return clientJavaFileManager.getClassLoader(location);
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public Iterable<JavaFileObject> list(Location location, String packageName, Set<Kind> kinds, boolean recurse) throws IOException {
+            try {
+                return wrapJavaFileObjects(clientJavaFileManager.list(location, packageName, kinds, recurse));
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public String inferBinaryName(Location location, JavaFileObject file) {
+            try {
+                return clientJavaFileManager.inferBinaryName(location, unwrap(file));
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public boolean isSameFile(FileObject a, FileObject b) {
+            try {
+                return clientJavaFileManager.isSameFile(unwrap(a), unwrap(b));
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public boolean handleOption(String current, Iterator<String> remaining) {
+            try {
+                return clientJavaFileManager.handleOption(current, remaining);
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public boolean hasLocation(Location location) {
+            try {
+                return clientJavaFileManager.hasLocation(location);
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public JavaFileObject getJavaFileForInput(Location location, String className, Kind kind) throws IOException {
+            try {
+                return wrap(clientJavaFileManager.getJavaFileForInput(location, className, kind));
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public JavaFileObject getJavaFileForOutput(Location location, String className, Kind kind, FileObject sibling) throws IOException {
+            try {
+                return wrap(clientJavaFileManager.getJavaFileForOutput(location, className, kind, unwrap(sibling)));
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public FileObject getFileForInput(Location location, String packageName, String relativeName) throws IOException {
+            try {
+                return wrap(clientJavaFileManager.getFileForInput(location, packageName, relativeName));
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public FileObject getFileForOutput(Location location, String packageName, String relativeName, FileObject sibling) throws IOException {
+            try {
+                return wrap(clientJavaFileManager.getFileForOutput(location, packageName, relativeName, unwrap(sibling)));
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public void flush() throws IOException {
+            try {
+                clientJavaFileManager.flush();
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public void close() throws IOException {
+            try {
+                clientJavaFileManager.close();
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public int isSupportedOption(String option) {
+            try {
+                return clientJavaFileManager.isSupportedOption(option);
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+    }
+
+    protected class WrappedFileObject implements FileObject {
+        protected FileObject clientFileObject;
+        WrappedFileObject(FileObject clientFileObject) {
+            clientFileObject.getClass(); // null check
+            this.clientFileObject = clientFileObject;
+        }
+
+        @Override
+        public URI toUri() {
+            try {
+                return clientFileObject.toUri();
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public String getName() {
+            try {
+                return clientFileObject.getName();
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public InputStream openInputStream() throws IOException {
+            try {
+                return clientFileObject.openInputStream();
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public OutputStream openOutputStream() throws IOException {
+            try {
+                return clientFileObject.openOutputStream();
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public Reader openReader(boolean ignoreEncodingErrors) throws IOException {
+            try {
+                return clientFileObject.openReader(ignoreEncodingErrors);
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {
+            try {
+                return clientFileObject.getCharContent(ignoreEncodingErrors);
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public Writer openWriter() throws IOException {
+            try {
+                return clientFileObject.openWriter();
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public long getLastModified() {
+            try {
+                return clientFileObject.getLastModified();
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public boolean delete() {
+            try {
+                return clientFileObject.delete();
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+    }
+
+    protected class WrappedJavaFileObject extends WrappedFileObject implements JavaFileObject {
+        WrappedJavaFileObject(JavaFileObject clientJavaFileObject) {
+            super(clientJavaFileObject);
+        }
+
+        @Override
+        public Kind getKind() {
+            try {
+                return ((JavaFileObject)clientFileObject).getKind();
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public boolean isNameCompatible(String simpleName, Kind kind) {
+            try {
+                return ((JavaFileObject)clientFileObject).isNameCompatible(simpleName, kind);
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public NestingKind getNestingKind() {
+            try {
+                return ((JavaFileObject)clientFileObject).getNestingKind();
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public Modifier getAccessLevel() {
+            try {
+                return ((JavaFileObject)clientFileObject).getAccessLevel();
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+    }
+
+    protected class WrappedDiagnosticListener<T> implements DiagnosticListener<T> {
+        protected DiagnosticListener<T> clientDiagnosticListener;
+        WrappedDiagnosticListener(DiagnosticListener<T> clientDiagnosticListener) {
+            clientDiagnosticListener.getClass(); // null check
+            this.clientDiagnosticListener = clientDiagnosticListener;
+        }
+
+        @Override
+        public void report(Diagnostic<? extends T> diagnostic) {
+            try {
+                clientDiagnosticListener.report(diagnostic);
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+    }
+
+    protected class WrappedTaskListener implements TaskListener {
+        protected TaskListener clientTaskListener;
+        WrappedTaskListener(TaskListener clientTaskListener) {
+            clientTaskListener.getClass(); // null check
+            this.clientTaskListener = clientTaskListener;
+        }
+
+        @Override
+        public void started(TaskEvent ev) {
+            try {
+                clientTaskListener.started(ev);
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+
+        @Override
+        public void finished(TaskEvent ev) {
+            try {
+                clientTaskListener.finished(ev);
+            } catch (ClientCodeException e) {
+                throw e;
+            } catch (RuntimeException e) {
+                throw new ClientCodeException(e);
+            } catch (Error e) {
+                throw new ClientCodeException(e);
+            }
+        }
+    }
+
+    // </editor-fold>
+}
--- a/langtools/src/share/classes/com/sun/tools/javac/api/JavacTaskImpl.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/api/JavacTaskImpl.java	Wed Apr 20 09:31:11 2011 -0700
@@ -65,7 +65,7 @@
  * @author Jonathan Gibbons
  */
 public class JavacTaskImpl extends JavacTask {
-    private JavacTool tool;
+    private ClientCodeWrapper ccw;
     private Main compilerMain;
     private JavaCompiler compiler;
     private Locale locale;
@@ -80,12 +80,11 @@
 
     private Integer result = null;
 
-    JavacTaskImpl(JavacTool tool,
-                Main compilerMain,
+    JavacTaskImpl(Main compilerMain,
                 String[] args,
                 Context context,
                 List<JavaFileObject> fileObjects) {
-        this.tool = tool;
+        this.ccw = ClientCodeWrapper.instance(context);
         this.compilerMain = compilerMain;
         this.args = args;
         this.context = context;
@@ -94,17 +93,15 @@
         // null checks
         compilerMain.getClass();
         args.getClass();
-        context.getClass();
         fileObjects.getClass();
     }
 
-    JavacTaskImpl(JavacTool tool,
-                Main compilerMain,
+    JavacTaskImpl(Main compilerMain,
                 Iterable<String> flags,
                 Context context,
                 Iterable<String> classes,
                 Iterable<? extends JavaFileObject> fileObjects) {
-        this(tool, compilerMain, toArray(flags, classes), context, toList(fileObjects));
+        this(compilerMain, toArray(flags, classes), context, toList(fileObjects));
     }
 
     static private String[] toArray(Iterable<String> flags, Iterable<String> classes) {
@@ -131,7 +128,7 @@
         if (!used.getAndSet(true)) {
             initContext();
             notYetEntered = new HashMap<JavaFileObject, JCCompilationUnit>();
-            compilerMain.setFatalErrors(true);
+            compilerMain.setAPIMode(true);
             result = compilerMain.compile(args, context, fileObjects, processors);
             cleanup();
             return result == 0;
@@ -185,31 +182,9 @@
         if (context.get(TaskListener.class) != null)
             context.put(TaskListener.class, (TaskListener)null);
         if (taskListener != null)
-            context.put(TaskListener.class, wrap(taskListener));
+            context.put(TaskListener.class, ccw.wrap(taskListener));
         //initialize compiler's default locale
-        JavacMessages.instance(context).setCurrentLocale(locale);
-    }
-    // where
-    private TaskListener wrap(final TaskListener tl) {
-        tl.getClass(); // null check
-        return new TaskListener() {
-            public void started(TaskEvent e) {
-                try {
-                    tl.started(e);
-                } catch (Throwable t) {
-                    throw new ClientCodeException(t);
-                }
-            }
-
-            public void finished(TaskEvent e) {
-                try {
-                    tl.finished(e);
-                } catch (Throwable t) {
-                    throw new ClientCodeException(t);
-                }
-            }
-
-        };
+        context.put(Locale.class, locale);
     }
 
     void cleanup() {
--- a/langtools/src/share/classes/com/sun/tools/javac/api/JavacTool.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/api/JavacTool.java	Wed Apr 20 09:31:11 2011 -0700
@@ -28,8 +28,10 @@
 import java.io.File;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.io.Writer;
+import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.EnumSet;
@@ -47,12 +49,11 @@
 import com.sun.tools.javac.main.Main;
 import com.sun.tools.javac.main.RecognizedOptions.GrumpyHelper;
 import com.sun.tools.javac.main.RecognizedOptions;
+import com.sun.tools.javac.util.ClientCodeException;
 import com.sun.tools.javac.util.Context;
 import com.sun.tools.javac.util.Log;
-import com.sun.tools.javac.util.JavacMessages;
 import com.sun.tools.javac.util.Options;
 import com.sun.tools.javac.util.Pair;
-import java.nio.charset.Charset;
 
 /**
  * TODO: describe com.sun.tools.javac.api.Tool
@@ -145,10 +146,13 @@
         Locale locale,
         Charset charset) {
         Context context = new Context();
-        JavacMessages.instance(context).setCurrentLocale(locale);
+        context.put(Locale.class, locale);
         if (diagnosticListener != null)
             context.put(DiagnosticListener.class, diagnosticListener);
-        context.put(Log.outKey, new PrintWriter(System.err, true)); // FIXME
+        PrintWriter pw = (charset == null)
+                ? new PrintWriter(System.err, true)
+                : new PrintWriter(new OutputStreamWriter(System.err, charset), true);
+        context.put(Log.outKey, pw);
         return new JavacFileManager(context, true, charset);
     }
 
@@ -159,38 +163,45 @@
                              Iterable<String> classes,
                              Iterable<? extends JavaFileObject> compilationUnits)
     {
-        final String kindMsg = "All compilation units must be of SOURCE kind";
-        if (options != null)
-            for (String option : options)
-                option.getClass(); // null check
-        if (classes != null) {
-            for (String cls : classes)
-                if (!SourceVersion.isName(cls)) // implicit null check
-                    throw new IllegalArgumentException("Not a valid class name: " + cls);
-        }
-        if (compilationUnits != null) {
-            for (JavaFileObject cu : compilationUnits) {
-                if (cu.getKind() != JavaFileObject.Kind.SOURCE) // implicit null check
-                    throw new IllegalArgumentException(kindMsg);
-            }
-        }
+        try {
+            Context context = new Context();
+            ClientCodeWrapper ccw = ClientCodeWrapper.instance(context);
 
-        Context context = new Context();
-
-        if (diagnosticListener != null)
-            context.put(DiagnosticListener.class, diagnosticListener);
+            final String kindMsg = "All compilation units must be of SOURCE kind";
+            if (options != null)
+                for (String option : options)
+                    option.getClass(); // null check
+            if (classes != null) {
+                for (String cls : classes)
+                    if (!SourceVersion.isName(cls)) // implicit null check
+                        throw new IllegalArgumentException("Not a valid class name: " + cls);
+            }
+            if (compilationUnits != null) {
+                compilationUnits = ccw.wrapJavaFileObjects(compilationUnits); // implicit null check
+                for (JavaFileObject cu : compilationUnits) {
+                    if (cu.getKind() != JavaFileObject.Kind.SOURCE)
+                        throw new IllegalArgumentException(kindMsg);
+                }
+            }
 
-        if (out == null)
-            context.put(Log.outKey, new PrintWriter(System.err, true));
-        else
-            context.put(Log.outKey, new PrintWriter(out, true));
+            if (diagnosticListener != null)
+                context.put(DiagnosticListener.class, ccw.wrap(diagnosticListener));
+
+            if (out == null)
+                context.put(Log.outKey, new PrintWriter(System.err, true));
+            else
+                context.put(Log.outKey, new PrintWriter(out, true));
 
-        if (fileManager == null)
-            fileManager = getStandardFileManager(diagnosticListener, null, null);
-        context.put(JavaFileManager.class, fileManager);
-        processOptions(context, fileManager, options);
-        Main compiler = new Main("javacTask", context.get(Log.outKey));
-        return new JavacTaskImpl(this, compiler, options, context, classes, compilationUnits);
+            if (fileManager == null)
+                fileManager = getStandardFileManager(diagnosticListener, null, null);
+            fileManager = ccw.wrap(fileManager);
+            context.put(JavaFileManager.class, fileManager);
+            processOptions(context, fileManager, options);
+            Main compiler = new Main("javacTask", context.get(Log.outKey));
+            return new JavacTaskImpl(compiler, options, context, classes, compilationUnits);
+        } catch (ClientCodeException ex) {
+            throw new RuntimeException(ex.getCause());
+        }
     }
 
     private static void processOptions(Context context,
--- a/langtools/src/share/classes/com/sun/tools/javac/code/Source.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/code/Source.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/langtools/src/share/classes/com/sun/tools/javac/code/Symtab.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/code/Symtab.java	Wed Apr 20 09:31:11 2011 -0700
@@ -125,12 +125,11 @@
     public final Type stringBuilderType;
     public final Type cloneableType;
     public final Type serializableType;
-    public final Type transientMethodHandleType; // transient - 292
     public final Type methodHandleType;
-    public final Type transientPolymorphicSignatureType; // transient - 292
     public final Type polymorphicSignatureType;
     public final Type throwableType;
     public final Type errorType;
+    public final Type interruptedExceptionType;
     public final Type illegalArgumentExceptionType;
     public final Type exceptionType;
     public final Type runtimeExceptionType;
@@ -435,12 +434,11 @@
         cloneableType = enterClass("java.lang.Cloneable");
         throwableType = enterClass("java.lang.Throwable");
         serializableType = enterClass("java.io.Serializable");
-        transientMethodHandleType = enterClass("java.dyn.MethodHandle"); // transient - 292
         methodHandleType = enterClass("java.lang.invoke.MethodHandle");
-        transientPolymorphicSignatureType = enterClass("java.dyn.MethodHandle$PolymorphicSignature"); // transient - 292
         polymorphicSignatureType = enterClass("java.lang.invoke.MethodHandle$PolymorphicSignature");
         errorType = enterClass("java.lang.Error");
         illegalArgumentExceptionType = enterClass("java.lang.IllegalArgumentException");
+        interruptedExceptionType = enterClass("java.lang.InterruptedException");
         exceptionType = enterClass("java.lang.Exception");
         runtimeExceptionType = enterClass("java.lang.RuntimeException");
         classNotFoundExceptionType = enterClass("java.lang.ClassNotFoundException");
@@ -480,9 +478,9 @@
                              autoCloseableType.tsym);
         trustMeType = enterClass("java.lang.SafeVarargs");
 
+        synthesizeEmptyInterfaceIfMissing(autoCloseableType);
         synthesizeEmptyInterfaceIfMissing(cloneableType);
         synthesizeEmptyInterfaceIfMissing(serializableType);
-        synthesizeEmptyInterfaceIfMissing(transientPolymorphicSignatureType); // transient - 292
         synthesizeEmptyInterfaceIfMissing(polymorphicSignatureType);
         synthesizeBoxTypeIfMissing(doubleType);
         synthesizeBoxTypeIfMissing(floatType);
--- a/langtools/src/share/classes/com/sun/tools/javac/code/Types.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/code/Types.java	Wed Apr 20 09:31:11 2011 -0700
@@ -2461,6 +2461,22 @@
             }
         };
 
+    public Type createMethodTypeWithReturn(Type original, Type newReturn) {
+        return original.accept(methodWithReturn, newReturn);
+    }
+    // where
+        private final MapVisitor<Type> methodWithReturn = new MapVisitor<Type>() {
+            public Type visitType(Type t, Type newReturn) {
+                throw new IllegalArgumentException("Not a method type: " + t);
+            }
+            public Type visitMethodType(MethodType t, Type newReturn) {
+                return new MethodType(t.argtypes, newReturn, t.thrown, t.tsym);
+            }
+            public Type visitForAll(ForAll t, Type newReturn) {
+                return new ForAll(t.tvars, t.qtype.accept(this, newReturn));
+            }
+        };
+
     // <editor-fold defaultstate="collapsed" desc="createErrorType">
     public Type createErrorType(Type originalType) {
         return new ErrorType(originalType, syms.errSymbol);
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Attr.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Attr.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1089,6 +1089,10 @@
             if (resource.getTag() == JCTree.VARDEF) {
                 attribStat(resource, tryEnv);
                 chk.checkType(resource, resource.type, syms.autoCloseableType, "try.not.applicable.to.type");
+
+                //check that resource type cannot throw InterruptedException
+                checkAutoCloseable(resource.pos(), localEnv, resource.type);
+
                 VarSymbol var = (VarSymbol)TreeInfo.symbolFor(resource);
                 var.setData(ElementKind.RESOURCE_VARIABLE);
             } else {
@@ -1127,6 +1131,35 @@
         result = null;
     }
 
+    void checkAutoCloseable(DiagnosticPosition pos, Env<AttrContext> env, Type resource) {
+        if (!resource.isErroneous() &&
+                types.asSuper(resource, syms.autoCloseableType.tsym) != null) {
+            Symbol close = syms.noSymbol;
+            boolean prevDeferDiags = log.deferDiagnostics;
+            Queue<JCDiagnostic> prevDeferredDiags = log.deferredDiagnostics;
+            try {
+                log.deferDiagnostics = true;
+                log.deferredDiagnostics = ListBuffer.lb();
+                close = rs.resolveQualifiedMethod(pos,
+                        env,
+                        resource,
+                        names.close,
+                        List.<Type>nil(),
+                        List.<Type>nil());
+            }
+            finally {
+                log.deferDiagnostics = prevDeferDiags;
+                log.deferredDiagnostics = prevDeferredDiags;
+            }
+            if (close.kind == MTH &&
+                    close.overrides(syms.autoCloseableClose, resource.tsym, types, true) &&
+                    chk.isHandled(syms.interruptedExceptionType, types.memberType(resource, close).getThrownTypes()) &&
+                    env.info.lint.isEnabled(LintCategory.TRY)) {
+                log.warning(LintCategory.TRY, pos, "try.resource.throws.interrupted.exc", resource);
+            }
+        }
+    }
+
     public void visitConditional(JCConditional tree) {
         attribExpr(tree.cond, env, syms.booleanType);
         attribExpr(tree.truepart, env);
@@ -1580,7 +1613,7 @@
         // Attribute clazz expression and store
         // symbol + type back into the attributed tree.
         Type clazztype = attribType(clazz, env);
-        Pair<Scope,Scope> mapping = getSyntheticScopeMapping(clazztype, cdef != null);
+        Pair<Scope,Scope> mapping = getSyntheticScopeMapping(clazztype);
         clazztype = chk.checkDiamond(tree, clazztype);
         chk.validate(clazz, localEnv);
         if (tree.encl != null) {
@@ -1778,62 +1811,48 @@
                         Pair<Scope, Scope> mapping,
                         List<Type> argtypes,
                         List<Type> typeargtypes) {
-        if (clazztype.isErroneous() || mapping == erroneousMapping) {
+        if (clazztype.isErroneous() ||
+                clazztype.isInterface() ||
+                mapping == erroneousMapping) {
             //if the type of the instance creation expression is erroneous,
-            //or something prevented us to form a valid mapping, return the
-            //(possibly erroneous) type unchanged
+            //or if it's an interface, or if something prevented us to form a valid
+            //mapping, return the (possibly erroneous) type unchanged
             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 <X1,X2, ... Xn>C<X1,X2, ... Xn>
-            clazztype = new ForAll(clazztype.tsym.type.allparams(), clazztype.tsym.type) {
-                @Override
-                public List<Type> getConstraints(TypeVar tv, ConstraintKind ck) {
-                    switch (ck) {
-                        case EXTENDS: return types.getBounds(tv);
-                        default: return List.nil();
-                    }
-                }
-                @Override
-                public Type inst(List<Type> inferred, Types types) throws Infer.NoInstanceException {
-                    // check that inferred bounds conform to their bounds
-                    infer.checkWithinBounds(tvars,
-                           types.subst(tvars, tvars, inferred), Warner.noWarnings);
-                    return super.inst(inferred, types);
-                }
-            };
+
+        //dup attribution environment and augment the set of inference variables
+        Env<AttrContext> localEnv = env.dup(tree);
+        localEnv.info.tvars = clazztype.tsym.type.getTypeArguments();
+
+        //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(),
+                    localEnv,
+                    clazztype.tsym.type,
+                    argtypes,
+                    typeargtypes);
+        } 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,
+                    localEnv,
+                    tree.args,
+                    argtypes,
+                    typeargtypes,
+                    localEnv.info.varArgs).getReturnType();
         } 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);
-            } 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;
-            }
+            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
@@ -1863,34 +1882,28 @@
      *  inference. The inferred return type of the synthetic constructor IS
      *  the inferred type for the diamond operator.
      */
-    private Pair<Scope, Scope> getSyntheticScopeMapping(Type ctype, boolean overrideProtectedAccess) {
+    private Pair<Scope, Scope> getSyntheticScopeMapping(Type ctype) {
         if (ctype.tag != CLASS) {
             return erroneousMapping;
         }
+
         Pair<Scope, Scope> mapping =
                 new Pair<Scope, Scope>(ctype.tsym.members(), new Scope(ctype.tsym));
-        List<Type> typevars = ctype.tsym.type.getTypeArguments();
+
+        //for each constructor in the original scope, create a synthetic constructor
+        //whose return type is the type of the class in which the constructor is
+        //declared, and insert it into the new scope.
         for (Scope.Entry e = mapping.fst.lookup(names.init);
                 e.scope != null;
                 e = e.next()) {
-            MethodSymbol newConstr = (MethodSymbol) e.sym.clone(ctype.tsym);
-            if (overrideProtectedAccess && (newConstr.flags() & PROTECTED) != 0) {
-                //make protected constructor public (this is required for
-                //anonymous inner class creation expressions using diamond)
-                newConstr.flags_field |= PUBLIC;
-                newConstr.flags_field &= ~PROTECTED;
-            }
-            newConstr.name = names.init;
-            List<Type> 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);
+            Type synthRestype = new ClassType(ctype.getEnclosingType(),
+                        ctype.tsym.type.getTypeArguments(),
+                        ctype.tsym);
+            MethodSymbol synhConstr = new MethodSymbol(e.sym.flags(),
+                    names.init,
+                    types.createMethodTypeWithReturn(e.sym.type, synthRestype),
+                    e.sym.owner);
+            mapping.snd.enter(synhConstr);
         }
         return mapping;
     }
@@ -2276,6 +2289,7 @@
                 sitesym.kind == VAR &&
                 ((VarSymbol)sitesym).isResourceVariable() &&
                 sym.kind == MTH &&
+                sym.name.equals(names.close) &&
                 sym.overrides(syms.autoCloseableClose, sitesym.type.tsym, types, true) &&
                 env.info.lint.isEnabled(LintCategory.TRY)) {
             log.warning(LintCategory.TRY, tree, "try.explicit.close.call");
@@ -2901,7 +2915,23 @@
             ctype = chk.checkType(typeTree.pos(),
                           chk.checkClassType(typeTree.pos(), ctype),
                           syms.throwableType);
-            multicatchTypes.append(ctype);
+            if (!ctype.isErroneous()) {
+                //check that alternatives of a disjunctive type are pairwise
+                //unrelated w.r.t. subtyping
+                if (chk.intersects(ctype,  multicatchTypes.toList())) {
+                    for (Type t : multicatchTypes) {
+                        boolean sub = types.isSubtype(ctype, t);
+                        boolean sup = types.isSubtype(t, ctype);
+                        if (sub || sup) {
+                            //assume 'a' <: 'b'
+                            Type a = sub ? ctype : t;
+                            Type b = sub ? t : ctype;
+                            log.error(typeTree.pos(), "multicatch.types.must.be.disjoint", a, b);
+                        }
+                    }
+                }
+                multicatchTypes.append(ctype);
+            }
         }
         tree.type = result = check(tree, types.lub(multicatchTypes.toList()), TYP, pkind, pt);
     }
@@ -3173,6 +3203,9 @@
         // method conform to the method they implement.
         chk.checkImplementations(tree);
 
+        //check that a resource implementing AutoCloseable cannot throw InterruptedException
+        checkAutoCloseable(tree.pos(), env, c.type);
+
         for (List<JCTree> l = tree.defs; l.nonEmpty(); l = l.tail) {
             // Attribute declaration
             attribStat(l.head, env);
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java	Wed Apr 20 09:31:11 2011 -0700
@@ -676,7 +676,7 @@
                     "cant.apply.diamond.1",
                     t, diags.fragment("diamond.and.anon.class", t));
             return types.createErrorType(t);
-        } else if (!t.tsym.type.isParameterized()) {
+        } else if (t.tsym.type.getTypeArguments().isEmpty()) {
             log.error(tree.clazz.pos(),
                 "cant.apply.diamond.1",
                 t, diags.fragment("diamond.non.generic", t));
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Enter.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Enter.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java	Wed Apr 20 09:31:11 2011 -0700
@@ -788,8 +788,7 @@
             // Internally to java.lang.invoke, a @PolymorphicSignature annotation
             // acts like a classfile attribute.
             if (!c.type.isErroneous() &&
-                    (types.isSameType(c.type, syms.polymorphicSignatureType) ||
-                     types.isSameType(c.type, syms.transientPolymorphicSignatureType))) {
+                types.isSameType(c.type, syms.polymorphicSignatureType)) {
                 if (!target.hasMethodHandles()) {
                     // Somebody is compiling JDK7 source code to a JDK6 target.
                     // Make it an error, since it is unlikely but important.
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java	Wed Apr 20 09:31:11 2011 -0700
@@ -338,7 +338,11 @@
 
         // tvars is the list of formal type variables for which type arguments
         // need to inferred.
-        List<Type> tvars = env.info.tvars;
+        List<Type> tvars = null;
+        if (env.info.tvars != null) {
+            tvars = types.newInstances(env.info.tvars);
+            mt = types.subst(mt, env.info.tvars, tvars);
+        }
         if (typeargtypes == null) typeargtypes = List.nil();
         if (mt.tag != FORALL && typeargtypes.nonEmpty()) {
             // This is not a polymorphic method, but typeargs are supplied
--- a/langtools/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1162,6 +1162,9 @@
         ClassSymbol c = readClassSymbol(nextChar());
         NameAndType nt = (NameAndType)readPool(nextChar());
 
+        if (c.members_field == null)
+            throw badClassFile("bad.enclosing.class", self, c);
+
         MethodSymbol m = findMethod(nt, c.members_field, self.flags());
         if (nt != null && m == null)
             throw badClassFile("bad.enclosing.method", self);
@@ -1318,8 +1321,7 @@
                 else
                     proxies.append(proxy);
                 if (majorVersion >= V51.major &&
-                        (proxy.type.tsym == syms.polymorphicSignatureType.tsym ||
-                         proxy.type.tsym == syms.transientPolymorphicSignatureType.tsym)) {
+                    proxy.type.tsym == syms.polymorphicSignatureType.tsym) {
                     sym.flags_field |= POLYMORPHIC_SIGNATURE;
                 }
             }
--- a/langtools/src/share/classes/com/sun/tools/javac/main/Main.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/main/Main.java	Wed Apr 20 09:31:11 2011 -0700
@@ -65,9 +65,11 @@
     PrintWriter out;
 
     /**
-     * If true, any command line arg errors will cause an exception.
+     * If true, certain errors will cause an exception, such as command line
+     * arg errors, or exceptions in user provided code.
      */
-    boolean fatalErrors;
+    boolean apiMode;
+
 
     /** Result codes.
      */
@@ -163,7 +165,7 @@
     /** Report a usage error.
      */
     void error(String key, Object... args) {
-        if (fatalErrors) {
+        if (apiMode) {
             String msg = getLocalizedString(key, args);
             throw new PropagatedException(new IllegalStateException(msg));
         }
@@ -192,8 +194,8 @@
         this.options = options;
     }
 
-    public void setFatalErrors(boolean fatalErrors) {
-        this.fatalErrors = fatalErrors;
+    public void setAPIMode(boolean apiMode) {
+        this.apiMode = apiMode;
     }
 
     /** Process command line arguments: store all command line options
@@ -440,7 +442,9 @@
         } catch (FatalError ex) {
             feMessage(ex);
             return EXIT_SYSERR;
-        } catch(AnnotationProcessingError ex) {
+        } catch (AnnotationProcessingError ex) {
+            if (apiMode)
+                throw new RuntimeException(ex.getCause());
             apMessage(ex);
             return EXIT_SYSERR;
         } catch (ClientCodeException ex) {
@@ -458,7 +462,13 @@
                 bugMessage(ex);
             return EXIT_ABNORMAL;
         } finally {
-            if (comp != null) comp.close();
+            if (comp != null) {
+                try {
+                    comp.close();
+                } catch (ClientCodeException ex) {
+                    throw new RuntimeException(ex.getCause());
+                }
+            }
             filenames = null;
             options = null;
         }
--- a/langtools/src/share/classes/com/sun/tools/javac/main/OptionName.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/main/OptionName.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2011, Oracle and/or its affiliates. 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
--- a/langtools/src/share/classes/com/sun/tools/javac/main/RecognizedOptions.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/main/RecognizedOptions.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2011, Oracle and/or its affiliates. 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
--- a/langtools/src/share/classes/com/sun/tools/javac/nio/JavacPathFileManager.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/nio/JavacPathFileManager.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
--- a/langtools/src/share/classes/com/sun/tools/javac/nio/PathFileObject.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/nio/PathFileObject.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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
@@ -37,6 +37,7 @@
 import java.nio.CharBuffer;
 import java.nio.charset.CharsetDecoder;
 import java.nio.file.Files;
+import java.nio.file.LinkOption;
 import java.nio.file.Path;
 import java.nio.file.attribute.BasicFileAttributes;
 import javax.lang.model.element.Modifier;
@@ -170,7 +171,7 @@
         if (pn.equalsIgnoreCase(sn)) {
             try {
                 // allow for Windows
-                return path.toRealPath(false).getFileName().toString().equals(sn);
+                return path.toRealPath(LinkOption.NOFOLLOW_LINKS).getFileName().toString().equals(sn);
             } catch (IOException e) {
             }
         }
--- a/langtools/src/share/classes/com/sun/tools/javac/parser/JavacParser.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/parser/JavacParser.java	Wed Apr 20 09:31:11 2011 -0700
@@ -971,7 +971,7 @@
             if ((mode & EXPR) != 0) {
                 mode = EXPR;
                 S.nextToken();
-                if (S.token() == LT) typeArgs = typeArguments();
+                if (S.token() == LT) typeArgs = typeArguments(false);
                 t = creator(pos, typeArgs);
                 typeArgs = null;
             } else return illegal();
@@ -1036,7 +1036,7 @@
                             mode = EXPR;
                             int pos1 = S.pos();
                             S.nextToken();
-                            if (S.token() == LT) typeArgs = typeArguments();
+                            if (S.token() == LT) typeArgs = typeArguments(false);
                             t = innerCreator(pos1, typeArgs, t);
                             typeArgs = null;
                             break loop;
@@ -1116,7 +1116,7 @@
                     mode = EXPR;
                     int pos2 = S.pos();
                     S.nextToken();
-                    if (S.token() == LT) typeArgs = typeArguments();
+                    if (S.token() == LT) typeArgs = typeArguments(false);
                     t = innerCreator(pos2, typeArgs, t);
                     typeArgs = null;
                 } else {
@@ -1146,7 +1146,7 @@
         } else {
             int pos = S.pos();
             accept(DOT);
-            typeArgs = (S.token() == LT) ? typeArguments() : null;
+            typeArgs = (S.token() == LT) ? typeArguments(false) : null;
             t = toP(F.at(pos).Select(t, ident()));
             t = argumentsOpt(typeArgs, t);
         }
@@ -1206,7 +1206,7 @@
             (mode & NOPARAMS) == 0) {
             mode = TYPE;
             checkGenerics();
-            return typeArguments(t);
+            return typeArguments(t, false);
         } else {
             return t;
         }
@@ -1223,51 +1223,54 @@
                 illegal();
             }
             mode = useMode;
-            return typeArguments();
+            return typeArguments(false);
         }
         return null;
     }
 
     /**  TypeArguments  = "<" TypeArgument {"," TypeArgument} ">"
      */
-    List<JCExpression> typeArguments() {
-        ListBuffer<JCExpression> args = lb();
+    List<JCExpression> typeArguments(boolean diamondAllowed) {
         if (S.token() == LT) {
             S.nextToken();
-            if (S.token() == GT && (mode & DIAMOND) != 0) {
+            if (S.token() == GT && diamondAllowed) {
                 checkDiamond();
+                mode |= DIAMOND;
                 S.nextToken();
                 return List.nil();
-            }
-            args.append(((mode & EXPR) == 0) ? typeArgument() : parseType());
-            while (S.token() == COMMA) {
-                S.nextToken();
+            } else {
+                ListBuffer<JCExpression> args = ListBuffer.lb();
                 args.append(((mode & EXPR) == 0) ? typeArgument() : parseType());
-            }
-            switch (S.token()) {
-            case GTGTGTEQ:
-                S.token(GTGTEQ);
-                break;
-            case GTGTEQ:
-                S.token(GTEQ);
-                break;
-            case GTEQ:
-                S.token(EQ);
-                break;
-            case GTGTGT:
-                S.token(GTGT);
-                break;
-            case GTGT:
-                S.token(GT);
-                break;
-            default:
-                accept(GT);
-                break;
+                while (S.token() == COMMA) {
+                    S.nextToken();
+                    args.append(((mode & EXPR) == 0) ? typeArgument() : parseType());
+                }
+                switch (S.token()) {
+                case GTGTGTEQ:
+                    S.token(GTGTEQ);
+                    break;
+                case GTGTEQ:
+                    S.token(GTEQ);
+                    break;
+                case GTEQ:
+                    S.token(EQ);
+                    break;
+                case GTGTGT:
+                    S.token(GTGT);
+                    break;
+                case GTGT:
+                    S.token(GT);
+                    break;
+                default:
+                    accept(GT);
+                    break;
+                }
+                return args.toList();
             }
         } else {
             syntaxError(S.pos(), "expected", LT);
+            return List.nil();
         }
-        return args.toList();
     }
 
     /** TypeArgument = Type
@@ -1303,9 +1306,9 @@
         }
     }
 
-    JCTypeApply typeArguments(JCExpression t) {
+    JCTypeApply typeArguments(JCExpression t, boolean diamondAllowed) {
         int pos = S.pos();
-        List<JCExpression> args = typeArguments();
+        List<JCExpression> args = typeArguments(diamondAllowed);
         return toP(F.at(pos).TypeApply(t, args));
     }
 
@@ -1370,18 +1373,25 @@
         }
         JCExpression t = qualident();
         int oldmode = mode;
-        mode = TYPE | DIAMOND;
+        mode = TYPE;
+        boolean diamondFound = false;
         if (S.token() == LT) {
             checkGenerics();
-            t = typeArguments(t);
+            t = typeArguments(t, true);
+            diamondFound = (mode & DIAMOND) != 0;
         }
         while (S.token() == DOT) {
+            if (diamondFound) {
+                //cannot select after a diamond
+                illegal(S.pos());
+            }
             int pos = S.pos();
             S.nextToken();
             t = toP(F.at(pos).Select(t, ident()));
             if (S.token() == LT) {
                 checkGenerics();
-                t = typeArguments(t);
+                t = typeArguments(t, true);
+                diamondFound = (mode & DIAMOND) != 0;
             }
         }
         mode = oldmode;
@@ -1416,9 +1426,8 @@
         JCExpression t = toP(F.at(S.pos()).Ident(ident()));
         if (S.token() == LT) {
             int oldmode = mode;
-            mode |= DIAMOND;
             checkGenerics();
-            t = typeArguments(t);
+            t = typeArguments(t, true);
             mode = oldmode;
         }
         return classCreatorRest(newpos, encl, typeArgs, t);
--- a/langtools/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java	Wed Apr 20 09:31:11 2011 -0700
@@ -34,8 +34,8 @@
 import java.io.File;
 import java.io.PrintWriter;
 import java.io.IOException;
+import java.io.StringWriter;
 import java.net.MalformedURLException;
-import java.io.StringWriter;
 
 import javax.annotation.processing.*;
 import javax.lang.model.SourceVersion;
@@ -58,6 +58,7 @@
 import com.sun.tools.javac.file.FSInfo;
 import com.sun.tools.javac.file.JavacFileManager;
 import com.sun.tools.javac.jvm.*;
+import com.sun.tools.javac.jvm.ClassReader.BadClassFile;
 import com.sun.tools.javac.main.JavaCompiler;
 import com.sun.tools.javac.main.JavaCompiler.CompileState;
 import com.sun.tools.javac.model.JavacElements;
@@ -67,6 +68,7 @@
 import com.sun.tools.javac.tree.JCTree.*;
 import com.sun.tools.javac.util.Abort;
 import com.sun.tools.javac.util.Assert;
+import com.sun.tools.javac.util.ClientCodeException;
 import com.sun.tools.javac.util.Context;
 import com.sun.tools.javac.util.Convert;
 import com.sun.tools.javac.util.FatalError;
@@ -432,6 +434,8 @@
                             log.error("proc.processor.cant.instantiate", processorName);
                             return false;
                         }
+                    } catch(ClientCodeException e) {
+                        throw e;
                     } catch(Throwable t) {
                         throw new AnnotationProcessingError(t);
                     }
@@ -527,6 +531,8 @@
                         supportedOptionNames.add(optionName);
                 }
 
+            } catch (ClientCodeException e) {
+                throw e;
             } catch (Throwable t) {
                 throw new AnnotationProcessingError(t);
             }
@@ -785,11 +791,16 @@
                                          RoundEnvironment renv) {
         try {
             return proc.process(tes, renv);
+        } catch (BadClassFile ex) {
+            log.error("proc.cant.access.1", ex.sym, ex.getDetailValue());
+            return false;
         } catch (CompletionFailure ex) {
             StringWriter out = new StringWriter();
             ex.printStackTrace(new PrintWriter(out));
             log.error("proc.cant.access", ex.sym, ex.getDetailValue(), out.toString());
             return false;
+        } catch (ClientCodeException e) {
+            throw e;
         } catch (Throwable t) {
             throw new AnnotationProcessingError(t);
         }
@@ -1061,6 +1072,11 @@
             PrintWriter out = context.get(Log.outKey);
             Assert.checkNonNull(out);
             next.put(Log.outKey, out);
+            Locale locale = context.get(Locale.class);
+            if (locale != null)
+                next.put(Locale.class, locale);
+            Assert.checkNonNull(messages);
+            next.put(JavacMessages.messagesKey, messages);
 
             final boolean shareNames = true;
             if (shareNames) {
--- a/langtools/src/share/classes/com/sun/tools/javac/resources/compiler.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/resources/compiler.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -302,6 +302,11 @@
 compiler.err.multicatch.parameter.may.not.be.assigned=\
     multi-catch parameter {0} may not be assigned
 
+# 0: type, 1: type
+compiler.err.multicatch.types.must.be.disjoint=\
+    Alternatives in a multi-catch statement cannot be related by subclassing\n\
+    Alternative {0} is a subclass of alternative {1}
+
 compiler.err.finally.without.try=\
     ''finally'' without ''try''
 
@@ -606,12 +611,18 @@
 
 # Errors related to annotation processing
 
+# 0: symbol, 1: string, 2: stack-trace
 compiler.err.proc.cant.access=\
     cannot access {0}\n\
     {1}\n\
     Consult the following stack trace for details.\n\
     {2}
 
+# 0: symbol, 1: string
+compiler.err.proc.cant.access.1=\
+    cannot access {0}\n\
+    {1}
+
 # 0: string
 compiler.err.proc.cant.find.class=\
     Could not find class file for ''{0}''.
@@ -1239,6 +1250,10 @@
 compiler.warn.try.resource.not.referenced=\
     auto-closeable resource {0} is never referenced in body of corresponding try statement
 
+# 0: type
+compiler.warn.try.resource.throws.interrupted.exc=\
+    auto-closeable resource {0} has a member method close() that could throw InterruptedException
+
 compiler.warn.unchecked.assign=\
     unchecked assignment: {0} to {1}
 
@@ -1415,8 +1430,13 @@
 compiler.misc.bad.class.signature=\
     bad class signature: {0}
 
+#0: symbol, 1: symbol
+compiler.misc.bad.enclosing.class=\
+    bad enclosing class for {0}: {1}
+
+# 0: symbol
 compiler.misc.bad.enclosing.method=\
-    bad enclosing method attribute: {0}
+    bad enclosing method attribute for class {0}
 
 compiler.misc.bad.runtime.invisible.param.annotations=\
     bad RuntimeInvisibleParameterAnnotations attribute: {0}
--- a/langtools/src/share/classes/com/sun/tools/javac/resources/compiler_ja.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/resources/compiler_ja.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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,137 +23,315 @@
 # questions.
 #
 
+# Messages in this file which use "placeholders" for values (e.g. {0}, {1})
+# are preceded by a stylized comment describing the type of the corresponding
+# values.
+# The types currently in use are
+#
+# boolean           true or false
+# file name         the name of an input file; e.g.   MyFile.java
+# message segment   a sub-message; see compiler.misc.*
+# modifier          a Java modifier; e.g. public, private, protected
+# name              a name, typically a Java identifier
+# number            an integer
+# option name       the name of a command line option
+# source version    a source version number, such as 1.5, 1.6, 1.7
+# string            a general string
+# symbol            the name of a declared type
+# symbol kind       a description of the kind of a declaration; see compiler.misc.kindname.*
+# token             the name of a non-terminal in source code; see compiler.misc.token.*
+# type              a Java type; e.g. int, X, X<T>
+# unused            the value is not used in this message
+#
+# list of X         a comma-separated list of items; e.g. list of type
+# X or Y            alternation; e.g. message segment or type
+# set of X          a comma-separated collection of items; e.g. set of modifier
+#
+# These may be composed: e.g.   list of type or message segment
+#
+# These comments are verified by the jtreg test test/tools/javac/diags/MessageInfo,
+# using info derived from the collected set of examples in test/tools/javac/diags/examples.
+# MessageInfo can also be run as a standalone utility providing more facilities
+# for manipulating this file. For more details, see MessageInfo.java.
+
 ##
 ## errors
 ##
 
+# 0: symbol
 compiler.err.abstract.cant.be.instantiated={0}\u306Fabstract\u3067\u3059\u3002\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u751F\u6210\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+
 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
+
 compiler.err.already.annotated={0} {1}\u306F\u6CE8\u91C8\u304C\u4ED8\u3044\u3066\u3044\u307E\u3059
+
+# 0: symbol, 1: symbol
 compiler.err.already.defined={0}\u306F{1}\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059
+
+# 0: string
 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
+
+# 0: string
 compiler.err.already.defined.static.single.import={0}\u306Fstatic\u306E\u5358\u4E00\u306E\u578B\u30A4\u30F3\u30DD\u30FC\u30C8\u5BA3\u8A00\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059
+
 compiler.err.already.defined.this.unit={0}\u306F\u30B3\u30F3\u30D1\u30A4\u30EB\u5358\u4F4D\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059
+
+# 0: type, 1: list of name
 compiler.err.annotation.missing.default.value=\u6CE8\u91C8{0}\u306B\u306F\u5C5E\u6027{1}\u306E\u5024\u304C\u3042\u308A\u307E\u305B\u3093
+
+# 0: type, 1: list of name
 compiler.err.annotation.missing.default.value.1=\u6CE8\u91C8{0}\u306B\u306F\u5C5E\u6027{1}\u306E\u5024\u304C\u3042\u308A\u307E\u305B\u3093
+
+# 0: type
 compiler.err.annotation.not.valid.for.type=\u6CE8\u91C8\u306F\u578B{0}\u306E\u5024\u306B\u6709\u52B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093
+
 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
+
 compiler.err.annotation.value.must.be.annotation=\u6CE8\u91C8\u306E\u5024\u306F\u6CE8\u91C8\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+
 compiler.err.annotation.value.must.be.class.literal=\u6CE8\u91C8\u306E\u5024\u306F\u30AF\u30E9\u30B9\u30FB\u30EA\u30C6\u30E9\u30EB\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+
 compiler.err.annotation.value.must.be.name.value=\u6CE8\u91C8\u306E\u5024\u306F''name=value''\u3068\u3044\u3046\u5F62\u5F0F\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+
 compiler.err.annotation.value.not.allowable.type=\u4F7F\u7528\u3067\u304D\u306A\u3044\u578B\u306E\u6CE8\u91C8\u306E\u5024\u3067\u3059
+
 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
+
 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
+
+# 0: symbol, 1: symbol, 2: symbol
 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
+
+# 0: type
 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
 
 compiler.err.assignment.from.super-bound=\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9{0}\u304B\u3089\u4EE3\u5165\u3057\u3066\u3044\u307E\u3059
+
 compiler.err.assignment.to.extends-bound=\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9{0}\u3078\u4EE3\u5165\u3057\u3066\u3044\u307E\u3059
+
 compiler.err.attribute.value.must.be.constant=\u5C5E\u6027\u306E\u5024\u306F\u5B9A\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
 
 compiler.err.break.outside.switch.loop=break\u304Cswitch\u6587\u307E\u305F\u306F\u30EB\u30FC\u30D7\u306E\u5916\u306B\u3042\u308A\u307E\u3059
 
+# 0: name
 compiler.err.call.must.be.first.stmt.in.ctor={0}\u306E\u547C\u51FA\u3057\u306F\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u5148\u982D\u6587\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+
 compiler.err.cant.apply.symbol={4} {5}\u306E{0} {1}\u306F\u6307\u5B9A\u3055\u308C\u305F\u578B\u306B\u9069\u7528\u3067\u304D\u307E\u305B\u3093\n\u671F\u5F85\u5024: {2}\n\u691C\u51FA\u5024: {3}
+
+# 0: symbol kind, 1: name, 2: list of type or message segment, 3: list of type or message segment, 4: symbol kind, 5: type, 6: message segment
 compiler.err.cant.apply.symbol.1={4} {5}\u306E{0} {1}\u306F\u6307\u5B9A\u3055\u308C\u305F\u578B\u306B\u9069\u7528\u3067\u304D\u307E\u305B\u3093\u3002\n\u671F\u5F85\u5024: {2}\n\u691C\u51FA\u5024: {3}\n\u7406\u7531: {6}
+
+# 0: symbol kind, 1: name, 2: list of type
 compiler.err.cant.apply.symbols={1}\u306B\u9069\u5207\u306A{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093({2})
+
+# 0: symbol
 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
+
+# 0: type
 compiler.err.cant.deref={0}\u306F\u9593\u63A5\u53C2\u7167\u3067\u304D\u307E\u305B\u3093
+
 compiler.err.cant.extend.intf.annotation=@interfaces\u3067\u306F''extends''\u306F\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093
+
+# 0: symbol
 compiler.err.cant.inherit.from.final=final {0}\u304B\u3089\u306F\u7D99\u627F\u3067\u304D\u307E\u305B\u3093
+
+# 0: symbol
 compiler.err.cant.ref.before.ctor.called=\u30B9\u30FC\u30D1\u30FC\u30BF\u30A4\u30D7\u306E\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u547C\u51FA\u3057\u524D\u306F{0}\u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093
+
 compiler.err.cant.ret.val.from.meth.decl.void=\u623B\u308A\u5024\u306E\u578B\u304Cvoid\u306E\u30E1\u30BD\u30C3\u30C9\u304B\u3089\u306F\u5024\u3092\u8FD4\u305B\u307E\u305B\u3093
+
 compiler.err.cant.select.static.class.from.param.type=\u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u3055\u308C\u305F\u578B\u304B\u3089static\u30AF\u30E9\u30B9\u3092\u9078\u629E\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+
+# 0: symbol, 1: string, 2: string
 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
+
 compiler.err.catch.without.try=''catch''\u3078\u306E''try''\u304C\u3042\u308A\u307E\u305B\u3093
-compiler.err.clash.with.pkg.of.same.name={0}\u306F\u540C\u540D\u306E\u30D1\u30C3\u30B1\u30FC\u30B8\u3068\u7AF6\u5408\u3057\u307E\u3059
+
+# 0: symbol kind, 1: symbol
+compiler.err.clash.with.pkg.of.same.name={0} {1}\u306F\u540C\u540D\u306E\u30D1\u30C3\u30B1\u30FC\u30B8\u3068\u7AF6\u5408\u3057\u307E\u3059
+
 compiler.err.const.expr.req=\u5B9A\u6570\u5F0F\u304C\u5FC5\u8981\u3067\u3059
-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
+
 compiler.err.cont.outside.loop=continue\u304C\u30EB\u30FC\u30D7\u306E\u5916\u306B\u3042\u308A\u307E\u3059
+
+# 0: symbol
 compiler.err.cyclic.inheritance={0}\u3092\u542B\u3080\u7D99\u627F\u304C\u30EB\u30FC\u30D7\u3057\u3066\u3044\u307E\u3059
+
 compiler.err.cyclic.annotation.element=\u6CE8\u91C8\u306E\u8981\u7D20\u30BF\u30A4\u30D7\u304C\u30EB\u30FC\u30D7\u3057\u3066\u3044\u307E\u3059
+
+# 0: unused
 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\u51FA\u3057\u306F\u3067\u304D\u307E\u305B\u3093
+
+# 0: type
 compiler.err.no.superclass={0}\u306B\u306F\u30B9\u30FC\u30D1\u30FC\u30AF\u30E9\u30B9\u304C\u3042\u308A\u307E\u305B\u3093
 
-compiler.warn.type.parameter.on.polymorphic.signature=MethodHandle\u547C\u51FA\u3057\u306E\u53E4\u3044\u8868\u8A18\u6CD5\u3092x.<T>invoke(y)\u304B\u3089(T)x.invoke(y)\u306B\u5909\u66F4\u3057\u3066\u304F\u3060\u3055\u3044
-compiler.warn.wrong.target.for.polymorphic.signature.definition=MethodHandle API\u306E\u4F5C\u6210\u306B\u306F-target 7\u30E9\u30F3\u30BF\u30A4\u30E0\u4EE5\u4E0A\u304C\u5FC5\u8981\u3067\u3059\u3002\u73FE\u5728\u306F-target {0}\u3067\u3059
+compiler.err.wrong.target.for.polymorphic.signature.definition=MethodHandle API\u306E\u4F5C\u6210\u306B\u306F-target 7\u30E9\u30F3\u30BF\u30A4\u30E0\u4EE5\u4E0A\u304C\u5FC5\u8981\u3067\u3059\u3002\u73FE\u5728\u306F-target {0}\u3067\u3059
 
+# 0: symbol, 1: type, 2: symbol, 3: type, 4: unused
 compiler.err.concrete.inheritance.conflict={1}\u306E\u30E1\u30BD\u30C3\u30C9{0}\u3068{3}\u306E{2}\u306F\u540C\u3058\u30B7\u30B0\u30CB\u30C1\u30E3\u304B\u3089\u7D99\u627F\u3055\u308C\u3066\u3044\u307E\u3059
 
 compiler.err.default.allowed.in.intf.annotation.member=\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306F@interface\u30E1\u30F3\u30D0\u30FC\u5185\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059
+
+# 0: symbol
 compiler.err.doesnt.exist=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306F\u5B58\u5728\u3057\u307E\u305B\u3093
+
 compiler.err.duplicate.annotation=\u6CE8\u91C8\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059
+
+# 0: name, 1: type
 compiler.err.duplicate.annotation.member.value={1}\u306E\u6CE8\u91C8\u30E1\u30F3\u30D0\u30FC\u306E\u5024{0}\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059
+
+# 0: name
 compiler.err.duplicate.class=\u30AF\u30E9\u30B9{0}\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059
+
 compiler.err.duplicate.case.label=case\u30E9\u30D9\u30EB\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059
+
 compiler.err.duplicate.default.label=default\u30E9\u30D9\u30EB\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059
 
 compiler.err.else.without.if=''else''\u3078\u306E''if''\u304C\u3042\u308A\u307E\u305B\u3093
+
 compiler.err.empty.char.lit=\u7A7A\u306E\u6587\u5B57\u30EA\u30C6\u30E9\u30EB\u3067\u3059
+
+# 0: symbol
 compiler.err.encl.class.required={0}\u3092\u542B\u3080\u56F2\u3046\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u304C\u5FC5\u8981\u3067\u3059
+
 compiler.err.enum.annotation.must.be.enum.constant=\u5217\u6319\u578B\u6CE8\u91C8\u5024\u306F\u3001\u5217\u6319\u578B\u5B9A\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
 
 compiler.err.enum.cant.be.instantiated=\u5217\u6319\u578B\u306F\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u5316\u3067\u304D\u307E\u305B\u3093
+
 compiler.err.enum.label.must.be.unqualified.enum=\u5217\u6319\u578B\u306Eswitch case\u30E9\u30D9\u30EB\u306F\u5217\u6319\u578B\u5B9A\u6570\u306E\u975E\u4FEE\u98FE\u540D\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+
 compiler.err.enum.no.subclassing=\u30AF\u30E9\u30B9\u306F\u76F4\u63A5java.lang.Enum\u3092\u62E1\u5F35\u3067\u304D\u307E\u305B\u3093
+
 compiler.err.enum.types.not.extensible=\u5217\u6319\u578B\u306F\u62E1\u5F35\u53EF\u80FD\u3067\u306F\u3042\u308A\u307E\u305B\u3093
+
 compiler.err.enum.no.finalize=\u5217\u6319\u578B\u306Ffinalize\u30E1\u30BD\u30C3\u30C9\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+
+# 0: file name, 1: string
 compiler.err.error.reading.file={0}\u306E\u8AAD\u8FBC\u307F\u30A8\u30E9\u30FC\u3067\u3059\u3002{1}
+
+# 0: type
 compiler.err.except.already.caught=\u4F8B\u5916{0}\u306F\u3059\u3067\u306B\u6355\u6349\u3055\u308C\u3066\u3044\u307E\u3059
+
+# 0: type
 compiler.err.except.never.thrown.in.try=\u4F8B\u5916{0}\u306F\u5BFE\u5FDC\u3059\u308Btry\u6587\u306E\u672C\u4F53\u3067\u306F\u30B9\u30ED\u30FC\u3055\u308C\u307E\u305B\u3093
 
+# 0: symbol
 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
+
+# 0: symbol
 compiler.err.try.resource.may.not.be.assigned=\u81EA\u52D5\u30AF\u30ED\u30FC\u30BA\u53EF\u80FD\u306A\u30EA\u30BD\u30FC\u30B9{0}\u306B\u5024\u3092\u4EE3\u5165\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+
+# 0: symbol
 compiler.err.multicatch.parameter.may.not.be.assigned=\u8907\u6570catch\u30D1\u30E9\u30E1\u30FC\u30BF{0}\u306B\u5024\u3092\u4EE3\u5165\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+
 compiler.err.finally.without.try=''finally''\u3078\u306E''try''\u304C\u3042\u308A\u307E\u305B\u3093
-compiler.err.foreach.not.applicable.to.type=foreach\u306F\u5F0F\u306E\u30BF\u30A4\u30D7\u306B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
+
+# 0: type, 1: message segment
+compiler.err.foreach.not.applicable.to.type=for-each\u306F\u5F0F\u306E\u30BF\u30A4\u30D7\u306B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\n\u671F\u5F85\u5024: {1}\n\u691C\u51FA\u5024: {0}
+
 compiler.err.fp.number.too.large=\u6D6E\u52D5\u5C0F\u6570\u70B9\u6570\u304C\u5927\u304D\u3059\u304E\u307E\u3059
+
 compiler.err.fp.number.too.small=\u6D6E\u52D5\u5C0F\u6570\u70B9\u6570\u304C\u5C0F\u3055\u3059\u304E\u307E\u3059
 
 compiler.err.generic.array.creation=\u6C4E\u7528\u914D\u5217\u3092\u4F5C\u6210\u3057\u307E\u3059
+
 compiler.err.generic.throwable=\u6C4E\u7528\u30AF\u30E9\u30B9\u306Fjava.lang.Throwable\u3092\u62E1\u5F35\u3067\u304D\u307E\u305B\u3093
 
-compiler.err.icls.cant.have.static.decl=\u5185\u90E8\u30AF\u30E9\u30B9\u304Cstatic\u5BA3\u8A00\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+# 0: symbol
+compiler.err.icls.cant.have.static.decl=\u5185\u90E8\u30AF\u30E9\u30B9{0}\u306E\u9759\u7684\u5BA3\u8A00\u304C\u4E0D\u6B63\u3067\u3059\n\u4FEE\u98FE\u5B50\''static\''\u306F\u5B9A\u6570\u304A\u3088\u3073\u5909\u6570\u306E\u5BA3\u8A00\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059
+
+# 0: string
 compiler.err.illegal.char=\\{0}\u306F\u4E0D\u6B63\u306A\u6587\u5B57\u3067\u3059
+
 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
+
+# 0: set of modifier, 1: set of modifier
 compiler.err.illegal.combination.of.modifiers=\u4FEE\u98FE\u5B50{0}\u3068{1}\u306E\u7D44\u5408\u305B\u306F\u4E0D\u6B63\u3067\u3059
+
 compiler.err.illegal.enum.static.ref=\u521D\u671F\u5316\u5B50\u304B\u3089static\u30D5\u30A3\u30FC\u30EB\u30C9\u3078\u306E\u53C2\u7167\u304C\u4E0D\u6B63\u3067\u3059
+
 compiler.err.illegal.esc.char=\u30A8\u30B9\u30B1\u30FC\u30D7\u6587\u5B57\u304C\u4E0D\u6B63\u3067\u3059
+
 compiler.err.illegal.forward.ref=\u524D\u65B9\u53C2\u7167\u304C\u4E0D\u6B63\u3067\u3059
+
+# 0: symbol
 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.self.ref=\u521D\u671F\u5316\u5B50\u5185\u306E\u81EA\u5DF1\u53C2\u7167
+
+# 0: symbol
 compiler.warn.self.ref=\u521D\u671F\u5316\u5B50\u5185\u306E\u5909\u6570''{0}''\u306E\u81EA\u5DF1\u53C2\u7167
+
 compiler.err.illegal.generic.type.for.instof=instanceof\u306E\u7DCF\u79F0\u578B\u304C\u4E0D\u6B63\u3067\u3059
+
+# 0: type
 compiler.err.illegal.initializer.for.type={0}\u306E\u521D\u671F\u5316\u5B50\u304C\u4E0D\u6B63\u3067\u3059
+
 compiler.err.illegal.line.end.in.char.lit=\u6587\u5B57\u30EA\u30C6\u30E9\u30EB\u306E\u884C\u672B\u304C\u4E0D\u6B63\u3067\u3059
+
 compiler.err.illegal.nonascii.digit=\u4E0D\u6B63\u306A\u975EASCII\u6570\u5B57\u3067\u3059
+
 compiler.err.illegal.underscore=\u4E0D\u6B63\u306A\u30A2\u30F3\u30C0\u30FC\u30B9\u30B3\u30A2\u3067\u3059
+
+# 0: symbol
 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
+
 compiler.err.illegal.start.of.expr=\u5F0F\u306E\u958B\u59CB\u304C\u4E0D\u6B63\u3067\u3059
+
 compiler.err.illegal.start.of.type=\u578B\u306E\u958B\u59CB\u304C\u4E0D\u6B63\u3067\u3059
+
 compiler.err.illegal.unicode.esc=Unicode\u30A8\u30B9\u30B1\u30FC\u30D7\u304C\u4E0D\u6B63\u3067\u3059
+
+# 0: symbol
 compiler.err.import.requires.canonical=\u30A4\u30F3\u30DD\u30FC\u30C8\u306B\u306F{0}\u306E\u6A19\u6E96\u540D\u304C\u5FC5\u8981\u3067\u3059
+
 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
-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
+
+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\u5F15\u6570\u3067\u3059
+
+# 0: type, 1: type
 compiler.err.incomparable.types=\u578B{0}\u3068{1}\u306F\u6BD4\u8F03\u3067\u304D\u307E\u305B\u3093
+
+# 0: number
 compiler.err.int.number.too.large=\u6574\u6570{0}\u304C\u5927\u304D\u3059\u304E\u307E\u3059
+
 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
+
 compiler.err.intf.annotation.members.cant.have.params=@interface\u30E1\u30F3\u30D0\u30FC\u304C\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+
 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
+
 compiler.err.intf.annotation.members.cant.have.type.params=@interface\u30E1\u30F3\u30D0\u30FC\u304C\u578B\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+
+# 0: symbol, 1: type
 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
+
 compiler.err.intf.meth.cant.have.body=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u30FB\u30E1\u30BD\u30C3\u30C9\u304C\u672C\u4F53\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+
 compiler.err.invalid.annotation.member.type=\u6CE8\u91C8\u30E1\u30F3\u30D0\u30FC\u306E\u578B\u304C\u4E0D\u6B63\u3067\u3059
+
 compiler.err.invalid.binary.number=2\u9032\u6570\u5B57\u306F\u5C11\u306A\u304F\u3068\u30821\u6841\u306E2\u9032\u6570\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+
 compiler.err.invalid.hex.number=16\u9032\u6570\u5B57\u306F\u5C11\u306A\u304F\u3068\u30821\u6841\u306E16\u9032\u6570\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+
 compiler.err.invalid.meth.decl.ret.type.req=\u7121\u52B9\u306A\u30E1\u30BD\u30C3\u30C9\u5BA3\u8A00\u3067\u3059\u3002\u623B\u308A\u5024\u306E\u578B\u304C\u5FC5\u8981\u3067\u3059\u3002
 
+compiler.err.varargs.and.old.array.syntax=\u65E7\u5F0F\u306E\u914D\u5217\u8868\u8A18\u6CD5\u306F\u53EF\u5909\u5F15\u6570\u30D1\u30E9\u30E1\u30FC\u30BF\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
+
+# 0: name
 compiler.err.label.already.in.use=\u30E9\u30D9\u30EB{0}\u306F\u3059\u3067\u306B\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059
+
+# 0: symbol
 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
+
 compiler.err.local.enum=\u5217\u6319\u578B\u306F\u30ED\u30FC\u30AB\u30EB\u306B\u3067\u304D\u307E\u305B\u3093
+
 compiler.err.cannot.create.array.with.type.arguments=\u578B\u5F15\u6570\u3092\u6301\u3064\u914D\u5217\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093
 
 #
@@ -162,45 +340,96 @@
 # detected during code generation.
 #
 compiler.err.limit.code=\u30B3\u30FC\u30C9\u304C\u5927\u304D\u3059\u304E\u307E\u3059
+
 compiler.err.limit.code.too.large.for.try.stmt=try\u6587\u306E\u30B3\u30FC\u30C9\u304C\u5927\u304D\u3059\u304E\u307E\u3059
+
 compiler.err.limit.dimensions=\u914D\u5217\u578B\u306E\u6B21\u5143\u304C\u591A\u3059\u304E\u307E\u3059
+
 compiler.err.limit.locals=\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u304C\u591A\u3059\u304E\u307E\u3059
+
 compiler.err.limit.parameters=\u30D1\u30E9\u30E1\u30FC\u30BF\u304C\u591A\u3059\u304E\u307E\u3059
+
 compiler.err.limit.pool=\u5B9A\u6570\u304C\u591A\u3059\u304E\u307E\u3059
+
 compiler.err.limit.pool.in.class=\u30AF\u30E9\u30B9{0}\u5185\u306E\u5B9A\u6570\u304C\u591A\u3059\u304E\u307E\u3059
+
 compiler.err.limit.stack=\u30B3\u30FC\u30C9\u304C\u8981\u6C42\u3059\u308B\u30B9\u30BF\u30C3\u30AF\u304C\u591A\u3059\u304E\u307E\u3059
+
 compiler.err.limit.string=\u5B9A\u6570\u6587\u5B57\u5217\u304C\u9577\u3059\u304E\u307E\u3059
+
 compiler.err.limit.string.overflow=\u6587\u5B57\u5217\"{0}...\"\u306EUTF8\u8868\u73FE\u304C\u3001\u5B9A\u6570\u30D7\u30FC\u30EB\u306B\u5BFE\u3057\u3066\u9577\u3059\u304E\u307E\u3059
 
 compiler.err.malformed.fp.lit=\u6D6E\u52D5\u5C0F\u6570\u70B9\u30EA\u30C6\u30E9\u30EB\u304C\u4E0D\u6B63\u3067\u3059
+
 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
+
 compiler.err.missing.ret.stmt=return\u6587\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+
 compiler.err.missing.ret.val=\u623B\u308A\u5024\u304C\u3042\u308A\u307E\u305B\u3093
+
+# 0: set of modifier
 compiler.err.mod.not.allowed.here=\u4FEE\u98FE\u5B50{0}\u3092\u3053\u3053\u3067\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+
 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\u306Fstatic\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059
 
+# 0: symbol, 1: symbol
 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
+
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol, 4: unused, 5: unused
 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
+
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol, 4: symbol, 5: symbol
+compiler.err.name.clash.same.erasure.no.override.1=\u540D\u524D\u304C\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059\u3002{1}\u306E{0}\u306E\u3069\u3061\u3089\u3082\u3001\u4ED6\u65B9\u306E\u6700\u521D\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u307E\u3060\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u3066\u3044\u307E\u305B\u3093\u304C\u3001\u524A\u9664\u5F8C\u306E\u540D\u524D\u304C\u5225\u306E\u30E1\u30BD\u30C3\u30C9\u3068\u540C\u3058\u30E1\u30BD\u30C3\u30C9\u3092\n\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u3059\u3002\u6700\u521D\u306E\u30E1\u30BD\u30C3\u30C9: {3}\u306E{2}\n2\u756A\u76EE\u306E\u30E1\u30BD\u30C3\u30C9: {5}\u306E{4}
+
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol
+compiler.err.name.clash.same.erasure.no.hide=\u540D\u524D\u304C\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059\u3002{1}\u306E{0}\u3068{3}\u306E{2}\u306F\u307E\u3060\u4ED6\u65B9\u3092\u975E\u8868\u793A\u306B\u3057\u3066\u3044\u307E\u305B\u3093\u304C\u3001\u524A\u9664\u5F8C\u306E\u540D\u524D\u304C\u540C\u3058\u3067\u3059
+
 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
+
 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
+
+# 0: type, 1: type
 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\u30FC{0}\u304C\u3042\u308A\u307E\u305B\u3093
+
 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
+
 compiler.err.no.intf.expected.here=\u3053\u3053\u306B\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306F\u5FC5\u8981\u3042\u308A\u307E\u305B\u3093
+
 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
+
 compiler.err.not.annotation.type={0}\u306F\u6CE8\u91C8\u578B\u3067\u306F\u3042\u308A\u307E\u305B\u3093
+
+# 0: symbol, 1: symbol
 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
+
+# 0: symbol, 1: symbol
 compiler.err.not.def.public.cant.access={1}\u306E{0}\u306Fpublic\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
+
+# 0: name
 compiler.err.not.loop.label={0}\u306F\u30EB\u30FC\u30D7\u30FB\u30E9\u30D9\u30EB\u3067\u306F\u3042\u308A\u307E\u305B\u3093
+
 compiler.err.not.stmt=\u6587\u3067\u306F\u3042\u308A\u307E\u305B\u3093
+
+# 0: symbol
 compiler.err.not.encl.class={0}\u306F\u5185\u90E8\u30AF\u30E9\u30B9\u3092\u56F2\u307F\u307E\u305B\u3093
 
-compiler.err.operator.cant.be.applied=\u6F14\u7B97\u5B50{0}\u306F{1}\u306B\u9069\u7528\u3067\u304D\u307E\u305B\u3093
+# 0: name, 1: type, 2: unused
+compiler.err.operator.cant.be.applied=\u5358\u9805\u6F14\u7B97\u5B50''{0}''\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u578B{1}\u304C\u4E0D\u6B63\u3067\u3059
+
+# 0: name, 1: type, 2: type
+compiler.err.operator.cant.be.applied.1=\u4E8C\u9805\u6F14\u7B97\u5B50''{0}''\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u578B\u304C\u4E0D\u6B63\u3067\u3059\n\u6700\u521D\u306E\u578B: {1}\n2\u756A\u76EE\u306E\u578B: {2}
 
 compiler.err.pkg.annotations.sb.in.package-info.java=\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\u6CE8\u91C8\u306F\u30D5\u30A1\u30A4\u30EBpackage-info.java\u5185\u306B\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+
+# 0: symbol
 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
 
 compiler.err.warnings.and.werror=\u8B66\u544A\u304C\u898B\u3064\u304B\u308A-Werror\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F
@@ -209,23 +438,29 @@
 
 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}
 
+# 0: string
 compiler.err.proc.cant.find.class=''{0}''\u306E\u30AF\u30E9\u30B9\u30FB\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
+# 0: string
 compiler.err.proc.messager={0}
 
+# 0: list of string
 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\u30EA\u30AF\u30A8\u30B9\u30C8\u3055\u308C\u305F\u5834\u5408\u306E\u307F\u3067\u3059
 
 compiler.err.proc.no.service=\u30B5\u30FC\u30D3\u30B9\u30FB\u30ED\u30FC\u30C0\u30FC\u30FB\u30AF\u30E9\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002\njava.util.ServiceLoader\u304Bsun.misc.Service\u304C\u4F7F\u7528\u3067\u304D\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
 
 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
 
+# 0: string
 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.constructor.error=\u30D7\u30ED\u30BB\u30C3\u30B5\u30FB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u69CB\u7BC9\u4E2D\u306B\u4F8B\u5916\u304C\u30B9\u30ED\u30FC\u3055\u308C\u307E\u3057\u305F: {0}
 
+# 0: string
 compiler.err.proc.processor.not.found=\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5''{0}''\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
 
+# 0: string
 compiler.err.proc.processor.wrong.type=\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5''{0}''\u304Cjavax.annotation.processing.Processor\u3092\u5B9F\u88C5\u3057\u3066\u3044\u307E\u305B\u3093
 
 compiler.err.proc.service.problem=\u30D7\u30ED\u30BB\u30C3\u30B5\u3092\u30ED\u30FC\u30C9\u3059\u308B\u305F\u3081\u306E\u30B5\u30FC\u30D3\u30B9\u30FB\u30ED\u30FC\u30C0\u30FC\u3092\u4F5C\u6210\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
@@ -234,67 +469,148 @@
 
 compiler.err.proc.cant.create.loader=\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u306E\u30AF\u30E9\u30B9\u30FB\u30ED\u30FC\u30C0\u30FC\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: {0}
 
+# 0: unused
 compiler.err.qualified.new.of.static.class=static\u30AF\u30E9\u30B9\u306Enew\u304C\u4FEE\u98FE\u3055\u308C\u3066\u3044\u307E\u3059
 
 compiler.err.recursive.ctor.invocation=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u547C\u51FA\u3057\u304C\u518D\u5E30\u7684\u3067\u3059
+
+# 0: name, 1: symbol kind, 2: symbol, 3: symbol, 4: symbol kind, 5: symbol, 6: symbol
 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
+
 compiler.err.repeated.annotation.target=\u6CE8\u91C8\u30BF\u30FC\u30B2\u30C3\u30C8\u304C\u7E70\u308A\u8FD4\u3055\u308C\u3066\u3044\u307E\u3059
+
 compiler.err.repeated.interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304C\u7E70\u308A\u8FD4\u3055\u308C\u3066\u3044\u307E\u3059
+
 compiler.err.repeated.modifier=\u4FEE\u98FE\u5B50\u304C\u7E70\u308A\u8FD4\u3055\u308C\u3066\u3044\u307E\u3059
+
+# 0: symbol, 1: set of modifier, 2: symbol
 compiler.err.report.access={0}\u306F{2}\u3067{1}\u30A2\u30AF\u30BB\u30B9\u3055\u308C\u307E\u3059
+
 compiler.err.ret.outside.meth=\u30E1\u30BD\u30C3\u30C9\u306E\u5916\u306Ereturn\u6587\u3067\u3059
 
 compiler.err.signature.doesnt.match.supertype=\u30B7\u30B0\u30CB\u30C1\u30E3\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
+
 compiler.err.signature.doesnt.match.intf=\u30B7\u30B0\u30CB\u30C1\u30E3\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
+
+# 0: symbol, 1: symbol, 2: symbol
 compiler.err.does.not.override.abstract={0}\u306Fabstract\u3067\u306A\u304F\u3001{2}\u5185\u306Eabstract\u30E1\u30BD\u30C3\u30C9{1}\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u305B\u3093
+
 compiler.err.source.cant.overwrite.input.file=\u30BD\u30FC\u30B9\u306E\u66F8\u8FBC\u307F\u30A8\u30E9\u30FC\u3067\u3059\u3002\u5165\u529B\u30D5\u30A1\u30A4\u30EB{0}\u3092\u4E0A\u66F8\u304D\u3067\u304D\u307E\u305B\u3093
+
 compiler.err.stack.sim.error=\u5185\u90E8\u30A8\u30E9\u30FC: {0}\u3067\u306E\u30B9\u30BF\u30C3\u30AF\u30FB\u30B7\u30DF\u30E5\u30EC\u30FC\u30B7\u30E7\u30F3\u30FB\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
+
 compiler.err.string.const.req=\u5B9A\u6570\u306E\u6587\u5B57\u5217\u5F0F\u304C\u5FC5\u8981\u3067\u3059
+
+# 0: symbol, 1: symbol
 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
+
+# 0: symbol, 1: symbol
 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
 
 compiler.err.throws.not.allowed.in.intf.annotation=throws\u7BC0\u3092@interface\u30E1\u30F3\u30D0\u30FC\u3067\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+
 compiler.err.try.without.catch.or.finally=''try''\u3078\u306E''catch''\u307E\u305F\u306F''finally''\u304C\u3042\u308A\u307E\u305B\u3093
+
 compiler.err.try.without.catch.finally.or.resource.decls=''try''\u3078\u306E''catch''\u3001''finally''\u307E\u305F\u306F\u30EA\u30BD\u30FC\u30B9\u5BA3\u8A00\u304C\u3042\u308A\u307E\u305B\u3093
+
+# 0: symbol
 compiler.err.type.doesnt.take.params=\u578B{0}\u306F\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u3068\u308A\u307E\u305B\u3093
+
 compiler.err.type.var.cant.be.deref=\u578B\u5909\u6570\u304B\u3089\u9078\u629E\u3067\u304D\u307E\u305B\u3093
+
 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
+
 compiler.err.type.var.more.than.once=\u578B\u5909\u6570{0}\u306F{1}\u306E\u623B\u308A\u5024\u306E\u578B\u30672\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
+
 compiler.err.type.var.more.than.once.in.result=\u578B\u5909\u6570{0}\u306F{1}\u306E\u578B\u30672\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
+
+# 0: type, 1: type, 2: string
 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
 
 compiler.err.unclosed.char.lit=\u6587\u5B57\u30EA\u30C6\u30E9\u30EB\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093
+
 compiler.err.unclosed.comment=\u30B3\u30E1\u30F3\u30C8\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093
+
 compiler.err.unclosed.str.lit=\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093
+
 compiler.err.unknown.enum.constant=\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB{0}\u5185: \u4E0D\u660E\u306A\u5217\u6319\u578B\u5B9A\u6570\u3067\u3059{1}.{2}
+
+# 0: name
 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\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u30A8\u30E9\u30FC\u3067\u3059: {0}
+
+# 0: name
 compiler.err.undef.label=\u30E9\u30D9\u30EB{0}\u306F\u672A\u5B9A\u7FA9\u3067\u3059
-compiler.err.undetermined.type={0}\u306E\u578B\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u5224\u5225\u3067\u304D\u307E\u305B\u3093
-compiler.err.undetermined.type.1=\u578B\u30D1\u30E9\u30E1\u30FC\u30BF{0}\u3092\u5224\u5225\u3067\u304D\u307E\u305B\u3093\u3002{1}
+
+compiler.err.undetermined.type={0}\u306E\u578B\u5F15\u6570\u3092\u63A8\u5B9A\u3067\u304D\u307E\u305B\u3093
+
+# 0: type, 1: message segment
+compiler.err.undetermined.type.1={0}\u306E\u578B\u5F15\u6570\u3092\u63A8\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002\n\u7406\u7531: {1}
+
+# 0: list of type, 1: message segment
 compiler.err.invalid.inferred.types={0}\u306E\u63A8\u5B9A\u578B\u304C\u7121\u52B9\u3067\u3059\u3002{1}
+
+# 0: message segment, 1: unused
 compiler.err.cant.apply.diamond={0}\u306E\u578B\u5F15\u6570\u3092\u63A8\u5B9A\u3067\u304D\u307E\u305B\u3093
+
+# 0: message segment, 1: message segment
 compiler.err.cant.apply.diamond.1={0}\u306E\u578B\u5F15\u6570\u3092\u63A8\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002\n\u7406\u7531: {1}
+
 compiler.err.unreachable.stmt=\u3053\u306E\u6587\u306B\u5236\u5FA1\u304C\u79FB\u308B\u3053\u3068\u306F\u3042\u308A\u307E\u305B\u3093
+
 compiler.err.initializer.must.be.able.to.complete.normally=\u521D\u671F\u5316\u5B50\u306F\u6B63\u5E38\u306B\u5B8C\u4E86\u3067\u304D\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+
+# 0: type
 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\u3001\u6355\u6349\u307E\u305F\u306F\u5BA3\u8A00\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+
+# 0: type
 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
+
+# 0: type, 1: name
+compiler.err.unreported.exception.implicit.close=\u5831\u544A\u3055\u308C\u306A\u3044\u4F8B\u5916{0}\u306F\u3001\u30B9\u30ED\u30FC\u3059\u308B\u306B\u306F\u6355\u6349\u307E\u305F\u306F\u5BA3\u8A00\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\n\u30EA\u30BD\u30FC\u30B9\u5909\u6570''{1}''\u3067\u306Eclose()\u306E\u6697\u9ED9\u7684\u306A\u30B3\u30FC\u30EB\u304B\u3089\u4F8B\u5916\u304C\u30B9\u30ED\u30FC\u3055\u308C\u307E\u3057\u305F
+
 compiler.err.unsupported.cross.fp.lit=16\u9032\u6D6E\u52D5\u5C0F\u6570\u70B9\u30EA\u30C6\u30E9\u30EB\u306F\u3053\u306EVM\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+
 compiler.err.void.not.allowed.here=\u3053\u3053\u3067''void''\u578B\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
 
+# 0: string
 compiler.err.wrong.number.type.args=\u578B\u5F15\u6570\u306E\u6570\u304C\u4E0D\u6B63\u3067\u3059\u3002{0}\u500B\u5FC5\u8981\u3067\u3059
 
+# 0: symbol
 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
+
+# 0: symbol
 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
+
+# 0: symbol
 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
 
+# 0: symbol, 1: message segment
+compiler.err.varargs.invalid.trustme.anno={0}\u6CE8\u91C8\u304C\u7121\u52B9\u3067\u3059\u3002{1}
+
+# 0: type
+compiler.misc.varargs.trustme.on.reifiable.varargs=\u53EF\u5909\u5F15\u6570\u8981\u7D20\u578B{0}\u306Freifiable\u578B\u3067\u3059\u3002
+
+# 0: symbol
+compiler.misc.varargs.trustme.on.non.varargs.meth=\u30E1\u30BD\u30C3\u30C9{0}\u306F\u53EF\u5909\u5F15\u6570\u30E1\u30BD\u30C3\u30C9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
+
+# 0: symbol
+compiler.misc.varargs.trustme.on.virtual.varargs=\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u30FB\u30E1\u30BD\u30C3\u30C9{0}\u306Ffinal\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
+
+# 0: type, 1: kind, 2: symbol
+compiler.misc.inaccessible.varargs.type=\u4EEE\u53EF\u5909\u5F15\u6570\u8981\u7D20\u578B{0}\u306F{1} {2}\u304B\u3089\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093
+
 # In the following string, {1} will always be the detail message from
 # java.io.IOException.
+# 0: symbol, 1: string
 compiler.err.class.cant.write={0}\u306E\u66F8\u8FBC\u307F\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F: {1}
 
 # In the following string, {0} is the name of the class in the Java source.
 # It really should be used two times..
+# 0: name
 compiler.err.class.public.should.be.in.file=\u30AF\u30E9\u30B9{0}\u306Fpublic\u3067\u3042\u308A\u3001\u30D5\u30A1\u30A4\u30EB{0}.java\u3067\u5BA3\u8A00\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
 
 ## All errors which do not refer to a particular line in the source code are
@@ -309,9 +625,13 @@
 # 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\u30FB\u30AF\u30E9\u30B9\u30D1\u30B9\u3067\u30D1\u30C3\u30B1\u30FC\u30B8java.lang\u3092\u691C\u51FA\u3067\u304D\u307E\u305B\u3093
+
 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
+
 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
+
 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
+
 compiler.misc.fatal.err.cant.close.loader=\u81F4\u547D\u7684\u30A8\u30E9\u30FC: \u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u306E\u30AF\u30E9\u30B9\u30FB\u30ED\u30FC\u30C0\u30FC\u3092\u9589\u3058\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093
 
 #####
@@ -321,8 +641,13 @@
 ##
 
 compiler.misc.source.unavailable=(\u30BD\u30FC\u30B9\u304C\u5229\u7528\u4E0D\u53EF)
+
 compiler.misc.base.membership=\u3059\u3079\u3066\u306E\u30D9\u30FC\u30B9\u30FB\u30AF\u30E9\u30B9\u304C\u30E1\u30F3\u30D0\u30FC\u3067\u3059
+
+# 0: string, 1: string, 2: boolean
 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
+
+# 0: number, 1: string, 2: set of symbol, 3: boolean
 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}
 
 #####
@@ -331,77 +656,105 @@
 ## "compiler.note".
 compiler.note.note=\u6CE8\u610F:
 
+# 0: file name
 compiler.note.deprecated.filename={0}\u306F\u63A8\u5968\u3055\u308C\u306A\u3044API\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\u3044API\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\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
 
+# 0: file name
 compiler.note.deprecated.filename.additional={0}\u306B\u63A8\u5968\u3055\u308C\u306A\u3044API\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\u3044API\u3092\u8FFD\u52A0\u4F7F\u7528\u307E\u305F\u306F\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u3066\u3044\u307E\u3059\u3002
 
+# 0: file name
 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\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
 
+# 0: file name
 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.varargs.filename={0}\u306F\u3001\u5B89\u5168\u3067\u306F\u306A\u3044\u53EF\u5909\u5F15\u6570\u30E1\u30BD\u30C3\u30C9\u3092\u5BA3\u8A00\u3057\u3066\u3044\u307E\u3059\u3002
-compiler.note.varargs.plural=\u4E00\u90E8\u306E\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u306F\u3001\u5B89\u5168\u3067\u306F\u306A\u3044\u53EF\u5909\u5F15\u6570\u30E1\u30BD\u30C3\u30C9\u3092\u5BA3\u8A00\u3057\u3066\u3044\u307E\u3059\u3002
-# The following string may appear after one of the above unsafe varargs
-# messages.
-compiler.note.varargs.recompile=\u8A73\u7D30\u306F\u3001-Xlint:varargs\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.varargs.filename.additional={0}\u306F\u3001\u5B89\u5168\u3067\u306F\u306A\u3044\u8FFD\u52A0\u306E\u53EF\u5909\u5F15\u6570\u30E1\u30BD\u30C3\u30C9\u3092\u5BA3\u8A00\u3057\u3066\u3044\u307E\u3059\u3002
-compiler.note.varargs.plural.additional=\u4E00\u90E8\u306E\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u306F\u3001\u5B89\u5168\u3067\u306F\u306A\u3044\u53EF\u5909\u5F15\u6570\u30E1\u30BD\u30C3\u30C9\u3092\u8FFD\u52A0\u3067\u5BA3\u8A00\u3057\u3066\u3044\u307E\u3059\u3002
-
+# 0: file name
 compiler.note.sunapi.filename={0}\u306F\u3001\u4ECA\u5F8C\u306E\u30EA\u30EA\u30FC\u30B9\u3067\u524A\u9664\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308B\u5185\u90E8\u6240\u6709\u306EAPI\u3092\u4F7F\u7528\u3057\u3066\u3044\u307E\u3059\u3002
 compiler.note.sunapi.plural=\u4E00\u90E8\u306E\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u306F\u3001\u4ECA\u5F8C\u306E\u30EA\u30EA\u30FC\u30B9\u3067\u524A\u9664\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308B\u5185\u90E8\u6240\u6709\u306EAPI\u3092\u4F7F\u7528\u3057\u3066\u3044\u307E\u3059\u3002
+
 # The following string may appear after one of the above sunapi messages.
 compiler.note.sunapi.recompile=\u8A73\u7D30\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
 
+# 0: file name
 compiler.note.sunapi.filename.additional={0}\u306F\u3001\u4ECA\u5F8C\u306E\u30EA\u30EA\u30FC\u30B9\u3067\u524A\u9664\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308B\u8FFD\u52A0\u306E\u5185\u90E8\u6240\u6709\u306EAPI\u3092\u4F7F\u7528\u3057\u3066\u3044\u307E\u3059\u3002
+
 compiler.note.sunapi.plural.additional=\u4E00\u90E8\u306E\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u306F\u3001\u4ECA\u5F8C\u306E\u30EA\u30EA\u30FC\u30B9\u3067\u524A\u9664\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308B\u5185\u90E8\u6240\u6709\u306EAPI\u3092\u8FFD\u52A0\u3067\u4F7F\u7528\u3057\u3066\u3044\u307E\u3059\u3002
 
 # Notes related to annotation processing
 
 # Print a client-generated note; assumed to be localized, no translation required
+# 0: string
 compiler.note.proc.messager={0}
 
 #####
 
+# 0: number
 compiler.misc.count.error=\u30A8\u30E9\u30FC{0}\u500B
+
+# 0: number
 compiler.misc.count.error.plural=\u30A8\u30E9\u30FC{0}\u500B
+
+# 0: number
 compiler.misc.count.warn=\u8B66\u544A{0}\u500B
+
+# 0: number
 compiler.misc.count.warn.plural=\u8B66\u544A{0}\u500B
 
 compiler.misc.version.not.available=(\u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831\u304C\u3042\u308A\u307E\u305B\u3093)
 
 ## extra output when using -verbose (JavaCompiler)
 
+# 0: symbol
 compiler.misc.verbose.checking.attribution=[{0}\u3092\u78BA\u8A8D\u4E2D]
+
+# 0: string
 compiler.misc.verbose.parsing.done=[{0}\u30DF\u30EA\u79D2\u3067\u69CB\u6587\u89E3\u6790\u5B8C\u4E86]
+
+# 0: file name
 compiler.misc.verbose.parsing.started=[{0}\u3092\u69CB\u6587\u89E3\u6790\u958B\u59CB]
+
+# 0: string
 compiler.misc.verbose.total=[\u5408\u8A08{0}\u30DF\u30EA\u79D2]
+
+# 0: file name
 compiler.misc.verbose.wrote.file=[{0}\u3092\u66F8\u8FBC\u307F\u5B8C\u4E86]
 
 ## extra output when using -verbose (Retro)
 compiler.misc.verbose.retro=[{0}\u3092\u7D44\u66FF\u3048\u4E2D]
+
 compiler.misc.verbose.retro.with=\t{0}\u3092{1}\u3067\u7D44\u66FF\u3048\u4E2D\u3067\u3059
+
 compiler.misc.verbose.retro.with.list=\t{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\u66FF\u3048\u4E2D\u3067\u3059
 
 ## extra output when using -verbose (code/ClassReader)
+# 0: string
 compiler.misc.verbose.loading=[{0}\u3092\u8AAD\u8FBC\u307F\u4E2D]
 
+# 0: string
 compiler.misc.verbose.sourcepath=[\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u691C\u7D22\u30D1\u30B9: {0}]
 
+# 0: string
 compiler.misc.verbose.classpath=[\u30AF\u30E9\u30B9\u30FB\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\u30FB\u30D5\u30A1\u30A4\u30EB{0}\u306B\u4E88\u60F3\u5916\u306E\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u3042\u308A\u307E\u3059
+
 compiler.misc.ccf.unrecognized.attribute={0}\u306F\u8A8D\u8B58\u3055\u308C\u306A\u3044\u5C5E\u6027\u3067\u3059
 
 ## extra output when using -prompt (util/Log)
@@ -418,66 +771,100 @@
 
 ## Warning messages may also include the following prefix to identify a
 ## lint option
+# 0: option name
 compiler.warn.lintOption=[{0}]\u0020
 
+# 0: symbol
 compiler.warn.constant.SVUID=serialVersionUID\u306F\u30AF\u30E9\u30B9{0}\u306E\u5B9A\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
 
+# 0: file name
 compiler.warn.dir.path.element.not.found=\u4E0D\u6B63\u306A\u30D1\u30B9\u8981\u7D20"{0}": \u305D\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306F\u5B58\u5728\u3057\u307E\u305B\u3093
 
 compiler.warn.finally.cannot.complete=finally\u7BC0\u304C\u6B63\u5E38\u306B\u5B8C\u4E86\u3067\u304D\u307E\u305B\u3093
 
+# 0: symbol, 1: symbol
 compiler.warn.has.been.deprecated={1}\u306E{0}\u306F\u63A8\u5968\u3055\u308C\u307E\u305B\u3093
 
+# 0: symbol
 compiler.warn.sun.proprietary={0}\u306F\u5185\u90E8\u6240\u6709\u306EAPI\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.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
 
+# 0: symbol
 compiler.warn.improper.SVUID=serialVersionUID\u306F\u3001\u30AF\u30E9\u30B9{0}\u306Bstatic final\u3092\u5BA3\u8A00\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
 
+# 0: type, 1: type
 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\u51FA\u3057\u3002\n\u53EF\u5909\u5F15\u6570\u547C\u51FA\u3057\u306B\u95A2\u3057\u3066\u306F{0}\u306B\u30AD\u30E3\u30B9\u30C8\u3057\u307E\u3059\u3002\n\u975E\u53EF\u5909\u5F15\u6570\u547C\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
 
+# 0: symbol
 compiler.warn.long.SVUID=serialVersionUID\u306F\u3001\u30AF\u30E9\u30B9{0}\u306Elong\u578B\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
 
+# 0: symbol
 compiler.warn.missing.SVUID=\u76F4\u5217\u5316\u53EF\u80FD\u306A\u30AF\u30E9\u30B9{0}\u306B\u306F\u3001serialVersionUID\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093
 
+# 0: message segment
 compiler.warn.override.varargs.missing={0}\u3002\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9\u306B\u306F''...''\u304C\u3042\u308A\u307E\u305B\u3093
+
+# 0: message segment
 compiler.warn.override.varargs.extra={0}\u3002\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u3066\u3044\u308B\u30E1\u30BD\u30C3\u30C9\u306B\u306F''...''\u304C\u3042\u308A\u307E\u305B\u3093
+
 compiler.warn.override.bridge={0}\u3002\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9\u306F\u30D6\u30EA\u30C3\u30B8\u30FB\u30E1\u30BD\u30C3\u30C9\u3067\u3059
 
+# 0: symbol
 compiler.warn.pkg-info.already.seen=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
 
+# 0: file name
 compiler.warn.path.element.not.found=\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
 
 compiler.warn.possible.fall-through.into.case=case\u306Bfall-through\u3059\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059
 
+# 0: type
 compiler.warn.redundant.cast={0}\u3078\u306E\u5197\u9577\u306A\u30AD\u30E3\u30B9\u30C8\u3067\u3059
 
+# 0: number
 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
 
+# 0: file name, 1: number, 2: number
 compiler.warn.big.major.version={0}: \u30E1\u30B8\u30E3\u30FC\u30FB\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\u30FB\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\u85A6\u3081\u3057\u307E\u3059\u3002
 
+# 0: symbol kind, 1: symbol
 compiler.warn.static.not.qualified.by.type=static {0}\u306F\u5F0F\u3067\u306F\u306A\u304F\u578B\u540D{1}\u3067\u4FEE\u98FE\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
 
+# 0: string
 compiler.warn.source.no.bootclasspath=\u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u30FB\u30AF\u30E9\u30B9\u30D1\u30B9\u304C-source {0}\u3068\u4E00\u7DD2\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093
 
+# 0: name, 1: number, 2: number, 3: number, 4: number
+compiler.warn.future.attr=\u30D0\u30FC\u30B8\u30E7\u30F3{1}.{2}\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3067\u5C0E\u5165\u3055\u308C\u305F{0}\u5C5E\u6027\u306F\u3001\u30D0\u30FC\u30B8\u30E7\u30F3{3}.{4}\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3067\u306F\u7121\u8996\u3055\u308C\u307E\u3059
+
 # Warnings related to annotation processing
+# 0: name
 compiler.warn.proc.package.does.not.exist=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306F\u5B58\u5728\u3057\u307E\u305B\u3093
+
+# 0: name
 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
 
+# 0: name
 compiler.warn.proc.type.already.exists=\u30BF\u30A4\u30D7''{0}''\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u3059\u3067\u306B\u30BD\u30FC\u30B9\u30FB\u30D1\u30B9\u307E\u305F\u306F\u30AF\u30E9\u30B9\u30D1\u30B9\u306B\u5B58\u5728\u3057\u307E\u3059
 
+# 0: name
 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
 
+# 0: string
 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
 
+# 0: string, 1: string
 compiler.warn.proc.suspicious.class.name=\u540D\u524D\u304C{1}\u3067\u7D42\u308F\u308B\u578B\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u4F5C\u6210\u3057\u3066\u3044\u307E\u3059: ''{0}''
 
+# 0: name
 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
 
+# 0: string, 1: string
 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
 
+# 0: set of string
 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}
 
+# 0: source version, 1: string, 2: string
 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\u30FB\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\u30EA\u30AF\u30A8\u30B9\u30C8\u3055\u308C\u307E\u3057\u305F\u304C\u3001\u30D7\u30ED\u30BB\u30C3\u30B5\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002
@@ -487,23 +874,41 @@
 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\u304F\u3060\u3055\u3044\u3002
 
 # Print a client-generated warning; assumed to be localized, no translation required
+# 0: string
 compiler.warn.proc.messager={0}
 
+# 0: set of name
 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
 
+# 0: string
 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.try.explicit.close.call=\u81EA\u52D5\u30AF\u30ED\u30FC\u30BA\u53EF\u80FD\u306A\u30EA\u30BD\u30FC\u30B9\u306B\u304A\u3051\u308Bclose()\u306E\u660E\u793A\u7684\u547C\u51FA\u3057
+
+# 0: symbol
 compiler.warn.try.resource.not.referenced=\u81EA\u52D5\u30AF\u30ED\u30FC\u30BA\u53EF\u80FD\u306A\u30EA\u30BD\u30FC\u30B9{0}\u306F\u5BFE\u5FDC\u3059\u308Btry\u6587\u306E\u672C\u4F53\u3067\u306F\u53C2\u7167\u3055\u308C\u307E\u305B\u3093
+
 compiler.warn.unchecked.assign={0}\u304B\u3089{1}\u3078\u306E\u7121\u691C\u67FB\u4EE3\u5165\u3067\u3059
+
+# 0: symbol, 1: type
 compiler.warn.unchecked.assign.to.var=raw\u578B{1}\u306E\u30E1\u30F3\u30D0\u30FC\u3068\u3057\u3066\u5909\u6570{0}\u3078\u306E\u7121\u691C\u67FB\u4EE3\u5165\u3067\u3059
+
+# 0: symbol, 1: type
 compiler.warn.unchecked.call.mbr.of.raw.type=raw\u578B{1}\u306E\u30E1\u30F3\u30D0\u30FC\u3068\u3057\u3066\u306E{0}\u3078\u306E\u7121\u691C\u67FB\u547C\u51FA\u3057\u3067\u3059
+
 compiler.warn.unchecked.cast.to.type=\u578B{0}\u3078\u306E\u7121\u691C\u67FB\u30AD\u30E3\u30B9\u30C8\u3067\u3059
+
+# 0: symbol kind, 1: name, 2: list of type, 3: list of type, 4: symbol kind, 5: symbol
 compiler.warn.unchecked.meth.invocation.applied=\u7121\u691C\u67FB\u30E1\u30BD\u30C3\u30C9\u547C\u51FA\u3057: {4} {5}\u306E{0} {1}\u306F\u6307\u5B9A\u3055\u308C\u305F\u578B\u306B\u9069\u7528\u3055\u308C\u307E\u3059\n\u671F\u5F85\u5024: {2}\n\u691C\u51FA\u5024: {3}
 
+# 0: type
 compiler.warn.unchecked.generic.array.creation=\u578B{0}\u306E\u53EF\u5909\u5F15\u6570\u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u5BFE\u3059\u308B\u7DCF\u79F0\u578B\u914D\u5217\u306E\u7121\u691C\u67FB\u4F5C\u6210\u3067\u3059
 
-compiler.warn.varargs.non.reifiable.type=\u30D1\u30E9\u30E1\u30FC\u30BF\u5316\u3055\u308C\u305F\u53EF\u5909\u5F15\u6570\u578B{0}\u304B\u3089\u306E\u30D2\u30FC\u30D7\u6C5A\u67D3\u306E\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059
+# 0: type
+compiler.warn.unchecked.varargs.non.reifiable.type=\u30D1\u30E9\u30E1\u30FC\u30BF\u5316\u3055\u308C\u305F\u53EF\u5909\u5F15\u6570\u578B{0}\u304B\u3089\u306E\u30D2\u30FC\u30D7\u6C5A\u67D3\u306E\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059
+
+# 0: symbol
+compiler.warn.varargs.unsafe.use.varargs.param=\u53EF\u5909\u5F15\u6570\u30E1\u30BD\u30C3\u30C9\u306F\u3001\u578B\u60C5\u5831\u4FDD\u6301\u53EF\u80FD\u3067\u306A\u3044\u53EF\u5909\u5F15\u6570\u30D1\u30E9\u30E1\u30FC\u30BF{0}\u304B\u3089\u306E\u30D2\u30FC\u30D7\u6C5A\u67D3\u306E\u539F\u56E0\u3068\u306A\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059
 
 compiler.warn.missing.deprecated.annotation=\u63A8\u5968\u3055\u308C\u306A\u3044\u9805\u76EE\u306F@Deprecated\u3067\u6CE8\u91C8\u304C\u4ED8\u3051\u3089\u308C\u3066\u3044\u307E\u305B\u3093
 
@@ -519,23 +924,38 @@
 
 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=raw\u578B\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F: {0}\n\u6C4E\u7528\u30AF\u30E9\u30B9{1}\u306E\u578B\u30D1\u30E9\u30E1\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093
+# 0: type, 1: type
+compiler.warn.raw.class.use=raw\u578B\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F: {0}\n\u6C4E\u7528\u30AF\u30E9\u30B9{1}\u306E\u578B\u5F15\u6570\u304C\u3042\u308A\u307E\u305B\u3093
+
+# 0: unused, 1: unused
+compiler.warn.diamond.redundant.args=\u65B0\u3057\u3044\u5F0F\u306E\u578B\u5F15\u6570\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059(\u304B\u308F\u308A\u306B\u30C0\u30A4\u30E4\u30E2\u30F3\u30C9\u6F14\u7B97\u5B50\u3092\u4F7F\u7528\u3057\u307E\u3059)\u3002
 
-compiler.warn.diamond.redundant.args=\u65B0\u3057\u3044\u5F0F\u306E\u578B\u5F15\u6570\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059(\u304B\u308F\u308A\u306B\u30C0\u30A4\u30E4\u30E2\u30F3\u30C9\u6F14\u7B97\u5B50\u3092\u4F7F\u7528\u3057\u307E\u3059)\u3002
+# 0: type, 1: type
 compiler.warn.diamond.redundant.args.1=\u65B0\u3057\u3044\u5F0F\u306E\u578B\u5F15\u6570\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059(\u304B\u308F\u308A\u306B\u30C0\u30A4\u30E4\u30E2\u30F3\u30C9\u6F14\u7B97\u5B50\u3092\u4F7F\u7528\u3057\u307E\u3059)\u3002\n\u660E\u793A\u7684: {0}\n\u63A8\u5B9A: {1}
 
+# 0: symbol, 1: message segment
+compiler.warn.varargs.redundant.trustme.anno={0}\u6CE8\u91C8\u304C\u5197\u9577\u3067\u3059\u3002{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=<identifier>
+
 compiler.misc.token.character=<character>
+
 compiler.misc.token.string=<string>
+
 compiler.misc.token.integer=<integer>
+
 compiler.misc.token.long-integer=<long integer>
+
 compiler.misc.token.float=<float>
+
 compiler.misc.token.double=<double>
+
 compiler.misc.token.bad-symbol=<bad symbol>
+
 compiler.misc.token.end-of-input=<end of input>
 
 ## The argument to the following string will always be one of the following:
@@ -547,8 +967,13 @@
 ## 6. an operator (JLS3.12)
 ##
 ## This is the only place these tokens will be used.
+# 0: token
 compiler.err.expected={0}\u304C\u3042\u308A\u307E\u305B\u3093
+
+# 0: token, 1: token
 compiler.err.expected2={0}\u307E\u305F\u306F{1}\u304C\u3042\u308A\u307E\u305B\u3093
+
+# 0: token, 1: token, 2: token
 compiler.err.expected3={0}\u3001{1}\u307E\u305F\u306F{2}\u304C\u3042\u308A\u307E\u305B\u3093
 
 compiler.err.premature.eof=\u69CB\u6587\u89E3\u6790\u4E2D\u306B\u30D5\u30A1\u30A4\u30EB\u306E\u7D42\u308F\u308A\u306B\u79FB\u308A\u307E\u3057\u305F
@@ -557,10 +982,13 @@
 compiler.err.dot.class.expected=''.class''\u304C\u3042\u308A\u307E\u305B\u3093
 
 ## The argument to this string will always be either 'case' or 'default'.
+# 0: token
 compiler.err.orphaned={0}\u306B\u306F\u89AA\u304C\u3042\u308A\u307E\u305B\u3093
 
+# 0: name
 compiler.misc.anonymous.class=<anonymous {0}>
 
+# 0: name, 1: type
 compiler.misc.type.captureof={1}\u306E\u30AD\u30E3\u30D7\u30C1\u30E3#{0}
 
 compiler.misc.type.captureof.1=\u30AD\u30E3\u30D7\u30C1\u30E3#{0}
@@ -571,35 +999,51 @@
 
 #####
 
+# 0: symbol, 1: message segment
 compiler.err.cant.access={0}\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\n{1}
 
 compiler.misc.bad.class.file.header=\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB{0}\u306F\u4E0D\u6B63\u3067\u3059\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
+
+# 0: file name, 1: message segment
 compiler.misc.bad.source.file.header=\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB{0}\u306F\u4E0D\u6B63\u3067\u3059\n{1}\n\u524A\u9664\u3059\u308B\u304B\u3001\u30BD\u30FC\u30B9\u30FB\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\u304C\u4E0D\u6B63\u3067\u3059
+
 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\u30FB\u30BF\u30B0{0}\u304C\u4E0D\u6B63\u3067\u3059
+
 compiler.misc.bad.const.pool.tag.at=\u5B9A\u6570\u30D7\u30FC\u30EB\u30FB\u30BF\u30B0{1}\u3067\u306E{0}\u304C\u4E0D\u6B63\u3067\u3059
+
 compiler.misc.bad.signature=\u30B7\u30B0\u30CB\u30C1\u30E3{0}\u304C\u4E0D\u6B63\u3067\u3059
-compiler.misc.bad.type.annotation.value=\u6CE8\u91C8\u30BF\u30FC\u30B2\u30C3\u30C8\u578B\u306E\u5024\u306E\u578B\u304C\u4E0D\u6B63\u3067\u3059: {0}
+
 compiler.misc.class.file.wrong.class=\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB{0}\u306B\u4E0D\u6B63\u306A\u30AF\u30E9\u30B9\u304C\u3042\u308A\u307E\u3059
+
 compiler.misc.class.file.not.found={0}\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
+
+# 0: name
 compiler.misc.file.doesnt.contain.class=\u30D5\u30A1\u30A4\u30EB\u306B\u30AF\u30E9\u30B9{0}\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093
+
 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\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u958B\u59CB\u304C\u4E0D\u6B63\u3067\u3059
+
 compiler.misc.unable.to.access.file=\u30D5\u30A1\u30A4\u30EB{0}\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093
+
 compiler.misc.unicode.str.not.supported=\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u5185\u306EUnicode\u6587\u5B57\u5217\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+
 compiler.misc.undecl.type.var=\u578B\u5909\u6570{0}\u306F\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+
 compiler.misc.wrong.version=\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u30D0\u30FC\u30B8\u30E7\u30F3{0}.{1}\u306F\u4E0D\u6B63\u3067\u3059\u3002{2}.{3}\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
 
 #####
 
-compiler.err.not.within.bounds=\u578B\u30D1\u30E9\u30E1\u30FC\u30BF{0}\u306F\u305D\u306E\u5883\u754C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059
-
-compiler.err.not.within.bounds.explain=\u578B\u30D1\u30E9\u30E1\u30FC\u30BF{0}\u306F\u305D\u306E\u5883\u754C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002{1}
+# 0: type, 1: type or symbol
+compiler.err.not.within.bounds=\u578B\u5F15\u6570{0}\u306F\u578B\u5909\u6570{1}\u306E\u5883\u754C\u5185\u306B\u3042\u308A\u307E\u305B\u3093
 
 ## The following are all possible strings for the second argument ({1}) of the
 ## above string.
@@ -608,18 +1052,27 @@
 
 #####
 
+# 0: message segment, 1: type, 2: type
 compiler.err.prob.found.req={0}\n\u671F\u5F85\u5024: {2}\n\u691C\u51FA\u5024:    {1}
+
+# 0: message segment, 1: type, 2: type
 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
+
+# 0: message segment
 compiler.misc.incompatible.types.1=\u4E92\u63DB\u6027\u306E\u306A\u3044\u578B\u3002{0}
+
 compiler.misc.inconvertible.types=\u5909\u63DB\u3067\u304D\u306A\u3044\u578B
+
 compiler.misc.possible.loss.of.precision=\u7CBE\u5EA6\u304C\u4F4E\u4E0B\u3057\u3066\u3044\u308B\u53EF\u80FD\u6027
 
 compiler.misc.unchecked.assign=\u7121\u691C\u67FB\u5909\u63DB
+
 # compiler.misc.storecheck=\
 #     assignment might cause later store checks to fail
 # compiler.misc.unchecked=\
@@ -627,7 +1080,9 @@
 compiler.misc.unchecked.cast.to.type=\u7121\u691C\u67FB\u30AD\u30E3\u30B9\u30C8
 
 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=\
@@ -637,14 +1092,22 @@
 
 #####
 
+# 0: message segment or type, 1: message segment
 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.array.or.iterable=\u914D\u5217\u307E\u305F\u306Fjava.lang.Iterable
+
 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
+
+# 0: type
 compiler.misc.type.parameter=\u578B\u30D1\u30E9\u30E1\u30FC\u30BF{0}
 
 #####
@@ -652,29 +1115,56 @@
 ## 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
+
 compiler.misc.type.variable.has.undetermined.type=\u578B\u5909\u6570{0}\u306F\u672A\u5B9A\u578B\u3067\u3059
+
+# 0: type, 1: list of type
 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
+
 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
+
+# 0: list of type, 1: type, 2: type
 compiler.misc.infer.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
+
+# 0: list of type, 1: type, 2: type
 compiler.misc.infer.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
+
 compiler.misc.infer.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
+
+# 0: type, 1: list of type
 compiler.misc.inferred.do.not.conform.to.bounds=\u63A8\u5B9A\u578B\u306F\u5BA3\u8A00\u3055\u308C\u305F\u5883\u754C\u306B\u9069\u5408\u3057\u307E\u305B\u3093\n\u63A8\u5B9A: {0}\n\u5883\u754C: {1}
-compiler.misc.inferred.do.not.conform.to.params=\u5B9F\u5F15\u6570\u306F\u63A8\u5B9A\u3055\u308C\u305F\u4EEE\u5F15\u6570\u306B\u9069\u5408\u3057\u307E\u305B\u3093\n\u671F\u5F85\u5024: {0}\n\u691C\u51FA\u5024: {1}
+
+# 0: symbol
 compiler.misc.diamond={0}<>
+
+# 0: type
+compiler.misc.diamond.non.generic=\u975E\u6C4E\u7528\u30AF\u30E9\u30B9{0}\u3067''<>''\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+
+# 0: list of type, 1: message segment
 compiler.misc.diamond.invalid.arg={1}\u306B\u3064\u3044\u3066\u63A8\u5B9A\u3055\u308C\u305F\u578B\u5F15\u6570{0}\u306F\u3053\u306E\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3067\u306F\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093
+
+# 0: list of type, 1: message segment
 compiler.misc.diamond.invalid.args={1}\u306B\u3064\u3044\u3066\u63A8\u5B9A\u3055\u308C\u305F\u578B\u5F15\u6570{0}\u306F\u3053\u306E\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3067\u306F\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093
 
+# 0: type, 1: list of type
 compiler.misc.explicit.param.do.not.conform.to.bounds=\u660E\u793A\u7684\u306A\u578B\u5F15\u6570{0}\u306F\u3001\u5BA3\u8A00\u3055\u308C\u305F\u5883\u754C{1}\u306B\u9069\u5408\u3057\u307E\u305B\u3093
 
 compiler.misc.arg.length.mismatch=\u5B9F\u5F15\u6570\u30EA\u30B9\u30C8\u3068\u4EEE\u5F15\u6570\u30EA\u30B9\u30C8\u306E\u9577\u3055\u304C\u7570\u306A\u308A\u307E\u3059
+
+# 0: type, 1: type
 compiler.misc.no.conforming.assignment.exists=\u5B9F\u5F15\u6570{0}\u306F\u30E1\u30BD\u30C3\u30C9\u547C\u51FA\u5909\u63DB\u306B\u3088\u3063\u3066{1}\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093
+
+# 0: type, 1: type
 compiler.misc.varargs.argument.mismatch=\u5F15\u6570\u578B{0}\u306F\u53EF\u5909\u5F15\u6570\u8981\u7D20\u578B{1}\u306B\u9069\u5408\u3057\u307E\u305B\u3093
+
 #####
 
 ## The first argument ({0}) is a "kindname".
+# 0: symbol kind, 1: symbol, 2: symbol
 compiler.err.abstract.cant.be.accessed.directly=\u62BD\u8C61{0}\u3067\u3042\u308B{1}({2}\u5185)\u306B\u76F4\u63A5\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
 
 ## The first argument ({0}) is a "kindname".
+# 0: symbol kind, 1: symbol
 compiler.err.non-static.cant.be.ref=static\u3067\u306A\u3044{0} {1}\u3092static\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u304B\u3089\u53C2\u7167\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
 
 ## Both arguments ({0}, {1}) are "kindname"s.  {0} is a comma-separated list
@@ -685,20 +1175,36 @@
 ## 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)
+# 0: symbol kind, 1: name, 2: unused, 3: unused
 compiler.err.cant.resolve=\u30B7\u30F3\u30DC\u30EB\u3092\u898B\u3064\u3051\u3089\u308C\u307E\u305B\u3093\n\u30B7\u30F3\u30DC\u30EB: {0} {1}
 
+# 0: symbol kind, 1: name, 2: unused, 3: list of type
 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})
 
+# 0: symbol kind, 1: name, 2: list of type, 3: list of type
 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}
+## The fifth argument {4} is a location subdiagnostic (see below)
+# 0: symbol kind, 1: name, 2: unused, 3: unused, 4: message segment
+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}
+
+# 0: symbol kind, 1: name, 2: unused, 3: list of type, 4: message segment
+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}
+
+# 0: symbol kind, 1: name, 2: list of type, 3: list, 4: message segment
+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}
 
-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}
+##a location subdiagnostic is composed as follows:
+## The first argument {0} is the location "kindname" (e.g. 'constructor', 'field', etc.)
+## The second argument {1} is the location name
+## The third argument {2} is the location type (only when {1} is a variable name)
 
-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}
+# 0: symbol kind, 1: symbol, 2: unused
+compiler.misc.location={0} {1}
+
+# 0: symbol kind, 1: symbol, 2: type
+compiler.misc.location.1=\u30BF\u30A4\u30D7{2}\u306E{0} {1}
 
 ## The following are all possible string for "kindname".
 ## They should be called whatever the JLS calls them after it been translated
@@ -706,60 +1212,103 @@
 # compiler.misc.kindname.constructor=\
 #     static member
 compiler.misc.kindname.annotation=@interface
+
 compiler.misc.kindname.constructor=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF
+
 compiler.misc.kindname.enum=\u5217\u6319
+
 compiler.misc.kindname.interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9
+
 compiler.misc.kindname.static=static
+
 compiler.misc.kindname.type.variable=\u578B\u5909\u6570
+
 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.misc.no.args=\u5F15\u6570\u304C\u3042\u308A\u307E\u305B\u3093
 
+# 0: message segment
 compiler.err.override.static={0}\n\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\u30E1\u30BD\u30C3\u30C9\u304Cstatic\u3067\u3059
+
+# 0: message segment, 1: set of modifier
 compiler.err.override.meth={0}\n\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9\u306F{1}\u3067\u3059
 
+# 0: message segment, 1: type
 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
 
 # In the following string {1} is a space separated list of Java Keywords, as
 # they would have been declared in the source code
+# 0: message segment, 1: set of modifier
 compiler.err.override.weaker.access={0}\n({1})\u3088\u308A\u5F31\u3044\u30A2\u30AF\u30BB\u30B9\u6A29\u9650\u3092\u5272\u308A\u5F53\u3066\u3088\u3046\u3068\u3057\u307E\u3057\u305F
 
+# 0: message segment, 1: type, 2: type
 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
 
+# 0: message segment, 1: type, 2: type
 compiler.warn.override.unchecked.ret={0}\n\u623B\u308A\u5024\u306E\u578B\u306F{1}\u304B\u3089{2}\u3078\u306E\u7121\u691C\u67FB\u5909\u63DB\u304C\u5FC5\u8981\u3067\u3059
 
+# 0: message segment, 1: type
 compiler.warn.override.unchecked.thrown={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
 
 ## The following are all possible strings for the first argument ({0}) of the
 ## above strings.
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol
 compiler.misc.cant.override={1}\u306E{0}\u306F{3}\u306E{2}\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3067\u304D\u307E\u305B\u3093
+
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol
 compiler.misc.cant.implement={1}\u306E{0}\u306F{3}\u306E{2}\u3092\u5B9F\u88C5\u3067\u304D\u307E\u305B\u3093
+
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol
 compiler.misc.clashes.with={1}\u306E{0}\u306F{3}\u306E{2}\u3068\u7AF6\u5408\u3057\u307E\u3059
+
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol
 compiler.misc.unchecked.override={1}\u306E{0}\u306F{3}\u306E{2}\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u3059
+
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol
 compiler.misc.unchecked.implement={1}\u306E{0}\u306F{3}\u306E{2}\u3092\u5B9F\u88C5\u3057\u307E\u3059
+
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol
 compiler.misc.unchecked.clash.with={1}\u306E{0}\u306F{3}\u306E{2}\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u3059
+
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol
 compiler.misc.varargs.override={1}\u306E{0}\u306F{3}\u306E{2}\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u3059
+
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol
 compiler.misc.varargs.implement={1}\u306E{0}\u306F{3}\u306E{2}\u3092\u5B9F\u88C5\u3057\u307E\u3059
+
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol
 compiler.misc.varargs.clash.with={1}\u306E{0}\u306F{3}\u306E{2}\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u3059
+
 compiler.misc.non.denotable.type=\u3053\u3053\u3067\u975E\u578B\u6307\u5B9A\u578B{0}\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
 
+# 0: symbol kind, 1: symbol, 2: symbol, 3: message segment
 compiler.misc.inapplicable.method={0} {1}.{2}\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\n({3})
 
 ########################################
 # Diagnostics for language feature changes
 ########################################
+# 0: string
 compiler.err.unsupported.fp.lit=16\u9032\u6570\u6D6E\u52D5\u5C0F\u6570\u70B9\u30EA\u30C6\u30E9\u30EB\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(16\u9032\u6570\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)
 
+# 0: string
 compiler.err.unsupported.binary.lit=2\u9032\u6570\u30EA\u30C6\u30E9\u30EB\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(2\u9032\u6570\u30EA\u30C6\u30E9\u30EB\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F-source 7\u4EE5\u964D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
 
+# 0: string
 compiler.err.unsupported.underscore.lit=\u30EA\u30C6\u30E9\u30EB\u5185\u306E\u30A2\u30F3\u30C0\u30FC\u30B9\u30B3\u30A2\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u30EA\u30C6\u30E9\u30EB\u5185\u306E\u30A2\u30F3\u30C0\u30FC\u30B9\u30B3\u30A2\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 7\u4EE5\u964D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
 
+# 0: string
 compiler.err.try.with.resources.not.supported.in.source=try-with-resource\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(try-with-resource\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.enum.as.identifier=\u30EA\u30EA\u30FC\u30B95\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)
@@ -770,26 +1319,35 @@
 
 compiler.err.assert.as.identifier=\u30EA\u30EA\u30FC\u30B91.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\u4EE5\u524D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
 
+# 0: string
 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)
 
+# 0: string
 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)
 
+# 0: string
 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)
 
 #308 compiler.err.type.annotations.not.supported.in.source=\
 #308     type annotations are not supported in -source {0}\n\
 #308 (use -source 7 or higher to enable type annotations)
 
+# 0: string
 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)
 
+# 0: string
 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)
 
+# 0: string
 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)
 
+# 0: string
 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\u3001-source 7\u4EE5\u964D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
 
+# 0: string
 compiler.err.multicatch.not.supported.in.source=\u8907\u6570catch\u6587\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u8907\u6570catch\u6587\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 7\u4EE5\u964D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
 
+# 0: string
 compiler.err.string.switch.not.supported.in.source=switch\u5185\u306E\u6587\u5B57\u5217\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(switch\u5185\u306E\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)
 
 ########################################
@@ -800,24 +1358,30 @@
 compiler.misc.type.null=<null>
 
 # X#n (where n is an int id) is disambiguated tvar name
+# 0: name, 1: number
 compiler.misc.type.var={0}#{1}
 
 # CAP#n (where n is an int id) is an abbreviation for 'captured type'
+# 0: number
 compiler.misc.captured.type=CAP#{0}
 
 # <INT#n> (where n is an int id) is an abbreviation for 'intersection type'
+# 0: number
 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})
+# 0: type, 1: type, 2: type, 3: type
 compiler.misc.where.captured={3}\u306E\u30AD\u30E3\u30D7\u30C1\u30E3\u304B\u3089\u306E{0} extends {1} super: {2}
 
 # compact where clause for captured type: contains upper ('extends {1}') along
 # with the wildcard that generated this captured type ({3})
+# 0: type, 1: type, 2: unused, 3: type
 compiler.misc.where.captured.1={3}\u306E\u30AD\u30E3\u30D7\u30C1\u30E3\u304B\u3089\u306E{0} extends {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
+# 0: type, 1: list of type, 2: symbol kind, 3: symbol
 compiler.misc.where.typevar={2} {3}\u3067\u5BA3\u8A00\u3055\u308C\u3066\u3044\u308B{0} extends {1}
 
 # compact where clause for type variable: contains the kindname ({2}) and location ({3})
@@ -826,14 +1390,24 @@
 
 # where clause for type variable: contains all the upper bound(s) ('extends {1}')
 # of this intersection type
+# 0: type, 1: list of type
 compiler.misc.where.intersection={0} extends {1}
 
 ### Where clause headers ###
 compiler.misc.where.description.captured={0}\u304C\u65B0\u3057\u3044\u578B\u5909\u6570\u306E\u5834\u5408:
+
+# 0: set of type
 compiler.misc.where.description.typevar={0}\u304C\u578B\u5909\u6570\u306E\u5834\u5408:
+
+# 0: set of type
 compiler.misc.where.description.intersection={0}\u304Cintersection\u578B\u306E\u5834\u5408:
+
+# 0: set of type
 compiler.misc.where.description.captured.1={0}\u304C\u65B0\u3057\u3044\u578B\u5909\u6570\u306E\u5834\u5408:
+
+# 0: set of type
 compiler.misc.where.description.typevar.1={0}\u304C\u578B\u5909\u6570\u306E\u5834\u5408:
+
 compiler.misc.where.description.intersection.1={0}\u304Cintersection\u578B\u306E\u5834\u5408:
 
 
--- a/langtools/src/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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,137 +23,315 @@
 # questions.
 #
 
+# Messages in this file which use "placeholders" for values (e.g. {0}, {1})
+# are preceded by a stylized comment describing the type of the corresponding
+# values.
+# The types currently in use are
+#
+# boolean           true or false
+# file name         the name of an input file; e.g.   MyFile.java
+# message segment   a sub-message; see compiler.misc.*
+# modifier          a Java modifier; e.g. public, private, protected
+# name              a name, typically a Java identifier
+# number            an integer
+# option name       the name of a command line option
+# source version    a source version number, such as 1.5, 1.6, 1.7
+# string            a general string
+# symbol            the name of a declared type
+# symbol kind       a description of the kind of a declaration; see compiler.misc.kindname.*
+# token             the name of a non-terminal in source code; see compiler.misc.token.*
+# type              a Java type; e.g. int, X, X<T>
+# unused            the value is not used in this message
+#
+# list of X         a comma-separated list of items; e.g. list of type
+# X or Y            alternation; e.g. message segment or type
+# set of X          a comma-separated collection of items; e.g. set of modifier
+#
+# These may be composed: e.g.   list of type or message segment
+#
+# These comments are verified by the jtreg test test/tools/javac/diags/MessageInfo,
+# using info derived from the collected set of examples in test/tools/javac/diags/examples.
+# MessageInfo can also be run as a standalone utility providing more facilities
+# for manipulating this file. For more details, see MessageInfo.java.
+
 ##
 ## errors
 ##
 
+# 0: symbol
 compiler.err.abstract.cant.be.instantiated={0}\u662F\u62BD\u8C61\u7684; \u65E0\u6CD5\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\u8FDB\u884C\u6CE8\u91CA
+
+# 0: symbol, 1: symbol
 compiler.err.already.defined=\u5DF2\u5728{1}\u4E2D\u5B9A\u4E49{0}
+
+# 0: string
 compiler.err.already.defined.single.import=\u5DF2\u5728 single-type \u5BFC\u5165\u4E2D\u5B9A\u4E49{0}
+
+# 0: string
 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}
+
+# 0: type, 1: list of name
 compiler.err.annotation.missing.default.value=\u5BF9\u4E8E\u5C5E\u6027{1}, \u6CE8\u91CA{0}\u7F3A\u5C11\u503C
+
+# 0: type, 1: list of name
 compiler.err.annotation.missing.default.value.1=\u5BF9\u4E8E\u5C5E\u6027{1}, \u6CE8\u91CA{0}\u7F3A\u5C11\u503C
+
+# 0: type
 compiler.err.annotation.not.valid.for.type=\u5BF9\u4E8E\u7C7B\u578B\u4E3A{0}\u7684\u503C, \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\u6587\u5B57
+
 compiler.err.annotation.value.must.be.name.value=\u6CE8\u91CA\u503C\u5FC5\u987B\u91C7\u7528 ''name=value'' \u683C\u5F0F
+
 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; \u4E0D\u80FD\u6709\u53C2\u6570
+
 compiler.err.anon.class.impl.intf.no.typeargs=\u533F\u540D\u7C7B\u5B9E\u73B0\u63A5\u53E3; \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; \u4E0D\u80FD\u6709\u9650\u5B9A\u7B26 - \u5BF9\u4E8E\u65B0
+
+# 0: symbol, 1: symbol, 2: symbol
 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
+
+# 0: type
 compiler.err.array.req.but.found=\u9700\u8981\u6570\u7EC4, \u4F46\u627E\u5230{0}
 
 compiler.err.assignment.from.super-bound=\u901A\u8FC7\u901A\u914D\u7B26 {0} \u5206\u914D
+
 compiler.err.assignment.to.extends-bound=\u5206\u914D\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
 
+# 0: name
 compiler.err.call.must.be.first.stmt.in.ctor=\u5BF9{0}\u7684\u8C03\u7528\u5FC5\u987B\u662F\u6784\u9020\u5668\u4E2D\u7684\u7B2C\u4E00\u4E2A\u8BED\u53E5
+
 compiler.err.cant.apply.symbol=\u65E0\u6CD5\u5C06{4} {5}\u4E2D\u7684{0} {1}\u5E94\u7528\u5230\u7ED9\u5B9A\u7C7B\u578B\n\u9700\u8981: {2}\n\u627E\u5230: {3}
+
+# 0: symbol kind, 1: name, 2: list of type or message segment, 3: list of type or message segment, 4: symbol kind, 5: type, 6: message segment
 compiler.err.cant.apply.symbol.1=\u65E0\u6CD5\u5C06{4} {5}\u4E2D\u7684{0} {1}\u5E94\u7528\u5230\u7ED9\u5B9A\u7C7B\u578B;\n\u9700\u8981: {2}\n\u627E\u5230: {3}\n\u539F\u56E0: {6}
+
+# 0: symbol kind, 1: name, 2: list of type
 compiler.err.cant.apply.symbols=\u5BF9\u4E8E{1}({2}), \u627E\u4E0D\u5230\u5408\u9002\u7684{0}
+
+# 0: symbol
 compiler.err.cant.assign.val.to.final.var=\u65E0\u6CD5\u4E3A\u6700\u7EC8\u53D8\u91CF{0}\u5206\u914D\u503C
+
+# 0: type
 compiler.err.cant.deref=\u65E0\u6CD5\u53D6\u6D88\u5F15\u7528{0}
+
 compiler.err.cant.extend.intf.annotation=\u5BF9\u4E8E @interfaces, \u4E0D\u5141\u8BB8 ''extends''
+
+# 0: symbol
 compiler.err.cant.inherit.from.final=\u65E0\u6CD5\u4ECE\u6700\u7EC8{0}\u8FDB\u884C\u7EE7\u627F
+
+# 0: symbol
 compiler.err.cant.ref.before.ctor.called=\u65E0\u6CD5\u5728\u8C03\u7528\u8D85\u7C7B\u578B\u6784\u9020\u5668\u4E4B\u524D\u5F15\u7528{0}
+
 compiler.err.cant.ret.val.from.meth.decl.void=\u5BF9\u4E8E\u7ED3\u679C\u7C7B\u578B\u4E3A\u7A7A\u7684\u65B9\u6CD5, \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
+
+# 0: symbol, 1: string, 2: string
 compiler.err.cant.inherit.diff.arg=\u65E0\u6CD5\u4F7F\u7528\u4EE5\u4E0B\u4E0D\u540C\u7684\u53C2\u6570\u7EE7\u627F{0}: <{1}> \u548C <{2}>
+
 compiler.err.catch.without.try=\u6709 ''catch'', \u4F46\u662F\u6CA1\u6709 ''try''
-compiler.err.clash.with.pkg.of.same.name={0}\u4E0E\u5E26\u6709\u76F8\u540C\u540D\u79F0\u7684\u7A0B\u5E8F\u5305\u51B2\u7A81
+
+# 0: symbol kind, 1: symbol
+compiler.err.clash.with.pkg.of.same.name={0} {1}\u4E0E\u5E26\u6709\u76F8\u540C\u540D\u79F0\u7684\u7A0B\u5E8F\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
+
+# 0: symbol
 compiler.err.cyclic.inheritance=\u6D89\u53CA{0}\u7684\u5FAA\u73AF\u7EE7\u627F
+
 compiler.err.cyclic.annotation.element=\u5FAA\u73AF\u6CE8\u91CA\u5143\u7D20\u7C7B\u578B
+
+# 0: unused
 compiler.err.call.to.super.not.allowed.in.enum.ctor=\u5728\u679A\u4E3E\u6784\u9020\u5668\u4E2D\u4E0D\u5141\u8BB8\u8C03\u7528\u8D85\u7C7B
+
+# 0: type
 compiler.err.no.superclass={0}\u4E0D\u5177\u6709\u8D85\u7C7B
 
-compiler.warn.type.parameter.on.polymorphic.signature=\u5C06 MethodHandle \u8C03\u7528\u7684\u5DF2\u8FC7\u65F6\u6CE8\u91CA\u4ECE x.<T>invoke(y) \u66F4\u6539\u4E3A (T)x.invoke(y)
-compiler.warn.wrong.target.for.polymorphic.signature.definition=MethodHandle API \u6784\u5EFA\u9700\u8981 -target 7 \u8FD0\u884C\u65F6\u6216\u66F4\u9AD8; \u5F53\u524D\u4E3A -target {0}
+compiler.err.wrong.target.for.polymorphic.signature.definition=MethodHandle API \u6784\u5EFA\u9700\u8981 -target 7 \u8FD0\u884C\u65F6\u6216\u66F4\u9AD8; \u5F53\u524D\u4E3A -target {0}
 
+# 0: symbol, 1: type, 2: symbol, 3: type, 4: unused
 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
+
+# 0: symbol
 compiler.err.doesnt.exist=\u7A0B\u5E8F\u5305{0}\u4E0D\u5B58\u5728
+
 compiler.err.duplicate.annotation=\u6CE8\u91CA\u91CD\u590D
+
+# 0: name, 1: type
 compiler.err.duplicate.annotation.member.value={1}\u4E2D\u7684\u6CE8\u91CA\u6210\u5458\u503C{0}\u91CD\u590D
+
+# 0: name
 compiler.err.duplicate.class=\u7C7B\u91CD\u590D: {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=\u6709 ''if'', \u4F46\u662F\u6CA1\u6709 ''else''
+
 compiler.err.empty.char.lit=\u7A7A\u5B57\u7B26\u6587\u5B57
+
+# 0: symbol
 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\u6269\u5C55 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
+
+# 0: file name, 1: string
 compiler.err.error.reading.file=\u8BFB\u53D6{0}\u65F6\u51FA\u9519; {1}
+
+# 0: type
 compiler.err.except.already.caught=\u5DF2\u6355\u83B7\u5230\u5F02\u5E38\u9519\u8BEF{0}
+
+# 0: type
 compiler.err.except.never.thrown.in.try=\u5728\u76F8\u5E94\u7684 try \u8BED\u53E5\u4E3B\u4F53\u4E2D\u4E0D\u80FD\u629B\u51FA\u5F02\u5E38\u9519\u8BEF{0}
 
+# 0: symbol
 compiler.err.final.parameter.may.not.be.assigned=\u4E0D\u80FD\u5206\u914D\u6700\u7EC8\u53C2\u6570{0}
+
+# 0: symbol
 compiler.err.try.resource.may.not.be.assigned=\u53EF\u80FD\u672A\u5206\u914D\u53EF\u81EA\u52A8\u5173\u95ED\u7684\u8D44\u6E90{0}
+
+# 0: symbol
 compiler.err.multicatch.parameter.may.not.be.assigned=\u53EF\u80FD\u672A\u5206\u914D multi-catch \u53C2\u6570{0}
+
 compiler.err.finally.without.try=\u6709 ''finally'', \u4F46\u662F\u6CA1\u6709 ''try''
-compiler.err.foreach.not.applicable.to.type=foreach \u4E0D\u9002\u7528\u4E8E\u8868\u8FBE\u5F0F\u7C7B\u578B
+
+# 0: type, 1: message segment
+compiler.err.foreach.not.applicable.to.type=for-each \u4E0D\u9002\u7528\u4E8E\u8868\u8FBE\u5F0F\u7C7B\u578B\n\u8981\u6C42: {1}\n\u627E\u5230:    {0}
+
 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\u4E0D\u80FD\u6269\u5C55 java.lang.Throwable
 
-compiler.err.icls.cant.have.static.decl=\u5185\u90E8\u7C7B\u4E0D\u80FD\u6709\u9759\u6001\u58F0\u660E
+# 0: symbol
+compiler.err.icls.cant.have.static.decl=\u5185\u90E8\u7C7B{0}\u4E2D\u7684\u9759\u6001\u58F0\u660E\u975E\u6CD5\n\u4FEE\u9970\u7B26 \''static\'' \u4EC5\u5141\u8BB8\u5728\u5E38\u91CF\u53D8\u91CF\u58F0\u660E\u4E2D\u4F7F\u7528
+
+# 0: string
 compiler.err.illegal.char=\u975E\u6CD5\u5B57\u7B26: \\{0}
+
 compiler.err.illegal.char.for.encoding=\u7F16\u7801{0}\u7684\u4E0D\u53EF\u6620\u5C04\u5B57\u7B26
+
+# 0: set of modifier, 1: set of modifier
 compiler.err.illegal.combination.of.modifiers=\u975E\u6CD5\u7684\u4FEE\u9970\u7B26\u7EC4\u5408: {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\u7B26
+
 compiler.err.illegal.forward.ref=\u975E\u6CD5\u524D\u5411\u5F15\u7528
+
+# 0: symbol
 compiler.warn.forward.ref=\u5148\u5F15\u7528\u53D8\u91CF ''{0}'', \u7136\u540E\u518D\u5BF9\u5176\u521D\u59CB\u5316
+
 compiler.err.illegal.self.ref=\u521D\u59CB\u5316\u7A0B\u5E8F\u4E2D\u5B58\u5728\u81EA\u5F15\u7528
+
+# 0: symbol
 compiler.warn.self.ref=\u53D8\u91CF ''{0}'' \u7684\u521D\u59CB\u5316\u7A0B\u5E8F\u4E2D\u5B58\u5728\u81EA\u5F15\u7528
+
 compiler.err.illegal.generic.type.for.instof=instanceof \u7684\u6CDB\u578B\u7C7B\u578B\u4E0D\u5408\u6CD5
+
+# 0: type
 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\u6587\u5B57\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
+
+# 0: symbol
 compiler.err.illegal.qual.not.icls=\u975E\u6CD5\u9650\u5B9A\u7B26; {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
+
+# 0: symbol
 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, \u7F3A\u5C11\u67D0\u4E9B\u53C2\u6570
+
 compiler.err.improperly.formed.type.inner.raw.param=\u7C7B\u578B\u7684\u683C\u5F0F\u4E0D\u6B63\u786E, \u7ED9\u51FA\u4E86\u539F\u59CB\u7C7B\u578B\u7684\u7C7B\u578B\u53C2\u6570
+
+# 0: type, 1: type
 compiler.err.incomparable.types=\u4E0D\u53EF\u6BD4\u8F83\u7684\u7C7B\u578B: {0}\u548C{1}
+
+# 0: number
 compiler.err.int.number.too.large=\u8FC7\u5927\u7684\u6574\u6570: {0}
+
 compiler.err.internal.error.cant.instantiate=\u5185\u90E8\u9519\u8BEF; \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
+
+# 0: symbol, 1: type
 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\u4E2D\u5FC5\u987B\u5305\u542B\u81F3\u5C11\u4E00\u4E2A\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; \u9700\u8981\u8FD4\u56DE\u7C7B\u578B
 
+compiler.err.varargs.and.old.array.syntax=variable-arity \u53C2\u6570\u4E2D\u4E0D\u5141\u8BB8\u4F7F\u7528\u4F20\u7EDF\u6570\u7EC4\u8BB0\u53F7
+
+# 0: name
 compiler.err.label.already.in.use=\u6807\u7B7E{0}\u5DF2\u4F7F\u7528
+
+# 0: symbol
 compiler.err.local.var.accessed.from.icls.needs.final=\u4ECE\u5185\u90E8\u7C7B\u4E2D\u8BBF\u95EE\u672C\u5730\u53D8\u91CF{0}; \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=\u65E0\u6CD5\u521B\u5EFA\u5177\u6709\u7C7B\u578B\u53D8\u91CF\u7684\u6570\u7EC4
 
 #
@@ -162,45 +340,96 @@
 # 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\u8FC7\u591A
+
 compiler.err.limit.locals=\u672C\u5730\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, \u5B57\u7B26\u4E32 \"{0}...\" \u7684 UTF8 \u8868\u793A\u8FC7\u957F
 
 compiler.err.malformed.fp.lit=\u6D6E\u70B9\u6587\u5B57\u7684\u683C\u5F0F\u9519\u8BEF
+
 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, \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
+
+# 0: set of modifier
 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
 
+# 0: symbol, 1: symbol
 compiler.err.name.clash.same.erasure=\u540D\u79F0\u51B2\u7A81: {0}\u548C{1}\u5177\u6709\u76F8\u540C\u7591\u7B26
+
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol, 4: unused, 5: unused
 compiler.err.name.clash.same.erasure.no.override=\u540D\u79F0\u51B2\u7A81: {1}\u4E2D\u7684{0}\u548C{3}\u4E2D\u7684{2}\u5177\u6709\u76F8\u540C\u7591\u7B26, \u4F46\u4E24\u8005\u5747\u4E0D\u8986\u76D6\u5BF9\u65B9
+
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol, 4: symbol, 5: symbol
+compiler.err.name.clash.same.erasure.no.override.1=\u540D\u79F0\u51B2\u7A81: {1} \u4E2D\u7684 {0} \u8986\u76D6\u7684\u65B9\u6CD5\u7684\u7591\u7B26\u4E0E\u53E6\u4E00\u4E2A\u65B9\u6CD5\u7684\u76F8\u540C, \u4F46\u4E24\u8005\u5747\u4E0D\u8986\u76D6\u5BF9\u65B9\n\u7B2C\u4E00\u4E2A\u65B9\u6CD5:  {3} \u4E2D\u7684 {2}\n\u7B2C\u4E8C\u4E2A\u65B9\u6CD5: {5} \u4E2D\u7684 {4}
+
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol
+compiler.err.name.clash.same.erasure.no.hide=\u540D\u79F0\u51B2\u7A81: {1} \u4E2D\u7684 {0} \u548C {3} \u4E2D\u7684 {2} \u5177\u6709\u76F8\u540C\u7591\u7B26, \u4F46\u4E24\u8005\u5747\u4E0D\u9690\u85CF\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
+
+# 0: type, 1: type
 compiler.err.neither.conditional.subtype=? \u7684\u4E0D\u517C\u5BB9\u7C7B\u578B: \u4E24\u8005\u90FD\u4E0D\u662F\u5BF9\u65B9\u7684\u5B50\u7C7B\u578B\n\u7B2C\u4E8C\u4E2A\u64CD\u4F5C\u6570: {0}\n\u7B2C\u4E09\u4E2A\u64CD\u4F5C\u6570: {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; \u9700\u8981{2}
+
 compiler.err.not.annotation.type={0}\u4E0D\u662F\u6CE8\u91CA\u7C7B\u578B
+
+# 0: symbol, 1: symbol
 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
+
+# 0: symbol, 1: symbol
 compiler.err.not.def.public.cant.access={0}\u5728{1}\u4E2D\u4E0D\u662F\u516C\u5171\u7684; \u65E0\u6CD5\u4ECE\u5916\u90E8\u7A0B\u5E8F\u5305\u4E2D\u5BF9\u5176\u8FDB\u884C\u8BBF\u95EE
+
+# 0: name
 compiler.err.not.loop.label=\u4E0D\u662F loop \u6807\u7B7E: {0}
+
 compiler.err.not.stmt=\u4E0D\u662F\u8BED\u53E5
+
+# 0: symbol
 compiler.err.not.encl.class=\u4E0D\u662F\u5C01\u95ED\u7C7B: {0}
 
-compiler.err.operator.cant.be.applied=\u8FD0\u7B97\u7B26{0}\u4E0D\u80FD\u5E94\u7528\u4E8E{1}
+# 0: name, 1: type, 2: unused
+compiler.err.operator.cant.be.applied=\u4E00\u5143\u8FD0\u7B97\u7B26 ''{0}'' \u7684\u64CD\u4F5C\u6570\u7C7B\u578B{1}\u9519\u8BEF
+
+# 0: name, 1: type, 2: type
+compiler.err.operator.cant.be.applied.1=\u4E8C\u5143\u8FD0\u7B97\u7B26 ''{0}'' \u7684\u64CD\u4F5C\u6570\u7C7B\u578B\u9519\u8BEF\n\u7B2C\u4E00\u4E2A\u7C7B\u578B:  {1}\n\u7B2C\u4E8C\u4E2A\u7C7B\u578B: {2}
 
 compiler.err.pkg.annotations.sb.in.package-info.java=\u7A0B\u5E8F\u5305\u6CE8\u91CA\u5E94\u5728\u6587\u4EF6 package-info.java \u4E2D
+
+# 0: symbol
 compiler.err.pkg.clashes.with.class.of.same.name=\u7A0B\u5E8F\u5305{0}\u4E0E\u5E26\u6709\u76F8\u540C\u540D\u79F0\u7684\u7C7B\u51B2\u7A81
 
 compiler.err.warnings.and.werror=\u53D1\u73B0\u8B66\u544A, \u4F46\u6307\u5B9A\u4E86 -Werror
@@ -209,23 +438,29 @@
 
 compiler.err.proc.cant.access=\u65E0\u6CD5\u8BBF\u95EE{0}\n{1}\n\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605\u4EE5\u4E0B\u5806\u6808\u8DDF\u8E2A\u3002\n{2}
 
+# 0: string
 compiler.err.proc.cant.find.class=\u627E\u4E0D\u5230 ''{0}'' \u7684\u7C7B\u6587\u4EF6\u3002
 
 # Print a client-generated error message; assumed to be localized, no translation required
+# 0: string
 compiler.err.proc.messager={0}
 
+# 0: list of string
 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 ''{0}''
 
 compiler.err.proc.no.service=\u627E\u4E0D\u5230\u670D\u52A1\u52A0\u8F7D\u5668\u7C7B\u3002\njava.util.ServiceLoader \u6216 sun.misc.Service \u5FC5\u987B\u53EF\u7528\u3002
 
 compiler.err.proc.processor.bad.option.name=\u5904\u7406\u7A0B\u5E8F ''{1}'' \u63D0\u4F9B\u7684\u9009\u9879\u540D\u79F0 ''{0}'' \u9519\u8BEF
 
+# 0: string
 compiler.err.proc.processor.cant.instantiate=\u65E0\u6CD5\u5B9E\u4F8B\u5316\u5904\u7406\u7A0B\u5E8F ''{0}'' \u7684\u5B9E\u4F8B
 
 compiler.err.proc.processor.constructor.error=\u6784\u9020\u5904\u7406\u7A0B\u5E8F\u5BF9\u8C61{0}\u65F6\u629B\u51FA\u5F02\u5E38\u9519\u8BEF
 
+# 0: string
 compiler.err.proc.processor.not.found=\u627E\u4E0D\u5230\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F ''{0}''
 
+# 0: string
 compiler.err.proc.processor.wrong.type=\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F ''{0}'' \u672A\u5B9E\u73B0 javax.annotation.processing.Processor
 
 compiler.err.proc.service.problem=\u521B\u5EFA\u670D\u52A1\u52A0\u8F7D\u5668\u4EE5\u52A0\u8F7D\u5904\u7406\u7A0B\u5E8F\u65F6\u51FA\u9519\u3002
@@ -234,67 +469,148 @@
 
 compiler.err.proc.cant.create.loader=\u65E0\u6CD5\u4E3A\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F{0}\u521B\u5EFA\u7C7B\u52A0\u8F7D\u5668
 
+# 0: unused
 compiler.err.qualified.new.of.static.class=\u9650\u5B9A\u7684\u65B0\u9759\u6001\u7C7B
 
 compiler.err.recursive.ctor.invocation=\u9012\u5F52\u6784\u9020\u5668\u8C03\u7528
+
+# 0: name, 1: symbol kind, 2: symbol, 3: symbol, 4: symbol kind, 5: symbol, 6: symbol
 compiler.err.ref.ambiguous=\u5BF9{0}\u7684\u5F15\u7528\u4E0D\u660E\u786E, {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
+
+# 0: symbol, 1: set of modifier, 2: symbol
 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.signature.doesnt.match.supertype=\u7B7E\u540D\u4E0E{0}\u4E0D\u5339\u914D; \u4E0D\u517C\u5BB9\u7684\u8D85\u7C7B\u578B
+
 compiler.err.signature.doesnt.match.intf=\u7B7E\u540D\u4E0E{0}\u4E0D\u5339\u914D; \u4E0D\u517C\u5BB9\u7684\u63A5\u53E3
+
+# 0: symbol, 1: symbol, 2: symbol
 compiler.err.does.not.override.abstract={0}\u4E0D\u662F\u62BD\u8C61\u7684, \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; \u65E0\u6CD5\u8986\u76D6\u8F93\u5165\u6587\u4EF6{0}
+
 compiler.err.stack.sim.error=\u5185\u90E8\u9519\u8BEF: {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
+
+# 0: symbol, 1: symbol
 compiler.err.synthetic.name.conflict=\u7B26\u53F7{0}\u4E0E{1}\u4E2D\u7684 compiler-synthesized \u7B26\u53F7\u51B2\u7A81
+
+# 0: symbol, 1: symbol
 compiler.warn.synthetic.name.conflict=\u7B26\u53F7{0}\u4E0E{1}\u4E2D\u7684 compiler-synthesized \u7B26\u53F7\u51B2\u7A81
 
 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=\u6709 ''try'', \u4F46\u662F\u6CA1\u6709 ''catch'' \u6216 ''finally''
+
 compiler.err.try.without.catch.finally.or.resource.decls=''try'' \u4E0D\u5E26\u6709 ''catch'', ''finally'' \u6216\u8D44\u6E90\u58F0\u660E
+
+# 0: symbol
 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; \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; \u5FC5\u987B\u5BF9\u5176\u8FDB\u884C\u5B9E\u4F8B\u5316
+
+# 0: type, 1: type, 2: string
 compiler.err.types.incompatible.diff.ret=\u7C7B\u578B{0}\u548C{1}\u4E0D\u517C\u5BB9; \u4E24\u8005\u90FD\u5B9A\u4E49\u4E86{2}, \u4F46\u5374\u5E26\u6709\u4E0D\u76F8\u5173\u7684\u8FD4\u56DE\u7C7B\u578B
 
 compiler.err.unclosed.char.lit=\u672A\u7ED3\u675F\u7684\u5B57\u7B26\u6587\u5B57
+
 compiler.err.unclosed.comment=\u672A\u7ED3\u675F\u7684\u6CE8\u91CA
+
 compiler.err.unclosed.str.lit=\u672A\u7ED3\u675F\u7684\u5B57\u7B26\u4E32\u6587\u5B57
+
 compiler.err.unknown.enum.constant=\u5728\u7C7B\u6587\u4EF6{0}\u4E2D: \u672A\u77E5\u7684\u679A\u4E3E\u5E38\u91CF {1}.{2}
+
+# 0: name
 compiler.err.unsupported.encoding=\u4E0D\u652F\u6301\u7684\u7F16\u7801: {0}
+
 compiler.err.io.exception=\u8BFB\u53D6\u6E90\u6587\u4EF6\u65F6\u51FA\u9519: {0}
+
+# 0: name
 compiler.err.undef.label=\u672A\u5B9A\u4E49\u7684\u6807\u7B7E: {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; {1}
+
+compiler.err.undetermined.type=\u65E0\u6CD5\u63A8\u65AD{0}\u7684\u7C7B\u578B\u53C2\u6570
+
+# 0: type, 1: message segment
+compiler.err.undetermined.type.1=\u65E0\u6CD5\u63A8\u65AD{0}\u7684\u7C7B\u578B\u53C2\u6570;\n\u539F\u56E0: {1}
+
+# 0: list of type, 1: message segment
 compiler.err.invalid.inferred.types={0}\u7684\u63A8\u65AD\u7C7B\u578B\u65E0\u6548; {1}
+
+# 0: message segment, 1: unused
 compiler.err.cant.apply.diamond=\u65E0\u6CD5\u63A8\u65AD{0}\u7684\u7C7B\u578B\u53C2\u6570
+
+# 0: message segment, 1: message segment
 compiler.err.cant.apply.diamond.1=\u65E0\u6CD5\u63A8\u65AD{0}\u7684\u7C7B\u578B\u53C2\u6570;\n\u539F\u56E0: {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
+
+# 0: type
 compiler.err.unreported.exception.need.to.catch.or.throw=\u672A\u62A5\u544A\u7684\u5F02\u5E38\u9519\u8BEF{0}; \u5FC5\u987B\u5BF9\u5176\u8FDB\u884C\u6355\u83B7\u6216\u58F0\u660E\u4EE5\u4FBF\u629B\u51FA
+
+# 0: type
 compiler.err.unreported.exception.default.constructor=\u9ED8\u8BA4\u6784\u9020\u5668\u4E2D\u672A\u62A5\u544A\u7684\u5F02\u5E38\u9519\u8BEF{0}
+
+# 0: type, 1: name
+compiler.err.unreported.exception.implicit.close=\u672A\u62A5\u544A\u7684\u5F02\u5E38\u9519\u8BEF{0}; \u5FC5\u987B\u5BF9\u5176\u8FDB\u884C\u6355\u83B7\u6216\u58F0\u660E\u4EE5\u4FBF\u629B\u51FA\n\u5BF9\u8D44\u6E90\u53D8\u91CF ''{1}'' \u9690\u5F0F\u8C03\u7528 close() \u65F6\u629B\u51FA\u4E86\u5F02\u5E38\u9519\u8BEF
+
 compiler.err.unsupported.cross.fp.lit=\u8BE5 VM \u4E0D\u652F\u6301\u5341\u516D\u8FDB\u5236\u6D6E\u70B9\u6587\u5B57
+
 compiler.err.void.not.allowed.here=\u6B64\u5904\u4E0D\u5141\u8BB8\u4F7F\u7528 ''\u7A7A'' \u7C7B\u578B
 
+# 0: string
 compiler.err.wrong.number.type.args=\u7C7B\u578B\u53D8\u91CF\u6570\u76EE\u9519\u8BEF; \u9700\u8981{0}
 
+# 0: symbol
 compiler.err.var.might.already.be.assigned=\u53EF\u80FD\u5DF2\u5206\u914D\u53D8\u91CF{0}
+
+# 0: symbol
 compiler.err.var.might.not.have.been.initialized=\u53EF\u80FD\u5C1A\u672A\u521D\u59CB\u5316\u53D8\u91CF{0}
+
+# 0: symbol
 compiler.err.var.might.be.assigned.in.loop=\u53EF\u80FD\u5728 loop \u4E2D\u5206\u914D\u4E86\u53D8\u91CF{0}
 
+# 0: symbol, 1: message segment
+compiler.err.varargs.invalid.trustme.anno={0} \u6CE8\u91CA\u65E0\u6548\u3002{1}
+
+# 0: type
+compiler.misc.varargs.trustme.on.reifiable.varargs=Varargs \u5143\u7D20\u7C7B\u578B{0}\u53EF\u5177\u4F53\u5316\u3002
+
+# 0: symbol
+compiler.misc.varargs.trustme.on.non.varargs.meth=\u65B9\u6CD5 {0} \u4E0D\u662F varargs \u65B9\u6CD5\u3002
+
+# 0: symbol
+compiler.misc.varargs.trustme.on.virtual.varargs=\u5B9E\u4F8B\u65B9\u6CD5 {0} \u4E0D\u662F\u6700\u7EC8\u7684\u3002
+
+# 0: type, 1: kind, 2: symbol
+compiler.misc.inaccessible.varargs.type=\u5F62\u5F0F varargs \u5143\u7D20\u7C7B\u578B{0}\u65E0\u6CD5\u4ECE {1} {2} \u8FDB\u884C\u8BBF\u95EE
+
 # In the following string, {1} will always be the detail message from
 # java.io.IOException.
+# 0: symbol, 1: string
 compiler.err.class.cant.write=\u5199\u5165{0}\u65F6\u51FA\u9519: {1}
 
 # In the following string, {0} is the name of the class in the Java source.
 # It really should be used two times..
+# 0: name
 compiler.err.class.public.should.be.in.file=\u7C7B{0}\u662F\u516C\u5171\u7684, \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
@@ -309,9 +625,13 @@
 # Fatal Errors
 
 compiler.misc.fatal.err.no.java.lang=\u81F4\u547D\u9519\u8BEF: \u5728\u7C7B\u8DEF\u5F84\u6216\u5F15\u5BFC\u7C7B\u8DEF\u5F84\u4E2D\u627E\u4E0D\u5230\u7A0B\u5E8F\u5305 java.lang
+
 compiler.misc.fatal.err.cant.locate.meth=\u81F4\u547D\u9519\u8BEF: \u627E\u4E0D\u5230\u65B9\u6CD5{0}
+
 compiler.misc.fatal.err.cant.locate.field=\u81F4\u547D\u9519\u8BEF: \u627E\u4E0D\u5230\u5B57\u6BB5{0}
+
 compiler.misc.fatal.err.cant.locate.ctor=\u81F4\u547D\u9519\u8BEF: \u627E\u4E0D\u5230{0}\u7684\u6784\u9020\u5668
+
 compiler.misc.fatal.err.cant.close.loader=\u81F4\u547D\u9519\u8BEF: \u65E0\u6CD5\u5173\u95ED\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F\u7684\u7C7B\u52A0\u8F7D\u5668
 
 #####
@@ -321,8 +641,13 @@
 ##
 
 compiler.misc.source.unavailable=(\u6E90\u4E0D\u53EF\u7528)
+
 compiler.misc.base.membership=\u60A8\u7684\u6240\u6709\u57FA\u7C7B\u90FD\u5C5E\u4E8E\u6211\u4EEC
+
+# 0: string, 1: string, 2: boolean
 compiler.misc.x.print.processor.info=\u5904\u7406\u7A0B\u5E8F{0}\u4E0E{1}\u5339\u914D\u5E76\u8FD4\u56DE{2}\u3002
+
+# 0: number, 1: string, 2: set of symbol, 3: boolean
 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}
 
 #####
@@ -331,77 +656,105 @@
 ## "compiler.note".
 compiler.note.note=\u6CE8:\u0020
 
+# 0: file name
 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=\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u4F7F\u7528 -Xlint:deprecation \u91CD\u65B0\u7F16\u8BD1\u3002
 
+# 0: file name
 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
 
+# 0: file name
 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=\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u4F7F\u7528 -Xlint:unchecked \u91CD\u65B0\u7F16\u8BD1\u3002
 
+# 0: file name
 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.varargs.filename={0}\u58F0\u660E\u4E86\u4E0D\u5B89\u5168\u7684 vararg \u65B9\u6CD5\u3002
-compiler.note.varargs.plural=\u67D0\u4E9B\u8F93\u5165\u6587\u4EF6\u58F0\u660E\u4E86\u4E0D\u5B89\u5168\u7684 vararg \u65B9\u6CD5\u3002
-# The following string may appear after one of the above unsafe varargs
-# messages.
-compiler.note.varargs.recompile=\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u4F7F\u7528 -Xlint:varargs \u91CD\u65B0\u7F16\u8BD1\u3002
-
-compiler.note.varargs.filename.additional={0}\u58F0\u660E\u4E86\u5176\u4ED6\u4E0D\u5B89\u5168\u7684 vararg \u65B9\u6CD5\u3002
-compiler.note.varargs.plural.additional=\u67D0\u4E9B\u8F93\u5165\u6587\u4EF6\u8FD8\u58F0\u660E\u4E86\u4E0D\u5B89\u5168\u7684 vararg \u65B9\u6CD5\u3002
-
+# 0: file name
 compiler.note.sunapi.filename={0}\u4F7F\u7528\u4E86\u53EF\u80FD\u4F1A\u5728\u672A\u6765\u53D1\u884C\u7248\u4E2D\u5220\u9664\u7684\u5185\u90E8\u4E13\u7528 API\u3002
 compiler.note.sunapi.plural=\u67D0\u4E9B\u8F93\u5165\u6587\u4EF6\u4F7F\u7528\u4E86\u53EF\u80FD\u4F1A\u5728\u672A\u6765\u53D1\u884C\u7248\u4E2D\u5220\u9664\u7684\u5185\u90E8\u4E13\u7528 API\u3002
+
 # The following string may appear after one of the above sunapi messages.
 compiler.note.sunapi.recompile=\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u4F7F\u7528 -Xlint:sunapi \u91CD\u65B0\u7F16\u8BD1\u3002
 
+# 0: file name
 compiler.note.sunapi.filename.additional={0}\u4F7F\u7528\u4E86\u53EF\u80FD\u4F1A\u5728\u672A\u6765\u53D1\u884C\u7248\u4E2D\u5220\u9664\u7684\u5176\u4ED6\u5185\u90E8\u4E13\u7528 API\u3002
+
 compiler.note.sunapi.plural.additional=\u67D0\u4E9B\u8F93\u5165\u6587\u4EF6\u4F7F\u7528\u4E86\u53EF\u80FD\u4F1A\u5728\u672A\u6765\u53D1\u884C\u7248\u4E2D\u5220\u9664\u7684\u5176\u4ED6\u5185\u90E8\u4E13\u7528 API\u3002
 
 # Notes related to annotation processing
 
 # Print a client-generated note; assumed to be localized, no translation required
+# 0: string
 compiler.note.proc.messager={0}
 
 #####
 
+# 0: number
 compiler.misc.count.error={0} \u4E2A\u9519\u8BEF
+
+# 0: number
 compiler.misc.count.error.plural={0} \u4E2A\u9519\u8BEF
+
+# 0: number
 compiler.misc.count.warn={0} \u4E2A\u8B66\u544A
+
+# 0: number
 compiler.misc.count.warn.plural={0} \u4E2A\u8B66\u544A
 
 compiler.misc.version.not.available=(\u7248\u672C\u4FE1\u606F\u4E0D\u53EF\u7528)
 
 ## extra output when using -verbose (JavaCompiler)
 
+# 0: symbol
 compiler.misc.verbose.checking.attribution=[\u6B63\u5728\u68C0\u67E5{0}]
+
+# 0: string
 compiler.misc.verbose.parsing.done=[\u8BED\u6CD5\u5206\u6790\u5DF2\u5B8C\u6210, \u7528\u65F6 {0} \u6BEB\u79D2]
+
+# 0: file name
 compiler.misc.verbose.parsing.started=[\u8BED\u6CD5\u5206\u6790\u5F00\u59CB\u65F6\u95F4 {0}]
+
+# 0: string
 compiler.misc.verbose.total=[\u5171 {0} \u6BEB\u79D2]
+
+# 0: file name
 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=\t\u6B63\u5728\u4F7F\u7528{1}\u66F4\u65B0{0}
+
 compiler.misc.verbose.retro.with.list=\t\u6B63\u5728\u4F7F\u7528\u7C7B\u578B\u53C2\u6570{1}, \u8D85\u7C7B\u578B{2}\u548C\u63A5\u53E3{3}\u66F4\u65B0{0}
 
 ## extra output when using -verbose (code/ClassReader)
+# 0: string
 compiler.misc.verbose.loading=[\u6B63\u5728\u52A0\u8F7D{0}]
 
+# 0: string
 compiler.misc.verbose.sourcepath=[\u6E90\u6587\u4EF6\u7684\u641C\u7D22\u8DEF\u5F84: {0}]
 
+# 0: string
 compiler.misc.verbose.classpath=[\u7C7B\u6587\u4EF6\u7684\u641C\u7D22\u8DEF\u5F84: {0}]
 
 ## extra output when using -checkclassfile (code/ClassReader)
 compiler.misc.ccf.found.later.version=\u7C7B\u6587\u4EF6\u7684\u7248\u672C\u9AD8\u4E8E\u9884\u671F: {0}
+
 compiler.misc.ccf.unrecognized.attribute=\u65E0\u6CD5\u8BC6\u522B\u7684\u5C5E\u6027: {0}
 
 ## extra output when using -prompt (util/Log)
@@ -418,66 +771,100 @@
 
 ## Warning messages may also include the following prefix to identify a
 ## lint option
+# 0: option name
 compiler.warn.lintOption=[{0}]\u0020
 
+# 0: symbol
 compiler.warn.constant.SVUID=serialVersionUID \u5728\u7C7B{0}\u4E2D\u5FC5\u987B\u662F\u5E38\u91CF
 
+# 0: file name
 compiler.warn.dir.path.element.not.found=\u9519\u8BEF\u7684\u8DEF\u5F84\u5143\u7D20 "{0}": \u6CA1\u6709\u8FD9\u79CD\u76EE\u5F55
 
 compiler.warn.finally.cannot.complete=finally \u5B50\u53E5\u65E0\u6CD5\u6B63\u5E38\u5B8C\u6210
 
+# 0: symbol, 1: symbol
 compiler.warn.has.been.deprecated={1}\u4E2D\u7684{0}\u5DF2\u8FC7\u65F6
 
+# 0: symbol
 compiler.warn.sun.proprietary={0}\u662F\u5185\u90E8\u4E13\u7528 API, \u53EF\u80FD\u4F1A\u5728\u672A\u6765\u53D1\u884C\u7248\u4E2D\u5220\u9664
 
 compiler.warn.illegal.char.for.encoding=\u7F16\u7801{0}\u7684\u4E0D\u53EF\u6620\u5C04\u5B57\u7B26
 
+# 0: symbol
 compiler.warn.improper.SVUID=\u5FC5\u987B\u5728\u7C7B{0}\u4E2D\u5C06 serialVersionUID \u58F0\u660E\u4E3A static final
 
+# 0: type, 1: type
 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; \n\u5BF9\u4E8E varargs \u8C03\u7528, \u5E94\u4F7F\u7528 {0}\n\u5BF9\u4E8E\u975E varargs \u8C03\u7528, \u5E94\u4F7F\u7528 {1}, \u8FD9\u6837\u4E5F\u53EF\u4EE5\u6291\u5236\u6B64\u8B66\u544A
 
+# 0: symbol
 compiler.warn.long.SVUID=serialVersionUID \u5728\u7C7B{0}\u4E2D\u5FC5\u987B\u662F long \u7C7B\u578B
 
+# 0: symbol
 compiler.warn.missing.SVUID=\u53EF\u5E8F\u5217\u5316\u7C7B{0}\u6CA1\u6709 serialVersionUID \u7684\u5B9A\u4E49
 
+# 0: message segment
 compiler.warn.override.varargs.missing={0}; \u88AB\u8986\u76D6\u7684\u65B9\u6CD5\u6CA1\u6709 ''...''
+
+# 0: message segment
 compiler.warn.override.varargs.extra={0}; \u8986\u76D6\u7684\u65B9\u6CD5\u7F3A\u5C11 ''...''
+
 compiler.warn.override.bridge={0}; \u88AB\u8986\u76D6\u7684\u65B9\u6CD5\u4E3A bridge \u65B9\u6CD5
 
+# 0: symbol
 compiler.warn.pkg-info.already.seen=\u5DF2\u627E\u5230\u7A0B\u5E8F\u5305{0}\u7684 package-info.java \u6587\u4EF6
 
+# 0: file name
 compiler.warn.path.element.not.found=\u9519\u8BEF\u7684\u8DEF\u5F84\u5143\u7D20 "{0}": \u6CA1\u6709\u8FD9\u79CD\u6587\u4EF6\u6216\u76EE\u5F55
 
 compiler.warn.possible.fall-through.into.case=\u53EF\u80FD\u65E0\u6CD5\u5B9E\u73B0 case
 
+# 0: type
 compiler.warn.redundant.cast=\u51FA\u73B0\u5197\u4F59\u7684\u5230{0}\u7684\u8F6C\u6362
 
+# 0: number
 compiler.warn.position.overflow=\u884C {0} \u5904\u7684\u4F4D\u7F6E\u7F16\u7801\u6EA2\u51FA
 
+# 0: file name, 1: number, 2: number
 compiler.warn.big.major.version={0}: \u4E3B\u7248\u672C {1} \u6BD4 {2} \u65B0, \u6B64\u7F16\u8BD1\u5668\u652F\u6301\u6700\u65B0\u7684\u4E3B\u7248\u672C\u3002\n\u5EFA\u8BAE\u5347\u7EA7\u6B64\u7F16\u8BD1\u5668\u3002
 
+# 0: symbol kind, 1: symbol
 compiler.warn.static.not.qualified.by.type=static {0}\u5E94\u7531\u7C7B\u578B\u540D\u79F0{1}\u800C\u4E0D\u662F\u8868\u8FBE\u5F0F\u9650\u5B9A
 
+# 0: string
 compiler.warn.source.no.bootclasspath=\u672A\u4E0E -source {0} \u4E00\u8D77\u8BBE\u7F6E\u5F15\u5BFC\u7C7B\u8DEF\u5F84
 
+# 0: name, 1: number, 2: number, 3: number, 4: number
+compiler.warn.future.attr={1}.{2} \u7248\u7C7B\u6587\u4EF6\u4E2D\u5F15\u5165\u7684 {0} \u5C5E\u6027\u5728 {3}.{4} \u7248\u7C7B\u6587\u4EF6\u4E2D\u88AB\u5FFD\u7565
+
 # Warnings related to annotation processing
+# 0: name
 compiler.warn.proc.package.does.not.exist=\u7A0B\u5E8F\u5305{0}\u4E0D\u5B58\u5728
+
+# 0: name
 compiler.warn.proc.file.reopening=\u5C1D\u8BD5\u591A\u6B21\u4E3A ''{0}'' \u521B\u5EFA\u6587\u4EF6
 
+# 0: name
 compiler.warn.proc.type.already.exists=\u7C7B\u578B ''{0}'' \u7684\u6587\u4EF6\u5DF2\u7ECF\u5B58\u5728\u4E8E\u6E90\u8DEF\u5F84\u6216\u7C7B\u8DEF\u5F84\u4E2D
 
+# 0: name
 compiler.warn.proc.type.recreate=\u5C1D\u8BD5\u591A\u6B21\u521B\u5EFA\u7C7B\u578B ''{0}'' \u7684\u6587\u4EF6
 
+# 0: string
 compiler.warn.proc.illegal.file.name=\u65E0\u6CD5\u521B\u5EFA\u5E26\u6709\u975E\u6CD5\u540D\u79F0 ''{0}'' \u7684\u6587\u4EF6\u3002
 
+# 0: string, 1: string
 compiler.warn.proc.suspicious.class.name=\u6B63\u5728\u4E3A\u540D\u79F0\u4EE5{1}\u7ED3\u5C3E\u7684\u7C7B\u578B\u521B\u5EFA\u6587\u4EF6: ''{0}''
 
+# 0: name
 compiler.warn.proc.file.create.last.round=\u5C06\u4E0D\u5BF9\u5728\u6700\u540E\u4E00\u4E2A\u5FAA\u73AF\u4E2D\u521B\u5EFA\u7684\u7C7B\u578B\u4E3A ''{0}'' \u7684\u6587\u4EF6\u8FDB\u884C\u6CE8\u91CA\u5904\u7406\u3002
 
+# 0: string, 1: string
 compiler.warn.proc.malformed.supported.string=\u5904\u7406\u7A0B\u5E8F ''{1}'' \u4E3A\u652F\u6301\u7684\u6CE8\u91CA\u7C7B\u578B\u8FD4\u56DE\u683C\u5F0F\u9519\u8BEF\u7684\u5B57\u7B26\u4E32 ''{0}''
 
+# 0: set of string
 compiler.warn.proc.annotations.without.processors=\u6CA1\u6709\u5904\u7406\u7A0B\u5E8F\u8981\u4F7F\u7528\u4EE5\u4E0B\u4EFB\u4F55\u6CE8\u91CA: {0}
 
+# 0: source version, 1: string, 2: string
 compiler.warn.proc.processor.incompatible.source.version=\u6765\u81EA\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F ''{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, \u4F46\u627E\u4E0D\u5230\u5904\u7406\u7A0B\u5E8F\u3002
@@ -487,23 +874,41 @@
 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
+# 0: string
 compiler.warn.proc.messager={0}
 
+# 0: set of name
 compiler.warn.proc.unclosed.type.files=\u7C7B\u578B ''{0}'' \u7684\u6587\u4EF6\u672A\u5173\u95ED; \u5C06\u4E0D\u9488\u5BF9\u8FD9\u4E9B\u7C7B\u578B\u8FDB\u884C\u6CE8\u91CA\u5904\u7406
 
+# 0: string
 compiler.warn.proc.unmatched.processor.options=\u4EE5\u4E0B\u9009\u9879\u672A\u88AB\u4EFB\u4F55\u5904\u7406\u7A0B\u5E8F\u8BC6\u522B: ''{0}''
 
 compiler.warn.try.explicit.close.call=\u5728\u53EF\u81EA\u52A8\u7ED3\u675F\u7684\u8D44\u6E90\u4E0A\u663E\u5F0F\u8C03\u7528 close()
+
+# 0: symbol
 compiler.warn.try.resource.not.referenced=\u4E0D\u80FD\u5728\u76F8\u5E94\u7684 try \u8BED\u53E5\u7684\u6B63\u6587\u4E2D\u5F15\u7528\u53EF\u81EA\u52A8\u7ED3\u675F\u7684\u8D44\u6E90{0}
+
 compiler.warn.unchecked.assign=\u672A\u7ECF\u68C0\u67E5\u7684\u5206\u914D: \u5C06{0}\u5206\u914D\u7ED9{1}
+
+# 0: symbol, 1: type
 compiler.warn.unchecked.assign.to.var=\u5BF9\u4F5C\u4E3A\u539F\u59CB\u7C7B\u578B{1}\u7684\u6210\u5458\u7684\u53D8\u91CF{0}\u7684\u5206\u914D\u672A\u7ECF\u8FC7\u68C0\u67E5
+
+# 0: symbol, 1: type
 compiler.warn.unchecked.call.mbr.of.raw.type=\u5BF9\u4F5C\u4E3A\u539F\u59CB\u7C7B\u578B{1}\u7684\u6210\u5458\u7684{0}\u7684\u8C03\u7528\u672A\u7ECF\u8FC7\u68C0\u67E5
+
 compiler.warn.unchecked.cast.to.type=\u5411\u7C7B\u578B{0}\u7684\u8F6C\u6362\u672A\u7ECF\u8FC7\u68C0\u67E5
+
+# 0: symbol kind, 1: name, 2: list of type, 3: list of type, 4: symbol kind, 5: symbol
 compiler.warn.unchecked.meth.invocation.applied=\u65B9\u6CD5\u8C03\u7528\u672A\u7ECF\u8FC7\u68C0\u67E5: \u5C06{4} {5}\u4E2D\u7684{0} {1}\u5E94\u7528\u5230\u7ED9\u5B9A\u7684\u7C7B\u578B\n\u9700\u8981: {2}\n\u627E\u5230: {3}
 
+# 0: type
 compiler.warn.unchecked.generic.array.creation=\u5BF9\u4E8E\u7C7B\u578B\u4E3A{0}\u7684 varargs \u53C2\u6570, \u6CDB\u578B\u6570\u7EC4\u521B\u5EFA\u672A\u7ECF\u8FC7\u68C0\u67E5
 
-compiler.warn.varargs.non.reifiable.type=\u53C2\u6570\u5316 vararg \u7C7B\u578B{0}\u7684\u5806\u53EF\u80FD\u5DF2\u53D7\u6C61\u67D3
+# 0: type
+compiler.warn.unchecked.varargs.non.reifiable.type=\u53C2\u6570\u5316 vararg \u7C7B\u578B{0}\u7684\u5806\u53EF\u80FD\u5DF2\u53D7\u6C61\u67D3
+
+# 0: symbol
+compiler.warn.varargs.unsafe.use.varargs.param=Varargs \u65B9\u6CD5\u53EF\u80FD\u5BFC\u81F4\u6765\u81EA\u4E0D\u53EF\u5177\u4F53\u5316 varargs \u53C2\u6570 {0} \u7684\u5806\u6C61\u67D3
 
 compiler.warn.missing.deprecated.annotation=\u672A\u4F7F\u7528 @Deprecated \u5BF9\u5DF2\u8FC7\u65F6\u7684\u9879\u76EE\u8FDB\u884C\u6CE8\u91CA
 
@@ -519,23 +924,38 @@
 
 compiler.warn.annotation.method.not.found.reason=\u65E0\u6CD5\u627E\u5230\u7C7B\u578B ''{0}'' \u7684\u6CE8\u91CA\u65B9\u6CD5 ''{1}()'': {2}
 
+# 0: type, 1: type
 compiler.warn.raw.class.use=\u627E\u5230\u539F\u59CB\u7C7B\u578B: {0}\n\u7F3A\u5C11\u6CDB\u578B\u7C7B{1}\u7684\u7C7B\u578B\u53C2\u6570
 
+# 0: unused, 1: unused
 compiler.warn.diamond.redundant.args=\u65B0\u8868\u8FBE\u5F0F\u4E2D\u5B58\u5728\u5197\u4F59\u7C7B\u578B\u53C2\u6570 (\u6539\u7528 diamond \u8FD0\u7B97\u7B26)\u3002
+
+# 0: type, 1: type
 compiler.warn.diamond.redundant.args.1=\u65B0\u8868\u8FBE\u5F0F\u4E2D\u5B58\u5728\u5197\u4F59\u7C7B\u578B\u53C2\u6570 (\u6539\u7528 diamond \u8FD0\u7B97\u7B26)\u3002\n\u663E\u5F0F: {0}\n\u63A8\u65AD: {1}
 
+# 0: symbol, 1: message segment
+compiler.warn.varargs.redundant.trustme.anno=\u5197\u4F59\u7684 {0} \u6CE8\u91CA\u3002{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>
 
 ## The argument to the following string will always be one of the following:
@@ -547,8 +967,13 @@
 ## 6. an operator (JLS3.12)
 ##
 ## This is the only place these tokens will be used.
+# 0: token
 compiler.err.expected=\u9700\u8981{0}
+
+# 0: token, 1: token
 compiler.err.expected2=\u9700\u8981{0}\u6216{1}
+
+# 0: token, 1: token, 2: token
 compiler.err.expected3=\u9700\u8981{0}, {1}\u6216{2}
 
 compiler.err.premature.eof=\u8FDB\u884C\u8BED\u6CD5\u5206\u6790\u65F6\u5DF2\u5230\u8FBE\u6587\u4EF6\u7ED3\u5C3E
@@ -557,10 +982,13 @@
 compiler.err.dot.class.expected=\u9700\u8981 ''.class''
 
 ## The argument to this string will always be either 'case' or 'default'.
+# 0: token
 compiler.err.orphaned=\u5B64\u7ACB\u7684{0}
 
+# 0: name
 compiler.misc.anonymous.class=<\u533F\u540D{0}>
 
+# 0: name, 1: type
 compiler.misc.type.captureof=capture#{0}, \u5171 {1}
 
 compiler.misc.type.captureof.1=capture#{0}
@@ -571,35 +999,51 @@
 
 #####
 
+# 0: symbol, 1: message segment
 compiler.err.cant.access=\u65E0\u6CD5\u8BBF\u95EE{0}\n{1}
 
 compiler.misc.bad.class.file.header=\u9519\u8BEF\u7684\u7C7B\u6587\u4EF6: {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
+
+# 0: file name, 1: message segment
 compiler.misc.bad.source.file.header=\u9519\u8BEF\u7684\u6E90\u6587\u4EF6: {0}\n{1}\n\u8BF7\u5220\u9664\u8BE5\u6587\u4EF6\u6216\u786E\u4FDD\u8BE5\u6587\u4EF6\u4F4D\u4E8E\u6B63\u786E\u7684\u6E90\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: {0}
+
 compiler.misc.bad.enclosing.method=\u9519\u8BEF\u7684\u5C01\u95ED\u65B9\u6CD5\u5C5E\u6027: {0}
+
 compiler.misc.bad.runtime.invisible.param.annotations=\u9519\u8BEF\u7684 RuntimeInvisibleParameterAnnotations \u5C5E\u6027: {0}
+
 compiler.misc.bad.const.pool.tag=\u9519\u8BEF\u7684\u5E38\u91CF\u6C60\u6807\u8BB0: {0}
+
 compiler.misc.bad.const.pool.tag.at=\u9519\u8BEF\u7684\u5E38\u91CF\u6C60\u6807\u8BB0: {0}, \u4F4D\u4E8E{1}
+
 compiler.misc.bad.signature=\u9519\u8BEF\u7684\u7B7E\u540D: {0}
-compiler.misc.bad.type.annotation.value=\u9519\u8BEF\u7684\u7C7B\u578B\u6CE8\u91CA\u76EE\u6807\u7C7B\u578B\u503C: {0}
+
 compiler.misc.class.file.wrong.class=\u7C7B\u6587\u4EF6\u5305\u542B\u9519\u8BEF\u7684\u7C7B: {0}
+
 compiler.misc.class.file.not.found=\u627E\u4E0D\u5230{0}\u7684\u7C7B\u6587\u4EF6
+
+# 0: name
 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\u7A0B\u5E8F\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: {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: {0}
+
 compiler.misc.wrong.version=\u7C7B\u6587\u4EF6\u5177\u6709\u9519\u8BEF\u7684\u7248\u672C {0}.{1}, \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.explain=\u7C7B\u578B\u53C2\u6570{0}\u4E0D\u5728\u5176\u9650\u5236\u8303\u56F4\u4E4B\u5185; {1}
+# 0: type, 1: type or symbol
+compiler.err.not.within.bounds=\u7C7B\u578B\u53C2\u6570{0}\u4E0D\u5728\u7C7B\u578B\u53D8\u91CF{1}\u7684\u8303\u56F4\u5185
 
 ## The following are all possible strings for the second argument ({1}) of the
 ## above string.
@@ -608,18 +1052,27 @@
 
 #####
 
+# 0: message segment, 1: type, 2: type
 compiler.err.prob.found.req={0}\n\u9700\u8981: {2}\n\u627E\u5230:    {1}
+
+# 0: message segment, 1: type, 2: type
 compiler.warn.prob.found.req={0}\n\u9700\u8981: {2}\n\u627E\u5230:    {1}
+
 compiler.err.prob.found.req.1={0} {3}\n\u9700\u8981: {2}\n\u627E\u5230:    {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
+
+# 0: message segment
 compiler.misc.incompatible.types.1=\u4E0D\u517C\u5BB9\u7684\u7C7B\u578B; {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=\u672A\u7ECF\u68C0\u67E5\u7684\u8F6C\u6362
+
 # compiler.misc.storecheck=\
 #     assignment might cause later store checks to fail
 # compiler.misc.unchecked=\
@@ -627,7 +1080,9 @@
 compiler.misc.unchecked.cast.to.type=\u672A\u7ECF\u68C0\u67E5\u7684\u8F6C\u6362
 
 compiler.misc.assignment.from.super-bound=\u4ECE super-bound \u7C7B\u578B{0}\u8FDB\u884C\u5206\u914D
+
 compiler.misc.assignment.to.extends-bound=\u5230 extends-bound \u7C7B\u578B{0}\u7684\u5206\u914D
+
 # compiler.err.star.expected=\
 #     ''*'' expected
 # compiler.err.no.elem.type=\
@@ -637,14 +1092,22 @@
 
 #####
 
+# 0: message segment or type, 1: message segment
 compiler.err.type.found.req=\u610F\u5916\u7684\u7C7B\u578B\n\u9700\u8981: {1}\n\u627E\u5230:    {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.array.or.iterable=\u6570\u7EC4\u6216 java.lang.Iterable
+
 compiler.misc.type.req.ref=\u5F15\u7528
+
 compiler.misc.type.req.exact=\u4E0D\u5E26\u9650\u5236\u8303\u56F4\u7684\u7C7B\u6216\u63A5\u53E3
+
+# 0: type
 compiler.misc.type.parameter=\u7C7B\u578B\u53C2\u6570{0}
 
 #####
@@ -652,29 +1115,56 @@
 ## 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
+
 compiler.misc.type.variable.has.undetermined.type=\u7C7B\u578B\u53D8\u91CF{0}\u5E26\u6709\u672A\u786E\u5B9A\u7684\u7C7B\u578B
+
+# 0: type, 1: list of type
 compiler.misc.no.unique.maximal.instance.exists=\u5BF9\u4E8E\u4E0A\u9650\u4E3A{1}\u7684\u7C7B\u578B\u53D8\u91CF{0}, \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}, \u4E0D\u5B58\u5728\u552F\u4E00\u6700\u5C0F\u5B9E\u4F8B
+
+# 0: list of type, 1: type, 2: type
 compiler.misc.infer.no.conforming.instance.exists=\u4E0D\u5B58\u5728\u7C7B\u578B\u53D8\u91CF{0}\u7684\u5B9E\u4F8B, \u4EE5\u4F7F{1}\u4E0E{2}\u4E00\u81F4
+
+# 0: list of type, 1: type, 2: type
 compiler.misc.infer.no.conforming.assignment.exists=\u4E0D\u5B58\u5728\u7C7B\u578B\u53D8\u91CF{0}\u7684\u5B9E\u4F8B, \u4EE5\u4F7F\u53C2\u6570\u7C7B\u578B{1}\u4E0E\u5F62\u5F0F\u53C2\u6570\u7C7B\u578B{2}\u4E00\u81F4
+
 compiler.misc.infer.arg.length.mismatch=\u65E0\u6CD5\u4ECE\u53C2\u6570\u8FDB\u884C\u5B9E\u4F8B\u5316, \u56E0\u4E3A\u5B9E\u9645\u53C2\u6570\u5217\u8868\u548C\u5F62\u5F0F\u53C2\u6570\u5217\u8868\u957F\u5EA6\u4E0D\u540C
+
+# 0: type, 1: list of type
 compiler.misc.inferred.do.not.conform.to.bounds=\u63A8\u65AD\u7C7B\u578B\u4E0D\u7B26\u5408\u58F0\u660E\u7684\u8303\u56F4\n\u63A8\u65AD: {0}\n\u8303\u56F4: {1}
-compiler.misc.inferred.do.not.conform.to.params=\u5B9E\u9645\u53C2\u6570\u4E0D\u7B26\u5408\u63A8\u65AD\u7684\u5F62\u5F0F\u53C2\u6570\n\u9700\u8981: {0}\n\u627E\u5230: {1}
+
+# 0: symbol
 compiler.misc.diamond={0}<>
+
+# 0: type
+compiler.misc.diamond.non.generic=\u65E0\u6CD5\u5C06 ''<>'' \u4E0E\u975E\u6CDB\u578B\u7C7B{0}\u4E00\u8D77\u4F7F\u7528
+
+# 0: list of type, 1: message segment
 compiler.misc.diamond.invalid.arg=\u6B64\u4E0A\u4E0B\u6587\u4E2D\u4E0D\u5141\u8BB8\u4F7F\u7528\u4E3A{1}\u63A8\u65AD\u7684\u7C7B\u578B\u53C2\u6570{0}
+
+# 0: list of type, 1: message segment
 compiler.misc.diamond.invalid.args=\u6B64\u4E0A\u4E0B\u6587\u4E2D\u4E0D\u5141\u8BB8\u4F7F\u7528\u4E3A{1}\u63A8\u65AD\u7684\u7C7B\u578B\u53C2\u6570{0}
 
+# 0: type, 1: list of type
 compiler.misc.explicit.param.do.not.conform.to.bounds=\u663E\u5F0F\u7C7B\u578B\u53C2\u6570{0}\u4E0D\u7B26\u5408\u58F0\u660E\u7684\u8303\u56F4{1}
 
 compiler.misc.arg.length.mismatch=\u5B9E\u9645\u53C2\u6570\u5217\u8868\u548C\u5F62\u5F0F\u53C2\u6570\u5217\u8868\u957F\u5EA6\u4E0D\u540C
+
+# 0: type, 1: type
 compiler.misc.no.conforming.assignment.exists=\u65E0\u6CD5\u901A\u8FC7\u65B9\u6CD5\u8C03\u7528\u8F6C\u6362\u5C06\u5B9E\u9645\u53C2\u6570{0}\u8F6C\u6362\u4E3A{1}
+
+# 0: type, 1: type
 compiler.misc.varargs.argument.mismatch=\u53C2\u6570\u7C7B\u578B{0}\u4E0D\u7B26\u5408 vararg \u5143\u7D20\u7C7B\u578B{1}
+
 #####
 
 ## The first argument ({0}) is a "kindname".
+# 0: symbol kind, 1: symbol, 2: symbol
 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".
+# 0: symbol kind, 1: symbol
 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
@@ -685,20 +1175,36 @@
 ## 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)
+# 0: symbol kind, 1: name, 2: unused, 3: unused
 compiler.err.cant.resolve=\u627E\u4E0D\u5230\u7B26\u53F7\n\u7B26\u53F7: {0} {1}
 
+# 0: symbol kind, 1: name, 2: unused, 3: list of type
 compiler.err.cant.resolve.args=\u627E\u4E0D\u5230\u7B26\u53F7\n\u7B26\u53F7: {0} {1}({3})
 
+# 0: symbol kind, 1: name, 2: list of type, 3: list of type
 compiler.err.cant.resolve.args.params=\u627E\u4E0D\u5230\u7B26\u53F7\n\u7B26\u53F7: {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:   {0} {1}\n\u4F4D\u7F6E: {4} {5}
+## The fifth argument {4} is a location subdiagnostic (see below)
+# 0: symbol kind, 1: name, 2: unused, 3: unused, 4: message segment
+compiler.err.cant.resolve.location=\u627E\u4E0D\u5230\u7B26\u53F7\n\u7B26\u53F7:   {0} {1}\n\u4F4D\u7F6E: {4}
+
+# 0: symbol kind, 1: name, 2: unused, 3: list of type, 4: message segment
+compiler.err.cant.resolve.location.args=\u627E\u4E0D\u5230\u7B26\u53F7\n\u7B26\u53F7:   {0} {1}({3})\n\u4F4D\u7F6E: {4}
+
+# 0: symbol kind, 1: name, 2: list of type, 3: list, 4: message segment
+compiler.err.cant.resolve.location.args.params=\u627E\u4E0D\u5230\u7B26\u53F7\n\u7B26\u53F7:   {0} <{2}>{1}({3})\n\u4F4D\u7F6E: {4}
 
-compiler.err.cant.resolve.location.args=\u627E\u4E0D\u5230\u7B26\u53F7\n\u7B26\u53F7:   {0} {1}({3})\n\u4F4D\u7F6E: {4} {5}
+##a location subdiagnostic is composed as follows:
+## The first argument {0} is the location "kindname" (e.g. 'constructor', 'field', etc.)
+## The second argument {1} is the location name
+## The third argument {2} is the location type (only when {1} is a variable name)
 
-compiler.err.cant.resolve.location.args.params=\u627E\u4E0D\u5230\u7B26\u53F7\n\u7B26\u53F7:   {0} <{2}>{1}({3})\n\u4F4D\u7F6E: {4} {5}
+# 0: symbol kind, 1: symbol, 2: unused
+compiler.misc.location={0} {1}
+
+# 0: symbol kind, 1: symbol, 2: type
+compiler.misc.location.1=\u7C7B\u578B\u4E3A{2}\u7684{0} {1}
 
 ## The following are all possible string for "kindname".
 ## They should be called whatever the JLS calls them after it been translated
@@ -706,60 +1212,103 @@
 # compiler.misc.kindname.constructor=\
 #     static member
 compiler.misc.kindname.annotation=@interface
+
 compiler.misc.kindname.constructor=\u6784\u9020\u5668
+
 compiler.misc.kindname.enum=\u679A\u4E3E
+
 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=\u7A0B\u5E8F\u5305
+
 #####
 
 compiler.misc.no.args=\u6CA1\u6709\u53C2\u6570
 
+# 0: message segment
 compiler.err.override.static={0}\n\u8986\u76D6\u7684\u65B9\u6CD5\u4E3A static
+
+# 0: message segment, 1: set of modifier
 compiler.err.override.meth={0}\n\u88AB\u8986\u76D6\u7684\u65B9\u6CD5\u4E3A{1}
 
+# 0: message segment, 1: type
 compiler.err.override.meth.doesnt.throw={0}\n\u88AB\u8986\u76D6\u7684\u65B9\u6CD5\u672A\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
+# 0: message segment, 1: set of modifier
 compiler.err.override.weaker.access={0}\n\u6B63\u5728\u5C1D\u8BD5\u5206\u914D\u66F4\u4F4E\u7684\u8BBF\u95EE\u6743\u9650; \u4EE5\u524D\u4E3A{1}
 
+# 0: message segment, 1: type, 2: type
 compiler.err.override.incompatible.ret={0}\n\u8FD4\u56DE\u7C7B\u578B{1}\u4E0E{2}\u4E0D\u517C\u5BB9
 
+# 0: message segment, 1: type, 2: type
 compiler.warn.override.unchecked.ret={0}\n\u8FD4\u56DE\u7C7B\u578B\u9700\u8981\u4ECE{1}\u5230{2}\u7684\u672A\u7ECF\u68C0\u67E5\u7684\u8F6C\u6362
 
+# 0: message segment, 1: type
 compiler.warn.override.unchecked.thrown={0}\n\u88AB\u8986\u76D6\u7684\u65B9\u6CD5\u672A\u629B\u51FA{1}
 
 ## The following are all possible strings for the first argument ({0}) of the
 ## above strings.
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol
 compiler.misc.cant.override={1}\u4E2D\u7684{0}\u65E0\u6CD5\u8986\u76D6{3}\u4E2D\u7684{2}
+
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol
 compiler.misc.cant.implement={1}\u4E2D\u7684{0}\u65E0\u6CD5\u5B9E\u73B0{3}\u4E2D\u7684{2}
+
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol
 compiler.misc.clashes.with={1}\u4E2D\u7684{0}\u4E0E{3}\u4E2D\u7684{2}\u51B2\u7A81
+
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol
 compiler.misc.unchecked.override={1}\u4E2D\u7684{0}\u8986\u76D6\u4E86{3}\u4E2D\u7684{2}
+
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol
 compiler.misc.unchecked.implement={1}\u4E2D\u7684{0}\u5B9E\u73B0\u4E86{3}\u4E2D\u7684{2}
+
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol
 compiler.misc.unchecked.clash.with={1}\u4E2D\u7684{0}\u8986\u76D6\u4E86{3}\u4E2D\u7684{2}
+
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol
 compiler.misc.varargs.override={1}\u4E2D\u7684{0}\u8986\u76D6\u4E86{3}\u4E2D\u7684{2}
+
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol
 compiler.misc.varargs.implement={1}\u4E2D\u7684{0}\u5B9E\u73B0\u4E86{3}\u4E2D\u7684{2}
+
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol
 compiler.misc.varargs.clash.with={1}\u4E2D\u7684{0}\u8986\u76D6\u4E86{3}\u4E2D\u7684{2}
+
 compiler.misc.non.denotable.type=\u6B64\u5904\u4E0D\u5141\u8BB8\u4F7F\u7528\u4E0D\u53EF\u6307\u793A\u7684\u7C7B\u578B{0}
 
+# 0: symbol kind, 1: symbol, 2: symbol, 3: message segment
 compiler.misc.inapplicable.method={0} {1}.{2}\u4E0D\u9002\u7528\n({3})
 
 ########################################
 # Diagnostics for language feature changes
 ########################################
+# 0: string
 compiler.err.unsupported.fp.lit=-source {0} \u4E2D\u4E0D\u652F\u6301\u5341\u516D\u8FDB\u5236\u6D6E\u70B9\u6587\u5B57\n(\u8BF7\u4F7F\u7528 -source 5 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u5341\u516D\u8FDB\u5236\u6D6E\u70B9\u6587\u5B57)
 
+# 0: string
 compiler.err.unsupported.binary.lit=-source {0} \u4E2D\u4E0D\u652F\u6301\u4E8C\u8FDB\u5236\u6587\u5B57\n(\u8BF7\u4F7F\u7528 -source 7 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u4E8C\u8FDB\u5236\u6587\u5B57)
 
+# 0: string
 compiler.err.unsupported.underscore.lit=-source {0} \u4E2D\u4E0D\u652F\u6301\u6587\u5B57\u4E2D\u5B58\u5728\u4E0B\u5212\u7EBF\n(\u8BF7\u4F7F\u7528 -source 7 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u5141\u8BB8\u6587\u5B57\u4E2D\u5B58\u5728\u4E0B\u5212\u7EBF)
 
+# 0: string
 compiler.err.try.with.resources.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301 try-with-resources\n(\u8BF7\u4F7F\u7528 -source 7 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528 try-with-resources)
 
 compiler.warn.enum.as.identifier=\u4ECE\u53D1\u884C\u7248 5 \u5F00\u59CB, ''enum'' \u4E3A\u5173\u952E\u5B57, \u800C\u4E0D\u7528\u4F5C\u6807\u8BC6\u7B26\n(\u8BF7\u4F7F\u7528 -source 5 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u5C06 ''enum'' \u7528\u4F5C\u5173\u952E\u5B57)
@@ -770,26 +1319,35 @@
 
 compiler.err.assert.as.identifier=\u4ECE\u53D1\u884C\u7248 1.4 \u5F00\u59CB, ''assert'' \u662F\u4E00\u4E2A\u5173\u952E\u5B57, \u4F46\u4E0D\u80FD\u7528\u4F5C\u6807\u8BC6\u7B26\n(\u8BF7\u4F7F\u7528 -source 1.3 \u6216\u66F4\u4F4E\u7248\u672C\u4EE5\u5C06 ''assert'' \u7528\u4F5C\u6807\u8BC6\u7B26)
 
+# 0: string
 compiler.err.generics.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u6CDB\u578B\n(\u8BF7\u4F7F\u7528 -source 5 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u6CDB\u578B)
 
+# 0: string
 compiler.err.varargs.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301 variable-arity \u65B9\u6CD5\n(\u8BF7\u4F7F\u7528 -source 5 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528 variable-arity \u65B9\u6CD5)
 
+# 0: string
 compiler.err.annotations.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u6CE8\u91CA\n(\u8BF7\u4F7F\u7528 -source 5 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u6CE8\u91CA)
 
 #308 compiler.err.type.annotations.not.supported.in.source=\
 #308     type annotations are not supported in -source {0}\n\
 #308 (use -source 7 or higher to enable type annotations)
 
+# 0: string
 compiler.err.foreach.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301 for-each \u5FAA\u73AF\n(\u8BF7\u4F7F\u7528 -source 5 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528 for-each \u5FAA\u73AF)
 
+# 0: string
 compiler.err.static.import.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u9759\u6001\u5BFC\u5165\u58F0\u660E\n(\u8BF7\u4F7F\u7528 -source 5 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u9759\u6001\u5BFC\u5165\u58F0\u660E)
 
+# 0: string
 compiler.err.enums.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u679A\u4E3E\n(\u8BF7\u4F7F\u7528 -source 5 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u679A\u4E3E)
 
+# 0: string
 compiler.err.diamond.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301 diamond \u8FD0\u7B97\u7B26\n(\u8BF7\u4F7F\u7528 -source 7 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528 diamond \u8FD0\u7B97\u7B26)
 
+# 0: string
 compiler.err.multicatch.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301 multi-catch \u8BED\u53E5\n(\u8BF7\u4F7F\u7528 -source 7 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528 multi-catch \u8BED\u53E5)
 
+# 0: string
 compiler.err.string.switch.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301 switch \u4E2D\u5B58\u5728\u5B57\u7B26\u4E32\n(\u8BF7\u4F7F\u7528 -source 7 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u5141\u8BB8 switch \u4E2D\u5B58\u5728\u5B57\u7B26\u4E32)
 
 ########################################
@@ -800,24 +1358,30 @@
 compiler.misc.type.null=<\u7A7A\u503C>
 
 # X#n (where n is an int id) is disambiguated tvar name
+# 0: name, 1: number
 compiler.misc.type.var={0}#{1}
 
 # CAP#n (where n is an int id) is an abbreviation for 'captured type'
+# 0: number
 compiler.misc.captured.type=CAP#{0}
 
 # <INT#n> (where n is an int id) is an abbreviation for 'intersection type'
+# 0: number
 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})
+# 0: type, 1: type, 2: type, 3: type
 compiler.misc.where.captured={0}\u4ECE{3}\u7684\u6355\u83B7\u6269\u5C55{1} \u8D85 {2}
 
 # compact where clause for captured type: contains upper ('extends {1}') along
 # with the wildcard that generated this captured type ({3})
+# 0: type, 1: type, 2: unused, 3: type
 compiler.misc.where.captured.1={0}\u4ECE{3}\u7684\u6355\u83B7\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
+# 0: type, 1: list of type, 2: symbol kind, 3: symbol
 compiler.misc.where.typevar={0}\u6269\u5C55\u5DF2\u5728{2} {3}\u4E2D\u58F0\u660E\u7684{1}
 
 # compact where clause for type variable: contains the kindname ({2}) and location ({3})
@@ -826,14 +1390,24 @@
 
 # where clause for type variable: contains all the upper bound(s) ('extends {1}')
 # of this intersection type
+# 0: type, 1: list of type
 compiler.misc.where.intersection={0}\u6269\u5C55{1}
 
 ### Where clause headers ###
 compiler.misc.where.description.captured=\u5176\u4E2D, {0}\u662F\u65B0\u7C7B\u578B\u53D8\u91CF:
+
+# 0: set of type
 compiler.misc.where.description.typevar=\u5176\u4E2D, {0}\u662F\u7C7B\u578B\u53D8\u91CF:
+
+# 0: set of type
 compiler.misc.where.description.intersection=\u5176\u4E2D, {0}\u662F\u4EA4\u53C9\u7C7B\u578B:
+
+# 0: set of type
 compiler.misc.where.description.captured.1=\u5176\u4E2D, {0}\u662F\u65B0\u7C7B\u578B\u53D8\u91CF:
+
+# 0: set of type
 compiler.misc.where.description.typevar.1=\u5176\u4E2D, {0}\u662F\u7C7B\u578B\u53D8\u91CF:
+
 compiler.misc.where.description.intersection.1=\u5176\u4E2D, {0}\u662F\u4EA4\u53C9\u7C7B\u578B:
 
 
--- a/langtools/src/share/classes/com/sun/tools/javac/resources/javac_ja.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/resources/javac_ja.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/langtools/src/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/langtools/src/share/classes/com/sun/tools/javac/util/JavacMessages.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/util/JavacMessages.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
@@ -44,7 +44,7 @@
  */
 public class JavacMessages implements Messages {
     /** The context key for the JavacMessages object. */
-    protected static final Context.Key<JavacMessages> messagesKey =
+    public static final Context.Key<JavacMessages> messagesKey =
         new Context.Key<JavacMessages>();
 
     /** Get the JavacMessages instance for this context. */
@@ -77,7 +77,7 @@
     /** Creates a JavacMessages object.
      */
     public JavacMessages(Context context) {
-        this(defaultBundleName);
+        this(defaultBundleName, context.get(Locale.class));
         context.put(messagesKey, this);
     }
 
@@ -85,10 +85,17 @@
      * @param bundleName the name to identify the resource buundle of localized messages.
      */
     public JavacMessages(String bundleName) throws MissingResourceException {
+        this(bundleName, null);
+    }
+
+    /** Creates a JavacMessages object.
+     * @param bundleName the name to identify the resource buundle of localized messages.
+     */
+    public JavacMessages(String bundleName, Locale locale) throws MissingResourceException {
         bundleNames = List.nil();
         bundleCache = new HashMap<Locale, SoftReference<List<ResourceBundle>>>();
         add(bundleName);
-        setCurrentLocale(Locale.getDefault());
+        setCurrentLocale(locale);
     }
 
     public JavacMessages() throws MissingResourceException {
--- a/langtools/src/share/classes/com/sun/tools/javac/util/Log.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/util/Log.java	Wed Apr 20 09:31:11 2011 -0700
@@ -425,13 +425,8 @@
      */
     protected void writeDiagnostic(JCDiagnostic diag) {
         if (diagListener != null) {
-            try {
-                diagListener.report(diag);
-                return;
-            }
-            catch (Throwable t) {
-                throw new ClientCodeException(t);
-            }
+            diagListener.report(diag);
+            return;
         }
 
         PrintWriter writer = getWriterForDiagnosticType(diag.getType());
--- a/langtools/src/share/classes/com/sun/tools/javac/util/Names.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/util/Names.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
@@ -73,7 +73,6 @@
     public final Name java_io_Serializable;
     public final Name serialVersionUID;
     public final Name java_lang_Enum;
-    public final Name transient_java_dyn_MethodHandle; // transient - 292
     public final Name java_lang_invoke_MethodHandle;
     public final Name package_info;
     public final Name ConstantValue;
@@ -184,7 +183,6 @@
         java_lang_Cloneable = fromString("java.lang.Cloneable");
         java_io_Serializable = fromString("java.io.Serializable");
         java_lang_Enum = fromString("java.lang.Enum");
-        transient_java_dyn_MethodHandle = fromString("java.dyn.MethodHandle"); //transient - 292
         java_lang_invoke_MethodHandle = fromString("java.lang.invoke.MethodHandle");
         package_info = fromString("package-info");
         serialVersionUID = fromString("serialVersionUID");
--- a/langtools/src/share/classes/com/sun/tools/javac/util/Options.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/util/Options.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/langtools/src/share/classes/com/sun/tools/javadoc/resources/javadoc_ja.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javadoc/resources/javadoc_ja.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/langtools/src/share/classes/com/sun/tools/javadoc/resources/javadoc_zh_CN.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javadoc/resources/javadoc_zh_CN.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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
--- a/langtools/src/share/classes/com/sun/tools/javah/resources/l10n_ja.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javah/resources/l10n_ja.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/langtools/src/share/classes/com/sun/tools/javah/resources/l10n_zh_CN.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javah/resources/l10n_zh_CN.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
--- a/langtools/src/share/classes/com/sun/tools/javap/ClassWriter.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javap/ClassWriter.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2011, Oracle and/or its affiliates. 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
@@ -48,6 +48,13 @@
 import com.sun.tools.classfile.Signature_attribute;
 import com.sun.tools.classfile.SourceFile_attribute;
 import com.sun.tools.classfile.Type;
+import com.sun.tools.classfile.Type.ArrayType;
+import com.sun.tools.classfile.Type.ClassSigType;
+import com.sun.tools.classfile.Type.ClassType;
+import com.sun.tools.classfile.Type.MethodType;
+import com.sun.tools.classfile.Type.SimpleType;
+import com.sun.tools.classfile.Type.TypeParamType;
+import com.sun.tools.classfile.Type.WildcardType;
 
 import static com.sun.tools.classfile.AccessFlags.*;
 
@@ -166,8 +173,10 @@
             // use info from class file header
             if (classFile.isClass() && classFile.super_class != 0 ) {
                 String sn = getJavaSuperclassName(cf);
-                print(" extends ");
-                print(sn);
+                if (!sn.equals("java.lang.Object")) {
+                    print(" extends ");
+                    print(sn);
+                }
             }
             for (int i = 0; i < classFile.interfaces.length; i++) {
                 print(i == 0 ? (classFile.isClass() ? " implements " : " extends ") : ",");
@@ -176,13 +185,14 @@
         } else {
             try {
                 Type t = sigAttr.getParsedSignature().getType(constant_pool);
+                JavaTypePrinter p = new JavaTypePrinter(classFile.isInterface());
                 // The signature parser cannot disambiguate between a
                 // FieldType and a ClassSignatureType that only contains a superclass type.
-                if (t instanceof Type.ClassSigType)
-                    print(getJavaName(t.toString()));
-                else {
+                if (t instanceof Type.ClassSigType) {
+                    print(p.print(t));
+                } else if (options.verbose || !t.isObject()) {
                     print(" extends ");
-                    print(getJavaName(t.toString()));
+                    print(p.print(t));
                 }
             } catch (ConstantPoolException e) {
                 print(report(e));
@@ -210,6 +220,124 @@
         indent(-1);
         println("}");
     }
+    // where
+        class JavaTypePrinter implements Type.Visitor<StringBuilder,StringBuilder> {
+            boolean isInterface;
+
+            JavaTypePrinter(boolean isInterface) {
+                this.isInterface = isInterface;
+            }
+
+            String print(Type t) {
+                return t.accept(this, new StringBuilder()).toString();
+            }
+
+            public StringBuilder visitSimpleType(SimpleType type, StringBuilder sb) {
+                sb.append(getJavaName(type.name));
+                return sb;
+            }
+
+            public StringBuilder visitArrayType(ArrayType type, StringBuilder sb) {
+                append(sb, type.elemType);
+                sb.append("[]");
+                return sb;
+            }
+
+            public StringBuilder visitMethodType(MethodType type, StringBuilder sb) {
+                appendIfNotEmpty(sb, "<", type.typeParamTypes, "> ");
+                append(sb, type.returnType);
+                append(sb, " (", type.paramTypes, ")");
+                appendIfNotEmpty(sb, " throws ", type.throwsTypes, "");
+                return sb;
+            }
+
+            public StringBuilder visitClassSigType(ClassSigType type, StringBuilder sb) {
+                appendIfNotEmpty(sb, "<", type.typeParamTypes, ">");
+                if (isInterface) {
+                    appendIfNotEmpty(sb, " extends ", type.superinterfaceTypes, "");
+                } else {
+                    if (type.superclassType != null
+                            && (options.verbose || !type.superclassType.isObject())) {
+                        sb.append(" extends ");
+                        append(sb, type.superclassType);
+                    }
+                    appendIfNotEmpty(sb, " implements ", type.superinterfaceTypes, "");
+                }
+                return sb;
+            }
+
+            public StringBuilder visitClassType(ClassType type, StringBuilder sb) {
+                if (type.outerType != null) {
+                    append(sb, type.outerType);
+                    sb.append(".");
+                }
+                sb.append(getJavaName(type.name));
+                appendIfNotEmpty(sb, "<", type.typeArgs, ">");
+                return sb;
+            }
+
+            public StringBuilder visitTypeParamType(TypeParamType type, StringBuilder sb) {
+                sb.append(type.name);
+                String sep = " extends ";
+                if (type.classBound != null
+                        && (options.verbose || !type.classBound.isObject())) {
+                    sb.append(sep);
+                    append(sb, type.classBound);
+                    sep = " & ";
+                }
+                if (type.interfaceBounds != null) {
+                    for (Type bound: type.interfaceBounds) {
+                        sb.append(sep);
+                        append(sb, bound);
+                        sep = " & ";
+                    }
+                }
+                return sb;
+            }
+
+            public StringBuilder visitWildcardType(WildcardType type, StringBuilder sb) {
+                switch (type.kind) {
+                    case UNBOUNDED:
+                        sb.append("?");
+                        break;
+                    case EXTENDS:
+                        sb.append("? extends ");
+                        append(sb, type.boundType);
+                        break;
+                    case SUPER:
+                        sb.append("? super ");
+                        append(sb, type.boundType);
+                        break;
+                    default:
+                        throw new AssertionError();
+                }
+                return sb;
+            }
+
+            private void append(StringBuilder sb, Type t) {
+                t.accept(this, sb);
+            }
+
+            private void append(StringBuilder sb, String prefix, List<? extends Type> list, String suffix) {
+                sb.append(prefix);
+                String sep = "";
+                for (Type t: list) {
+                    sb.append(sep);
+                    append(sb, t);
+                    sep = ", ";
+                }
+                sb.append(suffix);
+            }
+
+            private void appendIfNotEmpty(StringBuilder sb, String prefix, List<? extends Type> list, String suffix) {
+                if (!isEmpty(list))
+                    append(sb, prefix, list, suffix);
+            }
+
+            private boolean isEmpty(List<? extends Type> list) {
+                return (list == null || list.isEmpty());
+            }
+        }
 
     protected void writeFields() {
         for (Field f: classFile.fields) {
@@ -298,7 +426,7 @@
             try {
                 methodType = (Type.MethodType) methodSig.getType(constant_pool);
                 methodExceptions = methodType.throwsTypes;
-                if (methodExceptions != null && methodExceptions.size() == 0)
+                if (methodExceptions != null && methodExceptions.isEmpty())
                     methodExceptions = null;
             } catch (ConstantPoolException e) {
                 // report error?
--- a/langtools/test/com/sun/javadoc/testDeprecatedDocs/TestDeprecatedDocs.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/com/sun/javadoc/testDeprecatedDocs/TestDeprecatedDocs.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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,8 +27,7 @@
  * @summary  <DESC>
  * @author   jamieh
  * @library  ../lib/
- * @build    JavadocTester
- * @build    TestDeprecatedDocs
+ * @build    JavadocTester TestDeprecatedDocs
  * @run main TestDeprecatedDocs
  */
 
@@ -77,7 +76,7 @@
         {TARGET_FILE, "pkg.DeprecatedClassByAnnotation.field"},
 
         {TARGET_FILE2, "<pre>@Deprecated" + NL +
-                 "public class <strong>DeprecatedClassByAnnotation</strong>" + NL +
+                 "public class <span class=\"strong\">DeprecatedClassByAnnotation</span>" + NL +
                  "extends java.lang.Object</pre>"},
 
         {TARGET_FILE2, "<pre>@Deprecated" + NL +
--- a/langtools/test/com/sun/javadoc/testHref/TestHref.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/com/sun/javadoc/testHref/TestHref.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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,8 +27,7 @@
  * @summary  Verify that spaces do not appear in hrefs and anchors.
  * @author   jamieh
  * @library  ../lib/
- * @build    JavadocTester
- * @build    TestHref
+ * @build    JavadocTester TestHref
  * @run main TestHref
  */
 
@@ -81,7 +80,7 @@
 
         //Signature does not link to the page itself.
         {BUG_ID + FS + "pkg" + FS + "C4.html",
-            "public abstract class <strong>C4&lt;E extends C4&lt;E&gt;&gt;</strong>"
+            "public abstract class <span class=\"strong\">C4&lt;E extends C4&lt;E&gt;&gt;</span>"
         },
     };
     private static final String[][] NEGATED_TEST =
--- a/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/TestHtmlDefinitionListTag.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/TestHtmlDefinitionListTag.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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,8 +29,7 @@
  * @summary This test verifies the nesting of definition list tags.
  * @author Bhavesh Patel
  * @library ../lib/
- * @build JavadocTester
- * @build TestHtmlDefinitionListTag
+ * @build JavadocTester TestHtmlDefinitionListTag
  * @run main TestHtmlDefinitionListTag
  */
 
@@ -43,7 +42,8 @@
     // Optional Element should print properly nested definition list tags
     // for default value.
     private static final String[][] TEST_ALL = {
-        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<pre>public class <strong>C1</strong>" + NL +
+        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<pre>public class " +
+                 "<span class=\"strong\">C1</span>" + NL +
                  "extends java.lang.Object" + NL + "implements java.io.Serializable</pre>"},
         {BUG_ID + FS + "pkg1" + FS + "C4.html", "<dl>" + NL +
                  "<dt>Default:</dt>" + NL + "<dd>true</dd>" + NL +
--- a/langtools/test/com/sun/javadoc/testJavascript/TestJavascript.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/com/sun/javadoc/testJavascript/TestJavascript.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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,7 +23,7 @@
 
 /*
  * @test
- * @bug      4665566 4855876
+ * @bug      4665566 4855876 7025314
  * @summary  Verify that the output has the right javascript.
  * @author   jamieh
  * @library  ../lib/
@@ -45,9 +45,9 @@
     //Input for string search tests.
     private static final String[][] TEST = {
         {BUG_ID + FS + "pkg" + FS + "C.html",
-            "<a href=\"../index.html?pkg/C.html\" target=\"_top\">FRAMES</a>"},
+            "<a href=\"../index.html?pkg/C.html\" target=\"_top\">Frames</a>"},
         {BUG_ID + FS + "TestJavascript.html",
-            "<a href=\"index.html?TestJavascript.html\" target=\"_top\">FRAMES</a>"},
+            "<a href=\"index.html?TestJavascript.html\" target=\"_top\">Frames</a>"},
         {BUG_ID + FS + "index.html",
             "<script type=\"text/javascript\">" + NL +
                         "    targetPage = \"\" + window.location.search;" + NL +
--- a/langtools/test/com/sun/javadoc/testLinkOption/TestLinkOption.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/com/sun/javadoc/testLinkOption/TestLinkOption.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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,7 @@
  * right files.
  * @author jamieh
  * @library ../lib/
- * @build JavadocTester
- * @build TestLinkOption
+ * @build JavadocTester TestLinkOption
  * @run main TestLinkOption
  */
 
@@ -62,7 +61,7 @@
                                 "Object</a>&nbsp;p3)"
         },
         {BUG_ID + "-1" + FS + "java" + FS + "lang" + FS + "StringBuilderChild.html",
-                "<pre>public abstract class <strong>StringBuilderChild</strong>" + NL +
+                "<pre>public abstract class <span class=\"strong\">StringBuilderChild</span>" + NL +
                 "extends <a href=\"http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html?is-external=true\" " +
                 "title=\"class or interface in java.lang\">Object</a></pre>"
         },
--- a/langtools/test/com/sun/javadoc/testNavagation/TestNavagation.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/com/sun/javadoc/testNavagation/TestNavagation.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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,7 +23,7 @@
 
 /*
  * @test
- * @bug      4131628 4664607
+ * @bug      4131628 4664607 7025314
  * @summary  Make sure the Next/Prev Class links iterate through all types.
  *           Make sure the navagation is 2 columns, not 3.
  * @author   jamieh
@@ -45,20 +45,20 @@
 
     //Input for string search tests.
     private static final String[][] TEST = {
-        {BUG_ID + FS + "pkg" + FS + "A.html", "<li>PREV CLASS</li>"},
+        {BUG_ID + FS + "pkg" + FS + "A.html", "<li>Prev Class</li>"},
         {BUG_ID + FS + "pkg" + FS + "A.html",
-            "<a href=\"../pkg/C.html\" title=\"class in pkg\"><span class=\"strong\">NEXT CLASS</span></a>"},
+            "<a href=\"../pkg/C.html\" title=\"class in pkg\"><span class=\"strong\">Next Class</span></a>"},
         {BUG_ID + FS + "pkg" + FS + "C.html",
-            "<a href=\"../pkg/A.html\" title=\"annotation in pkg\"><span class=\"strong\">PREV CLASS</span></a>"},
+            "<a href=\"../pkg/A.html\" title=\"annotation in pkg\"><span class=\"strong\">Prev Class</span></a>"},
         {BUG_ID + FS + "pkg" + FS + "C.html",
-            "<a href=\"../pkg/E.html\" title=\"enum in pkg\"><span class=\"strong\">NEXT CLASS</span></a>"},
+            "<a href=\"../pkg/E.html\" title=\"enum in pkg\"><span class=\"strong\">Next Class</span></a>"},
         {BUG_ID + FS + "pkg" + FS + "E.html",
-            "<a href=\"../pkg/C.html\" title=\"class in pkg\"><span class=\"strong\">PREV CLASS</span></a>"},
+            "<a href=\"../pkg/C.html\" title=\"class in pkg\"><span class=\"strong\">Prev Class</span></a>"},
         {BUG_ID + FS + "pkg" + FS + "E.html",
-            "<a href=\"../pkg/I.html\" title=\"interface in pkg\"><span class=\"strong\">NEXT CLASS</span></a>"},
+            "<a href=\"../pkg/I.html\" title=\"interface in pkg\"><span class=\"strong\">Next Class</span></a>"},
         {BUG_ID + FS + "pkg" + FS + "I.html",
-            "<a href=\"../pkg/E.html\" title=\"enum in pkg\"><span class=\"strong\">PREV CLASS</span></a>"},
-        {BUG_ID + FS + "pkg" + FS + "I.html", "<li>NEXT CLASS</li>"},
+            "<a href=\"../pkg/E.html\" title=\"enum in pkg\"><span class=\"strong\">Prev Class</span></a>"},
+        {BUG_ID + FS + "pkg" + FS + "I.html", "<li>Next Class</li>"},
         // Test for 4664607
         {BUG_ID + FS + "pkg" + FS + "I.html",
             "<a href=\"#skip-navbar_top\" title=\"Skip navigation links\"></a><a name=\"navbar_top_firstrow\">" + NL +
--- a/langtools/test/com/sun/javadoc/testNewLanguageFeatures/TestNewLanguageFeatures.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/com/sun/javadoc/testNewLanguageFeatures/TestNewLanguageFeatures.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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,14 +23,13 @@
 
 /*
  * @test
- * @bug      4789689 4905985 4927164 4827184 4993906 5004549
+ * @bug      4789689 4905985 4927164 4827184 4993906 5004549 7025314 7010344
  * @summary  Run Javadoc on a set of source files that demonstrate new
  *           language features.  Check the output to ensure that the new
  *           language features are properly documented.
  * @author   jamieh
  * @library  ../lib/
- * @build    JavadocTester
- * @build    TestNewLanguageFeatures
+ * @build    JavadocTester TestNewLanguageFeatures
  * @run main TestNewLanguageFeatures
  */
 
@@ -53,9 +52,10 @@
             //Make sure enum header is correct.
             {BUG_ID + FS + "pkg" + FS + "Coin.html", "Enum Coin</h2>"},
             //Make sure enum signature is correct.
-            {BUG_ID + FS + "pkg" + FS + "Coin.html", "<pre>public enum <strong>Coin</strong>" + NL +
-                "extends java.lang.Enum&lt;<a href=\"../pkg/Coin.html\" " +
-                "title=\"enum in pkg\">Coin</a>&gt;</pre>"
+            {BUG_ID + FS + "pkg" + FS + "Coin.html", "<pre>public enum " +
+                     "<span class=\"strong\">Coin</span>" + NL +
+                     "extends java.lang.Enum&lt;<a href=\"../pkg/Coin.html\" " +
+                     "title=\"enum in pkg\">Coin</a>&gt;</pre>"
             },
             //Check for enum constant section
             {BUG_ID + FS + "pkg" + FS + "Coin.html", "<caption><span>Enum Constants" +
@@ -118,8 +118,8 @@
 
             //Signature of subclass that has type parameters.
             {BUG_ID + FS + "pkg" + FS + "TypeParameterSubClass.html",
-                "<pre>public class <strong>TypeParameterSubClass&lt;T extends " +
-                "java.lang.String&gt;</strong>" + NL + "extends " +
+                "<pre>public class <span class=\"strong\">TypeParameterSubClass&lt;T extends " +
+                "java.lang.String&gt;</span>" + NL + "extends " +
                 "<a href=\"../pkg/TypeParameterSuperClass.html\" title=\"class in pkg\">" +
                 "TypeParameterSuperClass</a>&lt;T&gt;</pre>"},
 
@@ -155,20 +155,20 @@
             //=================================
             //Make sure the summary links are correct.
             {BUG_ID + FS + "pkg" + FS + "AnnotationType.html",
-                "<li>SUMMARY:&nbsp;</li>" + NL +
+                "<li>Summary:&nbsp;</li>" + NL +
                 "<li><a href=\"#annotation_type_required_element_summary\">" +
-                "REQUIRED</a>&nbsp;|&nbsp;</li>" + NL + "<li>" +
-                "<a href=\"#annotation_type_optional_element_summary\">OPTIONAL</a></li>"},
+                "Required</a>&nbsp;|&nbsp;</li>" + NL + "<li>" +
+                "<a href=\"#annotation_type_optional_element_summary\">Optional</a></li>"},
             //Make sure the detail links are correct.
             {BUG_ID + FS + "pkg" + FS + "AnnotationType.html",
-                "<li>DETAIL:&nbsp;</li>" + NL +
-                "<li><a href=\"#annotation_type_element_detail\">ELEMENT</a></li>"},
+                "<li>Detail:&nbsp;</li>" + NL +
+                "<li><a href=\"#annotation_type_element_detail\">Element</a></li>"},
             //Make sure the heading is correct.
             {BUG_ID + FS + "pkg" + FS + "AnnotationType.html",
                 "Annotation Type AnnotationType</h2>"},
             //Make sure the signature is correct.
             {BUG_ID + FS + "pkg" + FS + "AnnotationType.html",
-                "public @interface <strong>AnnotationType</strong>"},
+                "public @interface <span class=\"strong\">AnnotationType</span>"},
             //Make sure member summary headings are correct.
             {BUG_ID + FS + "pkg" + FS + "AnnotationType.html",
                 "<h3>Required Element Summary</h3>"},
@@ -198,8 +198,8 @@
                 "<a href=\"../pkg/AnnotationType.html#optional()\">optional</a>" +
                 "=\"Class Annotation\"," + NL +
                 "                <a href=\"../pkg/AnnotationType.html#required()\">" +
-                "required</a>=1994)" + NL + "public class <strong>" +
-                "AnnotationTypeUsage</strong>" + NL + "extends java.lang.Object</pre>"},
+                "required</a>=1994)" + NL + "public class <span class=\"strong\">" +
+                "AnnotationTypeUsage</span>" + NL + "extends java.lang.Object</pre>"},
 
             //FIELD
             {BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html",
@@ -299,7 +299,7 @@
             {BUG_ID + FS + "pkg1" + FS + "B.html",
                 "<pre><a href=\"../pkg1/A.html\" title=\"annotation in pkg1\">@A</a>"},
             {BUG_ID + FS + "pkg1" + FS + "B.html",
-                "public interface <strong>B</strong></pre>"},
+                "public interface <span class=\"strong\">B</span></pre>"},
 
 
             //==============================================================
@@ -320,9 +320,11 @@
                      "Foo</a></span><span class=\"tabEnd\">&nbsp;</span></caption>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo.html",
-                     "<td class=\"colLast\"><code><strong><a href=\"../../pkg2/" +
-                     "ClassUseTest1.html\" title=\"class in pkg2\">ClassUseTest1" +
-                     "&lt;T extends Foo & Foo2&gt;</a></strong></code>&nbsp;</td>"
+                     "<td class=\"colLast\"><code><strong><a href=\"../../pkg2/ClassUseTest1.html\" " +
+                     "title=\"class in pkg2\">ClassUseTest1</a>&lt;T extends " +
+                     "<a href=\"../../pkg2/Foo.html\" title=\"class in pkg2\">Foo" +
+                     "</a> & <a href=\"../../pkg2/Foo2.html\" title=\"interface in pkg2\">" +
+                     "Foo2</a>&gt;</strong></code>&nbsp;</td>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo.html",
                      "<caption><span>Methods in <a href=\"../../pkg2/" +
@@ -370,10 +372,11 @@
                     "</span></caption>"
            },
            {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo2.html",
-                    "<td class=\"colLast\"><code><strong><a href=\"../../pkg2/" +
-                    "ClassUseTest1.html\" title=\"class in pkg2\">" +
-                    "ClassUseTest1&lt;T extends Foo & Foo2&gt;</a></strong>" +
-                    "</code>&nbsp;</td>"
+                    "<td class=\"colLast\"><code><strong><a href=\"../../pkg2/ClassUseTest1.html\" " +
+                     "title=\"class in pkg2\">ClassUseTest1</a>&lt;T extends " +
+                     "<a href=\"../../pkg2/Foo.html\" title=\"class in pkg2\">Foo" +
+                     "</a> & <a href=\"../../pkg2/Foo2.html\" title=\"interface in pkg2\">" +
+                     "Foo2</a>&gt;</strong></code>&nbsp;</td>"
            },
            {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo2.html",
                     "<caption><span>Methods in <a href=\"../../pkg2/" +
@@ -398,10 +401,11 @@
                      "&nbsp;</span></caption>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html",
-                     "<td class=\"colLast\"><code><strong><a href=\"../../pkg2/" +
-                     "ClassUseTest2.html\" title=\"class in pkg2\">ClassUseTest2&lt;T " +
-                     "extends ParamTest&lt;<a href=\"../../pkg2/Foo3.html\" title=\"class " +
-                     "in pkg2\">Foo3</a>&gt;&gt;</a></strong></code>&nbsp;</td>"
+                     "<td class=\"colLast\"><code><strong><a href=\"../../pkg2/ClassUseTest2.html\" " +
+                     "title=\"class in pkg2\">ClassUseTest2</a>&lt;T extends " +
+                     "<a href=\"../../pkg2/ParamTest.html\" title=\"class in pkg2\">" +
+                     "ParamTest</a>&lt;<a href=\"../../pkg2/Foo3.html\" title=\"class in pkg2\">" +
+                     "Foo3</a>&gt;&gt;</strong></code>&nbsp;</td>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html",
                      "<caption><span>Methods in <a href=\"../../pkg2/" +
@@ -452,11 +456,11 @@
                      "Foo3</a></span><span class=\"tabEnd\">&nbsp;</span></caption>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo3.html",
-                     "<td class=\"colLast\"><code><strong><a href=\"../../" +
-                     "pkg2/ClassUseTest2.html\" title=\"class in pkg2\">" +
-                     "ClassUseTest2&lt;T extends ParamTest&lt;<a href=\"../../" +
-                     "pkg2/Foo3.html\" title=\"class in pkg2\">Foo3</a>&gt;&gt;" +
-                     "</a></strong></code>&nbsp;</td>"
+                     "<td class=\"colLast\"><code><strong><a href=\"../../pkg2/ClassUseTest2.html\" " +
+                     "title=\"class in pkg2\">ClassUseTest2</a>&lt;T extends " +
+                     "<a href=\"../../pkg2/ParamTest.html\" title=\"class in pkg2\">" +
+                     "ParamTest</a>&lt;<a href=\"../../pkg2/Foo3.html\" title=\"class in pkg2\">" +
+                     "Foo3</a>&gt;&gt;</strong></code>&nbsp;</td>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo3.html",
                      "<caption><span>Methods in <a href=\"../../pkg2/" +
@@ -496,10 +500,12 @@
                      "&nbsp;</span></caption>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest2.html",
-                     "<td class=\"colLast\"><code><strong><a href=\"../../pkg2/" +
-                     "ClassUseTest3.html\" title=\"class in pkg2\">" +
-                     "ClassUseTest3&lt;T extends ParamTest2&lt;java.util.List" +
-                     "&lt;? extends Foo4&gt;&gt;&gt;</a></strong></code>&nbsp;</td>"
+                     "<td class=\"colLast\"><code><strong><a href=\"../../pkg2/ClassUseTest3.html\" " +
+                     "title=\"class in pkg2\">ClassUseTest3</a>&lt;T extends " +
+                     "<a href=\"../../pkg2/ParamTest2.html\" title=\"class in pkg2\">" +
+                     "ParamTest2</a>&lt;java.util.List&lt;? extends " +
+                     "<a href=\"../../pkg2/Foo4.html\" title=\"class in pkg2\">" +
+                     "Foo4</a>&gt;&gt;&gt;</strong></code>&nbsp;</td>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest2.html",
                      "<caption><span>Methods in <a href=\"../../pkg2/" +
@@ -532,10 +538,12 @@
                      "</span></caption>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo4.html",
-                     "<td class=\"colLast\"><code><strong><a href=\"../../" +
-                     "pkg2/ClassUseTest3.html\" title=\"class in pkg2\">" +
-                     "ClassUseTest3&lt;T extends ParamTest2&lt;java.util.List" +
-                     "&lt;? extends Foo4&gt;&gt;&gt;</a></strong></code>&nbsp;</td>"
+                     "<td class=\"colLast\"><code><strong><a href=\"../../pkg2/ClassUseTest3.html\" " +
+                     "title=\"class in pkg2\">ClassUseTest3</a>&lt;T extends " +
+                     "<a href=\"../../pkg2/ParamTest2.html\" title=\"class in pkg2\">" +
+                     "ParamTest2</a>&lt;java.util.List&lt;? extends " +
+                     "<a href=\"../../pkg2/Foo4.html\" title=\"class in pkg2\">" +
+                     "Foo4</a>&gt;&gt;&gt;</strong></code>&nbsp;</td>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo4.html",
                      "<caption><span>Methods in <a href=\"../../pkg2/" +
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/com/sun/javadoc/testNonFrameWarning/TestNonFrameWarning.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 7001086
+ * @summary Test Non-frame warning.
+ * @author Bhavesh Patel
+ * @library ../lib/
+ * @build JavadocTester TestNonFrameWarning
+ * @run main TestNonFrameWarning
+ */
+
+public class TestNonFrameWarning extends JavadocTester {
+
+    private static final String BUG_ID = "7001086";
+    private static final String[][] TEST = {
+        {BUG_ID + FS + "index.html",
+            "<p>This document is designed to be viewed using the frames feature. " +
+            "If you see this message, you are using a non-frame-capable web client. " +
+            "Link to <a href=\"pkg/package-summary.html\">Non-frame version</a>.</p>"
+        }
+    };
+    private static final String[] ARGS = new String[]{
+        "-d", BUG_ID, "-sourcepath", SRC_DIR, "pkg"
+    };
+
+    /**
+     * The entry point of the test.
+     * @param args the array of command line arguments.
+     */
+    public static void main(String[] args) {
+        TestNonFrameWarning tester = new TestNonFrameWarning();
+        run(tester, ARGS, TEST, NO_TEST);
+        tester.printSummary();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getBugId() {
+        return BUG_ID;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getBugName() {
+        return getClass().getName();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/com/sun/javadoc/testNonFrameWarning/pkg/C.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package pkg;
+
+/**
+ * Source file for C
+ */
+public class C {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/com/sun/javadoc/testSubTitle/TestSubTitle.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 7010342
+ * @summary Test for correct sub title generation.
+ * @author Bhavesh Patel
+ * @library ../lib/
+ * @build JavadocTester
+ * @build TestSubTitle
+ * @run main TestSubTitle
+ */
+
+public class TestSubTitle extends JavadocTester {
+
+    private static final String BUG_ID = "7010342";
+    private static final String[][] TEST = {
+        {BUG_ID + FS + "pkg" + FS + "package-summary.html",
+            "<div class=\"subTitle\">" + NL + "<div class=\"block\">This is the " +
+            "description of package pkg.</div>" + NL + "</div>"
+        },
+        {BUG_ID + FS + "pkg" + FS + "C.html",
+            "<div class=\"subTitle\">pkg</div>"
+        }
+    };
+    private static final String[][] NEG_TEST = {
+        {BUG_ID + FS + "pkg" + FS + "package-summary.html",
+            "<p class=\"subTitle\">" + NL + "<div class=\"block\">This is the " +
+            "description of package pkg.</div>" + NL + "</p>"
+        },
+        {BUG_ID + FS + "pkg" + FS + "C.html",
+            "<p class=\"subTitle\">pkg</p>"
+        }
+    };
+    private static final String[] ARGS = new String[]{
+        "-d", BUG_ID, "-sourcepath", SRC_DIR, "pkg"
+    };
+
+    /**
+     * The entry point of the test.
+     * @param args the array of command line arguments.
+     */
+    public static void main(String[] args) {
+        TestSubTitle tester = new TestSubTitle();
+        run(tester, ARGS, TEST, NEG_TEST);
+        tester.printSummary();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getBugId() {
+        return BUG_ID;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getBugName() {
+        return getClass().getName();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/com/sun/javadoc/testSubTitle/pkg/C.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package pkg;
+
+/**
+ * Source file for C
+ */
+public class C {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/com/sun/javadoc/testSubTitle/pkg/package.html	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,8 @@
+<html lang="en">
+<head>
+    <title>Package Summary</title>
+</head>
+<body>
+This is the description of package pkg.
+</body>
+</html>
--- a/langtools/test/com/sun/javadoc/testTypeParams/TestTypeParameters.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/com/sun/javadoc/testTypeParams/TestTypeParameters.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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,55 +23,77 @@
 
 /*
  * @test
- * @bug      4927167 4974929
+ * @bug      4927167 4974929 7010344
  * @summary  When the type parameters are more than 10 characters in length,
  *           make sure there is a line break between type params and return type
- *           in member summary.
+ *           in member summary. Also, test for type parameter links in package-summary and
+ *           class-use pages. The class/annotation pages should check for type
+ *           parameter links in the class/annotation signature section when -linksource is set.
  * @author   jamieh
  * @library  ../lib/
- * @build    JavadocTester
- * @build    TestTypeParameters
+ * @build    JavadocTester TestTypeParameters
  * @run main TestTypeParameters
  */
 
 public class TestTypeParameters extends JavadocTester {
 
     //Test information.
-    private static final String BUG_ID = "4927167-4974929";
+    private static final String BUG_ID = "4927167-4974929-7010344";
 
     //Javadoc arguments.
-    private static final String[] ARGS = new String[] {
-        "-d", BUG_ID, "-source", "1.5", "-sourcepath", SRC_DIR,
-            "pkg"
+    private static final String[] ARGS1 = new String[]{
+        "-d", BUG_ID, "-use", "-source", "1.5", "-sourcepath", SRC_DIR,
+        "pkg"
+    };
+    private static final String[] ARGS2 = new String[]{
+        "-d", BUG_ID, "-linksource", "-source", "1.5", "-sourcepath", SRC_DIR,
+        "pkg"
     };
 
     //Input for string search tests.
-    private static final String[][] TEST =
-    {
+    private static final String[][] TEST1 = {
         {BUG_ID + FS + "pkg" + FS + "C.html",
             "<td class=\"colFirst\"><code>&lt;W extends java.lang.String,V extends " +
-            "java.util.List&gt;&nbsp;<br>java.lang.Object</code></td>"},
+            "java.util.List&gt;&nbsp;<br>java.lang.Object</code></td>"
+        },
         {BUG_ID + FS + "pkg" + FS + "C.html",
-            "<code>&lt;T&gt;&nbsp;java.lang.Object</code>"},
+            "<code>&lt;T&gt;&nbsp;java.lang.Object</code>"
+        },
         {BUG_ID + FS + "pkg" + FS + "package-summary.html",
-            "C&lt;E extends Parent&gt;"},
+            "C</a>&lt;E extends <a href=\"../pkg/Parent.html\" " +
+            "title=\"class in pkg\">Parent</a>&gt;"
+        },
+        {BUG_ID + FS + "pkg" + FS + "class-use" + FS + "Foo4.html",
+            "<a href=\"../../pkg/ClassUseTest3.html\" title=\"class in pkg\">" +
+            "ClassUseTest3</a>&lt;T extends <a href=\"../../pkg/ParamTest2.html\" " +
+            "title=\"class in pkg\">ParamTest2</a>&lt;java.util.List&lt;? extends " +
+            "<a href=\"../../pkg/Foo4.html\" title=\"class in pkg\">Foo4</a>&gt;&gt;&gt;"
+        },
         //Nested type parameters
         {BUG_ID + FS + "pkg" + FS + "C.html",
             "<a name=\"formatDetails(java.util.Collection, java.util.Collection)\">" + NL +
             "<!--   -->" + NL +
-            "</a>"},
-
+            "</a>"
+        },
+    };
+    private static final String[][] TEST2 = {
+        {BUG_ID + FS + "pkg" + FS + "ClassUseTest3.html",
+            "public class <a href=\"../src-html/pkg/ClassUseTest3.html#line.28\">" +
+            "ClassUseTest3</a>&lt;T extends <a href=\"../pkg/ParamTest2.html\" " +
+            "title=\"class in pkg\">ParamTest2</a>&lt;java.util.List&lt;? extends " +
+            "<a href=\"../pkg/Foo4.html\" title=\"class in pkg\">Foo4</a>&gt;&gt;&gt;"
+        }
     };
     private static final String[][] NEGATED_TEST = NO_TEST;
 
-
     /**
      * The entry point of the test.
      * @param args the array of command line arguments.
      */
     public static void main(String[] args) {
         TestTypeParameters tester = new TestTypeParameters();
-        run(tester, ARGS, TEST, NEGATED_TEST);
+        run(tester, ARGS1, TEST1, NEGATED_TEST);
+        run(tester, ARGS2, TEST2, NEGATED_TEST);
         tester.printSummary();
     }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/com/sun/javadoc/testTypeParams/pkg/ClassUseTest3.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package pkg;
+
+import java.util.*;
+
+public class ClassUseTest3 <T extends ParamTest2<List<? extends Foo4>>> {
+
+    public ClassUseTest3(Set<Foo4> p) {}
+
+    public <T extends ParamTest2<List<? extends Foo4>>> ParamTest2<List<? extends Foo4>> method(T t) {
+        return null;
+    }
+
+    public void method(Set<Foo4> p) {}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/com/sun/javadoc/testTypeParams/pkg/Foo4.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package pkg;
+
+public class Foo4 {}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/com/sun/javadoc/testTypeParams/pkg/ParamTest2.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package pkg;
+
+public class ParamTest2<E> {
+}
--- a/langtools/test/tools/javac/4917091/Test255.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javac/4917091/Test255.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/langtools/test/tools/javac/4917091/Test256a.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javac/4917091/Test256a.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/langtools/test/tools/javac/4917091/Test256b.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javac/4917091/Test256b.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/langtools/test/tools/javac/ClassPathTest/ClassPathTest.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javac/ClassPathTest/ClassPathTest.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/langtools/test/tools/javac/ExtDirs/ExtDirs.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javac/ExtDirs/ExtDirs.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. 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
--- a/langtools/test/tools/javac/Paths/Help.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javac/Paths/Help.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2011, Oracle and/or its affiliates. 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/TryWithResources/InterruptedExceptionTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,234 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 7027157
+ * @summary Project Coin: javac warnings for AutoCloseable.close throwing InterruptedException
+ */
+
+import com.sun.source.util.JavacTask;
+import java.net.URI;
+import java.util.Arrays;
+import javax.tools.Diagnostic;
+import javax.tools.JavaCompiler;
+import javax.tools.JavaFileObject;
+import javax.tools.SimpleJavaFileObject;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.ToolProvider;
+
+public class InterruptedExceptionTest {
+
+    enum XlintOption {
+        NONE("none"),
+        TRY("try");
+
+        String opt;
+
+        XlintOption(String opt) {
+            this.opt = opt;
+        }
+
+        String getXlintOption() {
+            return "-Xlint:" + opt;
+        }
+    }
+
+    enum SuppressLevel {
+        NONE,
+        SUPPRESS;
+
+        String getSuppressAnno() {
+            return this == SUPPRESS ?
+                "@SuppressWarnings(\"try\")" :
+                "";
+        }
+    }
+
+    enum ClassKind {
+        ABSTRACT_CLASS("abstract class", "implements", false),
+        CLASS("class", "implements", true),
+        INTERFACE("interface", "extends", false);
+
+        String kindName;
+        String extendsClause;
+        boolean hasBody;
+
+        private ClassKind(String kindName, String extendsClause, boolean hasBody) {
+            this.kindName = kindName;
+            this.extendsClause = extendsClause;
+            this.hasBody = hasBody;
+        }
+
+        String getBody() {
+            return hasBody ? "{}" : ";";
+        }
+    }
+
+    enum ExceptionKind {
+        NONE("", false),
+        EXCEPTION("Exception", true),
+        INTERRUPTED_EXCEPTION("InterruptedException", true),
+        ILLEGAL_ARGUMENT_EXCEPTION("IllegalArgumentException", false),
+        X("X", false);
+
+        String exName;
+        boolean shouldWarn;
+
+        private ExceptionKind(String exName, boolean shouldWarn) {
+            this.exName = exName;
+            this.shouldWarn = shouldWarn;
+        }
+
+        String getThrowsClause() {
+            return this == NONE ? "" : "throws " + exName;
+        }
+
+        String getTypeArguments(ExceptionKind decl) {
+            return (decl != X || this == NONE) ? "" : "<" + exName + ">";
+        }
+
+        String getTypeParameter() {
+            return this == X ? "<X extends Exception>" : "";
+        }
+    }
+
+    public static void main(String... args) throws Exception {
+
+        //create default shared JavaCompiler - reused across multiple compilations
+        JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
+        StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
+
+        for (XlintOption xlint : XlintOption.values()) {
+            for (SuppressLevel suppress_decl : SuppressLevel.values()) {
+                for (SuppressLevel suppress_use : SuppressLevel.values()) {
+                    for (ClassKind ck : ClassKind.values()) {
+                        for (ExceptionKind ek_decl : ExceptionKind.values()) {
+                            for (ExceptionKind ek_use : ExceptionKind.values()) {
+                                new InterruptedExceptionTest(xlint, suppress_decl,
+                                        suppress_use, ck, ek_decl, ek_use).run(comp, fm);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    XlintOption xlint;
+    SuppressLevel suppress_decl;
+    SuppressLevel suppress_use;
+    ClassKind ck;
+    ExceptionKind ek_decl;
+    ExceptionKind ek_use;
+    JavaSource source;
+    DiagnosticChecker diagChecker;
+
+    InterruptedExceptionTest(XlintOption xlint, SuppressLevel suppress_decl, SuppressLevel suppress_use,
+            ClassKind ck, ExceptionKind ek_decl, ExceptionKind ek_use) {
+        this.xlint = xlint;
+        this.suppress_decl = suppress_decl;
+        this.suppress_use = suppress_use;
+        this.ck = ck;
+        this.ek_decl = ek_decl;
+        this.ek_use = ek_use;
+        this.source = new JavaSource();
+        this.diagChecker = new DiagnosticChecker();
+    }
+
+    class JavaSource extends SimpleJavaFileObject {
+
+        String template = "#S1 #CK Resource#G #EC AutoCloseable {\n" +
+                              "public void close() #TK #BK\n" +
+                          "}\n" +
+                          "class Test {\n" +
+                              "#S2 <X> void test() {\n" +
+                                 "try (Resource#PK r = null) { }\n" +
+                              "}\n" +
+                          "}\n";
+
+        String source;
+
+        public JavaSource() {
+            super(URI.create("myfo:/Test.java"), JavaFileObject.Kind.SOURCE);
+            source = template.replace("#S1", suppress_decl.getSuppressAnno())
+                    .replace("#S2", suppress_use.getSuppressAnno())
+                    .replace("#CK", ck.kindName)
+                    .replace("#EC", ck.extendsClause)
+                    .replace("#G", ek_decl.getTypeParameter())
+                    .replace("#TK", ek_decl.getThrowsClause())
+                    .replace("#BK", ck.getBody())
+                    .replace("#PK", ek_use.getTypeArguments(ek_decl));
+        }
+
+        @Override
+        public CharSequence getCharContent(boolean ignoreEncodingErrors) {
+            return source;
+        }
+    }
+
+    void run(JavaCompiler tool, StandardJavaFileManager fm) throws Exception {
+        JavacTask ct = (JavacTask)tool.getTask(null, fm, diagChecker,
+                Arrays.asList(xlint.getXlintOption()), null, Arrays.asList(source));
+        ct.analyze();
+        check();
+    }
+
+    void check() {
+
+        boolean shouldWarnDecl = ek_decl.shouldWarn &&
+                xlint == XlintOption.TRY &&
+                suppress_decl != SuppressLevel.SUPPRESS;
+
+        boolean shouldWarnUse = (ek_decl.shouldWarn ||
+                ((ek_use.shouldWarn || ek_use == ExceptionKind.NONE) && ek_decl == ExceptionKind.X)) &&
+                xlint == XlintOption.TRY &&
+                suppress_use != SuppressLevel.SUPPRESS;
+
+        int foundWarnings = 0;
+
+        if (shouldWarnDecl) foundWarnings++;
+        if (shouldWarnUse) foundWarnings++;
+
+        if (foundWarnings != diagChecker.tryWarnFound) {
+            throw new Error("invalid diagnostics for source:\n" +
+                source.getCharContent(true) +
+                "\nOptions: " + xlint.getXlintOption() +
+                "\nFound warnings: " + diagChecker.tryWarnFound +
+                "\nExpected decl warning: " + shouldWarnDecl +
+                "\nExpected use warning: " + shouldWarnUse);
+        }
+    }
+
+    static class DiagnosticChecker implements javax.tools.DiagnosticListener<JavaFileObject> {
+
+        int tryWarnFound;
+
+        public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
+            if (diagnostic.getKind() == Diagnostic.Kind.WARNING &&
+                    diagnostic.getCode().contains("try.resource.throws.interrupted.exc")) {
+                tryWarnFound++;
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/TryWithResources/T7032633.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 7032633
+ * @summary javac -Xlint:all warns about flush() within try on an auto-closeable resource
+ * @compile -Xlint:try -Werror T7032633.java
+ */
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+public class T7032633 {
+    void test() throws IOException {
+        try (OutputStream out = System.out) {
+            out.flush();
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/api/T6437138.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug     6437138
+ * @summary JSR 199: Compiler doesn't diagnose crash in user code
+ */
+
+import java.net.URI;
+import java.util.Arrays;
+import javax.tools.*;
+import static javax.tools.JavaFileObject.Kind.*;
+
+
+public class T6437138 {
+    static class JFO extends SimpleJavaFileObject {
+        public JFO(URI uri, JavaFileObject.Kind kind) {
+            super(uri, kind);
+        }
+        // getCharContent not impl, will throw UnsupportedOperationException
+    }
+
+    public static void main(String... arg) throws Exception {
+        try {
+            JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
+            JavaFileObject jfo = new JFO(new URI("JFOTest04.java"),SOURCE);
+            JavaCompiler.CompilationTask ct = javac.getTask(null,null,null,null,
+                        null, Arrays.asList(jfo));
+            ct.call();
+            throw new Exception("no exception thrown by JavaCompiler.CompilationTask");
+        } catch (RuntimeException e) {
+            if (e.getCause() instanceof UnsupportedOperationException) {
+                System.err.println("RuntimeException(UnsupportedOperationException) caught as expected");
+                return;
+            }
+            throw new Exception("unexpected exception caught", e);
+        }
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/api/TestClientCodeWrapper.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,604 @@
+/*
+ * Copyright (c) 2011 Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 6437138 6482554
+ * @summary JSR 199: Compiler doesn't diagnose crash in user code
+ * @library ../lib
+ * @build JavacTestingAbstractProcessor TestClientCodeWrapper
+ * @run main TestClientCodeWrapper
+ */
+
+import java.io.*;
+import java.lang.reflect.Method;
+import java.net.URI;
+import java.util.*;
+import javax.annotation.processing.*;
+import javax.lang.model.*;
+import javax.lang.model.element.*;
+import javax.tools.*;
+import com.sun.source.util.*;
+import com.sun.tools.javac.api.*;
+import javax.tools.JavaFileObject.Kind;
+
+public class TestClientCodeWrapper extends JavacTestingAbstractProcessor {
+    public static void main(String... args) throws Exception {
+        new TestClientCodeWrapper().run();
+    }
+
+    /**
+     * Run a series of compilations, each with a different user-provided object
+     * configured to throw an exception when a specific method is invoked.
+     * Then, verify the exception is thrown as expected.
+     *
+     * Some methods are not invoked from the compiler, and are excluded from the test.
+     */
+    void run() throws Exception {
+        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
+        defaultFileManager = compiler.getStandardFileManager(null, null, null);
+
+        for (Method m: getMethodsExcept(JavaFileManager.class, "close", "getJavaFileForInput")) {
+            test(m);
+        }
+
+        for (Method m: getMethodsExcept(FileObject.class, "delete")) {
+            test(m);
+        }
+
+        for (Method m: getMethods(JavaFileObject.class)) {
+            test(m);
+        }
+
+        for (Method m: getMethodsExcept(Processor.class, "getCompletions")) {
+            test(m);
+        }
+
+        for (Method m: DiagnosticListener.class.getDeclaredMethods()) {
+            test(m);
+        }
+
+        for (Method m: TaskListener.class.getDeclaredMethods()) {
+            test(m);
+        }
+
+        if (errors > 0)
+            throw new Exception(errors + " errors occurred");
+    }
+
+    /** Get a sorted set of the methods declared on a class. */
+    Set<Method> getMethods(Class<?> clazz) {
+        return getMethodsExcept(clazz, new String[0]);
+    }
+
+    /** Get a sorted set of the methods declared on a class, excluding
+     *  specified methods by name. */
+    Set<Method> getMethodsExcept(Class<?> clazz, String... exclude) {
+        Set<Method> methods = new TreeSet<Method>(new Comparator<Method>() {
+            public int compare(Method m1, Method m2) {
+                return m1.toString().compareTo(m2.toString());
+            }
+        });
+        Set<String> e = new HashSet<String>(Arrays.asList(exclude));
+        for (Method m: clazz.getDeclaredMethods()) {
+            if (!e.contains(m.getName()))
+                methods.add(m);
+        }
+        return methods;
+    }
+
+    /**
+     * Test a method in a user supplied component, to verify javac's handling
+     * of any exceptions thrown by that method.
+     */
+    void test(Method m) throws Exception {
+        testNum++;
+
+        File extDirs = new File("empty-extdirs");
+        extDirs.mkdirs();
+
+        File testClasses = new File("test" + testNum);
+        testClasses.mkdirs();
+        defaultFileManager.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(testClasses));
+
+        System.err.println("test " + testNum + ": "
+                + m.getDeclaringClass().getSimpleName() + "." + m.getName());
+
+        StringWriter sw = new StringWriter();
+        PrintWriter pw = new PrintWriter(sw);
+
+        List<String> javacOptions = Arrays.asList(
+                "-extdirs", extDirs.getPath(), // for use by filemanager handleOption
+                "-processor", TestClientCodeWrapper.class.getName()
+                );
+
+        List<String> classes = Collections.emptyList();
+
+        JavacTool tool = JavacTool.create();
+        try {
+            JavacTask task = tool.getTask(pw,
+                    getFileManager(m, defaultFileManager),
+                    getDiagnosticListener(m, pw),
+                    javacOptions,
+                    classes,
+                    getCompilationUnits(m));
+
+            if (isDeclaredIn(m, Processor.class))
+                task.setProcessors(getProcessors(m));
+
+            if (isDeclaredIn(m, TaskListener.class))
+                task.setTaskListener(getTaskListener(m, pw));
+
+            boolean ok = task.call();
+            error("compilation " + (ok ? "succeeded" : "failed") + " unexpectedly");
+        } catch (RuntimeException e) {
+            System.err.println("caught " + e);
+            if (e.getClass() == RuntimeException.class) {
+                Throwable cause = e.getCause();
+                if (cause instanceof UserError) {
+                    String expect = m.getName();
+                    String found = cause.getMessage();
+                    checkEqual("exception messaqe", expect, found);
+                } else {
+                    cause.printStackTrace(System.err);
+                    error("Unexpected exception: " + cause);
+                }
+            } else {
+                e.printStackTrace(System.err);
+                error("Unexpected exception: " + e);
+            }
+        }
+
+        pw.close();
+        String out = sw.toString();
+        System.err.println(out);
+    }
+
+    /** Get a file manager to use for the test compilation. */
+    JavaFileManager getFileManager(Method m, JavaFileManager defaultFileManager) {
+        return isDeclaredIn(m, JavaFileManager.class, FileObject.class, JavaFileObject.class)
+                ? new UserFileManager(m, defaultFileManager)
+                : defaultFileManager;
+    }
+
+    /** Get a diagnostic listener to use for the test compilation. */
+    DiagnosticListener<JavaFileObject> getDiagnosticListener(Method m, PrintWriter out) {
+        return isDeclaredIn(m, DiagnosticListener.class)
+                ? new UserDiagnosticListener(m, out)
+                : null;
+    }
+
+    /** Get a set of file objects to use for the test compilation. */
+    Iterable<? extends JavaFileObject> getCompilationUnits(Method m) {
+        File testSrc = new File(System.getProperty("test.src"));
+        File thisSrc = new File(testSrc, TestClientCodeWrapper.class.getName() + ".java");
+        Iterable<? extends JavaFileObject> files = defaultFileManager.getJavaFileObjects(thisSrc);
+        if (isDeclaredIn(m, FileObject.class, JavaFileObject.class))
+            return Arrays.asList(new UserFileObject(m, files.iterator().next()));
+        else
+            return files;
+    }
+
+    /** Get a set of annotation processors to use for the test compilation. */
+    Iterable<? extends Processor> getProcessors(Method m) {
+        return Arrays.asList(new UserProcessor(m));
+    }
+
+    /** Get a task listener to use for the test compilation. */
+    TaskListener getTaskListener(Method m, PrintWriter out) {
+        return new UserTaskListener(m, out);
+    }
+
+    /** Check if two values are .equal, and report an error if not. */
+    <T> void checkEqual(String label, T expect, T found) {
+        if (!expect.equals(found))
+            error("Unexpected value for " + label + ": " + found + "; expected: " + expect);
+    }
+
+    /** Report an error. */
+    void error(String msg) {
+        System.err.println("Error: " + msg);
+        errors++;
+    }
+
+    /** Check if a method is declared in any of a set of classes */
+    static boolean isDeclaredIn(Method m, Class<?>... classes) {
+        Class<?> dc = m.getDeclaringClass();
+        for (Class<?> c: classes) {
+            if (c == dc) return true;
+        }
+        return false;
+    }
+
+    /** Throw an intentional error if the method has a given name. */
+    static void throwUserExceptionIfNeeded(Method m, String name) {
+        if (m != null && m.getName().equals(name))
+            throw new UserError(name);
+    }
+
+    StandardJavaFileManager defaultFileManager;
+    int testNum;
+    int errors;
+
+    //--------------------------------------------------------------------------
+
+    /**
+     * Processor used to trigger use of methods not normally used by javac.
+     */
+    @Override
+    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
+        boolean firstRound = false;
+        for (Element e: roundEnv.getRootElements()) {
+            if (e.getSimpleName().contentEquals(TestClientCodeWrapper.class.getSimpleName()))
+                firstRound = true;
+        }
+        if (firstRound) {
+            try {
+                FileObject f1 = filer.getResource(StandardLocation.CLASS_PATH, "",
+                    TestClientCodeWrapper.class.getName() + ".java");
+                f1.openInputStream().close();
+                f1.openReader(false).close();
+
+                FileObject f2 = filer.createResource(
+                        StandardLocation.CLASS_OUTPUT, "", "f2.txt", (Element[]) null);
+                f2.openOutputStream().close();
+
+                FileObject f3 = filer.createResource(
+                        StandardLocation.CLASS_OUTPUT, "", "f3.txt", (Element[]) null);
+                f3.openWriter().close();
+
+                JavaFileObject f4 = filer.createSourceFile("f4", (Element[]) null);
+                f4.openWriter().close();
+                f4.getNestingKind();
+                f4.getAccessLevel();
+
+                messager.printMessage(Diagnostic.Kind.NOTE, "informational note",
+                        roundEnv.getRootElements().iterator().next());
+
+            } catch (IOException e) {
+                throw new UserError(e);
+            }
+        }
+        return true;
+    }
+
+    //--------------------------------------------------------------------------
+
+    // <editor-fold defaultstate="collapsed" desc="User classes">
+
+    static class UserError extends Error {
+        private static final long serialVersionUID = 1L;
+        UserError(String msg) {
+            super(msg);
+        }
+        UserError(Throwable t) {
+            super(t);
+        }
+    }
+
+    static class UserFileManager extends ForwardingJavaFileManager<JavaFileManager> {
+        Method fileManagerMethod;
+        Method fileObjectMethod;
+
+        UserFileManager(Method m, JavaFileManager delegate) {
+            super(delegate);
+            if (isDeclaredIn(m, JavaFileManager.class)) {
+                fileManagerMethod = m;
+            } else if (isDeclaredIn(m, FileObject.class, JavaFileObject.class)) {
+                fileObjectMethod = m;
+            } else
+                assert false;
+        }
+
+        @Override
+        public ClassLoader getClassLoader(Location location) {
+            throwUserExceptionIfNeeded(fileManagerMethod, "getClassLoader");
+            return super.getClassLoader(location);
+        }
+
+        @Override
+        public Iterable<JavaFileObject> list(Location location, String packageName, Set<Kind> kinds, boolean recurse) throws IOException {
+            throwUserExceptionIfNeeded(fileManagerMethod, "list");
+            return wrap(super.list(location, packageName, kinds, recurse));
+        }
+
+        @Override
+        public String inferBinaryName(Location location, JavaFileObject file) {
+            throwUserExceptionIfNeeded(fileManagerMethod, "inferBinaryName");
+            return super.inferBinaryName(location, unwrap(file));
+        }
+
+        @Override
+        public boolean isSameFile(FileObject a, FileObject b) {
+            throwUserExceptionIfNeeded(fileManagerMethod, "isSameFile");
+            return super.isSameFile(unwrap(a), unwrap(b));
+        }
+
+        @Override
+        public boolean handleOption(String current, Iterator<String> remaining) {
+            throwUserExceptionIfNeeded(fileManagerMethod, "handleOption");
+            return super.handleOption(current, remaining);
+        }
+
+        @Override
+        public boolean hasLocation(Location location) {
+            throwUserExceptionIfNeeded(fileManagerMethod, "hasLocation");
+            return super.hasLocation(location);
+        }
+
+        @Override
+        public JavaFileObject getJavaFileForInput(Location location, String className, Kind kind) throws IOException {
+            throwUserExceptionIfNeeded(fileManagerMethod, "getJavaFileForInput");
+            return wrap(super.getJavaFileForInput(location, className, kind));
+        }
+
+        @Override
+        public JavaFileObject getJavaFileForOutput(Location location, String className, Kind kind, FileObject sibling) throws IOException {
+            throwUserExceptionIfNeeded(fileManagerMethod, "getJavaFileForOutput");
+            return wrap(super.getJavaFileForOutput(location, className, kind, sibling));
+        }
+
+        @Override
+        public FileObject getFileForInput(Location location, String packageName, String relativeName) throws IOException {
+            throwUserExceptionIfNeeded(fileManagerMethod, "getFileForInput");
+            return wrap(super.getFileForInput(location, packageName, relativeName));
+        }
+
+        @Override
+        public FileObject getFileForOutput(Location location, String packageName, String relativeName, FileObject sibling) throws IOException {
+            throwUserExceptionIfNeeded(fileManagerMethod, "getFileForOutput");
+            return wrap(super.getFileForOutput(location, packageName, relativeName, sibling));
+        }
+
+        @Override
+        public void flush() throws IOException {
+            throwUserExceptionIfNeeded(fileManagerMethod, "flush");
+            super.flush();
+        }
+
+        @Override
+        public void close() throws IOException {
+            throwUserExceptionIfNeeded(fileManagerMethod, "close");
+            super.close();
+        }
+
+        @Override
+        public int isSupportedOption(String option) {
+            throwUserExceptionIfNeeded(fileManagerMethod, "isSupportedOption");
+            return super.isSupportedOption(option);
+        }
+
+        public FileObject wrap(FileObject fo) {
+            if (fileObjectMethod == null)
+                return fo;
+            return new UserFileObject(fileObjectMethod, (JavaFileObject)fo);
+        }
+
+        FileObject unwrap(FileObject fo) {
+            if (fo instanceof UserFileObject)
+                return ((UserFileObject) fo).unwrap();
+            else
+                return fo;
+        }
+
+        public JavaFileObject wrap(JavaFileObject fo) {
+            if (fileObjectMethod == null)
+                return fo;
+            return new UserFileObject(fileObjectMethod, fo);
+        }
+
+        public Iterable<JavaFileObject> wrap(Iterable<? extends JavaFileObject> list) {
+            List<JavaFileObject> wrapped = new ArrayList<JavaFileObject>();
+            for (JavaFileObject fo : list)
+                wrapped.add(wrap(fo));
+            return Collections.unmodifiableList(wrapped);
+        }
+
+        JavaFileObject unwrap(JavaFileObject fo) {
+            if (fo instanceof UserFileObject)
+                return ((UserFileObject) fo).unwrap();
+            else
+                return fo;
+        }
+    }
+
+    static class UserFileObject extends ForwardingJavaFileObject<JavaFileObject> {
+        Method method;
+
+        UserFileObject(Method m, JavaFileObject delegate) {
+            super(delegate);
+            assert isDeclaredIn(m, FileObject.class, JavaFileObject.class);
+            this.method = m;
+        }
+
+        JavaFileObject unwrap() {
+            return fileObject;
+        }
+
+        @Override
+        public Kind getKind() {
+            throwUserExceptionIfNeeded(method, "getKind");
+            return super.getKind();
+        }
+
+        @Override
+        public boolean isNameCompatible(String simpleName, Kind kind) {
+            throwUserExceptionIfNeeded(method, "isNameCompatible");
+            return super.isNameCompatible(simpleName, kind);
+        }
+
+        @Override
+        public NestingKind getNestingKind() {
+            throwUserExceptionIfNeeded(method, "getNestingKind");
+            return super.getNestingKind();
+        }
+
+        @Override
+        public Modifier getAccessLevel() {
+            throwUserExceptionIfNeeded(method, "getAccessLevel");
+            return super.getAccessLevel();
+        }
+
+        @Override
+        public URI toUri() {
+            throwUserExceptionIfNeeded(method, "toUri");
+            return super.toUri();
+        }
+
+        @Override
+        public String getName() {
+            throwUserExceptionIfNeeded(method, "getName");
+            return super.getName();
+        }
+
+        @Override
+        public InputStream openInputStream() throws IOException {
+            throwUserExceptionIfNeeded(method, "openInputStream");
+            return super.openInputStream();
+        }
+
+        @Override
+        public OutputStream openOutputStream() throws IOException {
+            throwUserExceptionIfNeeded(method, "openOutputStream");
+            return super.openOutputStream();
+        }
+
+        @Override
+        public Reader openReader(boolean ignoreEncodingErrors) throws IOException {
+            throwUserExceptionIfNeeded(method, "openReader");
+            return super.openReader(ignoreEncodingErrors);
+        }
+
+        @Override
+        public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {
+            throwUserExceptionIfNeeded(method, "getCharContent");
+            return super.getCharContent(ignoreEncodingErrors);
+        }
+
+        @Override
+        public Writer openWriter() throws IOException {
+            throwUserExceptionIfNeeded(method, "openWriter");
+            return super.openWriter();
+        }
+
+        @Override
+        public long getLastModified() {
+            throwUserExceptionIfNeeded(method, "getLastModified");
+            return super.getLastModified();
+        }
+
+        @Override
+        public boolean delete() {
+            throwUserExceptionIfNeeded(method, "delete");
+            return super.delete();
+        }
+
+    }
+
+    static class UserProcessor extends JavacTestingAbstractProcessor {
+        Method method;
+
+        UserProcessor(Method m) {
+            assert isDeclaredIn(m, Processor.class);
+            method = m;
+        }
+
+        @Override
+        public Set<String> getSupportedOptions() {
+            throwUserExceptionIfNeeded(method, "getSupportedOptions");
+            return super.getSupportedOptions();
+        }
+
+        @Override
+        public Set<String> getSupportedAnnotationTypes() {
+            throwUserExceptionIfNeeded(method, "getSupportedAnnotationTypes");
+            return super.getSupportedAnnotationTypes();
+        }
+
+        @Override
+        public SourceVersion getSupportedSourceVersion() {
+            throwUserExceptionIfNeeded(method, "getSupportedSourceVersion");
+            return super.getSupportedSourceVersion();
+        }
+
+        @Override
+        public void init(ProcessingEnvironment processingEnv) {
+            throwUserExceptionIfNeeded(method, "init");
+            super.init(processingEnv);
+        }
+
+        @Override
+        public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
+            throwUserExceptionIfNeeded(method, "process");
+            return true;
+        }
+
+        @Override
+        public Iterable<? extends Completion> getCompletions(Element element, AnnotationMirror annotation, ExecutableElement member, String userText) {
+            throwUserExceptionIfNeeded(method, "getCompletions");
+            return super.getCompletions(element, annotation, member, userText);
+        }
+    }
+
+    static class UserDiagnosticListener implements DiagnosticListener<JavaFileObject> {
+        Method method;
+        PrintWriter out;
+
+        UserDiagnosticListener(Method m, PrintWriter out) {
+            assert isDeclaredIn(m, DiagnosticListener.class);
+            this.method = m;
+            this.out = out;
+        }
+
+        @Override
+        public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
+            throwUserExceptionIfNeeded(method, "report");
+            out.println("report: " + diagnostic);
+        }
+    }
+
+    static class UserTaskListener implements TaskListener {
+        Method method;
+        PrintWriter out;
+
+        UserTaskListener(Method m, PrintWriter out) {
+            assert isDeclaredIn(m, TaskListener.class);
+            this.method = m;
+            this.out = out;
+        }
+
+        @Override
+        public void started(TaskEvent e) {
+            throwUserExceptionIfNeeded(method, "started");
+            out.println("started: " + e);
+        }
+
+        @Override
+        public void finished(TaskEvent e) {
+            throwUserExceptionIfNeeded(method, "finished");
+            out.println("finished: " + e);
+        }
+    }
+
+    // </editor-fold>
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/classreader/T7031108.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,149 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 7031108
+ * @summary NPE in javac.jvm.ClassReader.findMethod in PackageElement.enclosedElements from AP in incr build
+ * @library ../lib
+ * @build JavacTestingAbstractProcessor T7031108
+ * @run main T7031108
+ */
+
+import java.io.*;
+import java.net.*;
+import java.util.*;
+import javax.annotation.processing.*;
+import javax.lang.model.element.*;
+import javax.tools.*;
+import javax.tools.JavaCompiler.CompilationTask;
+
+public class T7031108 extends JavacTestingAbstractProcessor {
+    public static void main(String... args) throws Exception {
+        new T7031108().run();
+    }
+
+    /* Class containing a local class definition;
+     * compiled class file will have an EnclosedMethod attribute.
+     */
+    static final JavaSource pC =
+            new JavaSource("p/C.java",
+                  "package p;\n"
+                + "class C {\n"
+                + "    void m() {\n"
+                + "        new Runnable() {\n"
+                + "            public void run() {\n"
+                + "                new Runnable() {\n"
+                + "                    public void run() { }\n"
+                + "                };\n"
+                + "            }\n"
+                + "        };\n"
+                + "    }\n"
+                + "}");
+
+    /* Dummy source file to compile while running anno processor. */
+    static final JavaSource dummy =
+            new JavaSource("Dummy.java",
+                "class Dummy { }");
+
+    void run() throws Exception {
+        JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
+        StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
+
+        // step 1: compile test classes
+        File cwd = new File(".");
+        fm.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(cwd));
+        compile(comp, fm, null, null, pC);
+
+        // step 2: verify functioning of processor
+        fm.setLocation(StandardLocation.ANNOTATION_PROCESSOR_PATH,
+                fm.getLocation(StandardLocation.CLASS_PATH));
+        fm.setLocation(StandardLocation.CLASS_PATH, Arrays.asList(cwd));
+        compile(comp, fm, null, getClass().getName(), dummy);
+
+        File pC_class = new File(new File("p"), "C.class");
+        pC_class.delete();
+
+        DiagnosticCollector<JavaFileObject> dc = new DiagnosticCollector<JavaFileObject>();
+        compile(comp, fm, dc, getClass().getName(), dummy);
+        List<Diagnostic<? extends JavaFileObject>> diags =dc.getDiagnostics();
+
+        System.err.println(diags);
+        switch (diags.size()) {
+            case 0:
+                throw new Exception("no diagnostics received");
+            case 1:
+                String code = diags.get(0).getCode();
+                String expect = "compiler.err.proc.cant.access.1";
+                if (!expect.equals(code))
+                    throw new Exception("unexpected diag code: " + code
+                            + ", expected: " + expect);
+                break;
+            default:
+                throw new Exception("unexpected diags received");
+        }
+    }
+
+    void compile(JavaCompiler comp, JavaFileManager fm,
+            DiagnosticListener<JavaFileObject> dl,
+            String processor, JavaFileObject... files) throws Exception {
+        System.err.println("compile processor:" + processor + ", files:" + Arrays.asList(files));
+        List<String> opts = new ArrayList<String>();
+        if (processor != null) {
+            // opts.add("-verbose");
+            opts.addAll(Arrays.asList("-processor", processor));
+        }
+        CompilationTask task = comp.getTask(null, fm, dl, opts, null, Arrays.asList(files));
+        boolean ok = task.call();
+        if (dl == null && !ok)
+            throw new Exception("compilation failed");
+    }
+
+    static class JavaSource extends SimpleJavaFileObject {
+        JavaSource(String name, String text) {
+            super(URI.create("js://" + name), JavaFileObject.Kind.SOURCE);
+            this.text = text;
+        }
+        @Override
+        public CharSequence getCharContent(boolean ignoreEncodingErrors) {
+            return text;
+        }
+        final String text;
+    }
+
+    // annotation processor method
+
+    @Override
+    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
+        if (!roundEnv.processingOver()) {
+            PackageElement p = elements.getPackageElement("p");
+            List<? extends Element> elems = p.getEnclosedElements();
+            System.err.println("contents of package p: " + elems);
+            if (elems.size() != 1 || !elems.get(0).getSimpleName().contentEquals("C")) {
+                messager.printMessage(Diagnostic.Kind.ERROR, "unexpected package contents");
+            }
+        }
+        return true;
+    }
+}
+
--- a/langtools/test/tools/javac/diags/CheckResourceKeys.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javac/diags/CheckResourceKeys.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/langtools/test/tools/javac/diags/examples.not-yet.txt	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javac/diags/examples.not-yet.txt	Wed Apr 20 09:31:11 2011 -0700
@@ -27,6 +27,7 @@
 compiler.err.prob.found.req.1                           # Check: DEAD, in unused method
 compiler.err.proc.bad.config.file                       # JavacProcessingEnvironment
 compiler.err.proc.cant.access                           # completion failure
+compiler.err.proc.cant.access.1                         # completion failure, no stack trace
 compiler.err.proc.cant.create.loader                    # security exception from service loader
 compiler.err.proc.no.service                            # JavacProcessingEnvironment: no service loader available
 compiler.err.proc.processor.bad.option.name             # cannot happen? masked by javac.err.invalid.A.key
@@ -49,6 +50,7 @@
 compiler.misc.bad.class.signature                       # bad class file
 compiler.misc.bad.const.pool.tag                        # bad class file
 compiler.misc.bad.const.pool.tag.at                     # bad class file
+compiler.misc.bad.enclosing.class                       # bad class file
 compiler.misc.bad.enclosing.method                      # bad class file
 compiler.misc.bad.runtime.invisible.param.annotations   # bad class file
 compiler.misc.bad.signature                             # bad class file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/diags/examples/MulticatchTypesMustBeDisjoint.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+// key: compiler.err.multicatch.types.must.be.disjoint
+
+class MulticatchTypesMustBeDisjoint {
+    class E1 extends Exception { }
+    class E2 extends E1 { }
+
+    void e1() throws E1 { }
+    void e2() throws E2 { }
+
+    void m() {
+        try {
+            e1();
+            e2();
+        } catch (E1 | E2 e) { }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/diags/examples/TryResourceThrowsInterruptedExc.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+// key: compiler.warn.try.resource.throws.interrupted.exc
+// options: -Xlint:try
+
+class TryResourceThrowsInterruptedException implements AutoCloseable {
+    public void close() throws InterruptedException {}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/generics/diamond/7030150/GenericConstructorAndDiamondTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,252 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 7030150
+ * @summary Type inference for generic instance creation failed for formal type parameter
+ */
+
+import com.sun.source.util.JavacTask;
+import java.net.URI;
+import java.util.Arrays;
+import javax.tools.Diagnostic;
+import javax.tools.JavaCompiler;
+import javax.tools.JavaFileObject;
+import javax.tools.SimpleJavaFileObject;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.ToolProvider;
+
+public class GenericConstructorAndDiamondTest {
+
+    enum BoundKind {
+        NO_BOUND(""),
+        STRING_BOUND("extends String"),
+        INTEGER_BOUND("extends Integer");
+
+        String boundStr;
+
+        private BoundKind(String boundStr) {
+            this.boundStr = boundStr;
+        }
+
+        boolean matches(TypeArgumentKind tak) {
+            switch (tak) {
+                case NONE: return true;
+                case STRING: return this != INTEGER_BOUND;
+                case INTEGER: return this != STRING_BOUND;
+                default: return false;
+            }
+        }
+    }
+
+    enum ConstructorKind {
+        NON_GENERIC("Foo(Object o) {}"),
+        GENERIC_NO_BOUND("<T> Foo(T t) {}"),
+        GENERIC_STRING_BOUND("<T extends String> Foo(T t) {}"),
+        GENERIC_INTEGER_BOUND("<T extends Integer> Foo(T t) {}");
+
+        String constrStr;
+
+        private ConstructorKind(String constrStr) {
+            this.constrStr = constrStr;
+        }
+
+        boolean matches(ArgumentKind ak) {
+            switch (ak) {
+                case STRING: return this != GENERIC_INTEGER_BOUND;
+                case INTEGER: return this != GENERIC_STRING_BOUND;
+                default: return false;
+            }
+        }
+    }
+
+    enum TypeArgArity {
+        ONE(1),
+        TWO(2),
+        THREE(3);
+
+        int n;
+
+        private TypeArgArity(int n) {
+            this.n = n;
+        }
+    }
+
+    enum TypeArgumentKind {
+        NONE(""),
+        STRING("String"),
+        INTEGER("Integer");
+
+        String typeargStr;
+
+        private TypeArgumentKind(String typeargStr) {
+            this.typeargStr = typeargStr;
+        }
+
+        String getArgs(TypeArgArity arity) {
+            if (this == NONE) return "";
+            else {
+                StringBuilder buf = new StringBuilder();
+                String sep = "";
+                for (int i = 0 ; i < arity.n ; i++) {
+                    buf.append(sep);
+                    buf.append(typeargStr);
+                    sep = ",";
+                }
+                return "<" + buf.toString() + ">";
+            }
+        }
+
+        boolean matches(ArgumentKind ak) {
+            switch (ak) {
+                case STRING: return this != INTEGER;
+                case INTEGER: return this != STRING;
+                default: return false;
+            }
+        }
+    }
+
+    enum ArgumentKind {
+        STRING("\"\""),
+        INTEGER("1");
+
+        String argStr;
+
+        private ArgumentKind(String argStr) {
+            this.argStr = argStr;
+        }
+    }
+
+    public static void main(String... args) throws Exception {
+
+        //create default shared JavaCompiler - reused across multiple compilations
+        JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
+        StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
+
+        for (BoundKind boundKind : BoundKind.values()) {
+            for (ConstructorKind constructorKind : ConstructorKind.values()) {
+                for (TypeArgumentKind declArgKind : TypeArgumentKind.values()) {
+                    for (TypeArgArity arity : TypeArgArity.values()) {
+                        for (TypeArgumentKind useArgKind : TypeArgumentKind.values()) {
+                            for (ArgumentKind argKind : ArgumentKind.values()) {
+                                new GenericConstructorAndDiamondTest(boundKind, constructorKind,
+                                        declArgKind, arity, useArgKind, argKind).run(comp, fm);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    BoundKind boundKind;
+    ConstructorKind constructorKind;
+    TypeArgumentKind declTypeArgumentKind;
+    TypeArgArity useTypeArgArity;
+    TypeArgumentKind useTypeArgumentKind;
+    ArgumentKind argumentKind;
+    JavaSource source;
+    DiagnosticChecker diagChecker;
+
+    GenericConstructorAndDiamondTest(BoundKind boundKind, ConstructorKind constructorKind,
+            TypeArgumentKind declTypeArgumentKind, TypeArgArity useTypeArgArity,
+            TypeArgumentKind useTypeArgumentKind, ArgumentKind argumentKind) {
+        this.boundKind = boundKind;
+        this.constructorKind = constructorKind;
+        this.declTypeArgumentKind = declTypeArgumentKind;
+        this.useTypeArgArity = useTypeArgArity;
+        this.useTypeArgumentKind = useTypeArgumentKind;
+        this.argumentKind = argumentKind;
+        this.source = new JavaSource();
+        this.diagChecker = new DiagnosticChecker();
+    }
+
+    class JavaSource extends SimpleJavaFileObject {
+
+        String template = "class Foo<X #BK> {\n" +
+                              "#CK\n" +
+                          "}\n" +
+                          "class Test {\n" +
+                              "void test() {\n" +
+                                 "Foo#TA1 f = new #TA2 Foo<>(#A);\n" +
+                              "}\n" +
+                          "}\n";
+
+        String source;
+
+        public JavaSource() {
+            super(URI.create("myfo:/Test.java"), JavaFileObject.Kind.SOURCE);
+            source = template.replace("#BK", boundKind.boundStr).
+                    replace("#CK", constructorKind.constrStr)
+                    .replace("#TA1", declTypeArgumentKind.getArgs(TypeArgArity.ONE))
+                    .replace("#TA2", useTypeArgumentKind.getArgs(useTypeArgArity))
+                    .replace("#A", argumentKind.argStr);
+        }
+
+        @Override
+        public CharSequence getCharContent(boolean ignoreEncodingErrors) {
+            return source;
+        }
+    }
+
+    void run(JavaCompiler tool, StandardJavaFileManager fm) throws Exception {
+        JavacTask ct = (JavacTask)tool.getTask(null, fm, diagChecker,
+                null, null, Arrays.asList(source));
+        ct.analyze();
+        check();
+    }
+
+    void check() {
+        boolean badActual = !constructorKind.matches(argumentKind);
+
+        boolean badArity = constructorKind != ConstructorKind.NON_GENERIC &&
+                useTypeArgumentKind != TypeArgumentKind.NONE &&
+                useTypeArgArity != TypeArgArity.ONE;
+
+        boolean badMethodTypeArg = constructorKind != ConstructorKind.NON_GENERIC &&
+                !useTypeArgumentKind.matches(argumentKind);
+
+        boolean badGenericType = !boundKind.matches(declTypeArgumentKind);
+
+        boolean shouldFail = badActual || badArity || badMethodTypeArg || badGenericType;
+
+        if (shouldFail != diagChecker.errorFound) {
+            throw new Error("invalid diagnostics for source:\n" +
+                source.getCharContent(true) +
+                "\nFound error: " + diagChecker.errorFound +
+                "\nExpected error: " + shouldFail);
+        }
+    }
+
+    static class DiagnosticChecker implements javax.tools.DiagnosticListener<JavaFileObject> {
+
+        boolean errorFound;
+
+        public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
+            if (diagnostic.getKind() == Diagnostic.Kind.ERROR) {
+                errorFound = true;
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/generics/diamond/7030150/Neg01.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,17 @@
+/*
+ * @test /nodynamiccopyright/
+ * @bug 7030150
+ * @summary Type inference for generic instance creation failed for formal type parameter
+ *          check that explicit type-argument that causes resolution failure is rejected
+ * @compile/fail/ref=Neg01.out -XDrawDiagnostics Neg01.java
+ */
+
+class Neg01 {
+
+    static class Foo<X> {
+        <T> Foo(T t) {}
+    }
+
+    Foo<Integer> fi1 = new <String> Foo<>(1);
+    Foo<Integer> fi2 = new <String> Foo<Integer>(1);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/generics/diamond/7030150/Neg01.out	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,3 @@
+Neg01.java:15:24: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: Neg01.Foo), (compiler.misc.infer.no.conforming.assignment.exists: X, int, java.lang.String)
+Neg01.java:16:24: compiler.err.cant.apply.symbol.1: kindname.constructor, Foo, T, int, kindname.class, Neg01.Foo<X>, (compiler.misc.no.conforming.assignment.exists: int, java.lang.String)
+2 errors
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/generics/diamond/7030150/Neg02.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,17 @@
+/*
+ * @test /nodynamiccopyright/
+ * @bug 7030150
+ * @summary Type inference for generic instance creation failed for formal type parameter
+ *          check that compiler rejects bad number of explicit type-arguments
+ * @compile/fail/ref=Neg02.out -XDrawDiagnostics Neg02.java
+ */
+
+class Neg02 {
+
+    static class Foo<X> {
+        <T> Foo(T t) {}
+    }
+
+    Foo<Integer> fi1 = new <String, Integer> Foo<>("");
+    Foo<Integer> fi2 = new <String, Integer> Foo<Integer>("");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/generics/diamond/7030150/Neg02.out	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,3 @@
+Neg02.java:15:24: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: Neg02.Foo), (compiler.misc.arg.length.mismatch)
+Neg02.java:16:24: compiler.err.cant.apply.symbol.1: kindname.constructor, Foo, T, java.lang.String, kindname.class, Neg02.Foo<X>, (compiler.misc.arg.length.mismatch)
+2 errors
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/generics/diamond/7030150/Neg03.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,17 @@
+/*
+ * @test /nodynamiccopyright/
+ * @bug 7030150
+ * @summary Type inference for generic instance creation failed for formal type parameter
+ *          check that explicit type-argument that does not conform to bound is rejected
+ * @compile/fail/ref=Neg03.out -XDrawDiagnostics Neg03.java
+ */
+
+class Neg03 {
+
+    static class Foo<X> {
+        <T extends Integer> Foo(T t) {}
+    }
+
+    Foo<Integer> fi1 = new <String> Foo<>(1);
+    Foo<Integer> fi2 = new <String> Foo<Integer>(1);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/generics/diamond/7030150/Neg03.out	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,3 @@
+Neg03.java:15:24: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: Neg03.Foo), (compiler.misc.explicit.param.do.not.conform.to.bounds: java.lang.String, java.lang.Integer)
+Neg03.java:16:24: compiler.err.cant.apply.symbol.1: kindname.constructor, Foo, T, int, kindname.class, Neg03.Foo<X>, (compiler.misc.explicit.param.do.not.conform.to.bounds: java.lang.String, java.lang.Integer)
+2 errors
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/generics/diamond/7030150/Pos01.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 7030150
+ * @summary Type inference for generic instance creation failed for formal type parameter
+ *          check that redundant type-arguments on non-generic constructor are accepted
+ * @compile Pos01.java
+ */
+
+class Pos01 {
+
+    static class Foo<X> {
+        Foo(X t) {}
+    }
+
+    Foo<Integer> fi1 = new Foo<>(1);
+    Foo<Integer> fi2 = new Foo<Integer>(1);
+    Foo<Integer> fi3 = new <String> Foo<>(1);
+    Foo<Integer> fi4 = new <String> Foo<Integer>(1);
+    Foo<Integer> fi5 = new <String, String> Foo<>(1);
+    Foo<Integer> fi6 = new <String, String> Foo<Integer>(1);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/generics/diamond/7030150/Pos02.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 7030150
+ * @summary Type inference for generic instance creation failed for formal type parameter
+ *          check that diamond in return context works w/o problems
+ * @compile Pos02.java
+ */
+
+class Pos02<X> {
+
+    Pos02(X x) {}
+
+
+    Pos02<X> test(X x) {
+        return new Pos02<>(x);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/generics/diamond/7030687/ParserTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,175 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 7030687
+ * @summary Diamond: compiler accepts erroneous code where diamond is used with non-generic inner class
+ */
+
+import com.sun.source.util.JavacTask;
+import java.net.URI;
+import java.util.Arrays;
+import javax.tools.Diagnostic;
+import javax.tools.JavaCompiler;
+import javax.tools.JavaFileObject;
+import javax.tools.SimpleJavaFileObject;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.ToolProvider;
+
+public class ParserTest {
+
+    enum TypeArgumentKind {
+        NONE(""),
+        EXPLICIT("<String>"),
+        DIAMOND("<>");
+
+        String typeargStr;
+
+        private TypeArgumentKind(String typeargStr) {
+            this.typeargStr = typeargStr;
+        }
+    }
+
+    enum TypeQualifierArity {
+        ONE(1, "A1#TA1"),
+        TWO(2, "A1#TA1.A2#TA2"),
+        THREE(3, "A1#TA1.A2#TA2.A3#TA3"),
+        FOUR(4, "A1#TA1.A2#TA2.A3#TA3.A4#TA4");
+
+        int n;
+        String qualifierStr;
+
+        private TypeQualifierArity(int n, String qualifierStr) {
+            this.n = n;
+            this.qualifierStr = qualifierStr;
+        }
+
+        String getType(TypeArgumentKind... typeArgumentKinds) {
+            String res = qualifierStr;
+            for (int i = 1 ; i <= typeArgumentKinds.length ; i++) {
+                res = res.replace("#TA" + i, typeArgumentKinds[i-1].typeargStr);
+            }
+            return res;
+        }
+    }
+
+    public static void main(String... args) throws Exception {
+
+        //create default shared JavaCompiler - reused across multiple compilations
+        JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
+        StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
+
+        for (TypeQualifierArity arity : TypeQualifierArity.values()) {
+            for (TypeArgumentKind tak1 : TypeArgumentKind.values()) {
+                if (arity == TypeQualifierArity.ONE) {
+                    new ParserTest(arity, tak1).run(comp, fm);
+                    continue;
+                }
+                for (TypeArgumentKind tak2 : TypeArgumentKind.values()) {
+                    if (arity == TypeQualifierArity.TWO) {
+                        new ParserTest(arity, tak1, tak2).run(comp, fm);
+                        continue;
+                    }
+                    for (TypeArgumentKind tak3 : TypeArgumentKind.values()) {
+                        if (arity == TypeQualifierArity.THREE) {
+                            new ParserTest(arity, tak1, tak2, tak3).run(comp, fm);
+                            continue;
+                        }
+                        for (TypeArgumentKind tak4 : TypeArgumentKind.values()) {
+                            new ParserTest(arity, tak1, tak2, tak3, tak4).run(comp, fm);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    TypeQualifierArity qualifierArity;
+    TypeArgumentKind[] typeArgumentKinds;
+    JavaSource source;
+    DiagnosticChecker diagChecker;
+
+    ParserTest(TypeQualifierArity qualifierArity, TypeArgumentKind... typeArgumentKinds) {
+        this.qualifierArity = qualifierArity;
+        this.typeArgumentKinds = typeArgumentKinds;
+        this.source = new JavaSource();
+        this.diagChecker = new DiagnosticChecker();
+    }
+
+    class JavaSource extends SimpleJavaFileObject {
+
+        String template = "class Test {\n" +
+                              "R res = new #T();\n" +
+                          "}\n";
+
+        String source;
+
+        public JavaSource() {
+            super(URI.create("myfo:/Test.java"), JavaFileObject.Kind.SOURCE);
+            source = template.replace("#T", qualifierArity.getType(typeArgumentKinds));
+        }
+
+        @Override
+        public CharSequence getCharContent(boolean ignoreEncodingErrors) {
+            return source;
+        }
+    }
+
+    void run(JavaCompiler tool, StandardJavaFileManager fm) throws Exception {
+        JavacTask ct = (JavacTask)tool.getTask(null, fm, diagChecker,
+                null, null, Arrays.asList(source));
+        ct.parse();
+        check();
+    }
+
+    void check() {
+
+        boolean errorExpected = false;
+
+        for (int i = 0 ; i < qualifierArity.n - 1 ; i++) {
+            if (typeArgumentKinds[i] == TypeArgumentKind.DIAMOND) {
+                errorExpected = true;
+                break;
+            }
+        }
+
+        if (errorExpected != diagChecker.errorFound) {
+            throw new Error("invalid diagnostics for source:\n" +
+                source.getCharContent(true) +
+                "\nFound error: " + diagChecker.errorFound +
+                "\nExpected error: " + errorExpected);
+        }
+    }
+
+    static class DiagnosticChecker implements javax.tools.DiagnosticListener<JavaFileObject> {
+
+        boolean errorFound;
+
+        public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
+            if (diagnostic.getKind() == Diagnostic.Kind.ERROR) {
+                errorFound = true;
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/generics/diamond/7030687/T7030687.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,19 @@
+/*
+ * @test /nodynamiccopyright/
+ * @bug 7030687
+ * @summary Diamond: compiler accepts erroneous code where diamond is used with non-generic inner class
+ * @compile/fail/ref=T7030687.out -XDrawDiagnostics T7030687.java
+ */
+
+class T7030687<X> {
+    class Member { }
+    static class Nested {}
+
+    void test() {
+        class Local {}
+
+        Member m = new Member<>();
+        Nested n = new Nested<>();
+        Local l = new Local<>();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/generics/diamond/7030687/T7030687.out	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,4 @@
+T7030687.java:15:30: compiler.err.cant.apply.diamond.1: T7030687<X>.Member, (compiler.misc.diamond.non.generic: T7030687<X>.Member)
+T7030687.java:16:30: compiler.err.cant.apply.diamond.1: T7030687.Nested, (compiler.misc.diamond.non.generic: T7030687.Nested)
+T7030687.java:17:28: compiler.err.cant.apply.diamond.1: Local, (compiler.misc.diamond.non.generic: Local)
+3 errors
--- a/langtools/test/tools/javac/javazip/Test.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javac/javazip/Test.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,7 +1,7 @@
 #! /bin/sh -f
 
 #
-# Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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
--- a/langtools/test/tools/javac/meth/InvokeMH.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javac/meth/InvokeMH.java	Wed Apr 20 09:31:11 2011 -0700
@@ -42,7 +42,7 @@
 
 package meth;
 
-import java.dyn.MethodHandle;
+import java.lang.invoke.MethodHandle;
 
 public class InvokeMH {
     void test(MethodHandle mh_SiO,
--- a/langtools/test/tools/javac/meth/TestCP.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javac/meth/TestCP.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
@@ -35,7 +35,7 @@
 import com.sun.tools.classfile.ConstantPool.*;
 import com.sun.tools.classfile.Method;
 
-import java.dyn.*;
+import java.lang.invoke.*;
 import java.io.*;
 
 public class TestCP {
--- a/langtools/test/tools/javac/meth/XlintWarn.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javac/meth/XlintWarn.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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,7 +30,7 @@
  * @compile -Werror -Xlint:cast XlintWarn.java
  */
 
-import java.dyn.*;
+import java.lang.invoke.*;
 
 class XlintWarn {
     void test(MethodHandle mh) throws Throwable {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/multicatch/7030606/DisjunctiveTypeWellFormednessTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,205 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 7030606
+ * @summary Project-coin: multi-catch types should be pairwise disjoint
+ */
+
+import com.sun.source.util.JavacTask;
+import java.net.URI;
+import java.util.Arrays;
+import javax.tools.Diagnostic;
+import javax.tools.JavaCompiler;
+import javax.tools.JavaFileObject;
+import javax.tools.SimpleJavaFileObject;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.ToolProvider;
+
+public class DisjunctiveTypeWellFormednessTest {
+
+    enum Alternative {
+        EXCEPTION("Exception"),
+        RUNTIME_EXCEPTION("RuntimeException"),
+        IO_EXCEPTION("java.io.IOException"),
+        FILE_NOT_FOUND_EXCEPTION("java.io.FileNotFoundException"),
+        ILLEGAL_ARGUMENT_EXCEPTION("IllegalArgumentException");
+
+        String exceptionStr;
+
+        private Alternative(String exceptionStr) {
+            this.exceptionStr = exceptionStr;
+        }
+
+        static String makeDisjunctiveType(Alternative... alternatives) {
+            StringBuilder buf = new StringBuilder();
+            String sep = "";
+            for (Alternative alternative : alternatives) {
+                buf.append(sep);
+                buf.append(alternative.exceptionStr);
+                sep = "|";
+            }
+            return buf.toString();
+        }
+
+        boolean disjoint(Alternative that) {
+            return disjoint[this.ordinal()][that.ordinal()];
+        }
+
+        static boolean[][] disjoint = {
+            //                              Exception    RuntimeException    IOException    FileNotFoundException    IllegalArgumentException
+            /*Exception*/                {  false,       false,              false,         false,                   false },
+            /*RuntimeException*/         {  false,       false,              true,          true,                    false },
+            /*IOException*/              {  false,       true,               false,         false,                   true },
+            /*FileNotFoundException*/    {  false,       true,               false,         false,                   true },
+            /*IllegalArgumentException*/ {  false,       false,              true,          true,                    false }
+        };
+    }
+
+    enum Arity {
+        ONE(1),
+        TWO(2),
+        THREE(3),
+        FOUR(4),
+        FIVE(5);
+
+        int n;
+
+        private Arity(int n) {
+            this.n = n;
+        }
+    }
+
+    public static void main(String... args) throws Exception {
+
+        //create default shared JavaCompiler - reused across multiple compilations
+        JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
+        StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
+
+        for (Arity arity : Arity.values()) {
+            for (Alternative a1 : Alternative.values()) {
+                if (arity == Arity.ONE) {
+                    new DisjunctiveTypeWellFormednessTest(a1).run(comp, fm);
+                    continue;
+                }
+                for (Alternative a2 : Alternative.values()) {
+                    if (arity == Arity.TWO) {
+                        new DisjunctiveTypeWellFormednessTest(a1, a2).run(comp, fm);
+                        continue;
+                    }
+                    for (Alternative a3 : Alternative.values()) {
+                        if (arity == Arity.THREE) {
+                            new DisjunctiveTypeWellFormednessTest(a1, a2, a3).run(comp, fm);
+                            continue;
+                        }
+                        for (Alternative a4 : Alternative.values()) {
+                            if (arity == Arity.FOUR) {
+                                new DisjunctiveTypeWellFormednessTest(a1, a2, a3, a4).run(comp, fm);
+                                continue;
+                            }
+                            for (Alternative a5 : Alternative.values()) {
+                                new DisjunctiveTypeWellFormednessTest(a1, a2, a3, a4, a5).run(comp, fm);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    Alternative[] alternatives;
+    JavaSource source;
+    DiagnosticChecker diagChecker;
+
+    DisjunctiveTypeWellFormednessTest(Alternative... alternatives) {
+        this.alternatives = alternatives;
+        this.source = new JavaSource();
+        this.diagChecker = new DiagnosticChecker();
+    }
+
+    class JavaSource extends SimpleJavaFileObject {
+
+        String template = "class Test {\n" +
+                              "void test() {\n" +
+                                 "try {} catch (#T e) {}\n" +
+                              "}\n" +
+                          "}\n";
+
+        String source;
+
+        public JavaSource() {
+            super(URI.create("myfo:/Test.java"), JavaFileObject.Kind.SOURCE);
+            source = template.replace("#T", Alternative.makeDisjunctiveType(alternatives));
+        }
+
+        @Override
+        public CharSequence getCharContent(boolean ignoreEncodingErrors) {
+            return source;
+        }
+    }
+
+    void run(JavaCompiler tool, StandardJavaFileManager fm) throws Exception {
+        JavacTask ct = (JavacTask)tool.getTask(null, fm, diagChecker,
+                null, null, Arrays.asList(source));
+        ct.analyze();
+        check();
+    }
+
+    void check() {
+
+        int non_disjoint = 0;
+        int i = 0;
+        for (Alternative a1 : alternatives) {
+            int j = 0;
+            for (Alternative a2 : alternatives) {
+                if (i == j) continue;
+                if (!a1.disjoint(a2)) {
+                    non_disjoint++;
+                    break;
+                }
+                j++;
+            }
+            i++;
+        }
+
+        if (non_disjoint != diagChecker.errorsFound) {
+            throw new Error("invalid diagnostics for source:\n" +
+                source.getCharContent(true) +
+                "\nFound errors: " + diagChecker.errorsFound +
+                "\nExpected errors: " + non_disjoint);
+        }
+    }
+
+    static class DiagnosticChecker implements javax.tools.DiagnosticListener<JavaFileObject> {
+
+        int errorsFound;
+
+        public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
+            if (diagnostic.getKind() == Diagnostic.Kind.ERROR &&
+                    diagnostic.getCode().startsWith("compiler.err.multicatch.types.must.be.disjoint")) {
+                errorsFound++;
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/multicatch/7030606/T7030606.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,57 @@
+/*
+ * @test /nodynamiccopyright/
+ * @bug 7030606
+ *
+ * @summary Project-coin: multi-catch types should be pairwise disjoint
+ * @compile/fail/ref=T7030606.out -XDrawDiagnostics T7030606.java
+ */
+
+class T7030606 {
+    class E1 extends Exception { }
+    class E2 extends E1 { }
+
+    void e1() throws E1 { }
+    void e2() throws E2 { }
+
+    void m1() {
+        try {
+            e1();
+            e2();
+        } catch (NonExistentType | E2 | E1 e) { }
+    }
+
+    void m2() {
+        try {
+            e1();
+            e2();
+        } catch (NonExistentType | E1 | E2 e) { }
+    }
+
+    void m3() {
+        try {
+            e1();
+            e2();
+        } catch (E2 | NonExistentType | E1 e) { }
+    }
+
+    void m4() {
+        try {
+            e1();
+            e2();
+        } catch (E1 | NonExistentType | E2 e) { }
+    }
+
+    void m5() {
+        try {
+            e1();
+            e2();
+        } catch (E2 | E1 | NonExistentType e) { }
+    }
+
+    void m6() {
+        try {
+            e1();
+            e2();
+        } catch (E1 | E2 | NonExistentType  e) { }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/multicatch/7030606/T7030606.out	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,13 @@
+T7030606.java:20:18: compiler.err.cant.resolve.location: kindname.class, NonExistentType, , , (compiler.misc.location: kindname.class, T7030606, null)
+T7030606.java:20:41: compiler.err.multicatch.types.must.be.disjoint: T7030606.E2, T7030606.E1
+T7030606.java:27:18: compiler.err.cant.resolve.location: kindname.class, NonExistentType, , , (compiler.misc.location: kindname.class, T7030606, null)
+T7030606.java:27:41: compiler.err.multicatch.types.must.be.disjoint: T7030606.E2, T7030606.E1
+T7030606.java:34:23: compiler.err.cant.resolve.location: kindname.class, NonExistentType, , , (compiler.misc.location: kindname.class, T7030606, null)
+T7030606.java:34:41: compiler.err.multicatch.types.must.be.disjoint: T7030606.E2, T7030606.E1
+T7030606.java:41:23: compiler.err.cant.resolve.location: kindname.class, NonExistentType, , , (compiler.misc.location: kindname.class, T7030606, null)
+T7030606.java:41:41: compiler.err.multicatch.types.must.be.disjoint: T7030606.E2, T7030606.E1
+T7030606.java:48:23: compiler.err.multicatch.types.must.be.disjoint: T7030606.E2, T7030606.E1
+T7030606.java:48:28: compiler.err.cant.resolve.location: kindname.class, NonExistentType, , , (compiler.misc.location: kindname.class, T7030606, null)
+T7030606.java:55:23: compiler.err.multicatch.types.must.be.disjoint: T7030606.E2, T7030606.E1
+T7030606.java:55:28: compiler.err.cant.resolve.location: kindname.class, NonExistentType, , , (compiler.misc.location: kindname.class, T7030606, null)
+12 errors
--- a/langtools/test/tools/javac/options/T6900037.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javac/options/T6900037.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/langtools/test/tools/javac/scope/HashCollisionTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javac/scope/HashCollisionTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/langtools/test/tools/javac/scope/StarImportTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javac/scope/StarImportTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/langtools/test/tools/javac/types/GenericTypeWellFormednessTest.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javac/types/GenericTypeWellFormednessTest.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/langtools/test/tools/javac/types/TypeHarness.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javac/types/TypeHarness.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/util/T6597678.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,105 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 6597678
+ * @summary Ensure Messages propogated between rounds
+ * @library ../lib
+ * @build JavacTestingAbstractProcessor T6597678
+ * @run main T6597678
+ */
+
+import java.io.*;
+import java.util.*;
+import javax.annotation.processing.RoundEnvironment;
+import javax.annotation.processing.SupportedOptions;
+import javax.lang.model.element.TypeElement;
+import javax.tools.Diagnostic;
+
+
+import com.sun.tools.javac.processing.JavacProcessingEnvironment;
+import com.sun.tools.javac.util.Context;
+import com.sun.tools.javac.util.JavacMessages;
+
+public class T6597678 extends JavacTestingAbstractProcessor {
+    public static void main(String... args) throws Exception {
+        new T6597678().run();
+    }
+
+
+    void run() throws Exception {
+        String myName = T6597678.class.getSimpleName();
+        File testSrc = new File(System.getProperty("test.src"));
+        File file = new File(testSrc, myName + ".java");
+
+        compile(
+            "-proc:only",
+            "-processor", myName,
+            file.getPath());
+    }
+
+    void compile(String... args) throws Exception {
+        StringWriter sw = new StringWriter();
+        PrintWriter pw = new PrintWriter(sw);
+        int rc = com.sun.tools.javac.Main.compile(args, pw);
+        pw.close();
+        String out = sw.toString();
+        if (!out.isEmpty())
+            System.err.println(out);
+        if (rc != 0)
+            throw new Exception("compilation failed unexpectedly: rc=" + rc);
+    }
+
+    //---------------
+
+    @Override
+    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
+        Context context = ((JavacProcessingEnvironment) processingEnv).getContext();
+        Locale locale = context.get(Locale.class);
+        JavacMessages messages = context.get(JavacMessages.messagesKey);
+
+        round++;
+        if (round == 1) {
+            initialLocale = locale;
+            initialMessages = messages;
+        } else {
+            checkEqual("locale", locale, initialLocale);
+            checkEqual("messages", messages, initialMessages);
+        }
+
+        return true;
+    }
+
+    <T> void checkEqual(String label, T actual, T expected) {
+        if (actual != expected)
+            messager.printMessage(Diagnostic.Kind.ERROR,
+                    "Unexpected value for " + label
+                    + "; expected: " + expected
+                    + "; found: " + actual);
+    }
+
+    int round = 0;
+    Locale initialLocale;
+    JavacMessages initialMessages;
+}
--- a/langtools/test/tools/javac/varargs/6199075/T6199075.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javac/varargs/6199075/T6199075.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/langtools/test/tools/javac/varargs/warning/Warn4.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javac/varargs/warning/Warn4.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/langtools/test/tools/javac/varargs/warning/Warn5.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javac/varargs/warning/Warn5.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
--- a/langtools/test/tools/javac/versions/check.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javac/versions/check.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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
--- a/langtools/test/tools/javap/6937244/T6937244A.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javap/6937244/T6937244A.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
@@ -49,8 +49,8 @@
         int count = 0;
 
         for (String line: out.split("[\r\n]+")) {
-            if (line.contains("extends")) {
-                verify(line, "extends java.lang.Object implements java.util.List<java.lang.String>");
+            if (line.contains("implements")) {
+                verify(line, "implements java.util.List<java.lang.String>");
                 count++;
             }
 
--- a/langtools/test/tools/javap/T4880663.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javap/T4880663.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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,7 +23,7 @@
 
 /*
  * @test
- * @bug 4880663 6715757
+ * @bug 4880663 6715757 7031005
  * @summary javap could output whitespace between class name and opening brace
  *          javap prints "extends java.lang.Object"
  */
@@ -39,7 +39,7 @@
     public void run() throws IOException {
         File javaFile = writeTestFile();
         File classFile = compileTestFile(javaFile);
-        verify(classFile, "class Test extends java.lang.Object {");
+        verify(classFile, "class Test {");
 
         if (errors > 0)
             throw new Error(errors + " found.");
--- a/langtools/test/tools/javap/T4880672.java	Tue Apr 19 10:26:18 2011 -0700
+++ b/langtools/test/tools/javap/T4880672.java	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. 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,7 +24,7 @@
 
 /*
  * @test
- * @bug 4880672
+ * @bug 4880672 7031005
  * @summary javap does not output inner interfaces of an interface
  */
 
@@ -39,7 +39,7 @@
 
     void run() {
         verify("java.util.Map", "public interface java.util.Map$Entry");
-        verify("T4880672", "class T4880672$A$B extends java.lang.Object");
+        verify("T4880672", "class T4880672$A$B");
         verify("C", ""); // must not give error if no InnerClasses attribute
         if (errors > 0)
             throw new Error(errors + " found.");
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javap/TestSuperclass.java	Wed Apr 20 09:31:11 2011 -0700
@@ -0,0 +1,178 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 7031005
+ * @summary javap prints "extends java.lang.Object"
+ */
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.net.URI;
+import java.util.Arrays;
+import javax.tools.JavaCompiler;
+import javax.tools.JavaCompiler.CompilationTask;
+import javax.tools.JavaFileObject;
+import javax.tools.SimpleJavaFileObject;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.StandardLocation;
+import javax.tools.ToolProvider;
+
+public class TestSuperclass {
+    enum ClassKind {
+        CLASS("class"),
+        INTERFACE("interface");
+        ClassKind(String keyword) {
+            this.keyword = keyword;
+        }
+        final String keyword;
+    }
+
+    enum GenericKind {
+        NO(""),
+        YES("<T>");
+        GenericKind(String typarams) {
+            this.typarams = typarams;
+        }
+        final String typarams;
+    }
+
+    enum SuperKind {
+        NONE(null),
+        SUPER("Super");
+        SuperKind(String name) {
+            this.name = name;
+        }
+        String extend() {
+            return (name == null) ? "" : "extends " + name;
+        }
+        String decl(ClassKind ck) {
+            return (name == null) ? "" : ck.keyword + " " + name + " { }";
+        }
+        final String name;
+    }
+
+    public static void main(String... args) throws Exception {
+        JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
+        StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
+        int errors = 0;
+
+        for (ClassKind ck: ClassKind.values()) {
+            for (GenericKind gk: GenericKind.values()) {
+                for (SuperKind sk: SuperKind.values()) {
+                    errors += new TestSuperclass(ck, gk, sk).run(comp, fm);
+                }
+            }
+        }
+
+        if (errors > 0)
+            throw new Exception(errors + " errors found");
+    }
+
+    final ClassKind ck;
+    final GenericKind gk;
+    final SuperKind sk;
+
+    TestSuperclass(ClassKind ck, GenericKind gk, SuperKind sk) {
+        this.ck = ck;
+        this.gk = gk;
+        this.sk = sk;
+    }
+
+    int run(JavaCompiler comp, StandardJavaFileManager fm) throws IOException {
+        System.err.println("test: ck:" + ck + " gk:" + gk + " sk:" + sk);
+        File testDir = new File(ck + "-" + gk + "-" + sk);
+        testDir.mkdirs();
+        fm.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(testDir));
+
+        JavaSource js = new JavaSource();
+        System.err.println(js.getCharContent(false));
+        CompilationTask t = comp.getTask(null, fm, null, null, null, Arrays.asList(js));
+        if (!t.call())
+            throw new Error("compilation failed");
+
+        File testClass = new File(testDir, "Test.class");
+        String out = javap(testClass);
+
+        // Extract class sig from first line of Java source
+        String expect = js.source.replaceAll("(?s)^(.* Test[^{]+?) *\\{.*", "$1");
+
+        // Extract class sig from line from javap output
+        String found = out.replaceAll("(?s).*\n(.* Test[^{]+?) *\\{.*", "$1");
+
+        checkEqual("class signature", expect, found);
+
+        return errors;
+    }
+
+    String javap(File file) {
+        StringWriter sw = new StringWriter();
+        PrintWriter pw = new PrintWriter(sw);
+        String[] args = { file.getPath() };
+        int rc = com.sun.tools.javap.Main.run(args, pw);
+        pw.close();
+        String out = sw.toString();
+        if (!out.isEmpty())
+            System.err.println(out);
+        if (rc != 0)
+            throw new Error("javap failed: rc=" + rc);
+        return out;
+    }
+
+    void checkEqual(String label, String expect, String found) {
+        if (!expect.equals(found))
+            error("Unexpected " + label + " found: '" + found + "', expected: '" + expect + "'");
+    }
+
+    void error(String msg) {
+        System.err.println("Error: " + msg);
+        errors++;
+    }
+
+    int errors;
+
+    class JavaSource extends SimpleJavaFileObject {
+        static final String template =
+                  "#CK Test#GK #EK { }\n"
+                + "#SK\n";
+        final String source;
+
+        public JavaSource() {
+            super(URI.create("myfo:/Test.java"), JavaFileObject.Kind.SOURCE);
+            source = template
+                    .replace("#CK", ck.keyword)
+                    .replace("#GK", gk.typarams)
+                    .replace("#EK", sk.extend())
+                    .replace("#SK", sk.decl(ck));
+        }
+
+        @Override
+        public CharSequence getCharContent(boolean ignoreEncodingErrors) {
+            return source;
+        }
+    }
+
+}
--- a/make/Defs-internal.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/make/Defs-internal.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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
--- a/make/corba-rules.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/make/corba-rules.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/make/deploy-rules.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/make/deploy-rules.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/make/hotspot-rules.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/make/hotspot-rules.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/make/install-rules.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/make/install-rules.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2002, 2011, Oracle and/or its affiliates. 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
--- a/make/jaxp-rules.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/make/jaxp-rules.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/make/jaxws-rules.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/make/jaxws-rules.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/make/jdk-rules.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/make/jdk-rules.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/make/jprt.properties	Tue Apr 19 10:26:18 2011 -0700
+++ b/make/jprt.properties	Wed Apr 20 09:31:11 2011 -0700
@@ -323,6 +323,21 @@
     ${jprt.my.windows.i586}-product-c1-jdk_tools2, 		\
     windows_x64_5.2-product-c2-jdk_tools2
 
+# JCK test targets in test/Makefile (no fastdebug & limited c2, windows broken)
+jprt.my.jck.test.target.set=					\
+    solaris_sparc_5.10-product-c1-JCK7TESTRULE, 		\
+    solaris_sparcv9_5.10-product-c2-JCK7TESTRULE, 		\
+    solaris_i586_5.10-product-c1-JCK7TESTRULE, 			\
+    solaris_x64_5.10-product-c2-JCK7TESTRULE, 			\
+    linux_i586_2.6-product-c1-JCK7TESTRULE, 			\
+    linux_x64_2.6-product-c2-JCK7TESTRULE
+
+# JCK testset targets (e.g. jprt submit -testset jck ... )
+jprt.make.rule.jck.test.targets=				\
+    ${jprt.my.jck.test.target.set:JCK7TESTRULE=jck7devtools},   \
+    ${jprt.my.jck.test.target.set:JCK7TESTRULE=jck7runtime},    \
+    ${jprt.my.jck.test.target.set:JCK7TESTRULE=jck7compiler}
+
 # Select list to use (allow for testset to be empty too)
 jprt.make.rule..test.targets=${jprt.make.rule.default.test.targets} 
 jprt.make.rule.test.targets=${jprt.make.rule.${jprt.my.test.set}.test.targets} 
@@ -333,4 +348,3 @@
 # Directories to be excluded from the source bundles
 jprt.bundle.exclude.src.dirs=build dist webrev
 
-
--- a/make/langtools-rules.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/make/langtools-rules.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 2011, Oracle and/or its affiliates. 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
--- a/make/scripts/update_copyright_year.sh	Tue Apr 19 10:26:18 2011 -0700
+++ b/make/scripts/update_copyright_year.sh	Wed Apr 20 09:31:11 2011 -0700
@@ -1,4 +1,4 @@
-#!/bin/sh -f
+#!/bin/bash -f
 
 #
 # Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
@@ -152,14 +152,24 @@
     echo "------------------------------------------------"
     hg log --rev ${changeset} --template '{desc}\n' > ${desc}
     printf "%d: %s\n%s\n" ${index} "${changeset}" "`cat ${desc}|head -1`"
-    if cat ${desc} | fgrep -i "Added tag" > /dev/null ; then
-      printf "  EXCLUDED tag changeset.\n"
-    elif cat ${desc} | fgrep -i rebrand > /dev/null ; then
-      printf "  EXCLUDED rebrand changeset.\n"
-    elif cat ${desc} | fgrep -i copyright > /dev/null ; then
-      printf "  EXCLUDED copyright changeset.\n"
+    if [ "${year}" = "2010" ] ; then
+      if cat ${desc} | fgrep -i "Added tag" > /dev/null ; then
+        printf "  EXCLUDED tag changeset.\n"
+      elif cat ${desc} | fgrep -i rebrand > /dev/null ; then
+        printf "  EXCLUDED rebrand changeset.\n"
+      elif cat ${desc} | fgrep -i copyright > /dev/null ; then
+        printf "  EXCLUDED copyright changeset.\n"
+      else
+        updateChangesetFiles ${changeset}
+      fi
     else
-      updateChangesetFiles ${changeset}
+      if cat ${desc} | fgrep -i "Added tag" > /dev/null ; then
+        printf "  EXCLUDED tag changeset.\n"
+      elif cat ${desc} | fgrep -i "copyright year" > /dev/null ; then
+        printf "  EXCLUDED copyright year changeset.\n"
+      else
+        updateChangesetFiles ${changeset}
+      fi
     fi
     rm -f ${desc}
   done
--- a/make/sponsors-rules.gmk	Tue Apr 19 10:26:18 2011 -0700
+++ b/make/sponsors-rules.gmk	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2006, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2006, 2011, Oracle and/or its affiliates. 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
--- a/test/Makefile	Tue Apr 19 10:26:18 2011 -0700
+++ b/test/Makefile	Wed Apr 20 09:31:11 2011 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2010, 2011, Oracle and/or its affiliates. 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
@@ -73,13 +73,16 @@
 	jdk_rmi \
 	jdk_swing
 
+# These are the current jck test targets in the jdk repository
+JDK_JCK7_LIST = jck7devtools jck7compiler jck7runtime
+
 # Default test target (everything)
 all: $(JDK_TEST_LIST) $(LANGTOOLS_TEST_LIST)
 
 # Test targets
 $(LANGTOOLS_TEST_LIST):
 	@$(NO_STOPPING)$(call SUBDIR_TEST, $(LANGTOOLS_DIR), $(subst langtools_,,$@))
-$(JDK_TEST_LIST) $(JDK_TEST_LIST2):
+$(JDK_TEST_LIST) $(JDK_TEST_LIST2) $(JDK_JCK7_LIST):
 	@$(NO_STOPPING)$(call SUBDIR_TEST, $(JDK_DIR), $@)
 
 clean:
@@ -87,7 +90,9 @@
 ################################################################
 
 # Phony targets (e.g. these are not filenames)
-.PHONY: all clean $(JDK_TEST_LIST) $(LANGTOOLS_TEST_LIST)
+.PHONY: all clean \
+        $(JDK_TEST_LIST) $(JDK_TEST_LIST2) $(JDK_JCK7_LIST) \
+        $(LANGTOOLS_TEST_LIST)
 
 ################################################################