diff options
author | glewis <glewis@FreeBSD.org> | 2014-07-21 01:00:57 +0800 |
---|---|---|
committer | glewis <glewis@FreeBSD.org> | 2014-07-21 01:00:57 +0800 |
commit | 99d86cfc346d25e6d88300358cbc21a45b34e762 (patch) | |
tree | fc6b36c73f9c0c2f50c9a44913c23f5f51dba927 /java | |
parent | 03faae3e798dc27ec0d78ded7d4ead56d6a0973e (diff) | |
download | freebsd-ports-gnome-99d86cfc346d25e6d88300358cbc21a45b34e762.tar.gz freebsd-ports-gnome-99d86cfc346d25e6d88300358cbc21a45b34e762.tar.zst freebsd-ports-gnome-99d86cfc346d25e6d88300358cbc21a45b34e762.zip |
. Update to 8u11. This requires moving the patch file for 8u5 to start
with 8u05 to preserve patch file ordering.
Diffstat (limited to 'java')
-rw-r--r-- | java/openjdk8/Makefile | 5 | ||||
-rw-r--r-- | java/openjdk8/files/patch-8u05-b13 (renamed from java/openjdk8/files/patch-8u5-b13) | 0 | ||||
-rw-r--r-- | java/openjdk8/files/patch-8u11-b13 | 6004 | ||||
-rw-r--r-- | java/openjdk8/files/patch-bsd | 19 |
4 files changed, 6011 insertions, 17 deletions
diff --git a/java/openjdk8/Makefile b/java/openjdk8/Makefile index dcb7a044f050..b4e9b832a4f7 100644 --- a/java/openjdk8/Makefile +++ b/java/openjdk8/Makefile @@ -2,7 +2,6 @@ PORTNAME= openjdk PORTVERSION= ${JDK_MAJOR_VERSION}.${JDK_UPDATE_VERSION}.${JDK_BUILD_NUMBER:S/^0//} -PORTREVISION?= 8 CATEGORIES= java devel MASTER_SITES= http://download.java.net/openjdk/jdk${JDK_MAJOR_VERSION}/promoted/b${JDK_BUILD_NUMBER}/:jdk \ https://adopt-openjdk.ci.cloudbees.com/job/jtreg/${JTREG_JENKINS_BUILD}/artifact/:jtreg \ @@ -61,8 +60,8 @@ NO_CCACHE= yes NOPRECIOUSMAKEVARS= yes JDK_MAJOR_VERSION= 8 -JDK_UPDATE_VERSION= 5 -JDK_BUILD_NUMBER= 13 +JDK_UPDATE_VERSION= 11 +JDK_BUILD_NUMBER= 12 JTREG_VERSION= 4.1 JTREG_BUILD_NUMBER= b08 JTREG_JENKINS_BUILD= 77 diff --git a/java/openjdk8/files/patch-8u5-b13 b/java/openjdk8/files/patch-8u05-b13 index 35ea3209ca3a..35ea3209ca3a 100644 --- a/java/openjdk8/files/patch-8u5-b13 +++ b/java/openjdk8/files/patch-8u05-b13 diff --git a/java/openjdk8/files/patch-8u11-b13 b/java/openjdk8/files/patch-8u11-b13 new file mode 100644 index 000000000000..d93b0e96fe53 --- /dev/null +++ b/java/openjdk8/files/patch-8u11-b13 @@ -0,0 +1,6004 @@ +--- .hgtags Tue Mar 11 13:01:27 2014 -0700 ++++ .hgtags Tue Jun 03 14:19:17 2014 -0700 +@@ -258,6 +258,7 @@ + 6f3357d3dbf83c1ef0098bcb853e3aa3b26f4cb8 jdk8u5-b02 + 794b4365b6884e9a15f0840792539f5821814127 jdk8u5-b03 + c200d6cb184056e44afe7102913004b717896aa3 jdk8u5-b04 ++eb537d7c31e069ac10de0901727515743f7535d2 jdk8u11-b00 + eb537d7c31e069ac10de0901727515743f7535d2 jdk8u5-b05 + 75cdae18810a479cc3c0fe8eb9055d968ae31c63 jdk8u5-b06 + b1585984f29320737ca0da5af029b1225a75c476 jdk8u5-b07 +@@ -266,3 +267,15 @@ + fae51c73a06d71304c9dbff22984ee501812b972 jdk8u5-b10 + dd3bd272ceedbd69fabafc531b6b1e056659f733 jdk8u5-b11 + 3e05b6ae0a1e2bd7352462e9bf8e7262246fb77f jdk8u5-b12 ++d81e301cae70f1f95f4bb976ec053c915dee503a jdk8u5-b13 ++397902f53444be14aa4e261cd47064fac82919c9 jdk8u11-b01 ++6ffd41be920a3e63c5767f36ac725e9e3bf5ec50 jdk8u11-b02 ++3078ab9b8d4ad37cf18bf6a1ed49c8015e70ec73 jdk8u11-b03 ++7be4371ce4ed33cf779606ef3b6256f316898e08 jdk8u11-b04 ++97c6d6a8e5bb3dfc24b9a32711aa0906ea110e23 jdk8u11-b05 ++5ea1a19659427ea813ae4a00ae9d54338c7faec6 jdk8u11-b06 ++fe460afb120e2312769454f4630cccd406ded3f6 jdk8u11-b07 ++81f3392f551c45578cabe29552c670b87170d325 jdk8u11-b08 ++390084098df7bffecd0eb2318facc6f0f9a46b70 jdk8u11-b09 ++6d324f36e2448f486d0caa67f70e5a6cf5ac6c0d jdk8u11-b10 ++f0b9fee1d40a6aae31be4780f70aba02148ec54c jdk8u11-b11 +--- make/Jprt.gmk Tue Mar 11 13:01:27 2014 -0700 ++++ make/Jprt.gmk Tue Jun 03 14:19:17 2014 -0700 +@@ -106,6 +106,9 @@ + ifdef ENABLE_SJAVAC + @$(ECHO) " --enable-sjavac" >> $@.tmp + endif ++ ifdef JDK_UPDATE_VERSION ++ @$(ECHO) " --with-update-version=$(JDK_UPDATE_VERSION)" >> $@.tmp ++ endif + ifeq ($(HOTSPOT_AVAILABLE),false) + ifdef ALT_JDK_IMPORT_PATH + @$(ECHO) " --with-import-hotspot=$(call UnixPath,$(ALT_JDK_IMPORT_PATH)) " >> $@.tmp +--- corba/.hgtags Tue Mar 11 13:01:32 2014 -0700 ++++ corba/.hgtags Tue Jun 03 14:19:19 2014 -0700 +@@ -258,6 +258,7 @@ + c750098a3ef18de28a6d739666559f0333c76c78 jdk8u5-b02 + 3d9b40a53134aa33031bf13581dff9fccade9048 jdk8u5-b03 + 596f4e4c5587c29767345555c4e48a5be0a58b83 jdk8u5-b04 ++1f95c888e5efe010550d95ef59020ddb15876463 jdk8u11-b00 + 1f95c888e5efe010550d95ef59020ddb15876463 jdk8u5-b05 + edfa8bc86fda1b2fd064abbafb4506c80a47587e jdk8u5-b06 + 0a25d1c162bc046aa230577736429935716a2243 jdk8u5-b07 +@@ -266,3 +267,15 @@ + d9031b5525f777299554080d6beb8b077df0a614 jdk8u5-b10 + a2f7b36bfc1bc8df033fe5721b48fac1c3928a5b jdk8u5-b11 + 475b96f6d8cecf720ca9fd6d332dd4bafb0f654c jdk8u5-b12 ++897088ef059f53a8aa73267985666ad319223064 jdk8u5-b13 ++e2cfebaf3b9d0eae06c2d5ee7669180f1723f897 jdk8u11-b01 ++152d1b91e5c5dfc940cccef1bfeae60a6604032a jdk8u11-b02 ++60b073836311720d4f013d4493af2729ebe663f6 jdk8u11-b03 ++4a0c834de2827b753e5ba2972ca3d9125a5c80eb jdk8u11-b04 ++08aa9f55fe5bce1f04cfd2958f71e8df18643e29 jdk8u11-b05 ++d6f052f3ad5d9244452d40236efdabe13be24716 jdk8u11-b06 ++3052e1208958022173a6bf752edb88c7ad188797 jdk8u11-b07 ++fff1b1687ed60d3d398b3d55c0dc71ee3450a601 jdk8u11-b08 ++f846c0c1c330545b8a85fc05a36fa95f48757525 jdk8u11-b09 ++3e4b895d06e8d292f7338aa2155849173722062f jdk8u11-b10 ++ce324096c5626997634df1e5fa68f206909431ab jdk8u11-b11 +--- hotspot/.hgtags Tue Mar 11 13:02:13 2014 -0700 ++++ hotspot/.hgtags Tue Jun 03 14:19:26 2014 -0700 +@@ -426,6 +426,7 @@ + e5561d89fe8bfc79cd6c8fcc36d270cc6a49ec6e jdk8u5-b02 + 2f9eb9fcab6c42c8c84ddb44170ea33235116d84 jdk8u5-b03 + 5ac720d47ab83f8eb2f5fe3641667823a0298f41 jdk8u5-b04 ++b90de55aca30678ab0fec05d6a61bb3468b783d2 jdk8u11-b00 + b90de55aca30678ab0fec05d6a61bb3468b783d2 jdk8u5-b05 + 956c0e048ef29ee9a8026fb05858abe64b4e0ceb jdk8u5-b06 + 46fa2940e6861df18a107b6b83a2df85239e5ec7 jdk8u5-b07 +@@ -434,3 +435,15 @@ + 629267e4f0b5155608edcd71922983be98786bd7 jdk8u5-b10 + 17a75e692af397532e2b296b24f6b9b6c239c633 jdk8u5-b11 + 9b289963cb9a14636fbe8faaa2dd6d3678464a7b jdk8u5-b12 ++8a67179106085689906732013a282efeeb9bd5f4 jdk8u5-b13 ++f0d759a6a2309a1c149d530b29db24eda885f267 jdk8u11-b01 ++3c079aebb516765784dd8097887daadda5a76ac1 jdk8u11-b02 ++0037e964ce486c009984171f004259263628079f jdk8u11-b03 ++4c40343ecdb33fe046833fe4b8970fd29859c4ad jdk8u11-b04 ++a4d44dfb7d30eea54bc172e4429a655454ae0bbf jdk8u11-b05 ++b73ee2b9027c4183e520b2c0884d785ef9e539cf jdk8u11-b06 ++561045d225990b8423af11fd80d2d704954c89c2 jdk8u11-b07 ++af747c288b0f379448bebf56e2982f50caac6972 jdk8u11-b08 ++34de1e8eeabbcc6e690f92766fd619beb9f3f049 jdk8u11-b09 ++7e4ae023277bef5b82361fd985262f4009eb2fe8 jdk8u11-b10 ++e6b7384074325d5a4ede728d6928ecb7f1cc1326 jdk8u11-b11 +--- hotspot/make/hotspot_version Tue Mar 11 13:02:13 2014 -0700 ++++ hotspot/make/hotspot_version Tue Jun 03 14:19:26 2014 -0700 +@@ -34,8 +34,8 @@ + HOTSPOT_VM_COPYRIGHT=Copyright 2014 + + HS_MAJOR_VER=25 +-HS_MINOR_VER=5 +-HS_BUILD_NUMBER=02 ++HS_MINOR_VER=11 ++HS_BUILD_NUMBER=03 + + JDK_MAJOR_VER=1 + JDK_MINOR_VER=8 +--- hotspot/src/os/bsd/vm/os_bsd.cpp Tue Mar 11 13:02:13 2014 -0700 ++++ hotspot/src/os/bsd/vm/os_bsd.cpp Tue Jun 03 14:19:26 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -1115,10 +1115,6 @@ + ::abort(); + } + +-// unused on bsd for now. +-void os::set_error_file(const char *logfile) {} +- +- + // This method is a copy of JDK's sysGetLastErrorString + // from src/solaris/hpi/src/system_md.c + +@@ -1808,6 +1804,7 @@ + // determine if this is a legacy image or modules image + // modules image doesn't have "jre" subdirectory + len = strlen(buf); ++ assert(len < buflen, "Ran out of buffer space"); + jrelib_p = buf + len; + + // Add the appropriate library subdir +@@ -1841,7 +1838,7 @@ + } + } + +- strcpy(saved_jvm_path, buf); ++ strncpy(saved_jvm_path, buf, MAXPATHLEN); + } + + void os::print_jni_name_prefix_on(outputStream* st, int args_size) { +--- hotspot/src/os/linux/vm/os_linux.cpp Tue Mar 11 13:02:13 2014 -0700 ++++ hotspot/src/os/linux/vm/os_linux.cpp Tue Jun 03 14:19:26 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -1572,9 +1572,6 @@ + ::abort(); + } + +-// unused on linux for now. +-void os::set_error_file(const char *logfile) {} +- + + // This method is a copy of JDK's sysGetLastErrorString + // from src/solaris/hpi/src/system_md.c +@@ -2399,6 +2396,7 @@ + // determine if this is a legacy image or modules image + // modules image doesn't have "jre" subdirectory + len = strlen(buf); ++ assert(len < buflen, "Ran out of buffer room"); + jrelib_p = buf + len; + snprintf(jrelib_p, buflen-len, "/jre/lib/%s", cpu_arch); + if (0 != access(buf, F_OK)) { +@@ -2419,7 +2417,7 @@ + } + } + +- strcpy(saved_jvm_path, buf); ++ strncpy(saved_jvm_path, buf, MAXPATHLEN); + } + + void os::print_jni_name_prefix_on(outputStream* st, int args_size) { +--- hotspot/src/os/solaris/vm/os_solaris.cpp Tue Mar 11 13:02:13 2014 -0700 ++++ hotspot/src/os/solaris/vm/os_solaris.cpp Tue Jun 03 14:19:26 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -1788,9 +1788,6 @@ + ::abort(); // dump core (for debugging) + } + +-// unused +-void os::set_error_file(const char *logfile) {} +- + // DLL functions + + const char* os::dll_file_extension() { return ".so"; } +@@ -2474,6 +2471,7 @@ + // determine if this is a legacy image or modules image + // modules image doesn't have "jre" subdirectory + len = strlen(buf); ++ assert(len < buflen, "Ran out of buffer space"); + jrelib_p = buf + len; + snprintf(jrelib_p, buflen-len, "/jre/lib/%s", cpu_arch); + if (0 != access(buf, F_OK)) { +@@ -2492,7 +2490,7 @@ + } + } + +- strcpy(saved_jvm_path, buf); ++ strncpy(saved_jvm_path, buf, MAXPATHLEN); + } + + +--- hotspot/src/os/windows/vm/os_windows.cpp Tue Mar 11 13:02:13 2014 -0700 ++++ hotspot/src/os/windows/vm/os_windows.cpp Tue Jun 03 14:19:26 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -1819,7 +1819,8 @@ + // libjvm.so is installed there (append a fake suffix + // hotspot/libjvm.so). + char* java_home_var = ::getenv("JAVA_HOME"); +- if (java_home_var != NULL && java_home_var[0] != 0) { ++ if (java_home_var != NULL && java_home_var[0] != 0 && ++ strlen(java_home_var) < (size_t)buflen) { + + strncpy(buf, java_home_var, buflen); + +@@ -1837,9 +1838,9 @@ + } + + if(buf[0] == '\0') { +- GetModuleFileName(vm_lib_handle, buf, buflen); +- } +- strcpy(saved_jvm_path, buf); ++ GetModuleFileName(vm_lib_handle, buf, buflen); ++ } ++ strncpy(saved_jvm_path, buf, MAX_PATH); + } + + +@@ -2290,19 +2291,8 @@ + } + + */ +-#endif //_WIN64 +- +- +-// Fatal error reporting is single threaded so we can make this a +-// static and preallocated. If it's more than MAX_PATH silently ignore +-// it. +-static char saved_error_file[MAX_PATH] = {0}; +- +-void os::set_error_file(const char *logfile) { +- if (strlen(logfile) <= MAX_PATH) { +- strncpy(saved_error_file, logfile, MAX_PATH); +- } +-} ++#endif // _WIN64 ++ + + static inline void report_error(Thread* t, DWORD exception_code, + address addr, void* siginfo, void* context) { +--- hotspot/src/share/vm/classfile/classFileParser.cpp Tue Mar 11 13:02:13 2014 -0700 ++++ hotspot/src/share/vm/classfile/classFileParser.cpp Tue Jun 03 14:19:26 2014 -0700 +@@ -931,7 +931,7 @@ + "Wrong size %u for field's Signature attribute in class file %s", + attribute_length, CHECK); + } +- generic_signature_index = cfs->get_u2(CHECK); ++ generic_signature_index = parse_generic_signature_attribute(CHECK); + } else if (attribute_name == vmSymbols::tag_runtime_visible_annotations()) { + runtime_visible_annotations_length = attribute_length; + runtime_visible_annotations = cfs->get_u1_buffer(); +@@ -2305,8 +2305,7 @@ + "Invalid Signature attribute length %u in class file %s", + method_attribute_length, CHECK_(nullHandle)); + } +- cfs->guarantee_more(2, CHECK_(nullHandle)); // generic_signature_index +- generic_signature_index = cfs->get_u2_fast(); ++ generic_signature_index = parse_generic_signature_attribute(CHECK_(nullHandle)); + } else if (method_attribute_name == vmSymbols::tag_runtime_visible_annotations()) { + runtime_visible_annotations_length = method_attribute_length; + runtime_visible_annotations = cfs->get_u1_buffer(); +@@ -2616,6 +2615,17 @@ + return method_ordering; + } + ++// Parse generic_signature attribute for methods and fields ++u2 ClassFileParser::parse_generic_signature_attribute(TRAPS) { ++ ClassFileStream* cfs = stream(); ++ cfs->guarantee_more(2, CHECK_0); // generic_signature_index ++ u2 generic_signature_index = cfs->get_u2_fast(); ++ check_property( ++ valid_symbol_at(generic_signature_index), ++ "Invalid Signature attribute at constant pool index %u in class file %s", ++ generic_signature_index, CHECK_0); ++ return generic_signature_index; ++} + + void ClassFileParser::parse_classfile_sourcefile_attribute(TRAPS) { + ClassFileStream* cfs = stream(); +@@ -2770,18 +2780,19 @@ + ClassFileStream* cfs = stream(); + u1* current_start = cfs->current(); + +- cfs->guarantee_more(2, CHECK); // length +- int attribute_array_length = cfs->get_u2_fast(); +- +- guarantee_property(_max_bootstrap_specifier_index < attribute_array_length, +- "Short length on BootstrapMethods in class file %s", +- CHECK); +- + guarantee_property(attribute_byte_length > sizeof(u2), + "Invalid BootstrapMethods attribute length %u in class file %s", + attribute_byte_length, + CHECK); + ++ cfs->guarantee_more(attribute_byte_length, CHECK); ++ ++ int attribute_array_length = cfs->get_u2_fast(); ++ ++ guarantee_property(_max_bootstrap_specifier_index < attribute_array_length, ++ "Short length on BootstrapMethods in class file %s", ++ CHECK); ++ + // The attribute contains a counted array of counted tuples of shorts, + // represending bootstrap specifiers: + // length*{bootstrap_method_index, argument_count*{argument_index}} +--- hotspot/src/share/vm/classfile/classFileParser.hpp Tue Mar 11 13:02:13 2014 -0700 ++++ hotspot/src/share/vm/classfile/classFileParser.hpp Tue Jun 03 14:19:26 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * 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,6 +266,7 @@ + u1* parse_stackmap_table(u4 code_attribute_length, TRAPS); + + // Classfile attribute parsing ++ u2 parse_generic_signature_attribute(TRAPS); + void parse_classfile_sourcefile_attribute(TRAPS); + void parse_classfile_source_debug_extension_attribute(int length, TRAPS); + u2 parse_classfile_inner_classes_attribute(u1* inner_classes_attribute_start, +--- hotspot/src/share/vm/classfile/stackMapTable.cpp Tue Mar 11 13:02:13 2014 -0700 ++++ hotspot/src/share/vm/classfile/stackMapTable.cpp Tue Jun 03 14:19:26 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -134,6 +134,7 @@ + } + // check if uninitialized objects exist on backward branches + check_new_object(frame, target, CHECK_VERIFY(frame->verifier())); ++ frame->verifier()->update_furthest_jump(target); + } + + void StackMapTable::check_new_object( +--- hotspot/src/share/vm/classfile/verifier.cpp Tue Mar 11 13:02:13 2014 -0700 ++++ hotspot/src/share/vm/classfile/verifier.cpp Tue Jun 03 14:19:26 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -632,6 +632,9 @@ + bool no_control_flow = false; // Set to true when there is no direct control + // flow from current instruction to the next + // instruction in sequence ++ ++ set_furthest_jump(0); ++ + Bytecodes::Code opcode; + while (!bcs.is_last_bytecode()) { + // Check for recursive re-verification before each bytecode. +@@ -2245,6 +2248,29 @@ + "Bad <init> method call"); + return; + } ++ ++ // Make sure that this call is not jumped over. ++ if (bci < furthest_jump()) { ++ verify_error(ErrorContext::bad_code(bci), ++ "Bad <init> method call from inside of a branch"); ++ return; ++ } ++ ++ // Make sure that this call is not done from within a TRY block because ++ // that can result in returning an incomplete object. Simply checking ++ // (bci >= start_pc) also ensures that this call is not done after a TRY ++ // block. That is also illegal because this call must be the first Java ++ // statement in the constructor. ++ ExceptionTable exhandlers(_method()); ++ int exlength = exhandlers.length(); ++ for(int i = 0; i < exlength; i++) { ++ if (bci >= exhandlers.start_pc(i)) { ++ verify_error(ErrorContext::bad_code(bci), ++ "Bad <init> method call from after the start of a try block"); ++ return; ++ } ++ } ++ + current_frame->initialize_object(type, current_type()); + *this_uninit = true; + } else if (type.is_uninitialized()) { +@@ -2281,16 +2307,19 @@ + Method* m = InstanceKlass::cast(ref_klass)->uncached_lookup_method( + vmSymbols::object_initializer_name(), + cp->signature_ref_at(bcs->get_index_u2())); +- instanceKlassHandle mh(THREAD, m->method_holder()); +- if (m->is_protected() && !mh->is_same_class_package(_klass())) { +- bool assignable = current_type().is_assignable_from( +- objectref_type, this, CHECK_VERIFY(this)); +- if (!assignable) { +- verify_error(ErrorContext::bad_type(bci, +- TypeOrigin::cp(new_class_index, objectref_type), +- TypeOrigin::implicit(current_type())), +- "Bad access to protected <init> method"); +- return; ++ // Do nothing if method is not found. Let resolution detect the error. ++ if (m != NULL) { ++ instanceKlassHandle mh(THREAD, m->method_holder()); ++ if (m->is_protected() && !mh->is_same_class_package(_klass())) { ++ bool assignable = current_type().is_assignable_from( ++ objectref_type, this, CHECK_VERIFY(this)); ++ if (!assignable) { ++ verify_error(ErrorContext::bad_type(bci, ++ TypeOrigin::cp(new_class_index, objectref_type), ++ TypeOrigin::implicit(current_type())), ++ "Bad access to protected <init> method"); ++ return; ++ } + } + } + } +--- hotspot/src/share/vm/classfile/verifier.hpp Tue Mar 11 13:02:13 2014 -0700 ++++ hotspot/src/share/vm/classfile/verifier.hpp Tue Jun 03 14:19:26 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -258,6 +258,9 @@ + + ErrorContext _error_context; // contains information about an error + ++ // Used to detect illegal jumps over calls to super() nd this() in ctors. ++ int32_t _furthest_jump; ++ + void verify_method(methodHandle method, TRAPS); + char* generate_code_data(methodHandle m, u4 code_length, TRAPS); + void verify_exception_handler_table(u4 code_length, char* code_data, +@@ -403,6 +406,20 @@ + Symbol* create_temporary_symbol(const char *s, int length, TRAPS); + + TypeOrigin ref_ctx(const char* str, TRAPS); ++ ++ // Keep track of the furthest branch done in a method to make sure that ++ // there are no branches over calls to super() or this() from inside of ++ // a constructor. ++ int32_t furthest_jump() { return _furthest_jump; } ++ ++ void set_furthest_jump(int32_t target) { ++ _furthest_jump = target; ++ } ++ ++ void update_furthest_jump(int32_t target) { ++ if (target > _furthest_jump) _furthest_jump = target; ++ } ++ + }; + + inline int ClassVerifier::change_sig_to_verificationType( +--- hotspot/src/share/vm/compiler/compileBroker.cpp Tue Mar 11 13:02:13 2014 -0700 ++++ hotspot/src/share/vm/compiler/compileBroker.cpp Tue Jun 03 14:19:26 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -2089,6 +2089,7 @@ + ResourceMark rm; + char* method_name = method->name()->as_C_string(); + strncpy(_last_method_compiled, method_name, CompileBroker::name_buffer_length); ++ _last_method_compiled[CompileBroker::name_buffer_length - 1] = '\0'; // ensure null terminated + char current_method[CompilerCounters::cmname_buffer_length]; + size_t maxLen = CompilerCounters::cmname_buffer_length; + +--- hotspot/src/share/vm/oops/klassVtable.cpp Tue Mar 11 13:02:13 2014 -0700 ++++ hotspot/src/share/vm/oops/klassVtable.cpp Tue Jun 03 14:19:26 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * 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,6 +249,17 @@ + // For bytecodes not produced by javac together it is possible that a method does not override + // the superclass's method, but might indirectly override a super-super class's vtable entry + // If none found, return a null superk, else return the superk of the method this does override ++// For public and protected methods: if they override a superclass, they will ++// also be overridden themselves appropriately. ++// Private methods do not override and are not overridden. ++// Package Private methods are trickier: ++// e.g. P1.A, pub m ++// P2.B extends A, package private m ++// P1.C extends B, public m ++// P1.C.m needs to override P1.A.m and can not override P2.B.m ++// Therefore: all package private methods need their own vtable entries for ++// them to be the root of an inheritance overriding decision ++// Package private methods may also override other vtable entries + InstanceKlass* klassVtable::find_transitive_override(InstanceKlass* initialsuper, methodHandle target_method, + int vtable_index, Handle target_loader, Symbol* target_classname, Thread * THREAD) { + InstanceKlass* superk = initialsuper; +@@ -396,8 +407,11 @@ + target_classname, THREAD)) + != (InstanceKlass*)NULL)))) + { +- // overriding, so no new entry +- allocate_new = false; ++ // Package private methods always need a new entry to root their own ++ // overriding. They may also override other methods. ++ if (!target_method()->is_package_private()) { ++ allocate_new = false; ++ } + + if (checkconstraints) { + // Override vtable entry if passes loader constraint check +@@ -541,8 +555,9 @@ + AccessFlags class_flags, + TRAPS) { + if (class_flags.is_interface()) { +- // Interfaces do not use vtables, so there is no point to assigning +- // a vtable index to any of their methods. If we refrain from doing this, ++ // Interfaces do not use vtables, except for java.lang.Object methods, ++ // so there is no point to assigning ++ // a vtable index to any of their local methods. If we refrain from doing this, + // we can use Method::_vtable_index to hold the itable index + return false; + } +@@ -580,6 +595,12 @@ + return true; + } + ++ // Package private methods always need a new entry to root their own ++ // overriding. This allows transitive overriding to work. ++ if (target_method()->is_package_private()) { ++ return true; ++ } ++ + // search through the super class hierarchy to see if we need + // a new entry + ResourceMark rm; +--- hotspot/src/share/vm/runtime/os.hpp Tue Mar 11 13:02:13 2014 -0700 ++++ hotspot/src/share/vm/runtime/os.hpp Tue Jun 03 14:19:26 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -470,9 +470,6 @@ + // run cmd in a separate process and return its exit code; or -1 on failures + static int fork_and_exec(char *cmd); + +- // Set file to send error reports. +- static void set_error_file(const char *logfile); +- + // os::exit() is merged with vm_exit() + // static void exit(int num); + +--- hotspot/src/share/vm/utilities/events.cpp Tue Mar 11 13:02:13 2014 -0700 ++++ hotspot/src/share/vm/utilities/events.cpp Tue Jun 03 14:19:26 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -82,7 +82,7 @@ + va_start(ap, format); + // Save a copy of begin message and log it. + _buffer.printv(format, ap); +- Events::log(NULL, _buffer); ++ Events::log(NULL, "%s", (const char*)_buffer); + va_end(ap); + } + } +@@ -91,6 +91,6 @@ + if (LogEvents) { + // Append " done" to the begin message and log it + _buffer.append(" done"); +- Events::log(NULL, _buffer); ++ Events::log(NULL, "%s", (const char*)_buffer); + } + } +--- hotspot/src/share/vm/utilities/vmError.cpp Tue Mar 11 13:02:13 2014 -0700 ++++ hotspot/src/share/vm/utilities/vmError.cpp Tue Jun 03 14:19:26 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -975,7 +975,6 @@ + if (fd != -1) { + out.print_raw("# An error report file with more information is saved as:\n# "); + out.print_raw_cr(buffer); +- os::set_error_file(buffer); + + log.set_fd(fd); + } else { +--- jaxp/.hgtags Tue Mar 11 13:02:28 2014 -0700 ++++ jaxp/.hgtags Tue Jun 03 14:19:32 2014 -0700 +@@ -258,6 +258,9 @@ + bd97ff5f82588c627869218df02a9c2dbb9402d0 jdk8u5-b02 + 195b74b3e57905b6d6c9ed9b32139c6781ba7d28 jdk8u5-b03 + 106fdcde4b8a6981be13dac34a3de99d6fece97c jdk8u5-b04 ++8f859b1b0f0b18ee7e231d6887b18b5721c2404e jdk8u11-b00 ++57c695af3fe838c36eaef647f2af543cd60533e4 jdk8u5-b05 ++0000000000000000000000000000000000000000 jdk8u5-b05 + 8f859b1b0f0b18ee7e231d6887b18b5721c2404e jdk8u5-b05 + e22bc548b58a695eede0304399777314ae473562 jdk8u5-b06 + 0f96584b02b399df706bec2052a7fe48bdc6058b jdk8u5-b07 +@@ -266,3 +269,15 @@ + 4b32ee8d711251e90ade1d958a51e134c3d387c9 jdk8u5-b10 + c17a827bec287f4c7565c72c195667e52154772b jdk8u5-b11 + 0e5317cbe451d57f9ffcbb835de07fe553a8aa34 jdk8u5-b12 ++a303ebb338518a716c267b17986634e3574e7cfe jdk8u5-b13 ++3e1631f54539cc21770659dcf61440693ac5fa79 jdk8u11-b01 ++6eaf565691a13328e82473d70dfd0feb8fb2f5e8 jdk8u11-b02 ++36d713c3339ad945521d298eeb21c67ee856344e jdk8u11-b03 ++a25020bdca11acad85454a35a9912fd1b4168d83 jdk8u11-b04 ++65e5ee249ebc81c0ccfff23946a0a2a6d4becdcc jdk8u11-b05 ++beafeb0b7a178a3906bcb7dcf46f3c9a9c9717c5 jdk8u11-b06 ++1923c759e5ed7e9a92512797269d997cae1135b8 jdk8u11-b07 ++61faafa45502e4e6db6ce9026d2a7f2121dcae3f jdk8u11-b08 ++a01fd971ef667977a131f5fbaaee300e500424c3 jdk8u11-b09 ++1d894a9d308c4b3a64e876097c2e0e1e577cfd73 jdk8u11-b10 ++41edd71af41f1100b965e0fab88f97d3c130e3de jdk8u11-b11 +--- jaxp/src/com/sun/org/apache/xalan/internal/XalanConstants.java Tue Mar 11 13:02:28 2014 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/XalanConstants.java Tue Jun 03 14:19:32 2014 -0700 +@@ -91,6 +91,13 @@ + */ + public static final String JDK_XML_NAME_LIMIT = + ORACLE_JAXP_PROPERTY_PREFIX + "maxXMLNameLimit"; ++ ++ /** ++ * JDK maxElementDepth limit ++ */ ++ public static final String JDK_MAX_ELEMENT_DEPTH = ++ ORACLE_JAXP_PROPERTY_PREFIX + "maxElementDepth"; ++ + /** + * JDK property indicating whether the parser shall print out entity + * count information +@@ -139,6 +146,11 @@ + */ + public static final String SP_XML_NAME_LIMIT = "jdk.xml.maxXMLNameLimit"; + ++ /** ++ * JDK maxElementDepth limit ++ */ ++ public static final String SP_MAX_ELEMENT_DEPTH = "jdk.xml.maxElementDepth"; ++ + //legacy System Properties + public final static String ENTITY_EXPANSION_LIMIT = "entityExpansionLimit"; + public static final String ELEMENT_ATTRIBUTE_LIMIT = "elementAttributeLimit" ; +--- jaxp/src/com/sun/org/apache/xalan/internal/utils/XMLSecurityManager.java Tue Mar 11 13:02:28 2014 -0700 ++++ jaxp/src/com/sun/org/apache/xalan/internal/utils/XMLSecurityManager.java Tue Jun 03 14:19:32 2014 -0700 +@@ -76,7 +76,9 @@ + GENERAL_ENTITY_SIZE_LIMIT(XalanConstants.JDK_GENERAL_ENTITY_SIZE_LIMIT, + XalanConstants.SP_GENERAL_ENTITY_SIZE_LIMIT, 0, 0), + PARAMETER_ENTITY_SIZE_LIMIT(XalanConstants.JDK_PARAMETER_ENTITY_SIZE_LIMIT, +- XalanConstants.SP_PARAMETER_ENTITY_SIZE_LIMIT, 0, 1000000); ++ XalanConstants.SP_PARAMETER_ENTITY_SIZE_LIMIT, 0, 1000000), ++ MAX_ELEMENT_DEPTH_LIMIT(XalanConstants.JDK_MAX_ELEMENT_DEPTH, ++ XalanConstants.SP_MAX_ELEMENT_DEPTH, 0, 0); + + final String apiProperty; + final String systemProperty; +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/Constants.java Tue Mar 11 13:02:28 2014 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/Constants.java Tue Jun 03 14:19:32 2014 -0700 +@@ -252,6 +252,13 @@ + */ + public static final String JDK_XML_NAME_LIMIT = + ORACLE_JAXP_PROPERTY_PREFIX + "maxXMLNameLimit"; ++ ++ /** ++ * JDK maxElementDepth limit ++ */ ++ public static final String JDK_MAX_ELEMENT_DEPTH = ++ ORACLE_JAXP_PROPERTY_PREFIX + "maxElementDepth"; ++ + /** + * JDK property to allow printing out information from the limit analyzer + */ +@@ -297,6 +304,11 @@ + */ + public static final String SP_XML_NAME_LIMIT = "jdk.xml.maxXMLNameLimit"; + ++ /** ++ * JDK maxElementDepth limit ++ */ ++ public static final String SP_MAX_ELEMENT_DEPTH = "jdk.xml.maxElementDepth"; ++ + //legacy System Properties + public final static String ENTITY_EXPANSION_LIMIT = "entityExpansionLimit"; + public static final String ELEMENT_ATTRIBUTE_LIMIT = "elementAttributeLimit" ; +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java Tue Mar 11 13:02:28 2014 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java Tue Jun 03 14:19:32 2014 -0700 +@@ -1309,6 +1309,7 @@ + + fAttributes.removeAllAttributes(); + ++ checkDepth(rawname); + if(!seekCloseOfStartTag()){ + fReadingAttributes = true; + fAttributeCacheUsedCount =0; +@@ -1913,6 +1914,21 @@ + // utility methods + + /** ++ * Check if the depth exceeds the maxElementDepth limit ++ * @param elementName name of the current element ++ */ ++ void checkDepth(String elementName) { ++ fLimitAnalyzer.addValue(Limit.MAX_ELEMENT_DEPTH_LIMIT, elementName, fElementStack.fDepth); ++ if (fSecurityManager.isOverLimit(Limit.MAX_ELEMENT_DEPTH_LIMIT,fLimitAnalyzer)) { ++ fSecurityManager.debugPrint(fLimitAnalyzer); ++ reportFatalError("MaxElementDepthLimit", new Object[]{elementName, ++ fLimitAnalyzer.getTotalValue(Limit.MAX_ELEMENT_DEPTH_LIMIT), ++ fSecurityManager.getLimit(Limit.MAX_ELEMENT_DEPTH_LIMIT), ++ "maxElementDepth"}); ++ } ++ } ++ ++ /** + * Calls document handler with a single character resulting from + * built-in entity resolution. + * +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLNSDocumentScannerImpl.java Tue Mar 11 13:02:28 2014 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLNSDocumentScannerImpl.java Tue Jun 03 14:19:32 2014 -0700 +@@ -220,6 +220,7 @@ + fCurrentElement = fElementQName; + + String rawname = fElementQName.rawname; ++ checkDepth(rawname); + if (fBindNamespaces) { + fNamespaceContext.pushContext(); + if (fScannerState == SCANNER_STATE_ROOT_ELEMENT) { +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages.properties Tue Mar 11 13:02:28 2014 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages.properties Tue Jun 03 14:19:32 2014 -0700 +@@ -299,4 +299,5 @@ + MaxEntitySizeLimit=JAXP00010003: The length of entity \"{0}\" is \"{1}\" that exceeds the \"{2}\" limit set by \"{3}\". + TotalEntitySizeLimit=JAXP00010004: The accumulated size \"{0}\" of entities exceeded the \"{1}\" limit set by \"{2}\". + MaxXMLNameLimit=JAXP00010005: The name \"{0}\" exceeded the \"{1}\" limit set by \"{2}\". ++ MaxElementDepthLimit=JAXP00010006: The element \"{0}\" has a depth of \"{1}\" that exceeds the limit \"{2}\" set by \"{3}\". + +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties Tue Mar 11 13:02:28 2014 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties Tue Jun 03 14:19:32 2014 -0700 +@@ -251,7 +251,7 @@ + NMTOKENInvalid = Attributwert "{0}" mit dem Typ NMTOKEN muss ein Namenstoken sein. + NMTOKENSInvalid = Attributwert "{0}" mit dem Typ NMTOKENS muss mindestens ein Namenstoken sein. + NoNotationOnEmptyElement = Elementtyp "{0}", der als EMPTY deklariert wurde, kann nicht das Attribut "{1}" mit dem Typ NOTATION deklarieren. +- RootElementTypeMustMatchDoctypedecl = Dokument-Root-Element "{1}"muss mit DOCTYPE-Root "{0}" \u00FCbereinstimmen. ++ RootElementTypeMustMatchDoctypedecl = Document Root-Element "{1}"muss mit DOCTYPE-Root "{0}" \u00FCbereinstimmen. + UndeclaredElementInContentSpec = Contentmodell des Elements "{0}" verweist auf das nicht deklarierte Element "{1}". + UniqueNotationName = Deklaration f\u00FCr die Notation "{0}" ist nicht eindeutig. Ein jeweiliger Name darf nicht in mehreren Notationsdeklarationen deklariert werden. + ENTITYFailedInitializeGrammar = ENTITYDatatype-Validator: Nicht erfolgreich. Initialisierungsmethode muss mit einer g\u00FCltigen Grammatikreferenz aufgerufen werden. \t +@@ -299,4 +299,5 @@ + MaxEntitySizeLimit=JAXP00010003: Die L\u00E4nge von Entit\u00E4t "{0}" ist "{1}" und \u00FCberschreitet den Grenzwert "{2}", der von "{3}" festgelegt wurde. + TotalEntitySizeLimit=JAXP00010004: Die akkumulierte Gr\u00F6\u00DFe "{0}" der Entit\u00E4ten \u00FCberschreitet den Grenzwert "{1}", der von "{2}" festgelegt wurde. + MaxXMLNameLimit=JAXP00010005: Der Name "{0}" \u00FCberschreitet den Grenzwert "{1}", der von "{2}" festgelegt wurde. ++ MaxElementDepthLimit=JAXP00010006: Die Tiefe von Element "{0}" ist "{1}" und \u00FCberschreitet den Grenzwert "{2}", der von "{3}" festgelegt wurde. + +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_es.properties Tue Mar 11 13:02:28 2014 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_es.properties Tue Jun 03 14:19:32 2014 -0700 +@@ -299,4 +299,5 @@ + MaxEntitySizeLimit=JAXP00010003: la longitud de la entidad "{0}" es "{1}", que excede el l\u00EDmite de "{2}" que ha definido "{3}". + TotalEntitySizeLimit=JAXP00010004: el tama\u00F1o acumulado "{0}" de las entidades ha excedido el l\u00EDmite de "{1}" que ha definido "{2}". + MaxXMLNameLimit=JAXP00010005: el nombre "{0}" ha excedido el l\u00EDmite de "{1}" que ha definido "{2}". ++ MaxElementDepthLimit=JAXP00010006: El elemento "{0}" tiene una profundidad de "{1}" que excede el l\u00EDmite "{2}" definido por "{3}". + +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_fr.properties Tue Mar 11 13:02:28 2014 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_fr.properties Tue Jun 03 14:19:32 2014 -0700 +@@ -299,4 +299,5 @@ + MaxEntitySizeLimit=JAXP00010003 : La longueur de l''entit\u00E9 "{0}" est de "{1}". Cette valeur d\u00E9passe la limite de "{2}" d\u00E9finie par "{3}". + TotalEntitySizeLimit=JAXP00010004 : La taille cumul\u00E9e des entit\u00E9s ("{0}") d\u00E9passe la limite de "{1}" d\u00E9finie par "{2}". + MaxXMLNameLimit=JAXP00010005 : le nom "{0}" d\u00E9passe la limite de "{1}" d\u00E9finie par "{2}". ++ MaxElementDepthLimit=JAXP00010006 : l''\u00E9l\u00E9ment "{0}" a une profondeur de "{1}" qui d\u00E9passe la limite de "{2}" d\u00E9finie par "{3}". + +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_it.properties Tue Mar 11 13:02:28 2014 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_it.properties Tue Jun 03 14:19:32 2014 -0700 +@@ -299,4 +299,5 @@ + MaxEntitySizeLimit=JAXP00010003: la lunghezza dell''entit\u00E0 "{0}" \u00E8 "{1}". Tale valore supera il limite "{2}" definito da "{3}". + TotalEntitySizeLimit=JAXP00010004: le dimensioni accumulate "{0}" delle entit\u00E0 supera il limite "{1}" definito da "{2}". + MaxXMLNameLimit=JAXP00010005: il nome "{0}" supera il limite "{1}" definito da "{2}". ++ MaxElementDepthLimit=JAXP00010006: la profondit\u00E0 dell''elemento "{0}" \u00E8 "{1}". Tale valore supera il limite "{2}" definito da "{3}". + +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ja.properties Tue Mar 11 13:02:28 2014 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ja.properties Tue Jun 03 14:19:32 2014 -0700 +@@ -122,7 +122,7 @@ + ExpectedByte = {1}\u30D0\u30A4\u30C8\u306EUTF-8\u30B7\u30FC\u30B1\u30F3\u30B9\u306E\u30D0\u30A4\u30C8{0}\u304C\u5FC5\u8981\u3067\u3059\u3002 + InvalidHighSurrogate = UTF-8\u30B7\u30FC\u30B1\u30F3\u30B9\u306E\u4E0A\u4F4D\u30B5\u30ED\u30B2\u30FC\u30C8\u30FB\u30D3\u30C3\u30C8\u306E\u4E0A\u9650\u306F0x10\u3067\u3059\u304C\u30010x{0}\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F\u3002 + OperationNotSupported = \u64CD\u4F5C"{0}"\u306F{1}\u30EA\u30FC\u30C0\u30FC\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 +- InvalidASCII = \u30D0\u30A4\u30C8"{0}"\u306F\u3001(7\u30D3\u30C3\u30C8) ASCII\u30AD\u30E3\u30E9\u30AF\u30BF\u30FB\u30BB\u30C3\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002 ++ InvalidASCII = \u30D0\u30A4\u30C8"{0}"\u306F\u3001(7\u30D3\u30C3\u30C8) ASCII\u6587\u5B57\u30BB\u30C3\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002 + CharConversionFailure = \u7279\u5B9A\u306E\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u3067\u3042\u308B\u3068\u78BA\u5B9A\u3055\u308C\u305F\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u306B\u306F\u3001\u305D\u306E\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u3067\u4E0D\u6B63\u306A\u30B7\u30FC\u30B1\u30F3\u30B9\u3092\u542B\u3081\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002 + + # DTD Messages +@@ -299,4 +299,5 @@ + MaxEntitySizeLimit=JAXP00010003: \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3"{0}"\u306E\u9577\u3055\u306F"{1}"\u3067\u3001"{3}"\u3067\u8A2D\u5B9A\u3055\u308C\u305F\u5236\u9650"{2}"\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002 + TotalEntitySizeLimit=JAXP00010004: \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u306E\u7D2F\u7A4D\u30B5\u30A4\u30BA"{0}"\u306F\u3001"{2}"\u3067\u8A2D\u5B9A\u3055\u308C\u305F\u5236\u9650"{1}"\u3092\u8D85\u3048\u307E\u3057\u305F\u3002 + MaxXMLNameLimit=JAXP00010005: \u540D\u524D"{0}"\u306F\u3001"{2}"\u3067\u8A2D\u5B9A\u3055\u308C\u305F\u5236\u9650"{1}"\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002 ++ MaxElementDepthLimit=JAXP00010006: \u8981\u7D20"{0}"\u306E\u6DF1\u3055\u306F"{1}"\u3067\u3001"{3}"\u3067\u8A2D\u5B9A\u3055\u308C\u305F\u5236\u9650"{2}"\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002 + +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ko.properties Tue Mar 11 13:02:28 2014 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ko.properties Tue Jun 03 14:19:32 2014 -0700 +@@ -299,4 +299,5 @@ + MaxEntitySizeLimit=JAXP00010003: "{0}" \uC5D4\uD2F0\uD2F0\uC758 \uAE38\uC774\uAC00 "{3}"\uC5D0\uC11C \uC124\uC815\uB41C "{2}" \uC81C\uD55C\uC744 \uCD08\uACFC\uD558\uB294 "{1}"\uC785\uB2C8\uB2E4. + TotalEntitySizeLimit=JAXP00010004: \uC5D4\uD2F0\uD2F0\uC758 \uB204\uC801 \uD06C\uAE30 "{0}"\uC774(\uAC00) "{2}"\uC5D0\uC11C \uC124\uC815\uB41C "{1}" \uC81C\uD55C\uC744 \uCD08\uACFC\uD588\uC2B5\uB2C8\uB2E4. + MaxXMLNameLimit=JAXP00010005: "{0}" \uC774\uB984\uC774 "{2}"\uC5D0\uC11C \uC124\uC815\uB41C "{1}" \uC81C\uD55C\uC744 \uCD08\uACFC\uD588\uC2B5\uB2C8\uB2E4. ++ MaxElementDepthLimit=JAXP00010006: "{0}" \uC694\uC18C\uC758 \uAE4A\uC774\uAC00 "{3}"\uC5D0\uC11C \uC124\uC815\uB41C "{2}" \uC81C\uD55C\uC744 \uCD08\uACFC\uD558\uB294 "{1}"\uC785\uB2C8\uB2E4. + +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_pt_BR.properties Tue Mar 11 13:02:28 2014 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_pt_BR.properties Tue Jun 03 14:19:32 2014 -0700 +@@ -129,7 +129,7 @@ + # 2.2 Characters + InvalidCharInEntityValue = Um caractere XML inv\u00E1lido (Unicode: 0x {0}) foi encontrado no valor da entidade da literal. + InvalidCharInExternalSubset = Um caractere XML inv\u00E1lido (Unicode: 0x {0}) foi encontrado no subconjunto externo do DTD. +- InvalidCharInIgnoreSect = Um caractere XML inv\u00E1lido (Unicode: 0x{0}) foi encontrado na se\u00E7\u00E3o condicional deletada. ++ InvalidCharInIgnoreSect = Um caractere XML inv\u00E1lido (Unicode: 0x{0}) foi encontrado na se\u00E7\u00E3o condicional exclu\u00EDda. + InvalidCharInPublicID = Um caractere XML inv\u00E1lido (Unicode: 0x{0}) foi encontrado no identificador p\u00FAblico. + InvalidCharInSystemID = Um caractere XML inv\u00E1lido (Unicode: 0x{0}) foi encontrado no identificador do sistema. + # 2.3 Common Syntactic Constructs +@@ -148,7 +148,7 @@ + PEReferenceWithinMarkup = A refer\u00EAncia da entidade do par\u00E2metro "%{0};" n\u00E3o pode ocorrer na marca\u00E7\u00E3o no subconjunto interno do DTD. + MSG_MARKUP_NOT_RECOGNIZED_IN_DTD = As declara\u00E7\u00F5es de marca\u00E7\u00E3o contidas ou apontadas pela declara\u00E7\u00E3o do tipo de documento devem estar corretas. + # 2.10 White Space Handling +- MSG_XML_SPACE_DECLARATION_ILLEGAL = Deve ser fornecida a declara\u00E7\u00E3o do atributo para "xml:space" como um tipo enumerado, cujo os \u00FAnicos valores poss\u00EDveis s\u00E3o "default" e "preserve". ++ MSG_XML_SPACE_DECLARATION_ILLEGAL = Deve ser fornecida a declara\u00E7\u00E3o do atributo para "xml:space" como um tipo enumerado, cujo os \u00FAnicos valores poss\u00EDveis s\u00E3o "padr\u00E3o" e "preserve". + # 3.2 Element Type Declarations + MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ELEMENTDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio ap\u00F3s "<!ELEMENT" na declara\u00E7\u00E3o do tipo de elemento. + MSG_ELEMENT_TYPE_REQUIRED_IN_ELEMENTDECL = O tipo de elemento \u00E9 necess\u00E1rio na declara\u00E7\u00E3o do tipo de elemento. +@@ -169,7 +169,7 @@ + AttNameRequiredInAttDef = O nome do atributo deve ser especificado na declara\u00E7\u00E3o da lista de atributos do elemento "{0}". + MSG_SPACE_REQUIRED_BEFORE_ATTTYPE_IN_ATTDEF = \u00C9 necess\u00E1rio o espa\u00E7o em branco antes do tipo de atributo na declara\u00E7\u00E3o do atributo "{1}" do elemento "{0}". + AttTypeRequiredInAttDef = \u00C9 necess\u00E1rio o tipo de atributo na declara\u00E7\u00E3o do atributo "{1}" do elemento "{0}". +- MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = \u00C9 necess\u00E1rio o espa\u00E7o em branco antes do default do atributo na declara\u00E7\u00E3o do atributo "{1}" do elemento "{0}". ++ MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = \u00C9 necess\u00E1rio o espa\u00E7o em branco antes do padr\u00E3o do atributo na declara\u00E7\u00E3o do atributo "{1}" do elemento "{0}". + MSG_DUPLICATE_ATTRIBUTE_DEFINITION = Mais de uma defini\u00E7\u00E3o de atributo fornecida para o mesmo atributo "{1}" de um determinado elemento "{0}". + # 3.3.1 Attribute Types + MSG_SPACE_REQUIRED_AFTER_NOTATION_IN_NOTATIONTYPE = O espa\u00E7o em branco deve aparecer ap\u00F3s "NOTATION" na declara\u00E7\u00E3o do atributo "{1}". +@@ -216,7 +216,7 @@ + DuplicateTypeInMixedContent = O tipo de elemento "{1}" j\u00E1 foi especificado no modelo de conte\u00FAdo da declara\u00E7\u00E3o do elemento "{0}". + ENTITIESInvalid = O valor do atributo "{1}" do tipo ENTITIES deve ser o nome de uma ou mais entidades n\u00E3o submetidas a parsing. + ENTITYInvalid = O valor do atributo "{1}" do tipo ENTITY deve ser o nome de uma entidade n\u00E3o submetida a parsing. +- IDDefaultTypeInvalid = O atributo do ID "{0}" deve ter um default declarado "#IMPLIED" ou "#REQUIRED". ++ IDDefaultTypeInvalid = O atributo do ID "{0}" deve ter um padr\u00E3o declarado "#IMPLIED" ou "#REQUIRED". + IDInvalid = O valor do atributo "{0}" do ID de tipo deve ser um nome. + IDInvalidWithNamespaces = O valor do atributo "{0}" do ID de tipo deve ser um NCName quando os namespaces estiverem ativados. + IDNotUnique = O valor do atributo "{0}" do ID de tipo deve ser exclusivo no documento. +@@ -233,7 +233,7 @@ + MSG_CONTENT_INCOMPLETE = O conte\u00FAdo do tipo de elemento "{0}" est\u00E1 incompleto; ele deve corresponder a "{1}". + MSG_CONTENT_INVALID = O conte\u00FAdo do tipo de elemento "{0}" deve corresponder a "{1}". + MSG_CONTENT_INVALID_SPECIFIED = O conte\u00FAdo do tipo de elemento "{0}" deve corresponder a "{1}". N\u00E3o s\u00E3o permitidos os filhos do tipo "{2}". +- MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = O atributo "{1}" do tipo de elemento "{0}" tem um valor default e deve ser especificado em um documento stand-alone. ++ MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = O atributo "{1}" do tipo de elemento "{0}" tem um valor padr\u00E3o e deve ser especificado em um documento stand-alone. + MSG_DUPLICATE_ATTDEF = O atributo "{1}" j\u00E1 foi declarado para o tipo de elemento "{0}". + MSG_ELEMENT_ALREADY_DECLARED = O tipo de elemento "{0}" n\u00E3o deve ser declarado mais de uma vez. + MSG_ELEMENT_NOT_DECLARED = O tipo de elemento "{0}" deve ser declarado. +@@ -299,4 +299,5 @@ + MaxEntitySizeLimit=JAXP00010003: o tamanho da entidade "{0}" \u00E9 "{1}", o que excede o limite de "{2}" definido por "{3}". + TotalEntitySizeLimit=JAXP00010004: o tamanho acumulado "{0}" de entidades excedeu o limite de "{1}" definido por "{2}". + MaxXMLNameLimit=JAXP00010005: o nome "{0}" excedeu o limite de "{1}" definido por "{2}". ++ MaxElementDepthLimit=JAXP00010006: o elemento "{0}" tem uma profundidade de "{1}" que excede o limite de "{2}" definido por "{3}". + +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_sv.properties Tue Mar 11 13:02:28 2014 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_sv.properties Tue Jun 03 14:19:32 2014 -0700 +@@ -7,7 +7,7 @@ + FormatFailed = Ett internt fel intr\u00E4ffade vid formatering av f\u00F6ljande meddelande:\n + + # Document messages +- PrematureEOF=F\u00F6r tidigt filslut (EOF). ++ PrematureEOF=Filen har avslutats f\u00F6r tidigt. + # 2.1 Well-Formed XML Documents + RootElementRequired = Rotelementet kr\u00E4vs i ett v\u00E4lformulerat dokument. + # 2.2 Characters +@@ -299,4 +299,5 @@ + MaxEntitySizeLimit=JAXP00010003: L\u00E4ngden p\u00E5 enheten "{0}" \u00E4r "{1}" som \u00F6verskriver gr\u00E4nsv\u00E4rdet p\u00E5 "{2}" som anges av "{3}". + TotalEntitySizeLimit=JAXP00010004: Den ackumulerade storleken "{0}" f\u00F6r enheter \u00F6verskred gr\u00E4nsv\u00E4rdet p\u00E5 "{1}" som anges av "{2}". + MaxXMLNameLimit=JAXP00010005: Namnet "{0}" \u00F6verskred gr\u00E4nsv\u00E4rdet p\u00E5 "{1}" som anges av "{2}". ++ MaxElementDepthLimit=JAXP00010006: Elementet "{0}" har djupet "{1}" vilket \u00E4r st\u00F6rre \u00E4n gr\u00E4nsen "{2}" som anges av "{3}". + +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_CN.properties Tue Mar 11 13:02:28 2014 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_CN.properties Tue Jun 03 14:19:32 2014 -0700 +@@ -299,4 +299,5 @@ + MaxEntitySizeLimit=JAXP00010003: \u5B9E\u4F53 "{0}" \u7684\u957F\u5EA6\u4E3A "{1}", \u8D85\u8FC7\u4E86 "{3}" \u8BBE\u7F6E\u7684 "{2}" \u9650\u5236\u3002 + TotalEntitySizeLimit=JAXP00010004: \u5B9E\u4F53\u7684\u7D2F\u8BA1\u5927\u5C0F "{0}" \u8D85\u8FC7\u4E86 "{2}" \u8BBE\u7F6E\u7684 "{1}" \u9650\u5236\u3002 + MaxXMLNameLimit=JAXP00010005: \u540D\u79F0 "{0}" \u8D85\u8FC7\u4E86 "{2}" \u8BBE\u7F6E\u7684 "{1}" \u9650\u5236\u3002 ++ MaxElementDepthLimit=JAXP00010006: \u5143\u7D20 "{0}" \u7684\u6DF1\u5EA6 "{1}" \u8D85\u8FC7\u4E86 "{3}" \u8BBE\u7F6E\u7684\u9650\u5236 "{2}"\u3002 + +--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_TW.properties Tue Mar 11 13:02:28 2014 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_TW.properties Tue Jun 03 14:19:32 2014 -0700 +@@ -299,4 +299,5 @@ + MaxEntitySizeLimit=JAXP00010003: \u5BE6\u9AD4 "{0}" \u7684\u9577\u5EA6\u70BA "{1}"\uFF0C\u8D85\u904E "{3}" \u6240\u8A2D\u5B9A\u7684 "{2}" \u9650\u5236\u3002 + TotalEntitySizeLimit=JAXP00010004: \u5BE6\u9AD4\u7684\u7D2F\u7A4D\u5927\u5C0F "{0}" \u8D85\u904E "{2}" \u8A2D\u5B9A\u7684 "{1}" \u9650\u5236\u3002 + MaxXMLNameLimit=JAXP00010005: \u540D\u7A31 "{0}" \u8D85\u904E "{2}" \u8A2D\u5B9A\u7684 "{1}" \u9650\u5236\u3002 ++ MaxElementDepthLimit=JAXP00010006: \u5143\u7D20 "{0}" \u7684\u6DF1\u5EA6\u70BA "{1}"\uFF0C\u8D85\u904E "{3}" \u8A2D\u5B9A\u7684 "{2}" \u9650\u5236\u3002 + +--- jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLLimitAnalyzer.java Tue Mar 11 13:02:28 2014 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLLimitAnalyzer.java Tue Jun 03 14:19:32 2014 -0700 +@@ -132,6 +132,10 @@ + totalValue[index] += value; + return; + } ++ if (index == Limit.MAX_ELEMENT_DEPTH_LIMIT.ordinal()) { ++ totalValue[index] = value; ++ return; ++ } + + Map<String, Integer> cache; + if (caches[index] == null) { +--- jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLSecurityManager.java Tue Mar 11 13:02:28 2014 -0700 ++++ jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLSecurityManager.java Tue Jun 03 14:19:32 2014 -0700 +@@ -66,7 +66,8 @@ + ELEMENT_ATTRIBUTE_LIMIT(Constants.JDK_ELEMENT_ATTRIBUTE_LIMIT, Constants.SP_ELEMENT_ATTRIBUTE_LIMIT, 0, 10000), + TOTAL_ENTITY_SIZE_LIMIT(Constants.JDK_TOTAL_ENTITY_SIZE_LIMIT, Constants.SP_TOTAL_ENTITY_SIZE_LIMIT, 0, 50000000), + GENERAL_ENTITY_SIZE_LIMIT(Constants.JDK_GENERAL_ENTITY_SIZE_LIMIT, Constants.SP_GENERAL_ENTITY_SIZE_LIMIT, 0, 0), +- PARAMETER_ENTITY_SIZE_LIMIT(Constants.JDK_PARAMETER_ENTITY_SIZE_LIMIT, Constants.SP_PARAMETER_ENTITY_SIZE_LIMIT, 0, 1000000); ++ PARAMETER_ENTITY_SIZE_LIMIT(Constants.JDK_PARAMETER_ENTITY_SIZE_LIMIT, Constants.SP_PARAMETER_ENTITY_SIZE_LIMIT, 0, 1000000), ++ MAX_ELEMENT_DEPTH_LIMIT(Constants.JDK_MAX_ELEMENT_DEPTH, Constants.SP_MAX_ELEMENT_DEPTH, 0, 0); + + final String apiProperty; + final String systemProperty; +@@ -429,9 +430,10 @@ + return false; + } + +- if (index==Limit.ELEMENT_ATTRIBUTE_LIMIT.ordinal() || +- index==Limit.ENTITY_EXPANSION_LIMIT.ordinal() || +- index==Limit.TOTAL_ENTITY_SIZE_LIMIT.ordinal()) { ++ if (index == Limit.ELEMENT_ATTRIBUTE_LIMIT.ordinal() || ++ index == Limit.ENTITY_EXPANSION_LIMIT.ordinal() || ++ index == Limit.TOTAL_ENTITY_SIZE_LIMIT.ordinal() || ++ index == Limit.MAX_ELEMENT_DEPTH_LIMIT.ordinal()) { + return (limitAnalyzer.getTotalValue(index) > values[index]); + } else { + return (limitAnalyzer.getValue(index) > values[index]); +--- jaxws/.hgtags Tue Mar 11 13:02:38 2014 -0700 ++++ jaxws/.hgtags Tue Jun 03 14:19:34 2014 -0700 +@@ -258,6 +258,7 @@ + 384ccf4e14cb90c89570e16a5f4ca440a69d6d93 jdk8u5-b02 + e423a4f2ec72ea0e24bea0fa77dd105095bbee67 jdk8u5-b03 + 738b966ee0b00d994445d34eb7eb087bd41a5478 jdk8u5-b04 ++3960c6ef7bd1782d6357c510dab393d291164045 jdk8u11-b00 + 3960c6ef7bd1782d6357c510dab393d291164045 jdk8u5-b05 + 0543f4dddddc67b142b4706b2d403a654809e605 jdk8u5-b06 + 0eb7f9f88e93587ace50614385f85afd221f5cb1 jdk8u5-b07 +@@ -266,3 +267,15 @@ + 22a840b408eb0242e363700843fba3f4988df749 jdk8u5-b10 + 75fd3933daaf5826e7c03bfb318026ac8a4c07ef jdk8u5-b11 + e2454d30b525bcb6ebcc711bd2928fbd29c11143 jdk8u5-b12 ++d2200a87d5ad6a9d06d9df144376ea5511b3916b jdk8u5-b13 ++d2732c66f0f927d7f31dead4cce1a0612b9ff2a1 jdk8u11-b01 ++152cc523baf1fdfe48514e3fe0d8e5a9b3c01ba4 jdk8u11-b02 ++c2c073f04f0566c868fec49b96e5885ad69f065c jdk8u11-b03 ++d1dbc7bc54291d447fce5655e0878b8689ad25b7 jdk8u11-b04 ++9626907d2521220a0214129733088bad35656239 jdk8u11-b05 ++6b71476418c1f6a085fb10460dcfedc5346e69af jdk8u11-b06 ++c29ede8e947c365ce55174eba716050c48461576 jdk8u11-b07 ++ca91f03660789a75710b4a081cd32aab00e80964 jdk8u11-b08 ++6e994ba1e4610b367f292a41a0d2c77091f93ab6 jdk8u11-b09 ++aa3f37b9fbdca195ac9430b8c301db7f33347241 jdk8u11-b10 ++5d161297f3031a82d04953bf60721f31e7c18da1 jdk8u11-b11 +--- jaxws/src/share/jaxws_classes/com/sun/tools/internal/xjc/model/nav/Utils.java Tue Mar 11 13:02:38 2014 -0700 ++++ jaxws/src/share/jaxws_classes/com/sun/tools/internal/xjc/model/nav/Utils.java Tue Jun 03 14:19:34 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * 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,6 +31,8 @@ + import java.lang.reflect.InvocationTargetException; + import java.lang.reflect.Method; + import java.lang.reflect.Type; ++import java.security.AccessController; ++import java.security.PrivilegedAction; + import java.util.logging.Level; + import java.util.logging.Logger; + +@@ -38,22 +40,32 @@ + * Utils class. + * Has *package private* access to avoid inappropriate usage. + */ +-/* package */ final class Utils { ++final class Utils { + + private static final Logger LOGGER = Logger.getLogger(Utils.class.getName()); + + /** + * static ReflectionNavigator field to avoid usage of reflection every time we use it. + */ +- /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; ++ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; + + static { // we statically initializing REFLECTION_NAVIGATOR property +- Class refNav = null; + try { +- refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); ++ Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); + //noinspection unchecked +- Method getInstance = refNav.getDeclaredMethod("getInstance"); +- getInstance.setAccessible(true); ++ final Method getInstance = refNav.getDeclaredMethod("getInstance"); ++ ++ // requires accessClassInPackage privilege ++ AccessController.doPrivileged( ++ new PrivilegedAction<Object>() { ++ @Override ++ public Object run() { ++ getInstance.setAccessible(true); ++ return null; ++ } ++ } ++ ); ++ + //noinspection unchecked + REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null); + } catch (ClassNotFoundException e) { +--- jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/api/Utils.java Tue Mar 11 13:02:38 2014 -0700 ++++ jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/api/Utils.java Tue Jun 03 14:19:34 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * 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,6 +31,8 @@ + import java.lang.reflect.InvocationTargetException; + import java.lang.reflect.Method; + import java.lang.reflect.Type; ++import java.security.AccessController; ++import java.security.PrivilegedAction; + import java.util.logging.Level; + import java.util.logging.Logger; + +@@ -38,22 +40,32 @@ + * Utils class. + * Has *package private* access to avoid inappropriate usage. + */ +-/* package */ final class Utils { ++final class Utils { + + private static final Logger LOGGER = Logger.getLogger(Utils.class.getName()); + + /** + * static ReflectionNavigator field to avoid usage of reflection every time we use it. + */ +- /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; ++ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; + + static { // we statically initializing REFLECTION_NAVIGATOR property +- Class refNav = null; + try { +- refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); ++ Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); + //noinspection unchecked +- Method getInstance = refNav.getDeclaredMethod("getInstance"); +- getInstance.setAccessible(true); ++ final Method getInstance = refNav.getDeclaredMethod("getInstance"); ++ ++ // requires accessClassInPackage privilege ++ AccessController.doPrivileged( ++ new PrivilegedAction<Object>() { ++ @Override ++ public Object run() { ++ getInstance.setAccessible(true); ++ return null; ++ } ++ } ++ ); ++ + //noinspection unchecked + REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null); + } catch (ClassNotFoundException e) { +--- jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/Utils.java Tue Mar 11 13:02:38 2014 -0700 ++++ jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/Utils.java Tue Jun 03 14:19:34 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * 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,6 +31,8 @@ + import java.lang.reflect.InvocationTargetException; + import java.lang.reflect.Method; + import java.lang.reflect.Type; ++import java.security.AccessController; ++import java.security.PrivilegedAction; + import java.util.logging.Level; + import java.util.logging.Logger; + +@@ -38,22 +40,32 @@ + * Utils class. + * Has *package private* access to avoid inappropriate usage. + */ +-/* package */ final class Utils { ++final class Utils { + + private static final Logger LOGGER = Logger.getLogger(Utils.class.getName()); + + /** + * static ReflectionNavigator field to avoid usage of reflection every time we use it. + */ +- /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; ++ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; + + static { // we statically initializing REFLECTION_NAVIGATOR property +- Class refNav = null; + try { +- refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); ++ Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); + //noinspection unchecked +- Method getInstance = refNav.getDeclaredMethod("getInstance"); +- getInstance.setAccessible(true); ++ final Method getInstance = refNav.getDeclaredMethod("getInstance"); ++ ++ // requires accessClassInPackage privilege ++ AccessController.doPrivileged( ++ new PrivilegedAction<Object>() { ++ @Override ++ public Object run() { ++ getInstance.setAccessible(true); ++ return null; ++ } ++ } ++ ); ++ + //noinspection unchecked + REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null); + } catch (ClassNotFoundException e) { +--- jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/Utils.java Tue Mar 11 13:02:38 2014 -0700 ++++ jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/Utils.java Tue Jun 03 14:19:34 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * 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,6 +31,8 @@ + import java.lang.reflect.InvocationTargetException; + import java.lang.reflect.Method; + import java.lang.reflect.Type; ++import java.security.AccessController; ++import java.security.PrivilegedAction; + import java.util.logging.Level; + import java.util.logging.Logger; + +@@ -38,22 +40,32 @@ + * Utils class. + * Has *package private* access to avoid inappropriate usage. + */ +-/* package */ final class Utils { ++final class Utils { + + private static final Logger LOGGER = Logger.getLogger(Utils.class.getName()); + + /** + * static ReflectionNavigator field to avoid usage of reflection every time we use it. + */ +- /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; ++ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; + + static { // we statically initializing REFLECTION_NAVIGATOR property +- Class refNav = null; + try { +- refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); ++ Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); + //noinspection unchecked +- Method getInstance = refNav.getDeclaredMethod("getInstance"); +- getInstance.setAccessible(true); ++ final Method getInstance = refNav.getDeclaredMethod("getInstance"); ++ ++ // requires accessClassInPackage privilege ++ AccessController.doPrivileged( ++ new PrivilegedAction<Object>() { ++ @Override ++ public Object run() { ++ getInstance.setAccessible(true); ++ return null; ++ } ++ } ++ ); ++ + //noinspection unchecked + REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null); + } catch (ClassNotFoundException e) { +--- jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/Utils.java Tue Mar 11 13:02:38 2014 -0700 ++++ jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/Utils.java Tue Jun 03 14:19:34 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * 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,6 +31,8 @@ + import java.lang.reflect.InvocationTargetException; + import java.lang.reflect.Method; + import java.lang.reflect.Type; ++import java.security.AccessController; ++import java.security.PrivilegedAction; + import java.util.logging.Level; + import java.util.logging.Logger; + +@@ -38,22 +40,32 @@ + * Utils class. + * Has *package private* access to avoid inappropriate usage. + */ +-/* package */ final class Utils { ++final class Utils { + + private static final Logger LOGGER = Logger.getLogger(Utils.class.getName()); + + /** + * static ReflectionNavigator field to avoid usage of reflection every time we use it. + */ +- /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; ++ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; + + static { // we statically initializing REFLECTION_NAVIGATOR property +- Class refNav = null; + try { +- refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); ++ Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); + //noinspection unchecked +- Method getInstance = refNav.getDeclaredMethod("getInstance"); +- getInstance.setAccessible(true); ++ final Method getInstance = refNav.getDeclaredMethod("getInstance"); ++ ++ // requires accessClassInPackage privilege ++ AccessController.doPrivileged( ++ new PrivilegedAction<Object>() { ++ @Override ++ public Object run() { ++ getInstance.setAccessible(true); ++ return null; ++ } ++ } ++ ); ++ + //noinspection unchecked + REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null); + } catch (ClassNotFoundException e) { +--- jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/reflect/Utils.java Tue Mar 11 13:02:38 2014 -0700 ++++ jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/reflect/Utils.java Tue Jun 03 14:19:34 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * 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,6 +31,8 @@ + import java.lang.reflect.InvocationTargetException; + import java.lang.reflect.Method; + import java.lang.reflect.Type; ++import java.security.AccessController; ++import java.security.PrivilegedAction; + import java.util.logging.Level; + import java.util.logging.Logger; + +@@ -38,22 +40,32 @@ + * Utils class. + * Has *package private* access to avoid inappropriate usage. + */ +-/* package */ final class Utils { ++final class Utils { + + private static final Logger LOGGER = Logger.getLogger(Utils.class.getName()); + + /** + * static ReflectionNavigator field to avoid usage of reflection every time we use it. + */ +- /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; ++ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; + + static { // we statically initializing REFLECTION_NAVIGATOR property +- Class refNav = null; + try { +- refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); ++ Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); + //noinspection unchecked +- Method getInstance = refNav.getDeclaredMethod("getInstance"); +- getInstance.setAccessible(true); ++ final Method getInstance = refNav.getDeclaredMethod("getInstance"); ++ ++ // requires accessClassInPackage privilege ++ AccessController.doPrivileged( ++ new PrivilegedAction<Object>() { ++ @Override ++ public Object run() { ++ getInstance.setAccessible(true); ++ return null; ++ } ++ } ++ ); ++ + //noinspection unchecked + REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null); + } catch (ClassNotFoundException e) { +--- jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/model/Utils.java Tue Mar 11 13:02:38 2014 -0700 ++++ jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/model/Utils.java Tue Jun 03 14:19:34 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * 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,6 +31,8 @@ + import java.lang.reflect.InvocationTargetException; + import java.lang.reflect.Method; + import java.lang.reflect.Type; ++import java.security.AccessController; ++import java.security.PrivilegedAction; + import java.util.logging.Level; + import java.util.logging.Logger; + +@@ -41,22 +43,32 @@ + * + * Has *package private* access to avoid inappropriate usage. + */ +-/* package */ final class Utils { ++final class Utils { + + private static final Logger LOGGER = Logger.getLogger(Utils.class.getName()); + + /** + * static ReflectionNavigator field to avoid usage of reflection every time we use it. + */ +- /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; ++ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; + + static { // we statically initializing REFLECTION_NAVIGATOR property +- Class refNav = null; + try { +- refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); ++ Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); + //noinspection unchecked +- Method getInstance = refNav.getDeclaredMethod("getInstance"); +- getInstance.setAccessible(true); ++ final Method getInstance = refNav.getDeclaredMethod("getInstance"); ++ ++ // requires accessClassInPackage privilege ++ AccessController.doPrivileged( ++ new PrivilegedAction<Object>() { ++ @Override ++ public Object run() { ++ getInstance.setAccessible(true); ++ return null; ++ } ++ } ++ ); ++ + //noinspection unchecked + REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null); + } catch (ClassNotFoundException e) { +--- jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/spi/db/Utils.java Tue Mar 11 13:02:38 2014 -0700 ++++ jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/spi/db/Utils.java Tue Jun 03 14:19:34 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * 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,6 +31,8 @@ + import java.lang.reflect.InvocationTargetException; + import java.lang.reflect.Method; + import java.lang.reflect.Type; ++import java.security.AccessController; ++import java.security.PrivilegedAction; + import java.util.logging.Level; + import java.util.logging.Logger; + +@@ -41,22 +43,32 @@ + * + * Has *package private* access to avoid inappropriate usage. + */ +-/* package */ final class Utils { ++final class Utils { + + private static final Logger LOGGER = Logger.getLogger(Utils.class.getName()); + + /** + * static ReflectionNavigator field to avoid usage of reflection every time we use it. + */ +- /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; ++ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; + + static { // we statically initializing REFLECTION_NAVIGATOR property +- Class refNav = null; + try { +- refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); ++ Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); + //noinspection unchecked +- Method getInstance = refNav.getDeclaredMethod("getInstance"); +- getInstance.setAccessible(true); ++ final Method getInstance = refNav.getDeclaredMethod("getInstance"); ++ ++ // requires accessClassInPackage privilege ++ AccessController.doPrivileged( ++ new PrivilegedAction<Object>() { ++ @Override ++ public Object run() { ++ getInstance.setAccessible(true); ++ return null; ++ } ++ } ++ ); ++ + //noinspection unchecked + REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null); + } catch (ClassNotFoundException e) { +--- jdk/.hgtags Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/.hgtags Tue Jun 03 14:19:36 2014 -0700 +@@ -258,6 +258,7 @@ + 343f4f8ba0982b3516e33c859b01634d919243c4 jdk8u5-b02 + c35571198602a5856280d5c7c10bda4e7b769104 jdk8u5-b03 + 55e6175fb6904d771bfaec4ada4f5e20b54f4791 jdk8u5-b04 ++911d590f34aaa7f7b9ef300d0c0a019e70a62d1d jdk8u11-b00 + 911d590f34aaa7f7b9ef300d0c0a019e70a62d1d jdk8u5-b05 + 94fe0ed14bfcca335ff72abd20cf871dab100e79 jdk8u5-b06 + 469c2c1a4885ddedc114e17902bb2f7f7326a4b7 jdk8u5-b07 +@@ -266,3 +267,15 @@ + 7f905cc47d4951628d956c436c8aa95aeb8bd014 jdk8u5-b10 + f4f3b7ccd2801a0a87dd4677332f5b93191d08f2 jdk8u5-b11 + 9ff7f7909e122bb54f7df80efd0fc7a03ce7efff jdk8u5-b12 ++c6836440c427800a9f48168af29759b79857781d jdk8u5-b13 ++5eff6b1060758eae51125156a6f9c7725905e64e jdk8u11-b01 ++cb1b9eca5890807476935051b8a5f13f4d3e5c63 jdk8u11-b02 ++5efce41be1c8637b399980ea227f19e0f98341bc jdk8u11-b03 ++4af24a3f52aeb07b51d3860049b0d1504e400feb jdk8u11-b04 ++726370d73baebc513d0d83df71bb7629703ef7d0 jdk8u11-b05 ++dc8eb8ba138a53df4cc80f6379ed25ef20644667 jdk8u11-b06 ++69ea8bc3ce29eda152d9c2ebea91a9ce233bde9e jdk8u11-b07 ++bec9dcd4c06358154cce431c4b70da56530827de jdk8u11-b08 ++801e730c85eb822ac3b00466b32d42e089cb7233 jdk8u11-b09 ++105753f0465e534e3664d0935016f5a0d061829d jdk8u11-b10 ++bd5f7651116e2634c09adf073609811c60a4d5e7 jdk8u11-b11 +--- jdk/make/data/tzdata/VERSION Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/make/data/tzdata/VERSION Tue Jun 03 14:19:36 2014 -0700 +@@ -21,4 +21,4 @@ + # or visit www.oracle.com if you need additional information or have any + # questions. + # +-tzdata2013i ++tzdata2014c +--- jdk/make/data/tzdata/africa Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/make/data/tzdata/africa Tue Jun 03 14:19:36 2014 -0700 +@@ -358,11 +358,54 @@ + # http://www.worldtimezone.com/dst_news/dst_news_egypt02.html + # </a> + ++# From Ahmad El-Dardiry (2014-05-07): ++# Egypt is to change back to Daylight system on May 15 ++# http://english.ahram.org.eg/NewsContent/1/64/100735/Egypt/Politics-/Egypts-government-to-reapply-daylight-saving-time-.aspx ++ ++# From Gunther Vermier (2015-05-13): ++# our Egypt office confirms that the change will be at 15 May "midnight" (24:00) ++ ++# From Paul Eggert (2014-05-13): ++# Sarah El Deeb and Lee Keath of AP report that the Egyptian government says ++# the change is because of blackouts in Cairo, even though Ahram Online (cited ++# above) says DST had no affect on electricity consumption. The AP story says ++# DST will not be observed during Ramadan. There is no information about when ++# DST will end. See: ++# http://abcnews.go.com/International/wireStory/el-sissi-pushes-egyptians-line-23614833 ++# ++# For now, guess that later transitions will use 2010's rules, and that ++# Egypt will agree with Morocco (see below) about the date Ramadan starts and ++# ends, though (unlike Morocco) it will switch at 00:00 standard time. In ++# Egypt the spring-forward transitions are removed for 2020-2022, when the ++# guessed spring-forward date falls during the estimated Ramadan, and all ++# transitions removed for 2023-2038, where the estimated Ramadan falls entirely ++# outside the guessed daylight-saving time. Ramadan intrudes on the guessed ++# DST starting in 2039, but that's beyond our somewhat-arbitrary cutoff. ++ + Rule Egypt 2008 only - Aug lastThu 23:00s 0 - + Rule Egypt 2009 only - Aug 20 23:00s 0 - + Rule Egypt 2010 only - Aug 11 0:00 0 - + Rule Egypt 2010 only - Sep 10 0:00 1:00 S + Rule Egypt 2010 only - Sep lastThu 23:00s 0 - ++Rule Egypt 2014 only - May 15 24:00 1:00 S ++Rule Egypt 2014 only - Jun 29 0:00s 0 - ++Rule Egypt 2014 only - Jul 29 0:00s 1:00 S ++Rule Egypt 2014 max - Sep lastThu 23:00s 0 - ++Rule Egypt 2015 2019 - Apr lastFri 0:00s 1:00 S ++Rule Egypt 2015 only - Jun 18 0:00s 0 - ++Rule Egypt 2015 only - Jul 18 0:00s 1:00 S ++Rule Egypt 2016 only - Jun 7 0:00s 0 - ++Rule Egypt 2016 only - Jul 7 0:00s 1:00 S ++Rule Egypt 2017 only - May 27 0:00s 0 - ++Rule Egypt 2017 only - Jun 26 0:00s 1:00 S ++Rule Egypt 2018 only - May 16 0:00s 0 - ++Rule Egypt 2018 only - Jun 15 0:00s 1:00 S ++Rule Egypt 2019 only - May 6 0:00s 0 - ++Rule Egypt 2019 only - Jun 5 0:00s 1:00 S ++Rule Egypt 2020 only - May 24 0:00s 1:00 S ++Rule Egypt 2021 only - May 13 0:00s 1:00 S ++Rule Egypt 2022 only - May 3 0:00s 1:00 S ++Rule Egypt 2023 max - Apr lastFri 0:00s 1:00 S + + # Zone NAME GMTOFF RULES FORMAT [UNTIL] + Zone Africa/Cairo 2:05:09 - LMT 1900 Oct +@@ -891,7 +934,10 @@ + # Another source (specifying the time for start and end in the decree): + # http://www.lemag.ma/Heure-d-ete-au-Maroc-jusqu-au-27-octobre_a75620.html + +-# From Paul Eggert (2013-10-03): ++# From Sebastien Willemijns (2014-03-18): ++# http://www.afriquinfos.com/articles/2014/3/18/maroc-heure-dete-avancez-tous-horloges-247891.asp ++ ++# From Paul Eggert (2014-03-19): + # To estimate what the Moroccan government will do in future years, + # transition dates for 2014 through 2038 were determined by running + # the following program under GNU Emacs 24.3: +--- jdk/make/data/tzdata/antarctica Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/make/data/tzdata/antarctica Tue Jun 03 14:19:36 2014 -0700 +@@ -253,24 +253,41 @@ + # year-round base + # Scott Base, Ross Island, since 1957-01. + # See Pacific/Auckland. +-# +-# These rules for New Zealand are stolen from the 'australasia' file. +-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +-Rule NZAQ 1974 only - Nov 3 2:00s 1:00 D +-Rule NZAQ 1975 1988 - Oct lastSun 2:00s 1:00 D +-Rule NZAQ 1989 only - Oct 8 2:00s 1:00 D +-Rule NZAQ 1990 2006 - Oct Sun>=1 2:00s 1:00 D +-Rule NZAQ 1975 only - Feb 23 2:00s 0 S +-Rule NZAQ 1976 1989 - Mar Sun>=1 2:00s 0 S +-Rule NZAQ 1990 2007 - Mar Sun>=15 2:00s 0 S +-Rule NZAQ 2007 max - Sep lastSun 2:00s 1:00 D +-Rule NZAQ 2008 max - Apr Sun>=1 2:00s 0 S + + # Norway - territories + # Bouvet (never inhabited) + # + # claims + # Peter I Island (never inhabited) ++# ++# year-round base ++# Troll, Queen Maud Land, -720041+0023206, since 2005-02-12 ++# ++# From Paul-Inge Flakstad (2014-03-10): ++# I recently had a long dialog about this with the developer of timegenie.com. ++# In the absence of specific dates, he decided to choose some likely ones: ++# GMT +1 - From March 1 to the last Sunday in March ++# GMT +2 - From the last Sunday in March until the last Sunday in October ++# GMT +1 - From the last Sunday in October until November 7 ++# GMT +0 - From November 7 until March 1 ++# The dates for switching to and from UTC+0 will probably not be absolutely ++# correct, but they should be quite close to the actual dates. ++# ++# From Paul Eggert (2014-03-21): ++# The CET-switching Troll rules require zic from tzcode 2014b or later, so as ++# suggested by Bengt-Inge Larsson comment them out for now, and approximate ++# with only UTC and CEST. Uncomment them when 2014b is more prevalent. ++# ++# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++#Rule Troll 2005 max - Mar 1 1:00u 1:00 CET ++Rule Troll 2005 max - Mar lastSun 1:00u 2:00 CEST ++#Rule Troll 2005 max - Oct lastSun 1:00u 1:00 CET ++#Rule Troll 2004 max - Nov 7 1:00u 0:00 UTC ++# Remove the following line when uncommenting the above '#Rule' lines. ++Rule Troll 2004 max - Oct lastSun 1:00u 0:00 UTC ++# Zone NAME GMTOFF RULES FORMAT [UNTIL] ++Zone Antarctica/Troll 0 - zzz 2005 Feb 12 ++ 0:00 Troll %s + + # Poland - year-round base + # Arctowski, King George Island, -620945-0582745, since 1977 +--- jdk/make/data/tzdata/asia Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/make/data/tzdata/asia Tue Jun 03 14:19:36 2014 -0700 +@@ -1113,8 +1113,13 @@ + Rule Zion 1986 only - Sep 7 0:00 0 S + Rule Zion 1987 only - Apr 15 0:00 1:00 D + Rule Zion 1987 only - Sep 13 0:00 0 S +-Rule Zion 1988 only - Apr 9 0:00 1:00 D +-Rule Zion 1988 only - Sep 3 0:00 0 S ++ ++# From Avigdor Finkelstein (2014-03-05): ++# I check the Parliament (Knesset) records and there it's stated that the ++# [1988] transition should take place on Saturday night, when the Sabbath ++# ends and changes to Sunday. ++Rule Zion 1988 only - Apr 10 0:00 1:00 D ++Rule Zion 1988 only - Sep 4 0:00 0 S + + # From Ephraim Silverberg + # (1997-03-04, 1998-03-16, 1998-12-28, 2000-01-17, 2000-07-25, 2004-12-22, +@@ -1365,22 +1370,6 @@ + # "Jordan will switch to winter time on Friday, October 27". + # + +-# From Phil Pizzey (2009-04-02): +-# ...I think I may have spotted an error in the timezone data for +-# Jordan. +-# The current (2009d) asia file shows Jordan going to daylight +-# saving +-# time on the last Thursday in March. +-# +-# Rule Jordan 2000 max - Mar lastThu 0:00s 1:00 S +-# +-# However timeanddate.com, which I usually find reliable, shows Jordan +-# going to daylight saving time on the last Friday in March since 2002. +-# Please see +-# <a href="http://www.timeanddate.com/worldclock/timezone.html?n=11"> +-# http://www.timeanddate.com/worldclock/timezone.html?n=11 +-# </a> +- + # From Steffen Thorsen (2009-04-02): + # This single one might be good enough, (2009-03-24, Arabic): + # <a href="http://petra.gov.jo/Artical.aspx?Lng=2&Section=8&Artical=95279"> +--- jdk/make/data/tzdata/australasia Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/make/data/tzdata/australasia Tue Jun 03 14:19:36 2014 -0700 +@@ -377,16 +377,18 @@ + # http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=6702&catid=71&Itemid=155 + + # From the Fijian Government Media Center (2013-08-30) via David Wheeler: +-# Fiji will start daylight savings on Sunday 27th October, 2013 and end at 3am +-# on Sunday 19th January, 2014.... move clocks forward by one hour from 2am ++# Fiji will start daylight savings on Sunday 27th October, 2013 ... ++# move clocks forward by one hour from 2am + # http://www.fiji.gov.fj/Media-Center/Press-Releases/DAYLIGHT-SAVING-STARTS-ON-SUNDAY,-27th-OCTOBER-201.aspx +-# +-# From Paul Eggert (2013-09-09): ++ ++# From Steffen Thorsen (2013-01-10): ++# Fiji will end DST on 2014-01-19 02:00: ++# http://www.fiji.gov.fj/Media-Center/Press-Releases/DAYLIGHT-SAVINGS-TO-END-THIS-MONTH-%281%29.aspx ++ ++# From Paul Eggert (2014-01-10): + # For now, guess that Fiji springs forward the Sunday before the fourth +-# Monday in October. This matches both recent practice and +-# timeanddate.com's current spring-forward prediction. +-# For the January 2014 transition we guessed right while timeanddate.com +-# guessed wrong, so leave the fall-back prediction alone. ++# Monday in October, and springs back the penultimate Sunday in January. ++# This is ad hoc, but matches recent practice. + + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S + Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 S +@@ -395,7 +397,8 @@ + Rule Fiji 2010 only - Mar lastSun 3:00 0 - + Rule Fiji 2010 max - Oct Sun>=21 2:00 1:00 S + Rule Fiji 2011 only - Mar Sun>=1 3:00 0 - +-Rule Fiji 2012 max - Jan Sun>=18 3:00 0 - ++Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 - ++Rule Fiji 2014 max - Jan Sun>=18 2:00 0 - + # Zone NAME GMTOFF RULES FORMAT [UNTIL] + Zone Pacific/Fiji 11:55:44 - LMT 1915 Oct 26 # Suva + 12:00 Fiji FJ%sT # Fiji Time +@@ -783,14 +786,29 @@ + + # Johnston + # +-# From Paul Eggert (2013-09-03): ++# From Paul Eggert (2014-03-11): ++# Sometimes Johnston kept Hawaii time, and sometimes it was an hour behind. ++# Details are uncertain. We have no data for Johnston after 1970, so ++# treat it like Hawaii for now. ++# + # In his memoirs of June 6th to October 4, 1945 + # <http://www.315bw.org/Herb_Bach.htm> (2005), Herbert C. Bach writes, + # "We started our letdown to Kwajalein Atoll and landed there at 5:00 AM + # Johnston time, 1:30 AM Kwajalein time." This was in June 1945, and + # confirms that Johnston kept the same time as Honolulu in summer 1945. +-# We have no better information, so for now, assume this has been true +-# indefinitely into the past. ++# ++# From Lyle McElhaney (2014-03-11): ++# [W]hen JI was being used for that [atomic bomb] testing, the time being used ++# was not Hawaiian time but rather the same time being used on the ships, ++# which had a GMT offset of -11 hours. This apparently applied to at least the ++# time from Operation Newsreel (Hardtack I/Teak shot, 1958-08-01) to the last ++# Operation Fishbowl shot (Tightrope, 1962-11-04).... [See] Herman Hoerlin, ++# "The United States High-Altitude Test Experience: A Review Emphasizing the ++# Impact on the Environment", Los Alamos LA-6405, Oct 1976 ++# <http://www.fas.org/sgp/othergov/doe/lanl/docs1/00322994.pdf>. ++# See the table on page 4 where he lists GMT and local times for the tests; a ++# footnote for the JI tests reads that local time is "JI time = Hawaii Time ++# Minus One Hour". + # + # See 'northamerica' for Pacific/Johnston. + +--- jdk/make/data/tzdata/europe Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/make/data/tzdata/europe Tue Jun 03 14:19:36 2014 -0700 +@@ -2768,14 +2768,18 @@ + # According to the articles linked below, Turkey will change into summer + # time zone (GMT+3) on March 28, 2011 at 3:00 a.m. instead of March 27. + # This change is due to a nationwide exam on 27th. +-# +-# <a href="http://www.worldbulletin.net/?aType=haber&ArticleID=70872"> + # http://www.worldbulletin.net/?aType=haber&ArticleID=70872 +-# </a> + # Turkish: +-# <a href="http://www.hurriyet.com.tr/ekonomi/17230464.asp?gid=373"> + # http://www.hurriyet.com.tr/ekonomi/17230464.asp?gid=373 +-# </a> ++ ++# From Faruk Pasin (2014-02-14): ++# The DST for Turkey has been changed for this year because of the ++# Turkish Local election.... ++# http://www.sabah.com.tr/Ekonomi/2014/02/12/yaz-saatinde-onemli-degisiklik ++# ... so Turkey will move clocks forward one hour on March 31 at 3:00 a.m. ++# From Paul Eggert (2014-02-17): ++# Here is an English-language source: ++# http://www.worldbulletin.net/turkey/129016/turkey-switches-to-daylight-saving-time-march-31 + + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S + Rule Turkey 1916 only - May 1 0:00 1:00 S +@@ -2844,6 +2848,8 @@ + 2:00 Turkey EE%sT 2007 + 2:00 EU EE%sT 2011 Mar 27 1:00u + 2:00 - EET 2011 Mar 28 1:00u ++ 2:00 EU EE%sT 2014 Mar 30 1:00u ++ 2:00 - EET 2014 Mar 31 1:00u + 2:00 EU EE%sT + Link Europe/Istanbul Asia/Istanbul # Istanbul is in both continents. + +@@ -2865,19 +2871,13 @@ + # approval from 266 deputies. + # + # Ukraine abolishes transter back to the winter time (in Russian) +-# <a href="http://news.mail.ru/politics/6861560/"> + # http://news.mail.ru/politics/6861560/ +-# </a> + # + # The Ukrainians will no longer change the clock (in Russian) +-# <a href="http://www.segodnya.ua/news/14290482.html"> + # http://www.segodnya.ua/news/14290482.html +-# </a> + # + # Deputies cancelled the winter time (in Russian) +-# <a href="http://www.pravda.com.ua/rus/news/2011/09/20/6600616/"> + # http://www.pravda.com.ua/rus/news/2011/09/20/6600616/ +-# </a> + # + # From Philip Pizzey (2011-10-18): + # Today my Ukrainian colleagues have informed me that the +@@ -2888,18 +2888,39 @@ + # As far as I understand, the recent change to the Ukrainian time zone + # (Europe/Kiev) to introduce permanent daylight saving time (similar + # to Russia) was reverted today: +-# +-# <a href="http://portal.rada.gov.ua/rada/control/en/publish/article/info_left?art_id=287324&cat_id=105995"> + # http://portal.rada.gov.ua/rada/control/en/publish/article/info_left?art_id=287324&cat_id=105995 +-# </a> + # + # Also reported by Alexander Bokovoy (2011-10-18) who also noted: + # The law documents themselves are at ++# http://w1.c1.rada.gov.ua/pls/zweb_n/webproc4_1?id=&pf3511=41484 ++ ++# From Vladimir in Moscow via Alois Treindl re Kiev time 1991/2 (2014-02-28): ++# First in Ukraine they changed Time zone from UTC+3 to UTC+2 with DST: ++# 03 25 1990 02:00 -03.00 1 Time Zone 3 with DST ++# 07 01 1990 02:00 -02.00 1 Time Zone 2 with DST ++# * Ukrainian Government's Resolution of 18.06.1990, No. 134. ++# http://search.ligazakon.ua/l_doc2.nsf/link1/T001500.html + # +-# <a href="http://w1.c1.rada.gov.ua/pls/zweb_n/webproc4_1?id=&pf3511=41484"> +-# http://w1.c1.rada.gov.ua/pls/zweb_n/webproc4_1?id=&pf3511=41484 +-# </a> +- ++# They did not end DST in September, 1990 (according to the law, ++# "summer time" was still in action): ++# 09 30 1990 03:00 -02.00 1 Time Zone 2 with DST ++# * Ukrainian Government's Resolution of 21.09.1990, No. 272. ++# http://search.ligazakon.ua/l_doc2.nsf/link1/KP900272.html ++# ++# Again no change in March, 1991 ("summer time" in action): ++# 03 31 1991 02:00 -02.00 1 Time Zone 2 with DST ++# ++# DST ended in September 1991 ("summer time" ended): ++# 09 29 1991 03:00 -02.00 0 Time Zone 2, no DST ++# * Ukrainian Government's Resolution of 25.09.1991, No. 225. ++# http://www.uazakon.com/documents/date_21/pg_iwgdoc.htm ++# This is an answer. ++# ++# Since 1992 they had normal DST procedure: ++# 03 29 1992 02:00 -02.00 1 DST started ++# 09 27 1992 03:00 -02.00 0 DST ended ++# * Ukrainian Government's Resolution of 20.03.1992, No. 139. ++# http://www.uazakon.com/documents/date_8u/pg_grcasa.htm + + # Zone NAME GMTOFF RULES FORMAT [UNTIL] + # Most of Ukraine since 1970 has been like Kiev. +@@ -2910,9 +2931,8 @@ + 2:00 - EET 1930 Jun 21 + 3:00 - MSK 1941 Sep 20 + 1:00 C-Eur CE%sT 1943 Nov 6 +- 3:00 Russia MSK/MSD 1990 +- 3:00 - MSK 1990 Jul 1 2:00 +- 2:00 - EET 1992 ++ 3:00 Russia MSK/MSD 1990 Jul 1 2:00 ++ 2:00 1:00 EEST 1991 Sep 29 3:00 + 2:00 E-Eur EE%sT 1995 + 2:00 EU EE%sT + # Ruthenia used CET 1990/1991. +@@ -2966,7 +2986,15 @@ + # Assume it happened in March by not changing the clocks. + 3:00 Russia MSK/MSD 1997 + 3:00 - MSK 1997 Mar lastSun 1:00u +- 2:00 EU EE%sT ++# From Alexander Krivenyshev (2014-03-17): ++# time change at 2:00 (2am) on March 30, 2014 ++# http://vz.ru/news/2014/3/17/677464.html ++# From Paul Eggert (2014-03-30): ++# Simferopol and Sevastopol reportedly changed their central town clocks ++# late the previous day, but this appears to have been ceremonial ++# and the discrepancies are small enough to not worry about. ++ 2:00 EU EE%sT 2014 Mar 30 2:00 ++ 4:00 - MSK + + # Vatican City + # See Europe/Rome. +--- jdk/make/data/tzdata/leapseconds Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/make/data/tzdata/leapseconds Tue Jun 03 14:19:36 2014 -0700 +@@ -20,7 +20,7 @@ + # 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. +- ++# + # Allowance for leapseconds added to each timezone file. + + # This file is in the public domain. +--- jdk/make/data/tzdata/northamerica Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/make/data/tzdata/northamerica Tue Jun 03 14:19:36 2014 -0700 +@@ -414,9 +414,10 @@ + # US Pacific time, represented by Los Angeles + # + # California, northern Idaho (Benewah, Bonner, Boundary, Clearwater, +-# Idaho, Kootenai, Latah, Lewis, Nez Perce, and Shoshone counties, +-# and the northern three-quarters of Idaho county), +-# most of Nevada, most of Oregon, and Washington ++# Kootenai, Latah, Lewis, Nez Perce, and Shoshone counties, Idaho county ++# north of the Salmon River, and the towns of Burgdorf and Warren), ++# Nevada (except West Wendover), Oregon (except the northern 3/4 of ++# Malheur county), and Washington + # + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER + Rule CA 1948 only - Mar 14 2:00 1:00 D +--- jdk/make/data/tzdata/southamerica Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/make/data/tzdata/southamerica Tue Jun 03 14:19:36 2014 -0700 +@@ -1298,6 +1298,13 @@ + # start date is 2013-09-08 00:00.... + # http://www.gob.cl/informa/2013/02/15/gobierno-anuncia-fechas-de-cambio-de-hora-para-el-ano-2013.htm + ++# From Jose Miguel Garrido (2014-02-19): ++# Today appeared in the Diario Oficial a decree amending the time change ++# dates to 2014. ++# DST End: last Saturday of April 2014 (Sun 27 Apr 2014 03:00 UTC) ++# DST Start: first Saturday of September 2014 (Sun 07 Sep 2014 04:00 UTC) ++# http://www.diariooficial.interior.gob.cl//media/2014/02/19/do-20140219.pdf ++ + # NOTE: ChileAQ rules for Antarctic bases are stored separately in the + # 'antarctica' file. + +@@ -1631,6 +1638,9 @@ + # From Carlos Raul Perasso (2013-03-15): + # The change in Paraguay is now final. Decree number 10780 + # http://www.presidencia.gov.py/uploads/pdf/presidencia-3b86ff4b691c79d4f5927ca964922ec74772ce857c02ca054a52a37b49afc7fb.pdf ++# From Carlos Raul Perasso (2014-02-28): ++# Decree 1264 can be found at: ++# http://www.presidencia.gov.py/archivos/documentos/DECRETO1264_ey9r8zai.pdf + Rule Para 2013 max - Mar Sun>=22 0:00 0 - + + # Zone NAME GMTOFF RULES FORMAT [UNTIL] +@@ -1689,18 +1699,19 @@ + Zone America/Port_of_Spain -4:06:04 - LMT 1912 Mar 2 + -4:00 - AST + ++# These all agree with Trinidad and Tobago since 1970. + Link America/Port_of_Spain America/Anguilla + Link America/Port_of_Spain America/Dominica + Link America/Port_of_Spain America/Grenada + Link America/Port_of_Spain America/Guadeloupe +-Link America/Port_of_Spain America/Marigot ++Link America/Port_of_Spain America/Marigot # St Martin (French part) + Link America/Port_of_Spain America/Montserrat + Link America/Port_of_Spain America/St_Barthelemy +-Link America/Port_of_Spain America/St_Kitts ++Link America/Port_of_Spain America/St_Kitts # St Kitts & Nevis + Link America/Port_of_Spain America/St_Lucia +-Link America/Port_of_Spain America/St_Thomas ++Link America/Port_of_Spain America/St_Thomas # Virgin Islands (US) + Link America/Port_of_Spain America/St_Vincent +-Link America/Port_of_Spain America/Tortola ++Link America/Port_of_Spain America/Tortola # Virgin Islands (UK) + + # Uruguay + # From Paul Eggert (1993-11-18): +--- jdk/make/data/tzdata/zone.tab Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/make/data/tzdata/zone.tab Tue Jun 03 14:19:36 2014 -0700 +@@ -74,6 +74,7 @@ + AQ -7824+10654 Antarctica/Vostok Vostok Station, Lake Vostok + AQ -6640+14001 Antarctica/DumontDUrville Dumont-d'Urville Station, Terre Adelie + AQ -690022+0393524 Antarctica/Syowa Syowa Station, E Ongul I ++AQ -720041+0023206 Antarctica/Troll Troll Station, Queen Maud Land + AR -3436-05827 America/Argentina/Buenos_Aires Buenos Aires (BA, CF) + AR -3124-06411 America/Argentina/Cordoba most locations (CB, CC, CN, ER, FM, MN, SE, SF) + AR -2447-06525 America/Argentina/Salta (SA, LP, NQ, RN) +@@ -366,6 +367,7 @@ + RU +5545+03735 Europe/Moscow Moscow+00 - west Russia + RU +4844+04425 Europe/Volgograd Moscow+00 - Caspian Sea + RU +5312+05009 Europe/Samara Moscow+00 - Samara, Udmurtia ++RU +4457+03406 Europe/Simferopol Moscow+00 - Crimea + RU +5651+06036 Asia/Yekaterinburg Moscow+02 - Urals + RU +5500+07324 Asia/Omsk Moscow+03 - west Siberia + RU +5502+08255 Asia/Novosibirsk Moscow+03 - Novosibirsk +@@ -421,7 +423,6 @@ + UA +5026+03031 Europe/Kiev most locations + UA +4837+02218 Europe/Uzhgorod Ruthenia + UA +4750+03510 Europe/Zaporozhye Zaporozh'ye, E Lugansk / Zaporizhia, E Luhansk +-UA +4457+03406 Europe/Simferopol central Crimea + UG +0019+03225 Africa/Kampala + UM +1645-16931 Pacific/Johnston Johnston Atoll + UM +2813-17722 Pacific/Midway Midway Islands +--- jdk/make/mapfiles/libsunec/mapfile-vers Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/make/mapfiles/libsunec/mapfile-vers Tue Jun 03 14:19:36 2014 -0700 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + # 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,10 +28,9 @@ + SUNWprivate_1.1 { + global: + Java_sun_security_ec_ECKeyPairGenerator_generateECKeyPair; +- Java_sun_security_ec_ECKeyPairGenerator_getEncodedBytes; +- Java_sun_security_ec_ECDSASignature_signDigest; +- Java_sun_security_ec_ECDSASignature_verifySignedDigest; +- Java_sun_security_ec_ECDHKeyAgreement_deriveKey; ++ Java_sun_security_ec_ECDSASignature_signDigest; ++ Java_sun_security_ec_ECDSASignature_verifySignedDigest; ++ Java_sun_security_ec_ECDHKeyAgreement_deriveKey; + local: + *; + }; +--- jdk/make/profile-includes.txt Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/make/profile-includes.txt Tue Jun 03 14:19:36 2014 -0700 +@@ -73,6 +73,7 @@ + rt.jar \ + security/US_export_policy.jar \ + security/blacklist \ ++ security/blacklisted.certs \ + security/cacerts \ + security/java.policy \ + security/java.security \ +--- jdk/src/macosx/native/sun/awt/AWTWindow.m Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/macosx/native/sun/awt/AWTWindow.m Tue Jun 03 14:19:36 2014 -0700 +@@ -261,7 +261,8 @@ + + // returns id for the topmost window under mouse + + (NSInteger) getTopmostWindowUnderMouseID { +- ++ NSInteger result = -1; ++ + NSRect screenRect = [[NSScreen mainScreen] frame]; + NSPoint nsMouseLocation = [NSEvent mouseLocation]; + CGPoint cgMouseLocation = CGPointMake(nsMouseLocation.x, screenRect.size.height - nsMouseLocation.y); +@@ -274,11 +275,13 @@ + CGRect rect; + CGRectMakeWithDictionaryRepresentation((CFDictionaryRef)[window objectForKey:(id)kCGWindowBounds], &rect); + if (CGRectContainsPoint(rect, cgMouseLocation)) { +- return [[window objectForKey:(id)kCGWindowNumber] integerValue]; ++ result = [[window objectForKey:(id)kCGWindowNumber] integerValue]; ++ break; + } + } + } +- return -1; ++ [windows release]; ++ return result; + } + + // checks that this window is under the mouse cursor and this point is not overlapped by others windows +--- jdk/src/macosx/native/sun/awt/CGraphicsDevice.m Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/macosx/native/sun/awt/CGraphicsDevice.m Tue Jun 03 14:19:36 2014 -0700 +@@ -66,7 +66,8 @@ + CFArrayAppendValue(validModes, cRef); + } + } +- ++ CFRelease(allModes); ++ + CGDisplayModeRef currentMode = CGDisplayCopyDisplayMode(displayID); + + BOOL containsCurrentMode = NO; +@@ -81,6 +82,7 @@ + if (!containsCurrentMode) { + CFArrayAppendValue(validModes, currentMode); + } ++ CGDisplayModeRelease(currentMode); + + return validModes; + } +@@ -235,17 +237,19 @@ + { + JNF_COCOA_ENTER(env); + CFArrayRef allModes = getAllValidDisplayModes(displayID); +- + CGDisplayModeRef closestMatch = getBestModeForParameters(allModes, (int)w, (int)h, (int)bpp, (int)refrate); ++ + __block CGError retCode = kCGErrorSuccess; + if (closestMatch != NULL) { +- [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ ++ CGDisplayModeRetain(closestMatch); ++ [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ + CGDisplayConfigRef config; + retCode = CGBeginDisplayConfiguration(&config); + if (retCode == kCGErrorSuccess) { + CGConfigureDisplayWithDisplayMode(config, displayID, closestMatch, NULL); + retCode = CGCompleteDisplayConfiguration(config, kCGConfigureForAppOnly); + } ++ CGDisplayModeRelease(closestMatch); + }]; + } else { + [JNFException raise:env as:kIllegalArgumentException reason:"Invalid display mode"]; +@@ -253,8 +257,7 @@ + + if (retCode != kCGErrorSuccess){ + [JNFException raise:env as:kIllegalArgumentException reason:"Unable to set display mode!"]; +- } +- ++ } + CFRelease(allModes); + JNF_COCOA_EXIT(env); + } +--- jdk/src/share/classes/com/sun/jmx/remote/security/SubjectDelegator.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/com/sun/jmx/remote/security/SubjectDelegator.java Tue Jun 03 14:19:36 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -34,22 +34,14 @@ + + import javax.management.remote.SubjectDelegationPermission; + +-import com.sun.jmx.remote.util.CacheMap; +-import java.util.ArrayList; +-import java.util.Collection; ++import java.util.*; + + public class SubjectDelegator { +- private static final int PRINCIPALS_CACHE_SIZE = 10; +- private static final int ACC_CACHE_SIZE = 10; +- +- private CacheMap<Subject, Principal[]> principalsCache; +- private CacheMap<Subject, AccessControlContext> accCache; +- + /* Return the AccessControlContext appropriate to execute an + operation on behalf of the delegatedSubject. If the + authenticatedAccessControlContext does not have permission to + delegate to that subject, throw SecurityException. */ +- public synchronized AccessControlContext ++ public AccessControlContext + delegatedContext(AccessControlContext authenticatedACC, + Subject delegatedSubject, + boolean removeCallerContext) +@@ -58,56 +50,14 @@ + if (System.getSecurityManager() != null && authenticatedACC == null) { + throw new SecurityException("Illegal AccessControlContext: null"); + } +- if (principalsCache == null || accCache == null) { +- principalsCache = +- new CacheMap<>(PRINCIPALS_CACHE_SIZE); +- accCache = +- new CacheMap<>(ACC_CACHE_SIZE); +- } +- +- // Retrieve the principals for the given +- // delegated subject from the cache +- // +- Principal[] delegatedPrincipals = principalsCache.get(delegatedSubject); +- +- // Convert the set of principals stored in the +- // delegated subject into an array of principals +- // and store it in the cache +- // +- if (delegatedPrincipals == null) { +- delegatedPrincipals = +- delegatedSubject.getPrincipals().toArray(new Principal[0]); +- principalsCache.put(delegatedSubject, delegatedPrincipals); +- } +- +- // Retrieve the access control context for the +- // given delegated subject from the cache +- // +- AccessControlContext delegatedACC = accCache.get(delegatedSubject); +- +- // Build the access control context to be used +- // when executing code as the delegated subject +- // and store it in the cache +- // +- if (delegatedACC == null) { +- if (removeCallerContext) { +- delegatedACC = +- JMXSubjectDomainCombiner.getDomainCombinerContext( +- delegatedSubject); +- } else { +- delegatedACC = +- JMXSubjectDomainCombiner.getContext(delegatedSubject); +- } +- accCache.put(delegatedSubject, delegatedACC); +- } + + // Check if the subject delegation permission allows the + // authenticated subject to assume the identity of each + // principal in the delegated subject + // +- final Principal[] dp = delegatedPrincipals; +- final Collection<Permission> permissions = new ArrayList<>(dp.length); +- for(Principal p : dp) { ++ Collection<Principal> ps = getSubjectPrincipals(delegatedSubject); ++ final Collection<Permission> permissions = new ArrayList<>(ps.size()); ++ for(Principal p : ps) { + final String pname = p.getClass().getName() + "." + p.getName(); + permissions.add(new SubjectDelegationPermission(pname)); + } +@@ -122,7 +72,15 @@ + }; + AccessController.doPrivileged(action, authenticatedACC); + +- return delegatedACC; ++ return getDelegatedAcc(delegatedSubject, removeCallerContext); ++ } ++ ++ private AccessControlContext getDelegatedAcc(Subject delegatedSubject, boolean removeCallerContext) { ++ if (removeCallerContext) { ++ return JMXSubjectDomainCombiner.getDomainCombinerContext(delegatedSubject); ++ } else { ++ return JMXSubjectDomainCombiner.getContext(delegatedSubject); ++ } + } + + /** +@@ -137,11 +95,9 @@ + public static synchronized boolean + checkRemoveCallerContext(Subject subject) { + try { +- final Principal[] dp = +- subject.getPrincipals().toArray(new Principal[0]); +- for (int i = 0 ; i < dp.length ; i++) { ++ for (Principal p : getSubjectPrincipals(subject)) { + final String pname = +- dp[i].getClass().getName() + "." + dp[i].getName(); ++ p.getClass().getName() + "." + p.getName(); + final Permission sdp = + new SubjectDelegationPermission(pname); + AccessController.checkPermission(sdp); +@@ -151,4 +107,19 @@ + } + return true; + } ++ ++ /** ++ * Retrieves the {@linkplain Subject} principals ++ * @param subject The subject ++ * @return If the {@code Subject} is immutable it will return the principals directly. ++ * If the {@code Subject} is mutable it will create an unmodifiable copy. ++ */ ++ private static Collection<Principal> getSubjectPrincipals(Subject subject) { ++ if (subject.isReadOnly()) { ++ return subject.getPrincipals(); ++ } ++ ++ List<Principal> principals = Arrays.asList(subject.getPrincipals().toArray(new Principal[0])); ++ return Collections.unmodifiableList(principals); ++ } + } +--- jdk/src/share/classes/com/sun/jmx/remote/util/CacheMap.java Wed Mar 12 11:58:14 2014 +0000 ++++ /dev/null Thu Jan 01 00:00:00 1970 +0000 +@@ -1,121 +0,0 @@ +-/* +- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved. +- * 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.jmx.remote.util; +- +-import java.lang.ref.SoftReference; +-import java.util.Iterator; +-import java.util.LinkedList; +-import java.util.List; +-import java.util.WeakHashMap; +- +-import com.sun.jmx.mbeanserver.Util; +- +-/** +- * <p>Like WeakHashMap, except that the keys of the <em>n</em> most +- * recently-accessed entries are kept as {@link SoftReference soft +- * references}. Accessing an element means creating it, or retrieving +- * it with {@link #get(Object) get}. Because these entries are kept +- * with soft references, they will tend to remain even if their keys +- * are not referenced elsewhere. But if memory is short, they will +- * be removed.</p> +- */ +-public class CacheMap<K, V> extends WeakHashMap<K, V> { +- /** +- * <p>Create a <code>CacheMap</code> that can keep up to +- * <code>nSoftReferences</code> as soft references.</p> +- * +- * @param nSoftReferences Maximum number of keys to keep as soft +- * references. Access times for {@link #get(Object) get} and +- * {@link #put(Object, Object) put} have a component that scales +- * linearly with <code>nSoftReferences</code>, so this value +- * should not be too great. +- * +- * @throws IllegalArgumentException if +- * <code>nSoftReferences</code> is negative. +- */ +- public CacheMap(int nSoftReferences) { +- if (nSoftReferences < 0) { +- throw new IllegalArgumentException("nSoftReferences = " + +- nSoftReferences); +- } +- this.nSoftReferences = nSoftReferences; +- } +- +- public V put(K key, V value) { +- cache(key); +- return super.put(key, value); +- } +- +- public V get(Object key) { +- cache(Util.<K>cast(key)); +- return super.get(key); +- } +- +- /* We don't override remove(Object) or try to do something with +- the map's iterators to detect removal. So we may keep useless +- entries in the soft reference list for keys that have since +- been removed. The assumption is that entries are added to the +- cache but never removed. But the behavior is not wrong if +- they are in fact removed -- the caching is just less +- performant. */ +- +- private void cache(K key) { +- Iterator<SoftReference<K>> it = cache.iterator(); +- while (it.hasNext()) { +- SoftReference<K> sref = it.next(); +- K key1 = sref.get(); +- if (key1 == null) +- it.remove(); +- else if (key.equals(key1)) { +- // Move this element to the head of the LRU list +- it.remove(); +- cache.add(0, sref); +- return; +- } +- } +- +- int size = cache.size(); +- if (size == nSoftReferences) { +- if (size == 0) +- return; // degenerate case, equivalent to WeakHashMap +- it.remove(); +- } +- +- cache.add(0, new SoftReference<K>(key)); +- } +- +- /* List of soft references for the most-recently referenced keys. +- The list is in most-recently-used order, i.e. the first element +- is the most-recently referenced key. There are never more than +- nSoftReferences elements of this list. +- +- If we didn't care about J2SE 1.3 compatibility, we could use +- LinkedHashSet in conjunction with a subclass of SoftReference +- whose equals and hashCode reflect the referent. */ +- private final LinkedList<SoftReference<K>> cache = +- new LinkedList<SoftReference<K>>(); +- private final int nSoftReferences; +-} +--- jdk/src/share/classes/com/sun/security/sasl/CramMD5Base.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/com/sun/security/sasl/CramMD5Base.java Tue Jun 03 14:19:36 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -32,6 +32,7 @@ + import java.security.NoSuchAlgorithmException; + import java.security.MessageDigest; + ++import java.util.Arrays; + import java.util.logging.Logger; + + /** +@@ -159,7 +160,7 @@ + MessageDigest md5 = MessageDigest.getInstance("MD5"); + + /* digest the key if longer than 64 bytes */ +- if (key.length > 64) { ++ if (key.length > MD5_BLOCKSIZE) { + key = md5.digest(key); + } + +@@ -169,13 +170,9 @@ + int i; + + /* store key in pads */ +- for (i = 0; i < MD5_BLOCKSIZE; i++) { +- for ( ; i < key.length; i++) { +- ipad[i] = key[i]; +- opad[i] = key[i]; +- } +- ipad[i] = 0x00; +- opad[i] = 0x00; ++ for (i = 0; i < key.length; i++) { ++ ipad[i] = key[i]; ++ opad[i] = key[i]; + } + + /* XOR key with pads */ +@@ -207,6 +204,11 @@ + } + } + ++ Arrays.fill(ipad, (byte)0); ++ Arrays.fill(opad, (byte)0); ++ ipad = null; ++ opad = null; ++ + return (digestString.toString()); + } + +--- jdk/src/share/classes/java/lang/ProcessBuilder.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/java/lang/ProcessBuilder.java Tue Jun 03 14:19:36 2014 -0700 +@@ -1019,6 +1019,12 @@ + + String dir = directory == null ? null : directory.toString(); + ++ for (int i = 1; i < cmdarray.length; i++) { ++ if (cmdarray[i].indexOf('\u0000') >= 0) { ++ throw new IOException("invalid null character in command"); ++ } ++ } ++ + try { + return ProcessImpl.start(cmdarray, + environment, +--- jdk/src/share/classes/java/lang/invoke/MethodHandles.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/java/lang/invoke/MethodHandles.java Tue Jun 03 14:19:36 2014 -0700 +@@ -39,7 +39,9 @@ + import sun.security.util.SecurityConstants; + import static java.lang.invoke.MethodHandleStatics.*; + import static java.lang.invoke.MethodHandleNatives.Constants.*; ++ + import java.util.concurrent.ConcurrentHashMap; ++ + import sun.security.util.SecurityConstants; + + /** +@@ -1504,6 +1506,10 @@ + // that is *not* the bytecode behavior. + mods ^= Modifier.PROTECTED | Modifier.PUBLIC; + } ++ if (Modifier.isProtected(mods) && refKind == REF_newInvokeSpecial) { ++ // cannot "new" a protected ctor in a different package ++ mods ^= Modifier.PROTECTED; ++ } + if (Modifier.isFinal(mods) && + MethodHandleNatives.refKindIsSetter(refKind)) + throw m.makeAccessException("unexpected set of a final field", this); +--- jdk/src/share/classes/java/lang/reflect/Proxy.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/java/lang/reflect/Proxy.java Tue Jun 03 14:19:36 2014 -0700 +@@ -362,12 +362,13 @@ + Class<?>... interfaces) + throws IllegalArgumentException + { +- SecurityManager sm = System.getSecurityManager(); ++ final Class<?>[] intfs = interfaces.clone(); ++ final SecurityManager sm = System.getSecurityManager(); + if (sm != null) { +- checkProxyAccess(Reflection.getCallerClass(), loader, interfaces); ++ checkProxyAccess(Reflection.getCallerClass(), loader, intfs); + } + +- return getProxyClass0(loader, interfaces); ++ return getProxyClass0(loader, intfs); + } + + /* +@@ -706,15 +707,16 @@ + { + Objects.requireNonNull(h); + ++ final Class<?>[] intfs = interfaces.clone(); + final SecurityManager sm = System.getSecurityManager(); + if (sm != null) { +- checkProxyAccess(Reflection.getCallerClass(), loader, interfaces); ++ checkProxyAccess(Reflection.getCallerClass(), loader, intfs); + } + + /* + * Look up or generate the designated proxy class. + */ +- Class<?> cl = getProxyClass0(loader, interfaces); ++ Class<?> cl = getProxyClass0(loader, intfs); + + /* + * Invoke its constructor with the designated invocation handler. +--- jdk/src/share/classes/java/security/Provider.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/java/security/Provider.java Tue Jun 03 14:19:36 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -1372,7 +1372,7 @@ + * <p>This class defines the methods {@link #supportsParameter + * supportsParameter()} and {@link #newInstance newInstance()} + * which are used by the Java security framework when it searches for +- * suitable services and instantes them. The valid arguments to those ++ * suitable services and instantiates them. The valid arguments to those + * methods depend on the type of service. For the service types defined + * within Java SE, see the + * <a href="../../../technotes/guides/security/crypto/CryptoSpec.html"> +@@ -1562,7 +1562,7 @@ + * + * @throws InvalidParameterException if the value of + * constructorParameter is invalid for this type of service. +- * @throws NoSuchAlgorithmException if instantation failed for ++ * @throws NoSuchAlgorithmException if instantiation failed for + * any other reason. + */ + public Object newInstance(Object constructorParameter) +@@ -1590,7 +1590,9 @@ + + " engines"); + } + Class<?> clazz = getImplClass(); +- return clazz.newInstance(); ++ Class<?>[] empty = {}; ++ Constructor<?> con = clazz.getConstructor(empty); ++ return con.newInstance(); + } else { + Class<?> paramClass = cap.getConstructorParameterClass(); + if (constructorParameter != null) { +@@ -1633,13 +1635,18 @@ + } else { + clazz = cl.loadClass(className); + } ++ if (!Modifier.isPublic(clazz.getModifiers())) { ++ throw new NoSuchAlgorithmException ++ ("class configured for " + type + " (provider: " + ++ provider.getName() + ") is not public."); ++ } + classRef = new WeakReference<Class<?>>(clazz); + } + return clazz; + } catch (ClassNotFoundException e) { + throw new NoSuchAlgorithmException +- ("class configured for " + type + "(provider: " + +- provider.getName() + ")" + "cannot be found.", e); ++ ("class configured for " + type + " (provider: " + ++ provider.getName() + ") cannot be found.", e); + } + } + +@@ -1652,15 +1659,21 @@ + throws Exception { + Class<?> clazz = getImplClass(); + if (constructorParameter == null) { +- Object o = clazz.newInstance(); +- return o; ++ // create instance with public no-arg constructor if it exists ++ try { ++ Class<?>[] empty = {}; ++ Constructor<?> con = clazz.getConstructor(empty); ++ return con.newInstance(); ++ } catch (NoSuchMethodException e) { ++ throw new NoSuchAlgorithmException("No public no-arg " ++ + "constructor found in class " + className); ++ } + } + Class<?> argClass = constructorParameter.getClass(); + Constructor[] cons = clazz.getConstructors(); + // find first public constructor that can take the + // argument as parameter +- for (int i = 0; i < cons.length; i++) { +- Constructor<?> con = cons[i]; ++ for (Constructor<?> con : cons) { + Class<?>[] paramTypes = con.getParameterTypes(); + if (paramTypes.length != 1) { + continue; +@@ -1668,10 +1681,9 @@ + if (paramTypes[0].isAssignableFrom(argClass) == false) { + continue; + } +- Object o = con.newInstance(new Object[] {constructorParameter}); +- return o; ++ return con.newInstance(constructorParameter); + } +- throw new NoSuchAlgorithmException("No constructor matching " ++ throw new NoSuchAlgorithmException("No public constructor matching " + + argClass.getName() + " found in class " + className); + } + +--- jdk/src/share/classes/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.java Tue Jun 03 14:19:36 2014 -0700 +@@ -334,6 +334,8 @@ + + if (vclass != fieldClass) + throw new ClassCastException(); ++ if (vclass.isPrimitive()) ++ throw new IllegalArgumentException("Must be reference type"); + + if (!Modifier.isVolatile(modifiers)) + throw new IllegalArgumentException("Must be volatile type"); +--- jdk/src/share/classes/javax/swing/filechooser/FileSystemView.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/javax/swing/filechooser/FileSystemView.java Tue Jun 03 14:19:36 2014 -0700 +@@ -718,7 +718,8 @@ + * @return the Desktop folder. + */ + public File getHomeDirectory() { +- return getRoots()[0]; ++ File[] roots = getRoots(); ++ return (roots.length == 0) ? null : roots[0]; + } + + /** +--- jdk/src/share/classes/sun/awt/AppContext.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/sun/awt/AppContext.java Tue Jun 03 14:19:36 2014 -0700 +@@ -329,6 +329,20 @@ + while (context == null) { + threadGroup = threadGroup.getParent(); + if (threadGroup == null) { ++ // We've got up to the root thread group and did not find an AppContext ++ // Try to get it from the security manager ++ SecurityManager securityManager = System.getSecurityManager(); ++ if (securityManager != null) { ++ ThreadGroup smThreadGroup = securityManager.getThreadGroup(); ++ if (smThreadGroup != null) { ++ /* ++ * If we get this far then it's likely that ++ * the ThreadGroup does not actually belong ++ * to the applet, so do not cache it. ++ */ ++ return threadGroup2appContext.get(smThreadGroup); ++ } ++ } + return null; + } + context = threadGroup2appContext.get(threadGroup); +--- jdk/src/share/classes/sun/awt/FontConfiguration.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/sun/awt/FontConfiguration.java Tue Jun 03 14:19:36 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -867,7 +867,7 @@ + return descriptors; + } + +- private FontDescriptor[] buildFontDescriptors(int fontIndex, int styleIndex) { ++ protected FontDescriptor[] buildFontDescriptors(int fontIndex, int styleIndex) { + String fontName = fontNames[fontIndex]; + String styleName = styleNames[styleIndex]; + +--- jdk/src/share/classes/sun/security/ec/ECKeyPairGenerator.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/sun/security/ec/ECKeyPairGenerator.java Tue Jun 03 14:19:36 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + * 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,19 +125,18 @@ + + try { + +- long[] handles = generateECKeyPair(keySize, encodedParams, seed); ++ Object[] keyBytes = generateECKeyPair(keySize, encodedParams, seed); + + // The 'params' object supplied above is equivalent to the native + // one so there is no need to fetch it. +- +- // handles[0] points to the native private key +- BigInteger s = new BigInteger(1, getEncodedBytes(handles[0])); ++ // keyBytes[0] is the encoding of the native private key ++ BigInteger s = new BigInteger(1, (byte[])keyBytes[0]); + + PrivateKey privateKey = + new ECPrivateKeyImpl(s, (ECParameterSpec)params); + +- // handles[1] points to the native public key +- ECPoint w = ECUtil.decodePoint(getEncodedBytes(handles[1]), ++ // keyBytes[1] is the encoding of the native public key ++ ECPoint w = ECUtil.decodePoint((byte[])keyBytes[1], + ((ECParameterSpec)params).getCurve()); + PublicKey publicKey = + new ECPublicKeyImpl(w, (ECParameterSpec)params); +@@ -162,14 +161,9 @@ + } + + /* +- * Generates the keypair and returns a 2-element array of handles. +- * The first handle points to the private key, the second to the public key. ++ * Generates the keypair and returns a 2-element array of encoding bytes. ++ * The first one is for the private key, the second for the public key. + */ +- private static native long[] generateECKeyPair(int keySize, ++ private static native Object[] generateECKeyPair(int keySize, + byte[] encodedParams, byte[] seed) throws GeneralSecurityException; +- +- /* +- * Extracts the encoded key data using the supplied handle. +- */ +- private static native byte[] getEncodedBytes(long handle); + } +--- jdk/src/share/classes/sun/security/rsa/RSACore.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/sun/security/rsa/RSACore.java Tue Jun 03 14:19:36 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -50,6 +50,15 @@ + */ + public final class RSACore { + ++ // globally enable/disable use of blinding ++ private final static boolean ENABLE_BLINDING = true; ++ ++ // cache for blinding parameters. Map<BigInteger, BlindingParameters> ++ // use a weak hashmap so that cached values are automatically cleared ++ // when the modulus is GC'ed ++ private final static Map<BigInteger, BlindingParameters> ++ blindingCache = new WeakHashMap<>(); ++ + private RSACore() { + // empty + } +@@ -100,12 +109,12 @@ + if (key instanceof RSAPrivateCrtKey) { + return crtCrypt(msg, (RSAPrivateCrtKey)key); + } else { +- return crypt(msg, key.getModulus(), key.getPrivateExponent()); ++ return priCrypt(msg, key.getModulus(), key.getPrivateExponent()); + } + } + + /** +- * RSA public key ops and non-CRT private key ops. Simple modPow(). ++ * RSA public key ops. Simple modPow(). + */ + private static byte[] crypt(byte[] msg, BigInteger n, BigInteger exp) + throws BadPaddingException { +@@ -115,22 +124,29 @@ + } + + /** ++ * RSA non-CRT private key operations. ++ */ ++ private static byte[] priCrypt(byte[] msg, BigInteger n, BigInteger exp) ++ throws BadPaddingException { ++ ++ BigInteger c = parseMsg(msg, n); ++ BlindingRandomPair brp = null; ++ BigInteger m; ++ if (ENABLE_BLINDING) { ++ brp = getBlindingRandomPair(null, exp, n); ++ c = c.multiply(brp.u).mod(n); ++ m = c.modPow(exp, n); ++ m = m.multiply(brp.v).mod(n); ++ } else { ++ m = c.modPow(exp, n); ++ } ++ ++ return toByteArray(m, getByteLength(n)); ++ } ++ ++ /** + * RSA private key operations with CRT. Algorithm and variable naming + * are taken from PKCS#1 v2.1, section 5.1.2. +- * +- * The only difference is the addition of blinding to twart timing attacks. +- * This is described in the RSA Bulletin#2 (Jan 96) among other places. +- * This means instead of implementing RSA as +- * m = c ^ d mod n (or RSA in CRT variant) +- * we do +- * r = random(0, n-1) +- * c' = c * r^e mod n +- * m' = c' ^ d mod n (or RSA in CRT variant) +- * m = m' * r^-1 mod n (where r^-1 is the modular inverse of r mod n) +- * This works because r^(e*d) * r^-1 = r * r^-1 = 1 (all mod n) +- * +- * We do not generate new blinding parameters for each operation but reuse +- * them BLINDING_MAX_REUSE times (see definition below). + */ + private static byte[] crtCrypt(byte[] msg, RSAPrivateCrtKey key) + throws BadPaddingException { +@@ -141,13 +157,13 @@ + BigInteger dP = key.getPrimeExponentP(); + BigInteger dQ = key.getPrimeExponentQ(); + BigInteger qInv = key.getCrtCoefficient(); ++ BigInteger e = key.getPublicExponent(); ++ BigInteger d = key.getPrivateExponent(); + +- BlindingParameters params; ++ BlindingRandomPair brp; + if (ENABLE_BLINDING) { +- params = getBlindingParameters(key); +- c = c.multiply(params.re).mod(n); +- } else { +- params = null; ++ brp = getBlindingRandomPair(e, d, n); ++ c = c.multiply(brp.u).mod(n); + } + + // m1 = c ^ dP mod p +@@ -165,8 +181,8 @@ + // m = m2 + q * h + BigInteger m = h.multiply(q).add(m2); + +- if (params != null) { +- m = m.multiply(params.rInv).mod(n); ++ if (ENABLE_BLINDING) { ++ m = m.multiply(brp.v).mod(n); + } + + return toByteArray(m, getByteLength(n)); +@@ -208,82 +224,217 @@ + return t; + } + +- // globally enable/disable use of blinding +- private final static boolean ENABLE_BLINDING = true; ++ /** ++ * Parameters (u,v) for RSA Blinding. This is described in the RSA ++ * Bulletin#2 (Jan 96) and other places: ++ * ++ * ftp://ftp.rsa.com/pub/pdfs/bull-2.pdf ++ * ++ * The standard RSA Blinding decryption requires the public key exponent ++ * (e) and modulus (n), and converts ciphertext (c) to plaintext (p). ++ * ++ * Before the modular exponentiation operation, the input message should ++ * be multiplied by (u (mod n)), and afterward the result is corrected ++ * by multiplying with (v (mod n)). The system should reject messages ++ * equal to (0 (mod n)). That is: ++ * ++ * 1. Generate r between 0 and n-1, relatively prime to n. ++ * 2. Compute x = (c*u) mod n ++ * 3. Compute y = (x^d) mod n ++ * 4. Compute p = (y*v) mod n ++ * ++ * The Java APIs allows for either standard RSAPrivateKey or ++ * RSAPrivateCrtKey RSA keys. ++ * ++ * If the public exponent is available to us (e.g. RSAPrivateCrtKey), ++ * choose a random r, then let (u, v): ++ * ++ * u = r ^ e mod n ++ * v = r ^ (-1) mod n ++ * ++ * The proof follows: ++ * ++ * p = (((c * u) ^ d mod n) * v) mod n ++ * = ((c ^ d) * (u ^ d) * v) mod n ++ * = ((c ^ d) * (r ^ e) ^ d) * (r ^ (-1))) mod n ++ * = ((c ^ d) * (r ^ (e * d)) * (r ^ (-1))) mod n ++ * = ((c ^ d) * (r ^ 1) * (r ^ (-1))) mod n (see below) ++ * = (c ^ d) mod n ++ * ++ * because in RSA cryptosystem, d is the multiplicative inverse of e: ++ * ++ * (r^(e * d)) mod n ++ * = (r ^ 1) mod n ++ * = r mod n ++ * ++ * However, if the public exponent is not available (e.g. RSAPrivateKey), ++ * we mitigate the timing issue by using a similar random number blinding ++ * approach using the private key: ++ * ++ * u = r ++ * v = ((r ^ (-1)) ^ d) mod n ++ * ++ * This returns the same plaintext because: ++ * ++ * p = (((c * u) ^ d mod n) * v) mod n ++ * = ((c ^ d) * (u ^ d) * v) mod n ++ * = ((c ^ d) * (u ^ d) * ((u ^ (-1)) ^d)) mod n ++ * = (c ^ d) mod n ++ * ++ * Computing inverses mod n and random number generation is slow, so ++ * it is often not practical to generate a new random (u, v) pair for ++ * each new exponentiation. The calculation of parameters might even be ++ * subject to timing attacks. However, (u, v) pairs should not be ++ * reused since they themselves might be compromised by timing attacks, ++ * leaving the private exponent vulnerable. An efficient solution to ++ * this problem is update u and v before each modular exponentiation ++ * step by computing: ++ * ++ * u = u ^ 2 ++ * v = v ^ 2 ++ * ++ * The total performance cost is small. ++ */ ++ private final static class BlindingRandomPair { ++ final BigInteger u; ++ final BigInteger v; + +- // maximum number of times that we will use a set of blinding parameters +- // value suggested by Paul Kocher (quoted by NSS) +- private final static int BLINDING_MAX_REUSE = 50; +- +- // cache for blinding parameters. Map<BigInteger, BlindingParameters> +- // use a weak hashmap so that cached values are automatically cleared +- // when the modulus is GC'ed +- private final static Map<BigInteger, BlindingParameters> blindingCache = +- new WeakHashMap<>(); ++ BlindingRandomPair(BigInteger u, BigInteger v) { ++ this.u = u; ++ this.v = v; ++ } ++ } + + /** + * Set of blinding parameters for a given RSA key. + * + * The RSA modulus is usually unique, so we index by modulus in +- * blindingCache. However, to protect against the unlikely case of two +- * keys sharing the same modulus, we also store the public exponent. +- * This means we cannot cache blinding parameters for multiple keys that +- * share the same modulus, but since sharing moduli is fundamentally broken +- * an insecure, this does not matter. ++ * {@code blindingCache}. However, to protect against the unlikely ++ * case of two keys sharing the same modulus, we also store the public ++ * or the private exponent. This means we cannot cache blinding ++ * parameters for multiple keys that share the same modulus, but ++ * since sharing moduli is fundamentally broken and insecure, this ++ * does not matter. + */ +- private static final class BlindingParameters { +- // e (RSA public exponent) +- final BigInteger e; +- // r ^ e mod n +- final BigInteger re; +- // inverse of r mod n +- final BigInteger rInv; +- // how many more times this parameter object can be used +- private volatile int remainingUses; +- BlindingParameters(BigInteger e, BigInteger re, BigInteger rInv) { ++ private final static class BlindingParameters { ++ private final static BigInteger BIG_TWO = BigInteger.valueOf(2L); ++ ++ // RSA public exponent ++ private final BigInteger e; ++ ++ // hash code of RSA private exponent ++ private final BigInteger d; ++ ++ // r ^ e mod n (CRT), or r mod n (Non-CRT) ++ private BigInteger u; ++ ++ // r ^ (-1) mod n (CRT) , or ((r ^ (-1)) ^ d) mod n (Non-CRT) ++ private BigInteger v; ++ ++ // e: the public exponent ++ // d: the private exponent ++ // n: the modulus ++ BlindingParameters(BigInteger e, BigInteger d, BigInteger n) { ++ this.u = null; ++ this.v = null; + this.e = e; +- this.re = re; +- this.rInv = rInv; +- // initialize remaining uses, subtract current use now +- remainingUses = BLINDING_MAX_REUSE - 1; ++ this.d = d; ++ ++ int len = n.bitLength(); ++ SecureRandom random = JCAUtil.getSecureRandom(); ++ u = new BigInteger(len, random).mod(n); ++ // Although the possibility is very much limited that u is zero ++ // or is not relatively prime to n, we still want to be careful ++ // about the special value. ++ // ++ // Secure random generation is expensive, try to use BigInteger.ONE ++ // this time if this new generated random number is zero or is not ++ // relatively prime to n. Next time, new generated secure random ++ // number will be used instead. ++ if (u.equals(BigInteger.ZERO)) { ++ u = BigInteger.ONE; // use 1 this time ++ } ++ ++ try { ++ // The call to BigInteger.modInverse() checks that u is ++ // relatively prime to n. Otherwise, ArithmeticException is ++ // thrown. ++ v = u.modInverse(n); ++ } catch (ArithmeticException ae) { ++ // if u is not relatively prime to n, use 1 this time ++ u = BigInteger.ONE; ++ v = BigInteger.ONE; ++ } ++ ++ if (e != null) { ++ u = u.modPow(e, n); // e: the public exponent ++ // u: random ^ e ++ // v: random ^ (-1) ++ } else { ++ v = v.modPow(d, n); // d: the private exponent ++ // u: random ++ // v: random ^ (-d) ++ } + } +- boolean valid(BigInteger e) { +- int k = remainingUses--; +- return (k > 0) && this.e.equals(e); ++ ++ // return null if need to reset the parameters ++ BlindingRandomPair getBlindingRandomPair( ++ BigInteger e, BigInteger d, BigInteger n) { ++ ++ if ((this.e != null && this.e.equals(e)) || ++ (this.d != null && this.d.equals(d))) { ++ ++ BlindingRandomPair brp = null; ++ synchronized (this) { ++ if (!u.equals(BigInteger.ZERO) && ++ !v.equals(BigInteger.ZERO)) { ++ ++ brp = new BlindingRandomPair(u, v); ++ if (u.compareTo(BigInteger.ONE) <= 0 || ++ v.compareTo(BigInteger.ONE) <= 0) { ++ ++ // need to reset the random pair next time ++ u = BigInteger.ZERO; ++ v = BigInteger.ZERO; ++ } else { ++ u = u.modPow(BIG_TWO, n); ++ v = v.modPow(BIG_TWO, n); ++ } ++ } // Otherwise, need to reset the random pair. ++ } ++ return brp; ++ } ++ ++ return null; + } + } + +- /** +- * Return valid RSA blinding parameters for the given private key. +- * Use cached parameters if available. If not, generate new parameters +- * and cache. +- */ +- private static BlindingParameters getBlindingParameters +- (RSAPrivateCrtKey key) { +- BigInteger modulus = key.getModulus(); +- BigInteger e = key.getPublicExponent(); +- BlindingParameters params; +- // we release the lock between get() and put() +- // that means threads might concurrently generate new blinding +- // parameters for the same modulus. this is only a slight waste +- // of cycles and seems preferable in terms of scalability +- // to locking out all threads while generating new parameters ++ private static BlindingRandomPair getBlindingRandomPair( ++ BigInteger e, BigInteger d, BigInteger n) { ++ ++ BlindingParameters bps = null; + synchronized (blindingCache) { +- params = blindingCache.get(modulus); ++ bps = blindingCache.get(n); + } +- if ((params != null) && params.valid(e)) { +- return params; ++ ++ if (bps == null) { ++ bps = new BlindingParameters(e, d, n); ++ synchronized (blindingCache) { ++ blindingCache.putIfAbsent(n, bps); ++ } + } +- int len = modulus.bitLength(); +- SecureRandom random = JCAUtil.getSecureRandom(); +- BigInteger r = new BigInteger(len, random).mod(modulus); +- BigInteger re = r.modPow(e, modulus); +- BigInteger rInv = r.modInverse(modulus); +- params = new BlindingParameters(e, re, rInv); +- synchronized (blindingCache) { +- blindingCache.put(modulus, params); ++ ++ BlindingRandomPair brp = bps.getBlindingRandomPair(e, d, n); ++ if (brp == null) { ++ // need to reset the blinding parameters ++ bps = new BlindingParameters(e, d, n); ++ synchronized (blindingCache) { ++ blindingCache.replace(n, bps); ++ } ++ brp = bps.getBlindingRandomPair(e, d, n); + } +- return params; ++ ++ return brp; + } + + } +--- jdk/src/share/classes/sun/security/util/KeyUtil.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/sun/security/util/KeyUtil.java Tue Jun 03 14:19:36 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. + * 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,7 +198,16 @@ + "Diffie-Hellman public key is too large"); + } + +- // Don't bother to check against the y^q mod p if safe primes are used. ++ // y^q mod p == 1? ++ // Unable to perform this check as q is unknown in this circumstance. ++ ++ // p is expected to be prime. However, it is too expensive to check ++ // that p is prime. Instead, in order to mitigate the impact of ++ // non-prime values, we check that y is not a factor of p. ++ BigInteger r = p.remainder(y); ++ if (r.equals(BigInteger.ZERO)) { ++ throw new InvalidKeyException("Invalid Diffie-Hellman parameters"); ++ } + } + + /** +--- jdk/src/share/classes/sun/util/resources/TimeZoneNames.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/sun/util/resources/TimeZoneNames.java Tue Jun 03 14:19:36 2014 -0700 +@@ -570,6 +570,9 @@ + {"Antarctica/Syowa", new String[] {"Syowa Time", "SYOT", + "Syowa Summer Time", "SYOST", + "Syowa Time", "SYOT"}}, ++ {"Antarctica/Troll", new String[] {"Coordinated Universal Time", "UTC", ++ "Central European Summer Time", "CEST", ++ "Troll Time", "ATT"}}, + {"Antarctica/Vostok", new String[] {"Vostok Time", "VOST", + "Vostok Summer Time", "VOSST", + "Vostok Time", "VOST"}}, +@@ -839,7 +842,7 @@ + "Samara Time", "SAMT"}}, + {"Europe/San_Marino", CET}, + {"Europe/Sarajevo", CET}, +- {"Europe/Simferopol", EET}, ++ {"Europe/Simferopol", MSK}, + {"Europe/Skopje", CET}, + {"Europe/Sofia", EET}, + {"Europe/Stockholm", CET}, +--- jdk/src/share/classes/sun/util/resources/de/TimeZoneNames_de.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/sun/util/resources/de/TimeZoneNames_de.java Tue Jun 03 14:19:36 2014 -0700 +@@ -570,6 +570,9 @@ + {"Antarctica/Syowa", new String[] {"Syowa Zeit", "SYOT", + "Syowa Sommerzeit", "SYOST", + "Syowa Zeit", "SYOT"}}, ++ {"Antarctica/Troll", new String[] {"Koordinierte Universalzeit", "UTC", ++ "Mitteleurop\u00e4ische Sommerzeit", "MESZ", ++ "Troll Time", "ATT"}}, + {"Antarctica/Vostok", new String[] {"Vostok Zeit", "VOST", + "Vostok Sommerzeit", "VOSST", + "Vostok Zeit", "VOST"}}, +@@ -838,7 +841,7 @@ + "Samarische Zeit", "SAMT"}}, + {"Europe/San_Marino", CET}, + {"Europe/Sarajevo", CET}, +- {"Europe/Simferopol", EET}, ++ {"Europe/Simferopol", MSK}, + {"Europe/Skopje", CET}, + {"Europe/Sofia", EET}, + {"Europe/Stockholm", CET}, +--- jdk/src/share/classes/sun/util/resources/es/TimeZoneNames_es.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/sun/util/resources/es/TimeZoneNames_es.java Tue Jun 03 14:19:36 2014 -0700 +@@ -570,6 +570,9 @@ + {"Antarctica/Syowa", new String[] {"Hora de Syowa", "SYOT", + "Hora de verano de Syowa", "SYOST", + "Hora de Syowa", "SYOT"}}, ++ {"Antarctica/Troll", new String[] {"Hora Universal Coordinada", "UTC", ++ "Hora de verano de Europa Central", "CEST", ++ "Troll Time", "ATT"}}, + {"Antarctica/Vostok", new String[] {"Hora de Vostok", "VOST", + "Hora de verano de Vostok", "VOSST", + "Hora de Vostok", "VOST"}}, +@@ -838,7 +841,7 @@ + "Hora de Samara", "SAMT"}}, + {"Europe/San_Marino", CET}, + {"Europe/Sarajevo", CET}, +- {"Europe/Simferopol", EET}, ++ {"Europe/Simferopol", MSK}, + {"Europe/Skopje", CET}, + {"Europe/Sofia", EET}, + {"Europe/Stockholm", CET}, +--- jdk/src/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java Tue Jun 03 14:19:36 2014 -0700 +@@ -570,6 +570,9 @@ + {"Antarctica/Syowa", new String[] {"Heure de Syowa", "SYOT", + "Heure d'\u00e9t\u00e9 de Syowa", "SYOST", + "Heure de Syowa", "SYOT"}}, ++ {"Antarctica/Troll", new String[] {"Temps universel coordonn\u00e9", "UTC", ++ "Heure d'\u00e9t\u00e9 d'Europe centrale", "CEST", ++ "Troll Time", "ATT"}}, + {"Antarctica/Vostok", new String[] {"Heure de Vostok", "VOST", + "Heure d'\u00e9t\u00e9 de Vostok", "VOSST", + "Heure de Vostok", "VOST"}}, +@@ -838,7 +841,7 @@ + "Heure de Samara", "SAMT"}}, + {"Europe/San_Marino", CET}, + {"Europe/Sarajevo", CET}, +- {"Europe/Simferopol", EET}, ++ {"Europe/Simferopol", MSK}, + {"Europe/Skopje", CET}, + {"Europe/Sofia", EET}, + {"Europe/Stockholm", CET}, +--- jdk/src/share/classes/sun/util/resources/it/TimeZoneNames_it.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/sun/util/resources/it/TimeZoneNames_it.java Tue Jun 03 14:19:36 2014 -0700 +@@ -570,6 +570,9 @@ + {"Antarctica/Syowa", new String[] {"Ora di Syowa", "SYOT", + "Ora estiva di Syowa", "SYOST", + "Ora di Syowa", "SYOT"}}, ++ {"Antarctica/Troll", new String[] {"Tempo universale coordinato", "UTC", ++ "Ora estiva dell'Europa centrale", "CEST", ++ "Troll Time", "ATT"}}, + {"Antarctica/Vostok", new String[] {"Ora di Vostok", "VOST", + "Ora estiva di Vostok", "VOSST", + "Ora di Vostok", "VOST"}}, +@@ -838,7 +841,7 @@ + "Ora di Samara", "SAMT"}}, + {"Europe/San_Marino", CET}, + {"Europe/Sarajevo", CET}, +- {"Europe/Simferopol", EET}, ++ {"Europe/Simferopol", MSK}, + {"Europe/Skopje", CET}, + {"Europe/Sofia", EET}, + {"Europe/Stockholm", CET}, +--- jdk/src/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java Tue Jun 03 14:19:36 2014 -0700 +@@ -570,6 +570,9 @@ + {"Antarctica/Syowa", new String[] {"\u662d\u548c\u57fa\u5730\u6642\u9593", "SYOT", + "\u662d\u548c\u57fa\u5730\u590f\u6642\u9593", "SYOST", + "\u662D\u548C\u57FA\u5730\u6642\u9593", "SYOT"}}, ++ {"Antarctica/Troll", new String[] {"\u5354\u5b9a\u4e16\u754c\u6642", "UTC", ++ "\u4e2d\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u590f\u6642\u9593", "CEST", ++ "Troll Time", "ATT"}}, + {"Antarctica/Vostok", new String[] {"\u30dc\u30b9\u30c8\u30fc\u30af\u57fa\u5730\u6642\u9593", "VOST", + "\u30dc\u30b9\u30c8\u30fc\u30af\u57fa\u5730\u590f\u6642\u9593", "VOSST", + "\u30DC\u30B9\u30C8\u30FC\u30AF\u6642\u9593", "VOST"}}, +@@ -838,7 +841,7 @@ + "\u30B5\u30DE\u30E9\u6642\u9593", "SAMT"}}, + {"Europe/San_Marino", CET}, + {"Europe/Sarajevo", CET}, +- {"Europe/Simferopol", EET}, ++ {"Europe/Simferopol", MSK}, + {"Europe/Skopje", CET}, + {"Europe/Sofia", EET}, + {"Europe/Stockholm", CET}, +--- jdk/src/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java Tue Jun 03 14:19:36 2014 -0700 +@@ -570,6 +570,9 @@ + {"Antarctica/Syowa", new String[] {"Syowa \uc2dc\uac04", "SYOT", + "Syowa \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SYOST", + "\uC1FC\uC640 \uD45C\uC900\uC2DC", "SYOT"}}, ++ {"Antarctica/Troll", new String[] {"\uc138\uacc4 \ud45c\uc900\uc2dc", "UTC", ++ "\uc911\uc559 \uc720\ub7fd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CEST", ++ "Troll Time", "ATT"}}, + {"Antarctica/Vostok", new String[] {"Vostok \uc2dc\uac04", "VOST", + "Vostok \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VOSST", + "\uBCF4\uC2A4\uD1A1 \uD45C\uC900\uC2DC", "VOST"}}, +@@ -838,7 +841,7 @@ + "\uC0AC\uB9C8\uB77C \uD45C\uC900\uC2DC", "SAMT"}}, + {"Europe/San_Marino", CET}, + {"Europe/Sarajevo", CET}, +- {"Europe/Simferopol", EET}, ++ {"Europe/Simferopol", MSK}, + {"Europe/Skopje", CET}, + {"Europe/Sofia", EET}, + {"Europe/Stockholm", CET}, +--- jdk/src/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java Tue Jun 03 14:19:36 2014 -0700 +@@ -570,6 +570,9 @@ + {"Antarctica/Syowa", new String[] {"Fuso hor\u00e1rio de Syowa", "SYOT", + "Fuso hor\u00e1rio de ver\u00e3o de Syowa", "SYOST", + "Hor\u00E1rio de Syowa", "SYOT"}}, ++ {"Antarctica/Troll", new String[] {"Tempo universal coordenado", "UTC", ++ "Fuso hor\u00e1rio de ver\u00e3o da Europa Central", "CEST", ++ "Troll Time", "ATT"}}, + {"Antarctica/Vostok", new String[] {"Fuso hor\u00e1rio de Vostok", "VOST", + "Fuso hor\u00e1rio de ver\u00e3o de Vostok", "VOSST", + "Hor\u00E1rio de Vostok", "VOST"}}, +@@ -838,7 +841,7 @@ + "Hor\u00E1rio de Samara", "SAMT"}}, + {"Europe/San_Marino", CET}, + {"Europe/Sarajevo", CET}, +- {"Europe/Simferopol", EET}, ++ {"Europe/Simferopol", MSK}, + {"Europe/Skopje", CET}, + {"Europe/Sofia", EET}, + {"Europe/Stockholm", CET}, +--- jdk/src/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java Tue Jun 03 14:19:36 2014 -0700 +@@ -570,6 +570,9 @@ + {"Antarctica/Syowa", new String[] {"Syowa, normaltid", "SYOT", + "Syowa, sommartid", "SYOST", + "Syowa-tid", "SYOT"}}, ++ {"Antarctica/Troll", new String[] {"Koordinerad universell tid", "UTC", ++ "Centraleuropeisk sommartid", "CEST", ++ "Troll Time", "ATT"}}, + {"Antarctica/Vostok", new String[] {"Vostok, normaltid", "VOST", + "Vostok, sommartid", "VOSST", + "Vostok-tid", "VOST"}}, +@@ -838,7 +841,7 @@ + "Samara-tid", "SAMT"}}, + {"Europe/San_Marino", CET}, + {"Europe/Sarajevo", CET}, +- {"Europe/Simferopol", EET}, ++ {"Europe/Simferopol", MSK}, + {"Europe/Skopje", CET}, + {"Europe/Sofia", EET}, + {"Europe/Stockholm", CET}, +--- jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java Tue Jun 03 14:19:36 2014 -0700 +@@ -570,6 +570,9 @@ + {"Antarctica/Syowa", new String[] {"Syowa \u65f6\u95f4", "SYOT", + "Syowa \u590f\u4ee4\u65f6", "SYOST", + "Syowa \u65F6\u95F4", "SYOT"}}, ++ {"Antarctica/Troll", new String[] {"\u534f\u8c03\u4e16\u754c\u65f6\u95f4", "UTC", ++ "\u4e2d\u6b27\u590f\u4ee4\u65f6", "CEST", ++ "Troll Time", "ATT"}}, + {"Antarctica/Vostok", new String[] {"\u83ab\u65af\u6258\u514b\u65f6\u95f4", "VOST", + "\u83ab\u65af\u6258\u514b\u590f\u4ee4\u65f6", "VOSST", + "\u83AB\u65AF\u6258\u514B\u65F6\u95F4", "VOST"}}, +@@ -838,7 +841,7 @@ + "\u6C99\u9A6C\u62C9\u65F6\u95F4", "SAMT"}}, + {"Europe/San_Marino", CET}, + {"Europe/Sarajevo", CET}, +- {"Europe/Simferopol", EET}, ++ {"Europe/Simferopol", MSK}, + {"Europe/Skopje", CET}, + {"Europe/Sofia", EET}, + {"Europe/Stockholm", CET}, +--- jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java Tue Jun 03 14:19:36 2014 -0700 +@@ -570,6 +570,9 @@ + {"Antarctica/Syowa", new String[] {"\u5915\u6b50\u74e6 (Syowa) \u6642\u9593", "SYOT", + "\u5915\u6b50\u74e6 (Syowa) \u590f\u4ee4\u6642\u9593", "SYOST", + "\u5915\u6B50\u74E6 (Syowa) \u6642\u9593", "SYOT"}}, ++ {"Antarctica/Troll", new String[] {"\u5354\u8abf\u4e16\u754c\u6642\u9593", "UTC", ++ "\u4e2d\u6b50\u590f\u4ee4\u6642\u9593", "CEST", ++ "Troll Time", "ATT"}}, + {"Antarctica/Vostok", new String[] {"\u4f5b\u65af\u6258 (Vostok) \u6642\u9593", "VOST", + "\u4f5b\u65af\u6258 (Vostok) \u590f\u4ee4\u6642\u9593", "VOSST", + "\u4F5B\u65AF\u6258 (Vostok) \u6642\u9593", "VOST"}}, +@@ -840,7 +843,7 @@ + "\u6C99\u99AC\u62C9\u6642\u9593", "SAMT"}}, + {"Europe/San_Marino", CET}, + {"Europe/Sarajevo", CET}, +- {"Europe/Simferopol", EET}, ++ {"Europe/Simferopol", MSK}, + {"Europe/Skopje", CET}, + {"Europe/Sofia", EET}, + {"Europe/Stockholm", CET}, +--- jdk/src/share/lib/security/java.security-linux Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/lib/security/java.security-linux Tue Jun 03 14:19:36 2014 -0700 +@@ -210,8 +210,8 @@ + org.jcp.xml.dsig.internal.,\ + jdk.internal.,\ + jdk.nashorn.internal.,\ +- jdk.nashorn.tools. +- ++ jdk.nashorn.tools.,\ ++ com.sun.activation.registries. + + # + # List of comma-separated packages that start with or equal this string +@@ -257,8 +257,8 @@ + org.jcp.xml.dsig.internal.,\ + jdk.internal.,\ + jdk.nashorn.internal.,\ +- jdk.nashorn.tools. +- ++ jdk.nashorn.tools.,\ ++ com.sun.activation.registries. + + # + # Determines whether this properties file can be appended to +--- jdk/src/share/lib/security/java.security-macosx Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/lib/security/java.security-macosx Tue Jun 03 14:19:36 2014 -0700 +@@ -212,6 +212,7 @@ + jdk.internal.,\ + jdk.nashorn.internal.,\ + jdk.nashorn.tools.,\ ++ com.sun.activation.registries.,\ + apple. + + # +@@ -259,6 +260,7 @@ + jdk.internal.,\ + jdk.nashorn.internal.,\ + jdk.nashorn.tools.,\ ++ com.sun.activation.registries.,\ + apple. + + # +--- jdk/src/share/lib/security/java.security-solaris Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/lib/security/java.security-solaris Tue Jun 03 14:19:36 2014 -0700 +@@ -212,7 +212,8 @@ + org.jcp.xml.dsig.internal.,\ + jdk.internal.,\ + jdk.nashorn.internal.,\ +- jdk.nashorn.tools. ++ jdk.nashorn.tools.,\ ++ com.sun.activation.registries. + + # + # List of comma-separated packages that start with or equal this string +@@ -258,7 +259,8 @@ + org.jcp.xml.dsig.internal.,\ + jdk.internal.,\ + jdk.nashorn.internal.,\ +- jdk.nashorn.tools. ++ jdk.nashorn.tools.,\ ++ com.sun.activation.registries. + + # + # Determines whether this properties file can be appended to +--- jdk/src/share/lib/security/java.security-windows Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/lib/security/java.security-windows Tue Jun 03 14:19:36 2014 -0700 +@@ -212,6 +212,7 @@ + jdk.internal.,\ + jdk.nashorn.internal.,\ + jdk.nashorn.tools.,\ ++ com.sun.activation.registries.,\ + com.sun.java.accessibility. + + # +@@ -259,6 +260,7 @@ + jdk.internal.,\ + jdk.nashorn.internal.,\ + jdk.nashorn.tools.,\ ++ com.sun.activation.registries.,\ + com.sun.java.accessibility. + + # +--- jdk/src/share/native/com/sun/java/util/jar/pack/defines.h Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/native/com/sun/java/util/jar/pack/defines.h Tue Jun 03 14:19:36 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -79,6 +79,7 @@ + #define ERROR_RESOURCE "Cannot extract resource file" + #define ERROR_OVERFLOW "Internal buffer overflow" + #define ERROR_INTERNAL "Internal error" ++#define ERROR_INIT "cannot init class members" + + #define LOGFILE_STDOUT "-" + #define LOGFILE_STDERR "" +--- jdk/src/share/native/com/sun/java/util/jar/pack/jni.cpp Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/native/com/sun/java/util/jar/pack/jni.cpp Tue Jun 03 14:19:36 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. + * 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,6 +56,45 @@ + + #define THROW_IOE(x) JNU_ThrowIOException(env,x) + ++#define CHECK_EXCEPTION_RETURN_VOID_THROW_IOE(CERVTI_exception, CERVTI_message) \ ++ do { \ ++ if ((env)->ExceptionOccurred()) { \ ++ THROW_IOE(CERVTI_message); \ ++ return; \ ++ } \ ++ if ((CERVTI_exception) == NULL) { \ ++ THROW_IOE(CERVTI_message); \ ++ return; \ ++ } \ ++ } while (JNI_FALSE) ++ ++ ++#define CHECK_EXCEPTION_RETURN_VALUE(CERL_exception, CERL_return_value) \ ++ do { \ ++ if ((env)->ExceptionOccurred()) { \ ++ return CERL_return_value; \ ++ } \ ++ if ((CERL_exception) == NULL) { \ ++ return CERL_return_value; \ ++ } \ ++ } while (JNI_FALSE) ++ ++ ++// If these useful macros aren't defined in jni_util.h then define them here ++#ifndef CHECK_NULL_RETURN ++#define CHECK_NULL_RETURN(x, y) \ ++ do { \ ++ if ((x) == NULL) return (y); \ ++ } while (JNI_FALSE) ++#endif ++ ++#ifndef CHECK_EXCEPTION_RETURN ++#define CHECK_EXCEPTION_RETURN(env, y) \ ++ do { \ ++ if ((*env)->ExceptionCheck(env)) return (y); \ ++ } while (JNI_FALSE) ++#endif ++ + static jlong read_input_via_jni(unpacker* self, + void* buf, jlong minlen, jlong maxlen); + +@@ -92,9 +131,11 @@ + vm->GetEnv(&envRaw, JNI_VERSION_1_1); + JNIEnv* env = (JNIEnv*) envRaw; + //fprintf(stderr, "get_unpacker() env=%p\n", env); +- if (env == null) +- return null; ++ CHECK_NULL_RETURN(env, NULL); + jobject pObj = env->CallStaticObjectMethod(NIclazz, currentInstMID); ++ // We should check upon the known non-null variable because here we want to check ++ // only for pending exceptions. If pObj is null we'll deal with it later. ++ CHECK_EXCEPTION_RETURN_VALUE(env, NULL); + //fprintf(stderr, "get_unpacker0() pObj=%p\n", pObj); + if (pObj != null) { + // Got pObj and env; now do it the easy way. +@@ -137,20 +178,20 @@ + while( dbg != null) { sleep(10); } + #endif + NIclazz = (jclass) env->NewGlobalRef(clazz); ++ + unpackerPtrFID = env->GetFieldID(clazz, "unpackerPtr", "J"); ++ CHECK_EXCEPTION_RETURN_VOID_THROW_IOE(unpackerPtrFID, ERROR_INIT); ++ + currentInstMID = env->GetStaticMethodID(clazz, "currentInstance", + "()Ljava/lang/Object;"); ++ CHECK_EXCEPTION_RETURN_VOID_THROW_IOE(currentInstMID, ERROR_INIT); ++ + readInputMID = env->GetMethodID(clazz, "readInputFn", + "(Ljava/nio/ByteBuffer;J)J"); ++ CHECK_EXCEPTION_RETURN_VOID_THROW_IOE(readInputMID, ERROR_INIT); ++ + getUnpackerPtrMID = env->GetMethodID(clazz, "getUnpackerPtr", "()J"); +- +- if (unpackerPtrFID == null || +- currentInstMID == null || +- readInputMID == null || +- NIclazz == null || +- getUnpackerPtrMID == null) { +- THROW_IOE("cannot init class members"); +- } ++ CHECK_EXCEPTION_RETURN_VOID_THROW_IOE(getUnpackerPtrMID, ERROR_INIT); + } + + JNIEXPORT jlong JNICALL +@@ -160,9 +201,7 @@ + // valid object pointers and env is intact, if not now is good time to bail. + unpacker* uPtr = get_unpacker(); + //fprintf(stderr, "start(%p) uPtr=%p initializing\n", pObj, uPtr); +- if (uPtr == null) { +- return -1; +- } ++ CHECK_EXCEPTION_RETURN_VALUE(uPtr, -1); + // redirect our io to the default log file or whatever. + uPtr->redirect_stdio(); + +@@ -200,6 +239,7 @@ + jobjectArray pParts) { + + unpacker* uPtr = get_unpacker(env, pObj); ++ CHECK_EXCEPTION_RETURN_VALUE(uPtr, false); + unpacker::file* filep = uPtr->get_next_file(); + + if (uPtr->aborting()) { +@@ -207,32 +247,38 @@ + return false; + } + +- if (filep == null) { +- return false; // end of the sequence +- } ++ CHECK_NULL_RETURN(filep, false); + assert(filep == &uPtr->cur_file); + + int pidx = 0, iidx = 0; + jintArray pIntParts = (jintArray) env->GetObjectArrayElement(pParts, pidx++); ++ CHECK_EXCEPTION_RETURN_VALUE(pIntParts, false); + jint* intParts = env->GetIntArrayElements(pIntParts, null); + intParts[iidx++] = (jint)( (julong)filep->size >> 32 ); + intParts[iidx++] = (jint)( (julong)filep->size >> 0 ); + intParts[iidx++] = filep->modtime; + intParts[iidx++] = filep->deflate_hint() ? 1 : 0; + env->ReleaseIntArrayElements(pIntParts, intParts, JNI_COMMIT); +- +- env->SetObjectArrayElement(pParts, pidx++, env->NewStringUTF(filep->name)); +- ++ jstring filename = env->NewStringUTF(filep->name); ++ CHECK_EXCEPTION_RETURN_VALUE(filename, false); ++ env->SetObjectArrayElement(pParts, pidx++, filename); ++ CHECK_EXCEPTION_RETURN_VALUE(uPtr, false); + jobject pDataBuf = null; +- if (filep->data[0].len > 0) ++ if (filep->data[0].len > 0) { + pDataBuf = env->NewDirectByteBuffer(filep->data[0].ptr, + filep->data[0].len); ++ CHECK_EXCEPTION_RETURN_VALUE(pDataBuf, false); ++ } + env->SetObjectArrayElement(pParts, pidx++, pDataBuf); ++ CHECK_EXCEPTION_RETURN_VALUE(uPtr, false); + pDataBuf = null; +- if (filep->data[1].len > 0) ++ if (filep->data[1].len > 0) { + pDataBuf = env->NewDirectByteBuffer(filep->data[1].ptr, + filep->data[1].len); ++ CHECK_EXCEPTION_RETURN_VALUE(pDataBuf, false); ++ } + env->SetObjectArrayElement(pParts, pidx++, pDataBuf); ++ CHECK_EXCEPTION_RETURN_VALUE(uPtr, false); + + return true; + } +@@ -241,6 +287,7 @@ + JNIEXPORT jobject JNICALL + Java_com_sun_java_util_jar_pack_NativeUnpack_getUnusedInput(JNIEnv *env, jobject pObj) { + unpacker* uPtr = get_unpacker(env, pObj); ++ CHECK_EXCEPTION_RETURN_VALUE(uPtr, NULL); + unpacker::file* filep = &uPtr->cur_file; + + if (uPtr->aborting()) { +@@ -263,7 +310,7 @@ + JNIEXPORT jlong JNICALL + Java_com_sun_java_util_jar_pack_NativeUnpack_finish(JNIEnv *env, jobject pObj) { + unpacker* uPtr = get_unpacker(env, pObj, false); +- if (uPtr == null) return 0; ++ CHECK_EXCEPTION_RETURN_VALUE(uPtr, NULL); + size_t consumed = uPtr->input_consumed(); + free_unpacker(env, pObj, uPtr); + return consumed; +@@ -274,7 +321,9 @@ + jstring pProp, jstring pValue) { + unpacker* uPtr = get_unpacker(env, pObj); + const char* prop = env->GetStringUTFChars(pProp, JNI_FALSE); ++ CHECK_EXCEPTION_RETURN_VALUE(prop, false); + const char* value = env->GetStringUTFChars(pValue, JNI_FALSE); ++ CHECK_EXCEPTION_RETURN_VALUE(value, false); + jboolean retval = uPtr->set_option(prop, value); + env->ReleaseStringUTFChars(pProp, prop); + env->ReleaseStringUTFChars(pValue, value); +@@ -286,9 +335,11 @@ + jstring pProp) { + + unpacker* uPtr = get_unpacker(env, pObj); ++ CHECK_EXCEPTION_RETURN_VALUE(uPtr, NULL); + const char* prop = env->GetStringUTFChars(pProp, JNI_FALSE); ++ CHECK_EXCEPTION_RETURN_VALUE(prop, NULL); + const char* value = uPtr->get_option(prop); ++ CHECK_EXCEPTION_RETURN_VALUE(value, NULL); + env->ReleaseStringUTFChars(pProp, prop); +- if (value == null) return null; + return env->NewStringUTF(value); + } +--- jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c Tue Jun 03 14:19:36 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -373,14 +373,14 @@ + + + /* Parse the source image */ +- if ((status = awt_parseImage(env, jsrc, &srcImageP, FALSE)) <= 0) { ++ if (awt_parseImage(env, jsrc, &srcImageP, FALSE) <= 0) { + /* Can't handle any custom images */ + free(dkern); + return 0; + } + + /* Parse the destination image */ +- if ((status = awt_parseImage(env, jdst, &dstImageP, FALSE)) <= 0) { ++ if (awt_parseImage(env, jdst, &dstImageP, FALSE) <= 0) { + /* Can't handle any custom images */ + awt_freeParsedImage(srcImageP, TRUE); + free(dkern); +@@ -627,7 +627,7 @@ + } + + /* Parse the source raster */ +- if ((status = awt_parseRaster(env, jsrc, srcRasterP)) <= 0) { ++ if (awt_parseRaster(env, jsrc, srcRasterP) <= 0) { + /* Can't handle any custom rasters */ + free(srcRasterP); + free(dstRasterP); +@@ -636,7 +636,7 @@ + } + + /* Parse the destination raster */ +- if ((status = awt_parseRaster(env, jdst, dstRasterP)) <= 0) { ++ if (awt_parseRaster(env, jdst, dstRasterP) <= 0) { + /* Can't handle any custom images */ + awt_freeParsedRaster(srcRasterP, TRUE); + free(dstRasterP); +@@ -839,13 +839,13 @@ + (*env)->ReleasePrimitiveArrayCritical(env, jmatrix, matrix, JNI_ABORT); + + /* Parse the source image */ +- if ((status = awt_parseImage(env, jsrc, &srcImageP, FALSE)) <= 0) { ++ if (awt_parseImage(env, jsrc, &srcImageP, FALSE) <= 0) { + /* Can't handle any custom images */ + return 0; + } + + /* Parse the destination image */ +- if ((status = awt_parseImage(env, jdst, &dstImageP, FALSE)) <= 0) { ++ if (awt_parseImage(env, jdst, &dstImageP, FALSE) <= 0) { + /* Can't handle any custom images */ + awt_freeParsedImage(srcImageP, TRUE); + return 0; +@@ -1059,7 +1059,7 @@ + (*env)->ReleasePrimitiveArrayCritical(env, jmatrix, matrix, JNI_ABORT); + + /* Parse the source raster */ +- if ((status = awt_parseRaster(env, jsrc, srcRasterP)) <= 0) { ++ if (awt_parseRaster(env, jsrc, srcRasterP) <= 0) { + /* Can't handle any custom rasters */ + free(srcRasterP); + free(dstRasterP); +@@ -1067,7 +1067,7 @@ + } + + /* Parse the destination raster */ +- if ((status = awt_parseRaster(env, jdst, dstRasterP)) <= 0) { ++ if (awt_parseRaster(env, jdst, dstRasterP) <= 0) { + /* Can't handle any custom images */ + awt_freeParsedRaster(srcRasterP, TRUE); + free(dstRasterP); +@@ -1305,13 +1305,13 @@ + if (s_timeIt) (*start_timer)(3600); + + /* Parse the source image */ +- if ((status = awt_parseImage(env, jsrc, &srcImageP, FALSE)) <= 0) { ++ if (awt_parseImage(env, jsrc, &srcImageP, FALSE) <= 0) { + /* Can't handle any custom images */ + return 0; + } + + /* Parse the destination image */ +- if ((status = awt_parseImage(env, jdst, &dstImageP, FALSE)) <= 0) { ++ if (awt_parseImage(env, jdst, &dstImageP, FALSE) <= 0) { + /* Can't handle any custom images */ + awt_freeParsedImage(srcImageP, TRUE); + return 0; +@@ -1553,14 +1553,14 @@ + } + + /* Parse the source raster - reject custom images */ +- if ((status = awt_parseRaster(env, jsrc, srcRasterP)) <= 0) { ++ if (awt_parseRaster(env, jsrc, srcRasterP) <= 0) { + free(srcRasterP); + free(dstRasterP); + return 0; + } + + /* Parse the destination image - reject custom images */ +- if ((status = awt_parseRaster(env, jdst, dstRasterP)) <= 0) { ++ if (awt_parseRaster(env, jdst, dstRasterP) <= 0) { + awt_freeParsedRaster(srcRasterP, TRUE); + free(dstRasterP); + return 0; +--- jdk/src/share/native/sun/font/freetypeScaler.c Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/native/sun/font/freetypeScaler.c Tue Jun 03 14:19:36 2014 -0700 +@@ -177,18 +177,10 @@ + if (numBytes > FILEDATACACHESIZE) { + bBuffer = (*env)->NewDirectByteBuffer(env, destBuffer, numBytes); + if (bBuffer != NULL) { +- /* Loop until the read succeeds (or EOF). +- * This should improve robustness in the event of a problem in +- * the I/O system. If we find that we ever end up spinning here +- * we are going to have to do some serious work to recover. +- * Just returning without reading the data will cause a crash. +- */ +- while (bread == 0) { +- bread = (*env)->CallIntMethod(env, +- scalerInfo->font2D, +- sunFontIDs.ttReadBlockMID, +- bBuffer, offset, numBytes); +- } ++ bread = (*env)->CallIntMethod(env, ++ scalerInfo->font2D, ++ sunFontIDs.ttReadBlockMID, ++ bBuffer, offset, numBytes); + return bread; + } else { + /* We probably hit bug bug 4845371. For reasons that +@@ -224,19 +216,10 @@ + (offset + FILEDATACACHESIZE > scalerInfo->fileSize) ? + scalerInfo->fileSize - offset : FILEDATACACHESIZE; + bBuffer = scalerInfo->directBuffer; +- /* Loop until all the read succeeds (or EOF). +- * This should improve robustness in the event of a problem in +- * the I/O system. If we find that we ever end up spinning here +- * we are going to have to do some serious work to recover. +- * Just returning without reading the data will cause a crash. +- */ +- while (bread == 0) { +- bread = (*env)->CallIntMethod(env, scalerInfo->font2D, +- sunFontIDs.ttReadBlockMID, +- bBuffer, offset, +- scalerInfo->fontDataLength); +- } +- ++ bread = (*env)->CallIntMethod(env, scalerInfo->font2D, ++ sunFontIDs.ttReadBlockMID, ++ bBuffer, offset, ++ scalerInfo->fontDataLength); + memcpy(destBuffer, scalerInfo->fontData, numBytes); + return numBytes; + } +--- jdk/src/share/native/sun/management/GcInfoBuilder.c Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/native/sun/management/GcInfoBuilder.c Tue Jun 03 14:19:36 2014 -0700 +@@ -190,7 +190,7 @@ + + if (ext_att_count <= 0) { + JNU_ThrowIllegalArgumentException(env, "Invalid ext_att_count"); +- return; ++ return 0; + } + + gc_stat.usage_before_gc = usageBeforeGC; +--- jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Tue Jun 03 14:19:36 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + * 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,22 +64,40 @@ + free(ecparams); + } + ++jbyteArray getEncodedBytes(JNIEnv *env, SECItem *hSECItem) ++{ ++ SECItem *s = (SECItem *)hSECItem; ++ ++ jbyteArray jEncodedBytes = env->NewByteArray(s->len); ++ if (jEncodedBytes == NULL) { ++ return NULL; ++ } ++ // Copy bytes from a native SECItem buffer to Java byte array ++ env->SetByteArrayRegion(jEncodedBytes, 0, s->len, (jbyte *)s->data); ++ if (env->ExceptionCheck()) { // should never happen ++ return NULL; ++ } ++ return jEncodedBytes; ++} ++ ++ + /* + * Class: sun_security_ec_ECKeyPairGenerator + * Method: generateECKeyPair +- * Signature: (I[B[B)[J ++ * Signature: (I[B[B)[[B + */ +-JNIEXPORT jlongArray ++JNIEXPORT jobjectArray + JNICALL Java_sun_security_ec_ECKeyPairGenerator_generateECKeyPair + (JNIEnv *env, jclass clazz, jint keySize, jbyteArray encodedParams, jbyteArray seed) + { +- ECPrivateKey *privKey; /* contains both public and private values */ ++ ECPrivateKey *privKey = NULL; // contains both public and private values + ECParams *ecparams = NULL; + SECKEYECParams params_item; + jint jSeedLength; + jbyte* pSeedBuffer = NULL; +- jlongArray result = NULL; +- jlong* resultElements = NULL; ++ jobjectArray result = NULL; ++ jclass baCls = NULL; ++ jbyteArray jba; + + // Initialize the ECParams struct + params_item.len = env->GetArrayLength(encodedParams); +@@ -106,61 +124,61 @@ + } + + jboolean isCopy; +- result = env->NewLongArray(2); +- resultElements = env->GetLongArrayElements(result, &isCopy); ++ baCls = env->FindClass("[B"); ++ if (baCls == NULL) { ++ goto cleanup; ++ } ++ result = env->NewObjectArray(2, baCls, NULL); ++ if (result == NULL) { ++ goto cleanup; ++ } ++ jba = getEncodedBytes(env, &(privKey->privateValue)); ++ if (jba == NULL) { ++ result = NULL; ++ goto cleanup; ++ } ++ env->SetObjectArrayElement(result, 0, jba); // big integer ++ if (env->ExceptionCheck()) { // should never happen ++ result = NULL; ++ goto cleanup; ++ } + +- resultElements[0] = (jlong) &(privKey->privateValue); // private big integer +- resultElements[1] = (jlong) &(privKey->publicValue); // encoded ec point +- +- // If the array is a copy then we must write back our changes +- if (isCopy == JNI_TRUE) { +- env->ReleaseLongArrayElements(result, resultElements, 0); ++ jba = getEncodedBytes(env, &(privKey->publicValue)); ++ if (jba == NULL) { ++ result = NULL; ++ goto cleanup; ++ } ++ env->SetObjectArrayElement(result, 1, jba); // encoded ec point ++ if (env->ExceptionCheck()) { // should never happen ++ result = NULL; ++ goto cleanup; + } + + cleanup: + { +- if (params_item.data) ++ if (params_item.data) { + env->ReleaseByteArrayElements(encodedParams, + (jbyte *) params_item.data, JNI_ABORT); +- +- if (ecparams) ++ } ++ if (ecparams) { + FreeECParams(ecparams, true); +- ++ } + if (privKey) { + FreeECParams(&privKey->ecParams, false); + SECITEM_FreeItem(&privKey->version, B_FALSE); +- // Don't free privKey->privateValue and privKey->publicValue ++ SECITEM_FreeItem(&privKey->privateValue, B_FALSE); ++ SECITEM_FreeItem(&privKey->publicValue, B_FALSE); ++ free(privKey); + } +- +- if (pSeedBuffer) ++ if (pSeedBuffer) { + delete [] pSeedBuffer; ++ } + } + + return result; + } + + /* +- * Class: sun_security_ec_ECKeyPairGenerator +- * Method: getEncodedBytes +- * Signature: (J)[B +- */ +-JNIEXPORT jbyteArray +-JNICALL Java_sun_security_ec_ECKeyPairGenerator_getEncodedBytes +- (JNIEnv *env, jclass clazz, jlong hSECItem) +-{ +- SECItem *s = (SECItem *)hSECItem; +- jbyteArray jEncodedBytes = env->NewByteArray(s->len); +- +- // Copy bytes from a native SECItem buffer to Java byte array +- env->SetByteArrayRegion(jEncodedBytes, 0, s->len, (jbyte *)s->data); +- +- // Use B_FALSE to free only the SECItem->data +- SECITEM_FreeItem(s, B_FALSE); +- +- return jEncodedBytes; +-} +- +-/* + * Class: sun_security_ec_ECDSASignature + * Method: signDigest + * Signature: ([B[B[B[B)[B +@@ -234,21 +252,26 @@ + + cleanup: + { +- if (params_item.data) ++ if (params_item.data) { + env->ReleaseByteArrayElements(encodedParams, + (jbyte *) params_item.data, JNI_ABORT); +- +- if (pDigestBuffer) ++ } ++ if (privKey.privateValue.data) { ++ env->ReleaseByteArrayElements(privateKey, ++ (jbyte *) privKey.privateValue.data, JNI_ABORT); ++ } ++ if (pDigestBuffer) { + delete [] pDigestBuffer; +- +- if (pSignedDigestBuffer) ++ } ++ if (pSignedDigestBuffer) { + delete [] pSignedDigestBuffer; +- +- if (pSeedBuffer) ++ } ++ if (pSeedBuffer) { + delete [] pSeedBuffer; +- +- if (ecparams) ++ } ++ if (ecparams) { + FreeECParams(ecparams, true); ++ } + } + + return jSignedDigest; +--- jdk/src/solaris/classes/sun/font/FcFontConfiguration.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/solaris/classes/sun/font/FcFontConfiguration.java Tue Jun 03 14:19:36 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved. + * 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,6 +33,7 @@ + import java.net.InetAddress; + import java.net.UnknownHostException; + import java.nio.charset.Charset; ++import java.nio.charset.StandardCharsets; + import java.nio.file.Files; + import java.util.HashMap; + import java.util.HashSet; +@@ -173,8 +174,16 @@ + } + + @Override +- public FontDescriptor[] getFontDescriptors(String fontName, int style) { +- return new FontDescriptor[0]; ++ protected FontDescriptor[] buildFontDescriptors(int fontIndex, int styleIndex) { ++ CompositeFontDescriptor[] cfi = get2DCompositeFontInfo(); ++ int idx = fontIndex * NUM_STYLES + styleIndex; ++ String[] componentFaceNames = cfi[idx].getComponentFaceNames(); ++ FontDescriptor[] ret = new FontDescriptor[componentFaceNames.length]; ++ for (int i = 0; i < componentFaceNames.length; i++) { ++ ret[i] = new FontDescriptor(componentFaceNames[i], StandardCharsets.UTF_8.newEncoder(), new int[0]); ++ } ++ ++ return ret; + } + + @Override +@@ -250,10 +259,12 @@ + } + + String[] fileNames = new String[numFonts]; ++ String[] faceNames = new String[numFonts]; + + int index; + for (index = 0; index < fcFonts.length; index++) { + fileNames[index] = fcFonts[index].fontFile; ++ faceNames[index] = fcFonts[index].familyName; + } + + if (installedFallbackFontFiles != null) { +@@ -266,7 +277,7 @@ + = new CompositeFontDescriptor( + faceName, + 1, +- null, ++ faceNames, + fileNames, + null, null); + } +--- jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c Tue Jun 03 14:19:36 2014 -0700 +@@ -517,6 +517,8 @@ + } else if (ret == JVM_IO_ERR) { + if (errno == EBADF) { + JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "Socket closed"); ++ } else if (errno == ENOMEM) { ++ JNU_ThrowOutOfMemoryError(env, "NET_Timeout native heap allocation failed"); + } else { + NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", "Peek failed"); + } +@@ -617,15 +619,18 @@ + "Receive timed out"); + return -1; + } else if (ret == JVM_IO_ERR) { ++ if (errno == ENOMEM) { ++ JNU_ThrowOutOfMemoryError(env, "NET_Timeout native heap allocation failed"); + #ifdef __linux__ +- if (errno == EBADF) { ++ } else if (errno == EBADF) { + JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "Socket closed"); + } else { + NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", "Receive failed"); ++#else ++ } else { ++ JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "Socket closed"); ++#endif + } +-#else +- JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "Socket closed"); +-#endif + return -1; + } else if (ret == JVM_IO_INTR) { + JNU_ThrowByName(env, JNU_JAVAIOPKG "InterruptedIOException", +@@ -835,15 +840,18 @@ + JNU_ThrowByName(env, JNU_JAVANETPKG "SocketTimeoutException", + "Receive timed out"); + } else if (ret == JVM_IO_ERR) { ++ if (errno == ENOMEM) { ++ JNU_ThrowOutOfMemoryError(env, "NET_Timeout native heap allocation failed"); + #ifdef __linux__ +- if (errno == EBADF) { ++ } else if (errno == EBADF) { + JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "Socket closed"); + } else { + NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", "Receive failed"); ++#else ++ } else { ++ JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "Socket closed"); ++#endif + } +-#else +- JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "Socket closed"); +-#endif + } else if (ret == JVM_IO_INTR) { + JNU_ThrowByName(env, JNU_JAVAIOPKG "InterruptedIOException", + "operation interrupted"); +--- jdk/src/solaris/native/java/net/PlainSocketImpl.c Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/solaris/native/java/net/PlainSocketImpl.c Tue Jun 03 14:19:36 2014 -0700 +@@ -708,7 +708,6 @@ + } else { + ret = NET_Timeout(fd, timeout); + } +- + if (ret == 0) { + JNU_ThrowByName(env, JNU_JAVANETPKG "SocketTimeoutException", + "Accept timed out"); +@@ -716,6 +715,8 @@ + } else if (ret == JVM_IO_ERR) { + if (errno == EBADF) { + JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "Socket closed"); ++ } else if (errno == ENOMEM) { ++ JNU_ThrowOutOfMemoryError(env, "NET_Timeout native heap allocation failed"); + } else { + NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", "Accept failed"); + } +--- jdk/src/solaris/native/java/net/SocketInputStream.c Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/solaris/native/java/net/SocketInputStream.c Tue Jun 03 14:19:36 2014 -0700 +@@ -108,6 +108,8 @@ + } else if (nread == JVM_IO_ERR) { + if (errno == EBADF) { + JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "Socket closed"); ++ } else if (errno == ENOMEM) { ++ JNU_ThrowOutOfMemoryError(env, "NET_Timeout native heap allocation failed"); + } else { + NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", + "select/poll failed"); +--- jdk/src/solaris/native/java/net/bsd_close.c Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/solaris/native/java/net/bsd_close.c Tue Jun 03 14:19:36 2014 -0700 +@@ -25,6 +25,7 @@ + + #include <stdio.h> + #include <stdlib.h> ++#include <sys/param.h> + #include <signal.h> + #include <pthread.h> + #include <sys/types.h> +@@ -35,7 +36,6 @@ + #include <sys/uio.h> + #include <unistd.h> + #include <errno.h> +- + #include <sys/poll.h> + + /* +@@ -347,6 +347,10 @@ + int NET_Timeout(int s, long timeout) { + long prevtime = 0, newtime; + struct timeval t, *tp = &t; ++ fd_set fds; ++ fd_set* fdsp = NULL; ++ int allocated = 0; ++ threadEntry_t self; + fdEntry_t *fdEntry = getFdEntry(s); + + /* +@@ -376,20 +380,29 @@ + t.tv_usec = 0; + } + ++ if (s < FD_SETSIZE) { ++ fdsp = &fds; ++ FD_ZERO(fdsp); ++ } else { ++ int length = (howmany(s+1, NFDBITS)) * sizeof(int); ++ fdsp = (fd_set *) calloc(1, length); ++ if (fdsp == NULL) { ++ return -1; // errno will be set to ENOMEM ++ } ++ allocated = 1; ++ } ++ FD_SET(s, fdsp); ++ + for(;;) { +- fd_set rfds; + int rv; +- threadEntry_t self; + + /* + * call select on the fd. If interrupted by our wakeup signal + * errno will be set to EBADF. + */ +- FD_ZERO(&rfds); +- FD_SET(s, &rfds); + + startOp(fdEntry, &self); +- rv = select(s+1, &rfds, 0, 0, tp); ++ rv = select(s+1, fdsp, 0, 0, tp); + endOp(fdEntry, &self); + + /* +@@ -403,6 +416,8 @@ + newtime = now.tv_sec * 1000 + now.tv_usec / 1000; + timeout -= newtime - prevtime; + if (timeout <= 0) { ++ if (allocated != 0) ++ free(fdsp); + return 0; + } + prevtime = newtime; +@@ -410,6 +425,8 @@ + t.tv_usec = (timeout % 1000) * 1000; + } + } else { ++ if (allocated != 0) ++ free(fdsp); + return rv; + } + +--- jdk/src/solaris/native/java/net/linux_close.c Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/solaris/native/java/net/linux_close.c Tue Jun 03 14:19:36 2014 -0700 +@@ -34,7 +34,6 @@ + #include <sys/uio.h> + #include <unistd.h> + #include <errno.h> +- + #include <sys/poll.h> + + /* +--- jdk/src/windows/bin/java_md.c Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/windows/bin/java_md.c Tue Jun 03 14:19:36 2014 -0700 +@@ -1301,6 +1301,14 @@ + /* save path length */ + jrePathLen = JLI_StrLen(libraryPath); + ++ if (jrePathLen + JLI_StrLen("\\bin\\verify.dll") >= MAXPATHLEN) { ++ /* jre path is too long, the library path will not fit there; ++ * report and abort preloading ++ */ ++ JLI_ReportErrorMessage(JRE_ERROR11); ++ break; ++ } ++ + /* load msvcrt 1st */ + LoadMSVCRT(); + +--- jdk/src/windows/classes/sun/awt/shell/Win32ShellFolder2.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/windows/classes/sun/awt/shell/Win32ShellFolder2.java Tue Jun 03 14:19:36 2014 -0700 +@@ -583,11 +583,18 @@ + + // Needs to be accessible to Win32ShellFolderManager2 + static String getFileSystemPath(final int csidl) throws IOException, InterruptedException { +- return invoke(new Callable<String>() { ++ String path = invoke(new Callable<String>() { + public String call() throws IOException { + return getFileSystemPath0(csidl); + } + }, IOException.class); ++ if (path != null) { ++ SecurityManager security = System.getSecurityManager(); ++ if (security != null) { ++ security.checkRead(path); ++ } ++ } ++ return path; + } + + // NOTE: this method uses COM and must be called on the 'COM thread'. See ComInvoker for the details +--- jdk/src/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java Tue Jun 03 14:19:36 2014 -0700 +@@ -142,6 +142,8 @@ + if (desktop == null) { + try { + desktop = new Win32ShellFolder2(DESKTOP); ++ } catch (SecurityException e) { ++ // Ignore error + } catch (IOException e) { + // Ignore error + } catch (InterruptedException e) { +@@ -155,6 +157,8 @@ + if (drives == null) { + try { + drives = new Win32ShellFolder2(DRIVES); ++ } catch (SecurityException e) { ++ // Ignore error + } catch (IOException e) { + // Ignore error + } catch (InterruptedException e) { +@@ -171,6 +175,8 @@ + if (path != null) { + recent = createShellFolder(getDesktop(), new File(path)); + } ++ } catch (SecurityException e) { ++ // Ignore error + } catch (InterruptedException e) { + // Ignore error + } catch (IOException e) { +@@ -184,6 +190,8 @@ + if (network == null) { + try { + network = new Win32ShellFolder2(NETWORK); ++ } catch (SecurityException e) { ++ // Ignore error + } catch (IOException e) { + // Ignore error + } catch (InterruptedException e) { +@@ -207,6 +215,8 @@ + personal.setIsPersonal(); + } + } ++ } catch (SecurityException e) { ++ // Ignore error + } catch (InterruptedException e) { + // Ignore error + } catch (IOException e) { +--- jdk/src/windows/classes/sun/awt/windows/ThemeReader.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/windows/classes/sun/awt/windows/ThemeReader.java Tue Jun 03 14:19:36 2014 -0700 +@@ -56,18 +56,12 @@ + new ReentrantReadWriteLock(); + private static final Lock readLock = readWriteLock.readLock(); + private static final Lock writeLock = readWriteLock.writeLock(); ++ private static volatile boolean valid = false; + + static void flush() { +- writeLock.lock(); +- try { +- // Close old themes. +- for (Long value : widgetToTheme.values()) { +- closeTheme(value.longValue()); +- } +- widgetToTheme.clear(); +- } finally { +- writeLock.unlock(); +- } ++ // Could be called on Toolkit thread, so do not try to aquire locks ++ // to avoid deadlock with theme initialization ++ valid = false; + } + + public native static boolean isThemed(); +@@ -94,6 +88,24 @@ + // returns theme value + // this method should be invoked with readLock locked + private static Long getTheme(String widget) { ++ if (!valid) { ++ readLock.unlock(); ++ writeLock.lock(); ++ try { ++ if (!valid) { ++ // Close old themes. ++ for (Long value : widgetToTheme.values()) { ++ closeTheme(value); ++ } ++ widgetToTheme.clear(); ++ valid = true; ++ } ++ } finally { ++ readLock.lock(); ++ writeLock.unlock(); ++ } ++ } ++ + // mostly copied from the javadoc for ReentrantReadWriteLock + Long theme = widgetToTheme.get(widget); + if (theme == null) { +--- jdk/src/windows/classes/sun/awt/windows/WToolkit.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/windows/classes/sun/awt/windows/WToolkit.java Tue Jun 03 14:19:36 2014 -0700 +@@ -38,6 +38,7 @@ + import java.security.PrivilegedAction; + import sun.awt.AWTAutoShutdown; + import sun.awt.LightweightFrame; ++import sun.awt.AppContext; + import sun.awt.SunToolkit; + import sun.misc.ThreadGroupUtils; + import sun.awt.Win32GraphicsDevice; +@@ -866,11 +867,16 @@ + * Windows doesn't always send WM_SETTINGCHANGE when it should. + */ + private void windowsSettingChange() { +- EventQueue.invokeLater(new Runnable() { +- public void run() { +- updateProperties(); +- } +- }); ++ if (AppContext.getAppContext() == null) { ++ // We cannot post the update to any EventQueue. Listeners will ++ // be called on EDTs by DesktopPropertyChangeSupport ++ updateProperties(); ++ } else { ++ // Cannot update on Toolkit thread. ++ // DesktopPropertyChangeSupport will call listeners on Toolkit ++ // thread if it has AppContext (standalone mode) ++ EventQueue.invokeLater(this::updateProperties); ++ } + } + + private synchronized void updateProperties() { +--- jdk/src/windows/classes/sun/awt/windows/WWindowPeer.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/windows/classes/sun/awt/windows/WWindowPeer.java Tue Jun 03 14:19:36 2014 -0700 +@@ -436,6 +436,7 @@ + @SuppressWarnings("unchecked") + public static long[] getActiveWindowHandles() { + AppContext appContext = AppContext.getAppContext(); ++ if (appContext == null) return null; + synchronized (appContext) { + List<WWindowPeer> l = (List<WWindowPeer>)appContext.get(ACTIVE_WINDOWS_KEY); + if (l == null) { +--- jdk/src/windows/native/sun/windows/awt_Component.cpp Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/windows/native/sun/windows/awt_Component.cpp Tue Jun 03 14:19:36 2014 -0700 +@@ -1719,9 +1719,11 @@ + case WM_IME_SETCONTEXT: + // lParam is passed as pointer and it can be modified. + mr = WmImeSetContext(static_cast<BOOL>(wParam), &lParam); ++ CallProxyDefWindowProc(message, wParam, lParam, retValue, mr); + break; + case WM_IME_NOTIFY: + mr = WmImeNotify(wParam, lParam); ++ CallProxyDefWindowProc(message, wParam, lParam, retValue, mr); + break; + case WM_IME_STARTCOMPOSITION: + mr = WmImeStartComposition(); +@@ -4070,7 +4072,7 @@ + { + if (mr != mrConsume) { + HWND proxy = GetProxyFocusOwner(); +- if (proxy != NULL) { ++ if (proxy != NULL && ::IsWindowEnabled(proxy)) { + retVal = ComCtl32Util::GetInstance().DefWindowProc(NULL, proxy, message, wParam, lParam); + mr = mrConsume; + } +--- jdk/src/windows/native/sun/windows/awt_Frame.cpp Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/src/windows/native/sun/windows/awt_Frame.cpp Tue Jun 03 14:19:36 2014 -0700 +@@ -342,6 +342,8 @@ + case WM_IME_STARTCOMPOSITION: + case WM_IME_ENDCOMPOSITION: + case WM_IME_COMPOSITION: ++ case WM_IME_SETCONTEXT: ++ case WM_IME_NOTIFY: + case WM_IME_CONTROL: + case WM_IME_COMPOSITIONFULL: + case WM_IME_SELECT: +--- jdk/test/java/awt/DataFlavor/MissedHtmlAndRtfBug/InterprocessMessages.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/test/java/awt/DataFlavor/MissedHtmlAndRtfBug/InterprocessMessages.java Tue Jun 03 14:19:36 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * 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,5 +24,6 @@ + interface InterprocessMessages { + final static int EXECUTION_IS_SUCCESSFULL = 0; + final static int DATA_IS_CORRUPTED = 212; ++ final static int NO_DROP_HAPPENED = 112; + } + +--- jdk/test/java/awt/DataFlavor/MissedHtmlAndRtfBug/MissedHtmlAndRtfBug.html Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/test/java/awt/DataFlavor/MissedHtmlAndRtfBug/MissedHtmlAndRtfBug.html Tue Jun 03 14:19:36 2014 -0700 +@@ -1,5 +1,5 @@ + <!-- +- Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. ++ Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + 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 @@ + <html> + <!-- + @test +- @bug 8005932 ++ @bug 8005932 8017456 + @summary Java 7 on mac os x only provides text clipboard formats + @author mikhail.cherkasov@oracle.com + @library ../../regtesthelpers +--- jdk/test/java/awt/DataFlavor/MissedHtmlAndRtfBug/MissedHtmlAndRtfBug.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/test/java/awt/DataFlavor/MissedHtmlAndRtfBug/MissedHtmlAndRtfBug.java Tue Jun 03 14:19:36 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -21,17 +21,6 @@ + * questions. + */ + +-/* +- @bug 8005932 +- @summary Java 7 on mac os x only provides text clipboard formats +- @author mikhail.cherkasov@oracle.com +- @library ../../regtesthelpers +- @library ../../regtesthelpers/process +- @build Util +- @build ProcessResults ProcessCommunicator +- @run applet/othervm MissedHtmlAndRtfBug.html +-*/ +- + import java.awt.*; + import java.awt.datatransfer.DataFlavor; + import java.awt.event.*; +@@ -47,6 +36,7 @@ + import static java.lang.Thread.sleep; + + public class MissedHtmlAndRtfBug extends Applet { ++ + public void init() { + setLayout(new BorderLayout()); + }//End init() +@@ -82,9 +72,6 @@ + args.add(concatStrings(DataFlavorSearcher.RICH_TEXT_NAMES)); + + ProcessResults processResults = +-// ProcessCommunicator.executeChildProcess(this.getClass(), "/Users/mcherkasov/ws/clipboard/DataFlover/out/production/DataFlover" + +-// " -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 ", +-// args.toArray(new String[0])); + ProcessCommunicator.executeChildProcess(this.getClass(), + "." + File.separator + System.getProperty("java.class.path"), args.toArray(new String[]{})); + +@@ -117,6 +104,13 @@ + throw new RuntimeException("TEST IS FAILED: Target has received" + + " corrupted data."); + } ++ if (InterprocessMessages.NO_DROP_HAPPENED == ++ processResults.getExitValue()) { ++ processResults.printProcessErrorOutput(System.err); ++ throw new RuntimeException("Error. Drop did not happen." + ++ " Target frame is possibly covered by a window of other application." + ++ " Please, rerun the test with all windows minimized."); ++ } + processResults.verifyStdErr(System.err); + processResults.verifyProcessExitValue(System.err); + processResults.printProcessStandartOutput(System.out); +@@ -184,7 +178,7 @@ + } + } + +- public static void main(String[] args) { ++ public static void main(String[] args) throws InterruptedException { + Point dragSourcePoint = new Point(InterprocessArguments.DRAG_SOURCE_POINT_X_ARGUMENT.extractInt(args), + InterprocessArguments.DRAG_SOURCE_POINT_Y_ARGUMENT.extractInt(args)); + Point targetFrameLocation = new Point(InterprocessArguments.TARGET_FRAME_X_POSITION_ARGUMENT.extractInt(args), +@@ -197,6 +191,8 @@ + } catch (InterruptedException e) { + e.printStackTrace(); + } ++ sleep(5000); ++ System.exit(InterprocessMessages.NO_DROP_HAPPENED); + } + + +--- jdk/test/java/awt/Frame/7024749/bug7024749.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/test/java/awt/Frame/7024749/bug7024749.java Tue Jun 03 14:19:36 2014 -0700 +@@ -23,7 +23,7 @@ + + /* + * @test +- * @bug 7024749 ++ * @bug 7024749 8019990 + * @summary JDK7 b131---a crash in: Java_sun_awt_windows_ThemeReader_isGetThemeTransitionDurationDefined+0x75 + * @library ../../regtesthelpers + * @build Util +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ jdk/test/java/awt/FullScreen/DisplayChangeVITest/DisplayChangeVITest.java Tue Jun 03 14:19:36 2014 -0700 +@@ -0,0 +1,245 @@ ++/* ++ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved. ++ * 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 6366359 ++ * @summary Test that we don't crash when changing from 8 to 16/32 bit modes ++ * @author Dmitri.Trembovetski@Sun.COM area=FullScreen ++ * @run main/othervm/timeout=200 DisplayChangeVITest ++ * @run main/othervm/timeout=200 -Dsun.java2d.d3d=false DisplayChangeVITest ++ * @run main/othervm/timeout=200 -Dsun.java2d.opengl=true DisplayChangeVITest ++ */ ++ ++import java.awt.Color; ++import java.awt.DisplayMode; ++import java.awt.Graphics; ++import java.awt.GraphicsDevice; ++import java.awt.GraphicsEnvironment; ++import java.awt.event.KeyAdapter; ++import java.awt.event.KeyEvent; ++import java.awt.image.BufferedImage; ++import java.awt.image.VolatileImage; ++import java.lang.Exception; ++import java.lang.Thread; ++import java.util.ArrayList; ++import java.util.Random; ++import javax.swing.JFrame; ++ ++/** ++ * The test enters fullscreen mode (if it's supported) and then tries ++ * to switch between display moes with different depths and dimensions ++ * while doing both rendering to the screen (via a VolatileImage) ++ * and Swing repainting just to make things more chaotic. ++ * ++ * The procedure is repeated TEST_REPS times (3 by default). ++ * ++ * Don't pay attention to what happens on the screen, it won't be pretty. ++ * If the test doesn't crash or throw exceptions, it passes, otherwise ++ * it fails. ++ */ ++public class DisplayChangeVITest extends JFrame implements Runnable { ++ ++ private final Random rnd = new Random(); ++ private VolatileImage bb; ++ private BufferedImage sprite; ++ private VolatileImage volSprite; ++ ++ private static boolean done = false; ++ private static final Object lock = new Object(); ++ private static final int TEST_REPS = 3; ++ ++ private ArrayList<DisplayMode> dms; ++ ++ DisplayChangeVITest() { ++ selectDisplayModes(); ++ addKeyListener(new KeyAdapter() { ++ public void keyPressed(KeyEvent e) { ++ if (e.getKeyCode() == KeyEvent.VK_ESCAPE) { ++ synchronized (lock) { ++ done = true; ++ } ++ } ++ } ++ }); ++ sprite = new BufferedImage(200, 200, BufferedImage.TYPE_INT_RGB); ++ sprite.getRaster().getDataBuffer(); ++ Graphics g = sprite.getGraphics(); ++ g.setColor(Color.yellow); ++ g.fillRect(0, 0, sprite.getWidth(), sprite.getHeight()); ++ } ++ ++ void render(Graphics g) { ++ do { ++ // volatile images validated here ++ initBackbuffer(); ++ ++ g.setColor(Color.black); ++ g.fillRect(0, 0, getWidth(), getHeight()); ++ ++ Graphics gg = bb.getGraphics(); ++ gg.setColor(new Color(rnd.nextInt(0x00ffffff))); ++ gg.fillRect(0, 0, bb.getWidth(), bb.getHeight()); ++ for (int x = 0; x < 10; x++) { ++ gg.drawImage(sprite, x*200, 0, null); ++ gg.drawImage(volSprite, x*200, 500, null); ++ } ++ ++ g.drawImage(bb, 0, 0, null); ++ } while (bb.contentsLost()); ++ } ++ ++ private static void sleep(long msec) { ++ try { Thread.sleep(msec); } catch (InterruptedException e) {} ++ } ++ ++ private int reps = 0; ++ public void run() { ++ GraphicsDevice gd = getGraphicsConfiguration().getDevice(); ++ if (gd.isDisplayChangeSupported() && dms.size() > 0) { ++ while (!done && reps++ < TEST_REPS) { ++ for (DisplayMode dm : dms) { ++ System.err.printf("Entering DisplayMode[%dx%dx%d]\n", ++ dm.getWidth(), dm.getHeight(), dm.getBitDepth()); ++ gd.setDisplayMode(dm); ++ ++ initBackbuffer(); ++ for (int i = 0; i < 10; i++) { ++ // render to the screen ++ render(getGraphics()); ++ // ask Swing to repaint ++ repaint(); ++ sleep(100); ++ } ++ sleep(1500); ++ } ++ } ++ } else { ++ System.err.println("Display mode change " + ++ "not supported. Test passed."); ++ } ++ dispose(); ++ synchronized (lock) { ++ done = true; ++ lock.notify(); ++ } ++ } ++ ++ private void createBackbuffer() { ++ if (bb == null || ++ bb.getWidth() != getWidth() || bb.getHeight() != getHeight()) ++ { ++ bb = createVolatileImage(getWidth(), getHeight()); ++ } ++ } ++ ++ private void initBackbuffer() { ++ createBackbuffer(); ++ ++ int res = bb.validate(getGraphicsConfiguration()); ++ if (res == VolatileImage.IMAGE_INCOMPATIBLE) { ++ bb = null; ++ createBackbuffer(); ++ bb.validate(getGraphicsConfiguration()); ++ res = VolatileImage.IMAGE_RESTORED; ++ } ++ if (res == VolatileImage.IMAGE_RESTORED) { ++ Graphics g = bb.getGraphics(); ++ g.setColor(new Color(rnd.nextInt(0x00ffffff))); ++ g.fillRect(0, 0, bb.getWidth(), bb.getHeight()); ++ ++ volSprite = createVolatileImage(100, 100); ++ } ++ volSprite.validate(getGraphicsConfiguration()); ++ } ++ ++ private void selectDisplayModes() { ++ GraphicsDevice gd = ++ GraphicsEnvironment.getLocalGraphicsEnvironment(). ++ getDefaultScreenDevice(); ++ dms = new ArrayList<DisplayMode>(); ++ DisplayMode dmArray[] = gd.getDisplayModes(); ++ boolean found8 = false, found16 = false, ++ found24 = false, found32 = false; ++ for (DisplayMode dm : dmArray) { ++ if (!found8 && ++ (dm.getBitDepth() == 8 || ++ dm.getBitDepth() == DisplayMode.BIT_DEPTH_MULTI) && ++ (dm.getWidth() >= 800 && dm.getWidth() < 1024)) ++ { ++ dms.add(dm); ++ found8 = true; ++ continue; ++ } ++ if (!found32 && ++ (dm.getBitDepth() == 32 || ++ dm.getBitDepth() == DisplayMode.BIT_DEPTH_MULTI) && ++ dm.getWidth() >= 1280) ++ { ++ dms.add(dm); ++ found32 = true; ++ continue; ++ } ++ if (!found16 && ++ dm.getBitDepth() == 16 && ++ (dm.getWidth() >= 1024 && dm.getWidth() < 1280)) ++ { ++ dms.add(dm); ++ found16 = true; ++ continue; ++ } ++ if (found8 && found16 && found32) { ++ break; ++ } ++ } ++ System.err.println("Found display modes:"); ++ for (DisplayMode dm : dms) { ++ System.err.printf("DisplayMode[%dx%dx%d]\n", ++ dm.getWidth(), dm.getHeight(), dm.getBitDepth()); ++ } ++ } ++ ++ public static void main(String[] args) throws Exception { ++ DisplayChangeVITest test = new DisplayChangeVITest(); ++ GraphicsDevice gd = ++ GraphicsEnvironment.getLocalGraphicsEnvironment(). ++ getDefaultScreenDevice(); ++ if (gd.isFullScreenSupported()) { ++ gd.setFullScreenWindow(test); ++ Thread t = new Thread(test); ++ t.run(); ++ synchronized (lock) { ++ while (!done) { ++ try { ++ lock.wait(50); ++ } catch (InterruptedException ex) { ++ ex.printStackTrace(); ++ } ++ } ++ } ++ System.err.println("Test Passed."); ++ } else { ++ System.err.println("Full screen not supported. Test passed."); ++ } ++ } ++} +--- jdk/test/java/awt/regtesthelpers/process/ProcessCommunicator.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/test/java/awt/regtesthelpers/process/ProcessCommunicator.java Tue Jun 03 14:19:36 2014 -0700 +@@ -81,7 +81,7 @@ + public static ProcessResults executeChildProcess(final Class classToExecute, + final String [] args) + { +- return executeChildProcess(classToExecute, " ", args); ++ return executeChildProcess(classToExecute, System.getProperty("java.class.path"), args); + } + + /** +--- jdk/test/java/lang/SecurityManager/CheckPackageAccess.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/test/java/lang/SecurityManager/CheckPackageAccess.java Tue Jun 03 14:19:36 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. + * 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 6741606 7146431 8000450 8019830 8022945 ++ * @bug 6741606 7146431 8000450 8019830 8022945 8027144 8041633 + * @summary Make sure all restricted packages listed in the package.access + * property in the java.security file are blocked + * @run main/othervm CheckPackageAccess +@@ -84,7 +84,8 @@ + "org.jcp.xml.dsig.internal.", + "jdk.internal.", + "jdk.nashorn.internal.", +- "jdk.nashorn.tools." ++ "jdk.nashorn.tools.", ++ "com.sun.activation.registries." + }; + + public static void main(String[] args) throws Exception { +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ jdk/test/java/net/ServerSocket/AnotherSelectFdsLimit.java Tue Jun 03 14:19:36 2014 -0700 +@@ -0,0 +1,78 @@ ++/* ++ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. ++ * 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 8035897 ++ * @summary FD_SETSIZE should be set on macosx ++ * @run main/othervm AnotherSelectFdsLimit 1023 ++ * @run main/othervm AnotherSelectFdsLimit 1024 ++ * @run main/othervm AnotherSelectFdsLimit 1025 ++ * @run main/othervm AnotherSelectFdsLimit 1600 ++ */ ++ ++import java.io.IOException; ++import java.net.ServerSocket; ++import java.net.SocketTimeoutException; ++import java.util.ArrayList; ++import java.util.List; ++ ++public class AnotherSelectFdsLimit { ++ static final int DEFAULT_FDS_TO_USE = 1600; ++ ++ public static void main(String [] args) throws Exception { ++ if (!System.getProperty("os.name").contains("OS X")) { ++ System.out.println("Test only run on MAC. Exiting."); ++ return; ++ } ++ ++ int fdsToUse = DEFAULT_FDS_TO_USE; ++ if (args.length == 1) ++ fdsToUse = Integer.parseInt(args[0]); ++ ++ System.out.println("Using " + fdsToUse + " fds."); ++ ++ List<Thread> threads = new ArrayList<>(); ++ for (int i=0; i<fdsToUse; i++) ++ threads.add(new WorkerThread()); ++ ++ for (Thread t : threads) ++ t.start(); ++ ++ for (Thread t : threads) ++ t.join(); ++ } ++ ++ static class WorkerThread extends Thread { ++ public void run() { ++ try (ServerSocket ss = new ServerSocket(0)) { ++ ss.setSoTimeout(2000); ++ ss.accept(); ++ } catch (SocketTimeoutException x) { ++ // expected ++ } catch (IOException x) { ++ throw new java.io.UncheckedIOException(x); ++ } ++ } ++ } ++} +--- jdk/test/java/nio/channels/Selector/ByteServer.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/test/java/nio/channels/Selector/ByteServer.java Tue Jun 03 14:19:36 2014 -0700 +@@ -22,52 +22,54 @@ + */ + + /** +- * +- * Utility class for tests. A simple server, which waits for a connection, +- * writes out n bytes and waits. ++ * Utility class for tests. A simple "in-thread" server to accept connections ++ * and write bytes. + * @author kladko + */ + + import java.net.Socket; + import java.net.ServerSocket; ++import java.net.SocketAddress; ++import java.net.InetSocketAddress; ++import java.io.IOException; ++import java.io.Closeable; + +-public class ByteServer { ++public class ByteServer implements Closeable { + +- public static final String LOCALHOST = "localhost"; +- private int bytecount; +- private Socket socket; +- private ServerSocket serversocket; +- private Thread serverthread; +- volatile Exception savedException; ++ private final ServerSocket ss; ++ private Socket s; + +- public ByteServer(int bytecount) throws Exception{ +- this.bytecount = bytecount; +- serversocket = new ServerSocket(0); ++ ByteServer() throws IOException { ++ this.ss = new ServerSocket(0); + } + +- public int port() { +- return serversocket.getLocalPort(); ++ SocketAddress address() { ++ return new InetSocketAddress(ss.getInetAddress(), ss.getLocalPort()); + } + +- public void start() { +- serverthread = new Thread() { +- public void run() { +- try { +- socket = serversocket.accept(); +- socket.getOutputStream().write(new byte[bytecount]); +- socket.getOutputStream().flush(); +- } catch (Exception e) { +- System.err.println("Exception in ByteServer: " + e); +- System.exit(1); +- } +- } +- }; +- serverthread.start(); ++ void acceptConnection() throws IOException { ++ if (s != null) ++ throw new IllegalStateException("already connected"); ++ this.s = ss.accept(); + } + +- public void exit() throws Exception { +- serverthread.join(); +- socket.close(); +- serversocket.close(); ++ void closeConnection() throws IOException { ++ Socket s = this.s; ++ if (s != null) { ++ this.s = null; ++ s.close(); ++ } ++ } ++ ++ void write(int count) throws IOException { ++ if (s == null) ++ throw new IllegalStateException("no connection"); ++ s.getOutputStream().write(new byte[count]); ++ } ++ ++ public void close() throws IOException { ++ if (s != null) ++ s.close(); ++ ss.close(); + } + } +--- jdk/test/java/nio/channels/Selector/ReadAfterConnect.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/test/java/nio/channels/Selector/ReadAfterConnect.java Tue Jun 03 14:19:36 2014 -0700 +@@ -27,27 +27,25 @@ + * @author kladko + */ + +-import java.net.*; +-import java.nio.*; +-import java.nio.channels.*; ++import java.nio.channels.Selector; ++import java.nio.channels.SelectionKey; ++import java.nio.channels.SocketChannel; + + public class ReadAfterConnect { ++ public static void main(String[] argv) throws Exception { ++ try (ByteServer server = new ByteServer(); ++ SocketChannel sc = SocketChannel.open(server.address())) { + +- public static void main(String[] argv) throws Exception { +- ByteServer server = new ByteServer(0); // server: accept connection and do nothing +- server.start(); +- InetSocketAddress isa = new InetSocketAddress( +- InetAddress.getByName(ByteServer.LOCALHOST), server.port()); +- Selector sel = Selector.open(); +- SocketChannel sc = SocketChannel.open(); +- sc.connect(isa); +- sc.configureBlocking(false); +- sc.register(sel, SelectionKey.OP_READ); +- // Previously channel would get selected here, although there is nothing to read +- if (sel.selectNow() != 0) +- throw new Exception("Select returned nonzero value"); +- sc.close(); +- server.exit(); ++ server.acceptConnection(); ++ ++ try (Selector sel = Selector.open()) { ++ sc.configureBlocking(false); ++ sc.register(sel, SelectionKey.OP_READ); ++ // Previously channel would get selected here, although there is nothing to read ++ if (sel.selectNow() != 0) ++ throw new Exception("Select returned nonzero value"); ++ } ++ } + } + + } +--- jdk/test/java/nio/channels/Selector/SelectAfterRead.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/test/java/nio/channels/Selector/SelectAfterRead.java Tue Jun 03 14:19:36 2014 -0700 +@@ -28,60 +28,62 @@ + * @author kladko + */ + +-import java.net.*; +-import java.nio.*; +-import java.nio.channels.*; ++import java.nio.ByteBuffer; ++import java.nio.channels.Selector; ++import java.nio.channels.SelectionKey; ++import java.nio.channels.SocketChannel; + + public class SelectAfterRead { + +- final static int TIMEOUT = 1000; ++ private static final int TIMEOUT = 1000; + + public static void main(String[] argv) throws Exception { +- InetAddress lh = InetAddress.getByName(ByteServer.LOCALHOST); + + // server: accept connection and write one byte +- ByteServer server = new ByteServer(1); +- server.start(); +- Selector sel = Selector.open(); +- SocketChannel sc = SocketChannel.open(); +- sc.connect(new InetSocketAddress(lh, server.port())); +- sc.read(ByteBuffer.allocate(1)); +- sc.configureBlocking(false); +- sc.register(sel, SelectionKey.OP_READ); +- // previously on Windows select would select channel here, although there was +- // nothing to read +- if (sel.selectNow() != 0) +- throw new Exception("Select returned nonzero value"); +- sc.close(); +- sel.close(); +- server.exit(); ++ try (ByteServer server = new ByteServer(); ++ SocketChannel sc = SocketChannel.open(server.address())) { ++ ++ server.acceptConnection(); ++ server.write(1); ++ ++ try (Selector sel = Selector.open()) { ++ sc.read(ByteBuffer.allocate(1)); ++ sc.configureBlocking(false); ++ sc.register(sel, SelectionKey.OP_READ); ++ // previously on Windows select would select channel here, although there was ++ // nothing to read ++ if (sel.selectNow() != 0) ++ throw new Exception("Select returned nonzero value"); ++ } ++ } + + // Now we will test a two reads combination + // server: accept connection and write two bytes +- server = new ByteServer(2); +- server.start(); +- sc = SocketChannel.open(); +- sc.connect(new InetSocketAddress(lh, server.port())); +- sc.configureBlocking(false); +- sel = Selector.open(); +- sc.register(sel, SelectionKey.OP_READ); +- if (sel.select(TIMEOUT) != 1) +- throw new Exception("One selected key expected"); +- sel.selectedKeys().clear(); +- // previously on Windows a channel would get selected only once +- if (sel.selectNow() != 1) +- throw new Exception("One selected key expected"); +- // Previously on Windows two consequent reads would cause select() +- // to select a channel, although there was nothing remaining to +- // read in the channel +- if (sc.read(ByteBuffer.allocate(1)) != 1) +- throw new Exception("One byte expected"); +- if (sc.read(ByteBuffer.allocate(1)) != 1) +- throw new Exception("One byte expected"); +- if (sel.selectNow() != 0) +- throw new Exception("Select returned nonzero value"); +- sc.close(); +- sel.close(); +- server.exit(); ++ try (ByteServer server = new ByteServer(); ++ SocketChannel sc = SocketChannel.open(server.address())) { ++ ++ server.acceptConnection(); ++ server.write(2); ++ ++ try (Selector sel = Selector.open()) { ++ sc.configureBlocking(false); ++ sc.register(sel, SelectionKey.OP_READ); ++ if (sel.select(TIMEOUT) != 1) ++ throw new Exception("One selected key expected"); ++ sel.selectedKeys().clear(); ++ // previously on Windows a channel would get selected only once ++ if (sel.selectNow() != 1) ++ throw new Exception("One selected key expected"); ++ // Previously on Windows two consequent reads would cause select() ++ // to select a channel, although there was nothing remaining to ++ // read in the channel ++ if (sc.read(ByteBuffer.allocate(1)) != 1) ++ throw new Exception("One byte expected"); ++ if (sc.read(ByteBuffer.allocate(1)) != 1) ++ throw new Exception("One byte expected"); ++ if (sel.selectNow() != 0) ++ throw new Exception("Select returned nonzero value"); ++ } ++ } + } + } +--- jdk/test/java/nio/channels/Selector/SelectWrite.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/test/java/nio/channels/Selector/SelectWrite.java Tue Jun 03 14:19:36 2014 -0700 +@@ -22,36 +22,33 @@ + */ + + /* @test +- @bug 4645302 +- @summary Socket with OP_WRITE would get selected only once +- @author kladko ++ * @bug 4645302 ++ * @summary Socket with OP_WRITE would get selected only once ++ * @author kladko + */ + +-import java.net.*; +-import java.nio.*; +-import java.nio.channels.*; +- ++import java.nio.channels.Selector; ++import java.nio.channels.SelectionKey; ++import java.nio.channels.SocketChannel; + + public class SelectWrite { + + public static void main(String[] argv) throws Exception { +- ByteServer server = new ByteServer(0); +- // server: accept connection and do nothing +- server.start(); +- InetSocketAddress isa = new InetSocketAddress( +- InetAddress.getByName(ByteServer.LOCALHOST), server.port()); +- Selector sel = Selector.open(); +- SocketChannel sc = SocketChannel.open(); +- sc.connect(isa); +- sc.configureBlocking(false); +- sc.register(sel, SelectionKey.OP_WRITE); +- sel.select(); +- sel.selectedKeys().clear(); +- if (sel.select() == 0) { +- throw new Exception("Select returned zero"); ++ try (ByteServer server = new ByteServer(); ++ SocketChannel sc = SocketChannel.open(server.address())) { ++ ++ server.acceptConnection(); ++ ++ try (Selector sel = Selector.open()) { ++ sc.configureBlocking(false); ++ sc.register(sel, SelectionKey.OP_WRITE); ++ sel.select(); ++ sel.selectedKeys().clear(); ++ if (sel.select() == 0) { ++ throw new Exception("Select returned zero"); ++ } ++ } + } +- sc.close(); +- sel.close(); + } + + } +--- jdk/test/javax/management/remote/mandatory/util/CacheMapTest.java Wed Mar 12 11:58:14 2014 +0000 ++++ /dev/null Thu Jan 01 00:00:00 1970 +0000 +@@ -1,110 +0,0 @@ +-/* +- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. +- * 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 7654321 +- * @summary Tests the CacheMap class. +- * @author Eamonn McManus +- * @run clean CacheMapTest +- * @run build CacheMapTest +- * @run main CacheMapTest +- */ +- +-import java.util.Iterator; +-import java.util.Map; +- +-import com.sun.jmx.remote.util.CacheMap; +- +-public class CacheMapTest { +- public static void main(String[] args) { +- try { +- boolean ok = test(5) && test(100); +- if (ok) { +- System.out.println("Test completed"); +- return; +- } else { +- System.out.println("Test failed!"); +- System.exit(1); +- } +- } catch (Exception e) { +- System.err.println("Unexpected exception: " + e); +- e.printStackTrace(); +- System.exit(1); +- } +- } +- +- private static boolean test(int cacheSize) throws Exception { +- System.out.println("CacheMap test with cache size " + cacheSize); +- CacheMap map = new CacheMap(cacheSize); +- int size = 0; +- int maxIterations = cacheSize * 10; +- while (map.size() == size && size < maxIterations) { +- Integer key = new Integer(size); +- Object x = map.put(key, "x"); +- if (x != null) { +- System.out.println("Map already had entry " + key + "!"); +- return false; +- } +- x = map.get(key); +- if (!"x".equals(x)) { +- System.out.println("Got back surprising value: " + x); +- return false; +- } +- size++; +- } +- System.out.println("Map size is " + map.size() + " after inserting " + +- size + " elements"); +- do { +- System.gc(); +- Thread.sleep(1); +- System.out.println("Map size is " + map.size() + " after GC"); +- } while (map.size() > cacheSize); +- if (map.size() < cacheSize) { +- System.out.println("Map shrank to less than cache size: " + +- map.size() + " (surprising but not wrong)"); +- } else +- System.out.println("Map shrank to cache size as expected"); +- int lowest = size - cacheSize; +- // lowest value that can still be in cache if LRU is respected +- for (Iterator it = map.entrySet().iterator(); it.hasNext(); ) { +- Map.Entry entry = (Map.Entry) it.next(); +- Integer x = (Integer) entry.getKey(); +- int xx = x.intValue(); +- if (xx < lowest || xx >= size) { +- System.out.println("Old value remained (" + x + "), " + +- "expected none earlier than " + lowest); +- return false; +- } +- Object xxx = entry.getValue(); +- if (!"x".equals(xxx)) { +- System.out.println("Got back surprising value: " + xxx); +- return false; +- } +- } +- if (map.size() > 0) +- System.out.println("Remaining elements are the most recent ones"); +- System.out.println("Test passed"); +- return true; +- } +-} +--- jdk/test/sun/misc/Version/Version.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/test/sun/misc/Version/Version.java Tue Jun 03 14:19:36 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -116,10 +116,16 @@ + } else if (Character.isDigit(cs.charAt(0)) && + Character.isDigit(cs.charAt(1)) && cs.charAt(2) == '.' && + Character.isDigit(cs.charAt(3))) { +- // HSX has nn.n (major.minor) version ++ // HSX has nn.n[n] (major.minor) version + major = Integer.valueOf(version.substring(0, 2)).intValue(); +- minor = Character.digit(cs.charAt(3), 10); +- cs = cs.subSequence(4, cs.length()); ++ if (Character.isDigit(cs.charAt(4))) { ++ minor = Integer.valueOf(version.substring(3, 5)).intValue(); ++ cs = cs.subSequence(5, cs.length()); ++ } ++ else { ++ minor = Character.digit(cs.charAt(3), 10); ++ cs = cs.subSequence(4, cs.length()); ++ } + } + if (cs.charAt(0) == '_' && cs.length() >= 3 && + Character.isDigit(cs.charAt(1)) && +--- jdk/test/sun/util/calendar/zi/Zoneinfo.java Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/test/sun/util/calendar/zi/Zoneinfo.java Tue Jun 03 14:19:36 2014 -0700 +@@ -372,6 +372,7 @@ + ZoneRec zrec = zone.get(zone.size()-1); + tz.getOffsetIndex(zrec.getGmtOffset()); + ++ int lastGmtOffsetValue = -1; + int currentSave = 0; + boolean usedZone; + for (int zindex = 0; zindex < zone.size(); zindex++) { +@@ -380,9 +381,12 @@ + gmtOffset = zrec.getGmtOffset(); + int stdOffset = zrec.getDirectSave(); + ++ if (gmtOffset != lastGmtOffsetValue) { ++ tz.setRawOffset(gmtOffset, fromTime); ++ lastGmtOffsetValue = gmtOffset; ++ } + // If this is the last zone record, take the last rule info. + if (!zrec.hasUntil()) { +- tz.setRawOffset(gmtOffset, fromTime); + if (zrec.hasRuleReference()) { + tz.setLastRules(zrec.getRuleRef().getLastRules()); + } else if (stdOffset != 0) { +--- jdk/test/sun/util/calendar/zi/tzdata/VERSION Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/test/sun/util/calendar/zi/tzdata/VERSION Tue Jun 03 14:19:36 2014 -0700 +@@ -21,4 +21,4 @@ + # or visit www.oracle.com if you need additional information or have any + # questions. + # +-tzdata2013i ++tzdata2014c +--- jdk/test/sun/util/calendar/zi/tzdata/africa Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/test/sun/util/calendar/zi/tzdata/africa Tue Jun 03 14:19:36 2014 -0700 +@@ -358,11 +358,54 @@ + # http://www.worldtimezone.com/dst_news/dst_news_egypt02.html + # </a> + ++# From Ahmad El-Dardiry (2014-05-07): ++# Egypt is to change back to Daylight system on May 15 ++# http://english.ahram.org.eg/NewsContent/1/64/100735/Egypt/Politics-/Egypts-government-to-reapply-daylight-saving-time-.aspx ++ ++# From Gunther Vermier (2015-05-13): ++# our Egypt office confirms that the change will be at 15 May "midnight" (24:00) ++ ++# From Paul Eggert (2014-05-13): ++# Sarah El Deeb and Lee Keath of AP report that the Egyptian government says ++# the change is because of blackouts in Cairo, even though Ahram Online (cited ++# above) says DST had no affect on electricity consumption. The AP story says ++# DST will not be observed during Ramadan. There is no information about when ++# DST will end. See: ++# http://abcnews.go.com/International/wireStory/el-sissi-pushes-egyptians-line-23614833 ++# ++# For now, guess that later transitions will use 2010's rules, and that ++# Egypt will agree with Morocco (see below) about the date Ramadan starts and ++# ends, though (unlike Morocco) it will switch at 00:00 standard time. In ++# Egypt the spring-forward transitions are removed for 2020-2022, when the ++# guessed spring-forward date falls during the estimated Ramadan, and all ++# transitions removed for 2023-2038, where the estimated Ramadan falls entirely ++# outside the guessed daylight-saving time. Ramadan intrudes on the guessed ++# DST starting in 2039, but that's beyond our somewhat-arbitrary cutoff. ++ + Rule Egypt 2008 only - Aug lastThu 23:00s 0 - + Rule Egypt 2009 only - Aug 20 23:00s 0 - + Rule Egypt 2010 only - Aug 11 0:00 0 - + Rule Egypt 2010 only - Sep 10 0:00 1:00 S + Rule Egypt 2010 only - Sep lastThu 23:00s 0 - ++Rule Egypt 2014 only - May 15 24:00 1:00 S ++Rule Egypt 2014 only - Jun 29 0:00s 0 - ++Rule Egypt 2014 only - Jul 29 0:00s 1:00 S ++Rule Egypt 2014 max - Sep lastThu 23:00s 0 - ++Rule Egypt 2015 2019 - Apr lastFri 0:00s 1:00 S ++Rule Egypt 2015 only - Jun 18 0:00s 0 - ++Rule Egypt 2015 only - Jul 18 0:00s 1:00 S ++Rule Egypt 2016 only - Jun 7 0:00s 0 - ++Rule Egypt 2016 only - Jul 7 0:00s 1:00 S ++Rule Egypt 2017 only - May 27 0:00s 0 - ++Rule Egypt 2017 only - Jun 26 0:00s 1:00 S ++Rule Egypt 2018 only - May 16 0:00s 0 - ++Rule Egypt 2018 only - Jun 15 0:00s 1:00 S ++Rule Egypt 2019 only - May 6 0:00s 0 - ++Rule Egypt 2019 only - Jun 5 0:00s 1:00 S ++Rule Egypt 2020 only - May 24 0:00s 1:00 S ++Rule Egypt 2021 only - May 13 0:00s 1:00 S ++Rule Egypt 2022 only - May 3 0:00s 1:00 S ++Rule Egypt 2023 max - Apr lastFri 0:00s 1:00 S + + # Zone NAME GMTOFF RULES FORMAT [UNTIL] + Zone Africa/Cairo 2:05:09 - LMT 1900 Oct +@@ -891,7 +934,10 @@ + # Another source (specifying the time for start and end in the decree): + # http://www.lemag.ma/Heure-d-ete-au-Maroc-jusqu-au-27-octobre_a75620.html + +-# From Paul Eggert (2013-10-03): ++# From Sebastien Willemijns (2014-03-18): ++# http://www.afriquinfos.com/articles/2014/3/18/maroc-heure-dete-avancez-tous-horloges-247891.asp ++ ++# From Paul Eggert (2014-03-19): + # To estimate what the Moroccan government will do in future years, + # transition dates for 2014 through 2038 were determined by running + # the following program under GNU Emacs 24.3: +--- jdk/test/sun/util/calendar/zi/tzdata/antarctica Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/test/sun/util/calendar/zi/tzdata/antarctica Tue Jun 03 14:19:36 2014 -0700 +@@ -253,24 +253,41 @@ + # year-round base + # Scott Base, Ross Island, since 1957-01. + # See Pacific/Auckland. +-# +-# These rules for New Zealand are stolen from the 'australasia' file. +-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +-Rule NZAQ 1974 only - Nov 3 2:00s 1:00 D +-Rule NZAQ 1975 1988 - Oct lastSun 2:00s 1:00 D +-Rule NZAQ 1989 only - Oct 8 2:00s 1:00 D +-Rule NZAQ 1990 2006 - Oct Sun>=1 2:00s 1:00 D +-Rule NZAQ 1975 only - Feb 23 2:00s 0 S +-Rule NZAQ 1976 1989 - Mar Sun>=1 2:00s 0 S +-Rule NZAQ 1990 2007 - Mar Sun>=15 2:00s 0 S +-Rule NZAQ 2007 max - Sep lastSun 2:00s 1:00 D +-Rule NZAQ 2008 max - Apr Sun>=1 2:00s 0 S + + # Norway - territories + # Bouvet (never inhabited) + # + # claims + # Peter I Island (never inhabited) ++# ++# year-round base ++# Troll, Queen Maud Land, -720041+0023206, since 2005-02-12 ++# ++# From Paul-Inge Flakstad (2014-03-10): ++# I recently had a long dialog about this with the developer of timegenie.com. ++# In the absence of specific dates, he decided to choose some likely ones: ++# GMT +1 - From March 1 to the last Sunday in March ++# GMT +2 - From the last Sunday in March until the last Sunday in October ++# GMT +1 - From the last Sunday in October until November 7 ++# GMT +0 - From November 7 until March 1 ++# The dates for switching to and from UTC+0 will probably not be absolutely ++# correct, but they should be quite close to the actual dates. ++# ++# From Paul Eggert (2014-03-21): ++# The CET-switching Troll rules require zic from tzcode 2014b or later, so as ++# suggested by Bengt-Inge Larsson comment them out for now, and approximate ++# with only UTC and CEST. Uncomment them when 2014b is more prevalent. ++# ++# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++#Rule Troll 2005 max - Mar 1 1:00u 1:00 CET ++Rule Troll 2005 max - Mar lastSun 1:00u 2:00 CEST ++#Rule Troll 2005 max - Oct lastSun 1:00u 1:00 CET ++#Rule Troll 2004 max - Nov 7 1:00u 0:00 UTC ++# Remove the following line when uncommenting the above '#Rule' lines. ++Rule Troll 2004 max - Oct lastSun 1:00u 0:00 UTC ++# Zone NAME GMTOFF RULES FORMAT [UNTIL] ++Zone Antarctica/Troll 0 - zzz 2005 Feb 12 ++ 0:00 Troll %s + + # Poland - year-round base + # Arctowski, King George Island, -620945-0582745, since 1977 +--- jdk/test/sun/util/calendar/zi/tzdata/asia Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/test/sun/util/calendar/zi/tzdata/asia Tue Jun 03 14:19:36 2014 -0700 +@@ -1113,8 +1113,13 @@ + Rule Zion 1986 only - Sep 7 0:00 0 S + Rule Zion 1987 only - Apr 15 0:00 1:00 D + Rule Zion 1987 only - Sep 13 0:00 0 S +-Rule Zion 1988 only - Apr 9 0:00 1:00 D +-Rule Zion 1988 only - Sep 3 0:00 0 S ++ ++# From Avigdor Finkelstein (2014-03-05): ++# I check the Parliament (Knesset) records and there it's stated that the ++# [1988] transition should take place on Saturday night, when the Sabbath ++# ends and changes to Sunday. ++Rule Zion 1988 only - Apr 10 0:00 1:00 D ++Rule Zion 1988 only - Sep 4 0:00 0 S + + # From Ephraim Silverberg + # (1997-03-04, 1998-03-16, 1998-12-28, 2000-01-17, 2000-07-25, 2004-12-22, +@@ -1365,22 +1370,6 @@ + # "Jordan will switch to winter time on Friday, October 27". + # + +-# From Phil Pizzey (2009-04-02): +-# ...I think I may have spotted an error in the timezone data for +-# Jordan. +-# The current (2009d) asia file shows Jordan going to daylight +-# saving +-# time on the last Thursday in March. +-# +-# Rule Jordan 2000 max - Mar lastThu 0:00s 1:00 S +-# +-# However timeanddate.com, which I usually find reliable, shows Jordan +-# going to daylight saving time on the last Friday in March since 2002. +-# Please see +-# <a href="http://www.timeanddate.com/worldclock/timezone.html?n=11"> +-# http://www.timeanddate.com/worldclock/timezone.html?n=11 +-# </a> +- + # From Steffen Thorsen (2009-04-02): + # This single one might be good enough, (2009-03-24, Arabic): + # <a href="http://petra.gov.jo/Artical.aspx?Lng=2&Section=8&Artical=95279"> +--- jdk/test/sun/util/calendar/zi/tzdata/australasia Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/test/sun/util/calendar/zi/tzdata/australasia Tue Jun 03 14:19:36 2014 -0700 +@@ -377,16 +377,18 @@ + # http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=6702&catid=71&Itemid=155 + + # From the Fijian Government Media Center (2013-08-30) via David Wheeler: +-# Fiji will start daylight savings on Sunday 27th October, 2013 and end at 3am +-# on Sunday 19th January, 2014.... move clocks forward by one hour from 2am ++# Fiji will start daylight savings on Sunday 27th October, 2013 ... ++# move clocks forward by one hour from 2am + # http://www.fiji.gov.fj/Media-Center/Press-Releases/DAYLIGHT-SAVING-STARTS-ON-SUNDAY,-27th-OCTOBER-201.aspx +-# +-# From Paul Eggert (2013-09-09): ++ ++# From Steffen Thorsen (2013-01-10): ++# Fiji will end DST on 2014-01-19 02:00: ++# http://www.fiji.gov.fj/Media-Center/Press-Releases/DAYLIGHT-SAVINGS-TO-END-THIS-MONTH-%281%29.aspx ++ ++# From Paul Eggert (2014-01-10): + # For now, guess that Fiji springs forward the Sunday before the fourth +-# Monday in October. This matches both recent practice and +-# timeanddate.com's current spring-forward prediction. +-# For the January 2014 transition we guessed right while timeanddate.com +-# guessed wrong, so leave the fall-back prediction alone. ++# Monday in October, and springs back the penultimate Sunday in January. ++# This is ad hoc, but matches recent practice. + + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S + Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 S +@@ -395,7 +397,8 @@ + Rule Fiji 2010 only - Mar lastSun 3:00 0 - + Rule Fiji 2010 max - Oct Sun>=21 2:00 1:00 S + Rule Fiji 2011 only - Mar Sun>=1 3:00 0 - +-Rule Fiji 2012 max - Jan Sun>=18 3:00 0 - ++Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 - ++Rule Fiji 2014 max - Jan Sun>=18 2:00 0 - + # Zone NAME GMTOFF RULES FORMAT [UNTIL] + Zone Pacific/Fiji 11:55:44 - LMT 1915 Oct 26 # Suva + 12:00 Fiji FJ%sT # Fiji Time +@@ -783,14 +786,29 @@ + + # Johnston + # +-# From Paul Eggert (2013-09-03): ++# From Paul Eggert (2014-03-11): ++# Sometimes Johnston kept Hawaii time, and sometimes it was an hour behind. ++# Details are uncertain. We have no data for Johnston after 1970, so ++# treat it like Hawaii for now. ++# + # In his memoirs of June 6th to October 4, 1945 + # <http://www.315bw.org/Herb_Bach.htm> (2005), Herbert C. Bach writes, + # "We started our letdown to Kwajalein Atoll and landed there at 5:00 AM + # Johnston time, 1:30 AM Kwajalein time." This was in June 1945, and + # confirms that Johnston kept the same time as Honolulu in summer 1945. +-# We have no better information, so for now, assume this has been true +-# indefinitely into the past. ++# ++# From Lyle McElhaney (2014-03-11): ++# [W]hen JI was being used for that [atomic bomb] testing, the time being used ++# was not Hawaiian time but rather the same time being used on the ships, ++# which had a GMT offset of -11 hours. This apparently applied to at least the ++# time from Operation Newsreel (Hardtack I/Teak shot, 1958-08-01) to the last ++# Operation Fishbowl shot (Tightrope, 1962-11-04).... [See] Herman Hoerlin, ++# "The United States High-Altitude Test Experience: A Review Emphasizing the ++# Impact on the Environment", Los Alamos LA-6405, Oct 1976 ++# <http://www.fas.org/sgp/othergov/doe/lanl/docs1/00322994.pdf>. ++# See the table on page 4 where he lists GMT and local times for the tests; a ++# footnote for the JI tests reads that local time is "JI time = Hawaii Time ++# Minus One Hour". + # + # See 'northamerica' for Pacific/Johnston. + +--- jdk/test/sun/util/calendar/zi/tzdata/europe Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/test/sun/util/calendar/zi/tzdata/europe Tue Jun 03 14:19:36 2014 -0700 +@@ -2768,14 +2768,18 @@ + # According to the articles linked below, Turkey will change into summer + # time zone (GMT+3) on March 28, 2011 at 3:00 a.m. instead of March 27. + # This change is due to a nationwide exam on 27th. +-# +-# <a href="http://www.worldbulletin.net/?aType=haber&ArticleID=70872"> + # http://www.worldbulletin.net/?aType=haber&ArticleID=70872 +-# </a> + # Turkish: +-# <a href="http://www.hurriyet.com.tr/ekonomi/17230464.asp?gid=373"> + # http://www.hurriyet.com.tr/ekonomi/17230464.asp?gid=373 +-# </a> ++ ++# From Faruk Pasin (2014-02-14): ++# The DST for Turkey has been changed for this year because of the ++# Turkish Local election.... ++# http://www.sabah.com.tr/Ekonomi/2014/02/12/yaz-saatinde-onemli-degisiklik ++# ... so Turkey will move clocks forward one hour on March 31 at 3:00 a.m. ++# From Paul Eggert (2014-02-17): ++# Here is an English-language source: ++# http://www.worldbulletin.net/turkey/129016/turkey-switches-to-daylight-saving-time-march-31 + + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S + Rule Turkey 1916 only - May 1 0:00 1:00 S +@@ -2844,6 +2848,8 @@ + 2:00 Turkey EE%sT 2007 + 2:00 EU EE%sT 2011 Mar 27 1:00u + 2:00 - EET 2011 Mar 28 1:00u ++ 2:00 EU EE%sT 2014 Mar 30 1:00u ++ 2:00 - EET 2014 Mar 31 1:00u + 2:00 EU EE%sT + Link Europe/Istanbul Asia/Istanbul # Istanbul is in both continents. + +@@ -2865,19 +2871,13 @@ + # approval from 266 deputies. + # + # Ukraine abolishes transter back to the winter time (in Russian) +-# <a href="http://news.mail.ru/politics/6861560/"> + # http://news.mail.ru/politics/6861560/ +-# </a> + # + # The Ukrainians will no longer change the clock (in Russian) +-# <a href="http://www.segodnya.ua/news/14290482.html"> + # http://www.segodnya.ua/news/14290482.html +-# </a> + # + # Deputies cancelled the winter time (in Russian) +-# <a href="http://www.pravda.com.ua/rus/news/2011/09/20/6600616/"> + # http://www.pravda.com.ua/rus/news/2011/09/20/6600616/ +-# </a> + # + # From Philip Pizzey (2011-10-18): + # Today my Ukrainian colleagues have informed me that the +@@ -2888,18 +2888,39 @@ + # As far as I understand, the recent change to the Ukrainian time zone + # (Europe/Kiev) to introduce permanent daylight saving time (similar + # to Russia) was reverted today: +-# +-# <a href="http://portal.rada.gov.ua/rada/control/en/publish/article/info_left?art_id=287324&cat_id=105995"> + # http://portal.rada.gov.ua/rada/control/en/publish/article/info_left?art_id=287324&cat_id=105995 +-# </a> + # + # Also reported by Alexander Bokovoy (2011-10-18) who also noted: + # The law documents themselves are at ++# http://w1.c1.rada.gov.ua/pls/zweb_n/webproc4_1?id=&pf3511=41484 ++ ++# From Vladimir in Moscow via Alois Treindl re Kiev time 1991/2 (2014-02-28): ++# First in Ukraine they changed Time zone from UTC+3 to UTC+2 with DST: ++# 03 25 1990 02:00 -03.00 1 Time Zone 3 with DST ++# 07 01 1990 02:00 -02.00 1 Time Zone 2 with DST ++# * Ukrainian Government's Resolution of 18.06.1990, No. 134. ++# http://search.ligazakon.ua/l_doc2.nsf/link1/T001500.html + # +-# <a href="http://w1.c1.rada.gov.ua/pls/zweb_n/webproc4_1?id=&pf3511=41484"> +-# http://w1.c1.rada.gov.ua/pls/zweb_n/webproc4_1?id=&pf3511=41484 +-# </a> +- ++# They did not end DST in September, 1990 (according to the law, ++# "summer time" was still in action): ++# 09 30 1990 03:00 -02.00 1 Time Zone 2 with DST ++# * Ukrainian Government's Resolution of 21.09.1990, No. 272. ++# http://search.ligazakon.ua/l_doc2.nsf/link1/KP900272.html ++# ++# Again no change in March, 1991 ("summer time" in action): ++# 03 31 1991 02:00 -02.00 1 Time Zone 2 with DST ++# ++# DST ended in September 1991 ("summer time" ended): ++# 09 29 1991 03:00 -02.00 0 Time Zone 2, no DST ++# * Ukrainian Government's Resolution of 25.09.1991, No. 225. ++# http://www.uazakon.com/documents/date_21/pg_iwgdoc.htm ++# This is an answer. ++# ++# Since 1992 they had normal DST procedure: ++# 03 29 1992 02:00 -02.00 1 DST started ++# 09 27 1992 03:00 -02.00 0 DST ended ++# * Ukrainian Government's Resolution of 20.03.1992, No. 139. ++# http://www.uazakon.com/documents/date_8u/pg_grcasa.htm + + # Zone NAME GMTOFF RULES FORMAT [UNTIL] + # Most of Ukraine since 1970 has been like Kiev. +@@ -2910,9 +2931,8 @@ + 2:00 - EET 1930 Jun 21 + 3:00 - MSK 1941 Sep 20 + 1:00 C-Eur CE%sT 1943 Nov 6 +- 3:00 Russia MSK/MSD 1990 +- 3:00 - MSK 1990 Jul 1 2:00 +- 2:00 - EET 1992 ++ 3:00 Russia MSK/MSD 1990 Jul 1 2:00 ++ 2:00 1:00 EEST 1991 Sep 29 3:00 + 2:00 E-Eur EE%sT 1995 + 2:00 EU EE%sT + # Ruthenia used CET 1990/1991. +@@ -2966,7 +2986,15 @@ + # Assume it happened in March by not changing the clocks. + 3:00 Russia MSK/MSD 1997 + 3:00 - MSK 1997 Mar lastSun 1:00u +- 2:00 EU EE%sT ++# From Alexander Krivenyshev (2014-03-17): ++# time change at 2:00 (2am) on March 30, 2014 ++# http://vz.ru/news/2014/3/17/677464.html ++# From Paul Eggert (2014-03-30): ++# Simferopol and Sevastopol reportedly changed their central town clocks ++# late the previous day, but this appears to have been ceremonial ++# and the discrepancies are small enough to not worry about. ++ 2:00 EU EE%sT 2014 Mar 30 2:00 ++ 4:00 - MSK + + # Vatican City + # See Europe/Rome. +--- jdk/test/sun/util/calendar/zi/tzdata/leapseconds Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/test/sun/util/calendar/zi/tzdata/leapseconds Tue Jun 03 14:19:36 2014 -0700 +@@ -20,7 +20,7 @@ + # 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. +- ++# + # Allowance for leapseconds added to each timezone file. + + # This file is in the public domain. +--- jdk/test/sun/util/calendar/zi/tzdata/northamerica Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/test/sun/util/calendar/zi/tzdata/northamerica Tue Jun 03 14:19:36 2014 -0700 +@@ -414,9 +414,10 @@ + # US Pacific time, represented by Los Angeles + # + # California, northern Idaho (Benewah, Bonner, Boundary, Clearwater, +-# Idaho, Kootenai, Latah, Lewis, Nez Perce, and Shoshone counties, +-# and the northern three-quarters of Idaho county), +-# most of Nevada, most of Oregon, and Washington ++# Kootenai, Latah, Lewis, Nez Perce, and Shoshone counties, Idaho county ++# north of the Salmon River, and the towns of Burgdorf and Warren), ++# Nevada (except West Wendover), Oregon (except the northern 3/4 of ++# Malheur county), and Washington + # + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER + Rule CA 1948 only - Mar 14 2:00 1:00 D +--- jdk/test/sun/util/calendar/zi/tzdata/southamerica Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/test/sun/util/calendar/zi/tzdata/southamerica Tue Jun 03 14:19:36 2014 -0700 +@@ -1298,6 +1298,13 @@ + # start date is 2013-09-08 00:00.... + # http://www.gob.cl/informa/2013/02/15/gobierno-anuncia-fechas-de-cambio-de-hora-para-el-ano-2013.htm + ++# From Jose Miguel Garrido (2014-02-19): ++# Today appeared in the Diario Oficial a decree amending the time change ++# dates to 2014. ++# DST End: last Saturday of April 2014 (Sun 27 Apr 2014 03:00 UTC) ++# DST Start: first Saturday of September 2014 (Sun 07 Sep 2014 04:00 UTC) ++# http://www.diariooficial.interior.gob.cl//media/2014/02/19/do-20140219.pdf ++ + # NOTE: ChileAQ rules for Antarctic bases are stored separately in the + # 'antarctica' file. + +@@ -1631,6 +1638,9 @@ + # From Carlos Raul Perasso (2013-03-15): + # The change in Paraguay is now final. Decree number 10780 + # http://www.presidencia.gov.py/uploads/pdf/presidencia-3b86ff4b691c79d4f5927ca964922ec74772ce857c02ca054a52a37b49afc7fb.pdf ++# From Carlos Raul Perasso (2014-02-28): ++# Decree 1264 can be found at: ++# http://www.presidencia.gov.py/archivos/documentos/DECRETO1264_ey9r8zai.pdf + Rule Para 2013 max - Mar Sun>=22 0:00 0 - + + # Zone NAME GMTOFF RULES FORMAT [UNTIL] +@@ -1689,18 +1699,19 @@ + Zone America/Port_of_Spain -4:06:04 - LMT 1912 Mar 2 + -4:00 - AST + ++# These all agree with Trinidad and Tobago since 1970. + Link America/Port_of_Spain America/Anguilla + Link America/Port_of_Spain America/Dominica + Link America/Port_of_Spain America/Grenada + Link America/Port_of_Spain America/Guadeloupe +-Link America/Port_of_Spain America/Marigot ++Link America/Port_of_Spain America/Marigot # St Martin (French part) + Link America/Port_of_Spain America/Montserrat + Link America/Port_of_Spain America/St_Barthelemy +-Link America/Port_of_Spain America/St_Kitts ++Link America/Port_of_Spain America/St_Kitts # St Kitts & Nevis + Link America/Port_of_Spain America/St_Lucia +-Link America/Port_of_Spain America/St_Thomas ++Link America/Port_of_Spain America/St_Thomas # Virgin Islands (US) + Link America/Port_of_Spain America/St_Vincent +-Link America/Port_of_Spain America/Tortola ++Link America/Port_of_Spain America/Tortola # Virgin Islands (UK) + + # Uruguay + # From Paul Eggert (1993-11-18): +--- jdk/test/sun/util/calendar/zi/tzdata/zone.tab Wed Mar 12 11:58:14 2014 +0000 ++++ jdk/test/sun/util/calendar/zi/tzdata/zone.tab Tue Jun 03 14:19:36 2014 -0700 +@@ -74,6 +74,7 @@ + AQ -7824+10654 Antarctica/Vostok Vostok Station, Lake Vostok + AQ -6640+14001 Antarctica/DumontDUrville Dumont-d'Urville Station, Terre Adelie + AQ -690022+0393524 Antarctica/Syowa Syowa Station, E Ongul I ++AQ -720041+0023206 Antarctica/Troll Troll Station, Queen Maud Land + AR -3436-05827 America/Argentina/Buenos_Aires Buenos Aires (BA, CF) + AR -3124-06411 America/Argentina/Cordoba most locations (CB, CC, CN, ER, FM, MN, SE, SF) + AR -2447-06525 America/Argentina/Salta (SA, LP, NQ, RN) +@@ -366,6 +367,7 @@ + RU +5545+03735 Europe/Moscow Moscow+00 - west Russia + RU +4844+04425 Europe/Volgograd Moscow+00 - Caspian Sea + RU +5312+05009 Europe/Samara Moscow+00 - Samara, Udmurtia ++RU +4457+03406 Europe/Simferopol Moscow+00 - Crimea + RU +5651+06036 Asia/Yekaterinburg Moscow+02 - Urals + RU +5500+07324 Asia/Omsk Moscow+03 - west Siberia + RU +5502+08255 Asia/Novosibirsk Moscow+03 - Novosibirsk +@@ -421,7 +423,6 @@ + UA +5026+03031 Europe/Kiev most locations + UA +4837+02218 Europe/Uzhgorod Ruthenia + UA +4750+03510 Europe/Zaporozhye Zaporozh'ye, E Lugansk / Zaporizhia, E Luhansk +-UA +4457+03406 Europe/Simferopol central Crimea + UG +0019+03225 Africa/Kampala + UM +1645-16931 Pacific/Johnston Johnston Atoll + UM +2813-17722 Pacific/Midway Midway Islands +--- langtools/.hgtags Tue Mar 11 13:03:14 2014 -0700 ++++ langtools/.hgtags Tue Jun 03 14:19:44 2014 -0700 +@@ -258,6 +258,7 @@ + 9003a59a512e6b764d8a3f805aadc3996a58e5bd jdk8u5-b02 + 30e3dad0ebbdf3129bacd04a7f4cdecd3df92bb2 jdk8u5-b03 + 019dcdfffced0ca2026a0ad8c0e5fcb49d46116f jdk8u5-b04 ++c9db8c800797258540e0411e58b8f7d59273de5f jdk8u11-b00 + c9db8c800797258540e0411e58b8f7d59273de5f jdk8u5-b05 + b1920c0b701d5ff219c9f622db5cafc9bf00d5c8 jdk8u5-b06 + 180df7f2c078f1efaa6fcd8ca9f55dc5f81b182c jdk8u5-b07 +@@ -266,3 +267,15 @@ + 026543c71810701de08cdfd906d1b8fdc69b89c0 jdk8u5-b10 + a12055904afd9f951131804868215e724c71b684 jdk8u5-b11 + 2a7002626e7997e946b96530629e2787bc1864bb jdk8u5-b12 ++9beafb58fb99e8b5f7577b2f26b12743ef4d07e7 jdk8u5-b13 ++d37e407fba44f68c660f89be4e48f9e7b256a2d5 jdk8u11-b01 ++e75f843c4bf81c79ca4c5d51dfe5fe39525c5301 jdk8u11-b02 ++d9904b00b027b9176d6479dee7c7f4e054a68710 jdk8u11-b03 ++5b5c46fe954cb744e2633e1ab097e934cc547a57 jdk8u11-b04 ++f491f1581f196950c2cb858508dd06601968c417 jdk8u11-b05 ++a4ecc38ec7910d5beb07be4623bd80dabe1fbfe8 jdk8u11-b06 ++7803caf52e4b12f11e552565f55ef65aeb2be6a5 jdk8u11-b07 ++a47aa3203c0210def786ab5ee685e97d07e8bf77 jdk8u11-b08 ++e973a591a2182c0bdbdd9545ab13f83325acf1e6 jdk8u11-b09 ++51cade4632608a6c0b8da33f420bd546aecf6faf jdk8u11-b10 ++dc0d952b4199dc1cbc534c9afd535c78d21ed519 jdk8u11-b11 +--- nashorn/.hgtags Tue Mar 11 13:03:16 2014 -0700 ++++ nashorn/.hgtags Tue Jun 03 14:19:46 2014 -0700 +@@ -255,3 +255,15 @@ + 8bc83045abc547edb7cfb7d688d84164f0b11cea jdk8u5-b10 + bc23b19e08eb1575663044902b6442ceaafa924f jdk8u5-b11 + 18b007062905dac9304605955a4b84eaf2a08553 jdk8u5-b12 ++e4fb85d69d6b33c9561b932ec5515f44c53c1017 jdk8u5-b13 ++53cc5fda790e0f90dca53fb459c70517d76680bc jdk8u11-b01 ++4dda2b1e51aa7977f53c261f983230fe505bbc3e jdk8u11-b02 ++161f144c4e84037f655a2f6ebb0ba3057e8b18fa jdk8u11-b03 ++2842beaa5db81731abe9d895181fbfceef720cf3 jdk8u11-b04 ++7001e9f95b443a75e432205a29974c05b88e0fdc jdk8u11-b05 ++daa414a4d8b712584d0818fab3fd31996e4cb645 jdk8u11-b06 ++d9d482948b7c89161887b47e68e3367663d51b76 jdk8u11-b07 ++a392513941025e2750acdcc45f9df2ec9080bde9 jdk8u11-b08 ++dec6999877f39d3c17f7a092d8e2e17b676bb34b jdk8u11-b09 ++d522ff5f53730cabd02c1863bb9d437c13bcc5e0 jdk8u11-b10 ++3175dcbdd76ee9272276fa756247203dffb20596 jdk8u11-b11 +--- nashorn/make/project.properties Tue Mar 11 13:03:16 2014 -0700 ++++ nashorn/make/project.properties Tue Jun 03 14:19:46 2014 -0700 +@@ -244,7 +244,7 @@ + test.src.dir=test/src + + # -Xmx is used for all tests, -Xms only for octane benchmark +-run.test.xmx=3G ++run.test.xmx=2G + run.test.xms=2G + + run.test.user.language=tr +--- nashorn/test/script/basic/JDK-8026161.js Tue Mar 11 13:03:16 2014 -0700 ++++ nashorn/test/script/basic/JDK-8026161.js Tue Jun 03 14:19:46 2014 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -28,5 +28,5 @@ + * @run + */ + +-print(new java.awt.Color(1, 1, 1)) // creates Color[r=1,g=1,b=1] +-print(new java.awt.Color(1.0, 1.0, 1.0)) // Color[r=255,g=255,b=255] ++print(Java.type("jdk.nashorn.test.models.IntFloatOverloadSelection").overloadedMethod(1)) ++print(Java.type("jdk.nashorn.test.models.IntFloatOverloadSelection").overloadedMethod(1.0)) +--- nashorn/test/script/basic/JDK-8026161.js.EXPECTED Tue Mar 11 13:03:16 2014 -0700 ++++ nashorn/test/script/basic/JDK-8026161.js.EXPECTED Tue Jun 03 14:19:46 2014 -0700 +@@ -1,2 +1,2 @@ +-java.awt.Color[r=1,g=1,b=1] +-java.awt.Color[r=255,g=255,b=255] ++int ++float +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ nashorn/test/src/jdk/nashorn/test/models/IntFloatOverloadSelection.java Tue Jun 03 14:19:46 2014 -0700 +@@ -0,0 +1,36 @@ ++/* ++ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. ++ * 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 jdk.nashorn.test.models; ++ ++public class IntFloatOverloadSelection { ++ ++ public static String overloadedMethod(int i) { ++ return "int"; ++ } ++ ++ public static String overloadedMethod(float f) { ++ return "float"; ++ } ++} diff --git a/java/openjdk8/files/patch-bsd b/java/openjdk8/files/patch-bsd index 66e37ef3b7e1..504658578a16 100644 --- a/java/openjdk8/files/patch-bsd +++ b/java/openjdk8/files/patch-bsd @@ -5295,7 +5295,7 @@ +#[bsd]sun.tools.attach.BsdAttachProvider --- jdk/src/share/lib/security/java.security-bsd +++ jdk/src/share/lib/security/java.security-bsd -@@ -0,0 +1,498 @@ +@@ -0,0 +1,500 @@ +# +# This is the "master security properties file". +# @@ -5508,7 +5508,8 @@ + org.jcp.xml.dsig.internal.,\ + jdk.internal.,\ + jdk.nashorn.internal.,\ -+ jdk.nashorn.tools. ++ jdk.nashorn.tools.,\ ++ com.sun.activation.registries. + + +# @@ -5555,7 +5556,8 @@ + org.jcp.xml.dsig.internal.,\ + jdk.internal.,\ + jdk.nashorn.internal.,\ -+ jdk.nashorn.tools. ++ jdk.nashorn.tools.,\ ++ com.sun.activation.registries. + + +# @@ -8260,17 +8262,6 @@ JNIEXPORT void JNICALL Java_sun_management_DiagnosticCommandImpl_setNotificationEnabled (JNIEnv *env, jobject dummy, jboolean enabled) { ---- jdk/src/share/native/sun/management/GcInfoBuilder.c -+++ jdk/src/share/native/sun/management/GcInfoBuilder.c -@@ -190,7 +190,7 @@ - - if (ext_att_count <= 0) { - JNU_ThrowIllegalArgumentException(env, "Invalid ext_att_count"); -- return; -+ return 0; - } - - gc_stat.usage_before_gc = usageBeforeGC; --- jdk/src/solaris/back/util_md.h +++ jdk/src/solaris/back/util_md.h @@ -51,7 +51,7 @@ |