Mon, 23 Oct 2017 06:39:54 -0700
Merge
1.1 --- a/.hgtags Sat Oct 14 12:05:34 2017 +0000 1.2 +++ b/.hgtags Mon Oct 23 06:39:54 2017 -0700 1.3 @@ -975,6 +975,19 @@ 1.4 23f1790147d838ddb1133cc79dc08e7c9ba5ab44 jdk8u141-b15 1.5 eea89df81a8e414813d921eeeeef9b6795f56698 jdk8u144-b00 1.6 db36f4d498b1bde975700a800b5ce732941c04b7 jdk8u144-b01 1.7 +2d5100bddeb80cf767485b787fc3051311e3d7b9 jdk8u151-b00 1.8 +596b584c68b73ec635347807571463580deb955f jdk8u151-b01 1.9 +1f6f436360d5cd375b806aec1c78abb8fcb4e5f6 jdk8u151-b02 1.10 +0aaeb48ae39e4fc558caf1b0c7ee504a49fec441 jdk8u151-b03 1.11 +e48302d521d59c2fe62f874f1f5d34bc46517da7 jdk8u151-b04 1.12 +507af6ef977a5d0306a8723dec66e34befc1ae81 jdk8u151-b05 1.13 +e1dc36cddcbc36b78e3d0558f87bbf459191e479 jdk8u151-b06 1.14 +e2a930243efa63b0a789e85a523e69574d53ac92 jdk8u151-b07 1.15 +158904fa31b28f1e027dc5b5a833ee673e89a84b jdk8u151-b08 1.16 +8b0169692abbf8fb7972920cd79cee7dcab959c3 jdk8u151-b09 1.17 +e352e54382928eb8d5ec70455ef251973c332ccb jdk8u151-b10 1.18 +0f06584f52ffc8627b78f4d461a3eba2b703a8f7 jdk8u151-b11 1.19 +856e341587d52114a753e48674517e7e307fceff jdk8u151-b12 1.20 5aa8c4ca51f0e666d368a4f119ed734d3ac59d7c jdk8u122-b00 1.21 2198ef7e1c1702b3506b95b5d8c886ad5a12bbe5 jdk8u122-b01 1.22 58d961f47dd4ee1d516512b7744e0f1fc83d8f52 jdk8u122-b02 1.23 @@ -991,5 +1004,17 @@ 1.24 d63e731a896c711b8e0c30ac9ae2d900d4e024f6 jdk8u152-b03 1.25 0bd600d6d77b5b41780074bcbfa133032dadf657 jdk8u152-b04 1.26 68758c5ab0c1ef01e89bea8a9b799714831a177f jdk8u152-b05 1.27 +98fb3d75fe567bda30a3667c58a9f83ad2acbdf3 jdk8u152-b06 1.28 +4af38194b12580bdc885ab3873d7efefa990f543 jdk8u152-b07 1.29 +285fcd09ae9994ac836a2759f6615520b2568432 jdk8u152-b08 1.30 +70f18ab733f55856cbd880fe8ba3034ff4d7265d jdk8u152-b09 1.31 +39967c81d3f3b8d20584d1400e6f4b2490f0c822 jdk8u152-b10 1.32 +cbb6bc4b8c867ea69962fd5b6c79ffe3aa9fd77d jdk8u152-b11 1.33 +cdfe7ec6f29293d7c2f64239518e8947733ad85c jdk8u152-b12 1.34 +3dd92151df1b3b7c21756f241b49607024b6fe5a jdk8u152-b13 1.35 +0a9d8db98fc5f0302da6520ba329f41baa092ae0 jdk8u152-b14 1.36 +c1bf165d3b27e864a9f8eec5bb0c1e746a972ad5 jdk8u152-b15 1.37 +98b4b0661837817cc39047000e1a7efa6015af7c jdk8u152-b16 1.38 7b96cfeed22242bb68a387d1680e602e37e48050 jdk8u162-b00 1.39 92693f9dd704467ddd5fbae5a5908c1713a08ee0 jdk8u162-b01 1.40 +741b7a6743c0e02eae7e4a864f378fa1df0da112 jdk8u162-b02
2.1 --- a/THIRD_PARTY_README Sat Oct 14 12:05:34 2017 +0000 2.2 +++ b/THIRD_PARTY_README Mon Oct 23 06:39:54 2017 -0700 2.3 @@ -2808,12 +2808,12 @@ 2.4 2.5 ------------------------------------------------------------------------------- 2.6 2.7 -%% This notice is provided with respect to zlib v1.2.8, which may be included 2.8 +%% This notice is provided with respect to zlib v1.2.11, which may be included 2.9 with JRE 8, JDK 8, and OpenJDK 8. 2.10 2.11 --- begin of LICENSE --- 2.12 2.13 - version 1.2.8, April 28th, 2013 2.14 + version 1.2.11, January 15th, 2017 2.15 2.16 Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler 2.17
3.1 --- a/src/share/vm/interpreter/linkResolver.cpp Sat Oct 14 12:05:34 2017 +0000 3.2 +++ b/src/share/vm/interpreter/linkResolver.cpp Mon Oct 23 06:39:54 2017 -0700 3.3 @@ -540,6 +540,42 @@ 3.4 } 3.5 } 3.6 3.7 +void LinkResolver::check_method_loader_constraints(methodHandle& resolved_method, 3.8 + KlassHandle resolved_klass, 3.9 + Symbol* method_name, 3.10 + Symbol* method_signature, 3.11 + KlassHandle current_klass, 3.12 + const char* method_type, TRAPS) { 3.13 + Handle loader (THREAD, InstanceKlass::cast(current_klass())->class_loader()); 3.14 + Handle class_loader (THREAD, resolved_method->method_holder()->class_loader()); 3.15 + { 3.16 + ResourceMark rm(THREAD); 3.17 + Symbol* failed_type_symbol = 3.18 + SystemDictionary::check_signature_loaders(method_signature, loader, 3.19 + class_loader, true, CHECK); 3.20 + if (failed_type_symbol != NULL) { 3.21 + const char* msg = "loader constraint violation: when resolving %s" 3.22 + " \"%s\" the class loader (instance of %s) of the current class, %s," 3.23 + " and the class loader (instance of %s) for the method's defining class, %s, have" 3.24 + " different Class objects for the type %s used in the signature"; 3.25 + char* sig = Method::name_and_sig_as_C_string(resolved_klass(), method_name, method_signature); 3.26 + const char* loader1 = SystemDictionary::loader_name(loader()); 3.27 + char* current = InstanceKlass::cast(current_klass())->name()->as_C_string(); 3.28 + const char* loader2 = SystemDictionary::loader_name(class_loader()); 3.29 + char* target = InstanceKlass::cast(resolved_method->method_holder()) 3.30 + ->name()->as_C_string(); 3.31 + char* failed_type_name = failed_type_symbol->as_C_string(); 3.32 + size_t buflen = strlen(msg) + strlen(sig) + strlen(loader1) + 3.33 + strlen(current) + strlen(loader2) + strlen(target) + 3.34 + strlen(failed_type_name) + strlen(method_type) + 1; 3.35 + char* buf = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, buflen); 3.36 + jio_snprintf(buf, buflen, msg, method_type, sig, loader1, current, loader2, 3.37 + target, failed_type_name); 3.38 + THROW_MSG(vmSymbols::java_lang_LinkageError(), buf); 3.39 + } 3.40 + } 3.41 +} 3.42 + 3.43 void LinkResolver::resolve_method(methodHandle& resolved_method, KlassHandle resolved_klass, 3.44 Symbol* method_name, Symbol* method_signature, 3.45 KlassHandle current_klass, bool check_access, 3.46 @@ -596,34 +632,8 @@ 3.47 CHECK); 3.48 3.49 // check loader constraints 3.50 - Handle loader (THREAD, InstanceKlass::cast(current_klass())->class_loader()); 3.51 - Handle class_loader (THREAD, resolved_method->method_holder()->class_loader()); 3.52 - { 3.53 - ResourceMark rm(THREAD); 3.54 - Symbol* failed_type_symbol = 3.55 - SystemDictionary::check_signature_loaders(method_signature, loader, 3.56 - class_loader, true, CHECK); 3.57 - if (failed_type_symbol != NULL) { 3.58 - const char* msg = "loader constraint violation: when resolving method" 3.59 - " \"%s\" the class loader (instance of %s) of the current class, %s," 3.60 - " and the class loader (instance of %s) for the method's defining class, %s, have" 3.61 - " different Class objects for the type %s used in the signature"; 3.62 - char* sig = Method::name_and_sig_as_C_string(resolved_klass(),method_name,method_signature); 3.63 - const char* loader1 = SystemDictionary::loader_name(loader()); 3.64 - char* current = InstanceKlass::cast(current_klass())->name()->as_C_string(); 3.65 - const char* loader2 = SystemDictionary::loader_name(class_loader()); 3.66 - char* target = InstanceKlass::cast(resolved_method->method_holder()) 3.67 - ->name()->as_C_string(); 3.68 - char* failed_type_name = failed_type_symbol->as_C_string(); 3.69 - size_t buflen = strlen(msg) + strlen(sig) + strlen(loader1) + 3.70 - strlen(current) + strlen(loader2) + strlen(target) + 3.71 - strlen(failed_type_name) + 1; 3.72 - char* buf = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, buflen); 3.73 - jio_snprintf(buf, buflen, msg, sig, loader1, current, loader2, 3.74 - target, failed_type_name); 3.75 - THROW_MSG(vmSymbols::java_lang_LinkageError(), buf); 3.76 - } 3.77 - } 3.78 + check_method_loader_constraints(resolved_method, resolved_klass, method_name, 3.79 + method_signature, current_klass, "method", CHECK); 3.80 } 3.81 } 3.82 3.83 @@ -672,36 +682,8 @@ 3.84 resolved_method, 3.85 CHECK); 3.86 3.87 - HandleMark hm(THREAD); 3.88 - Handle loader (THREAD, InstanceKlass::cast(current_klass())->class_loader()); 3.89 - Handle class_loader (THREAD, resolved_method->method_holder()->class_loader()); 3.90 - { 3.91 - ResourceMark rm(THREAD); 3.92 - Symbol* failed_type_symbol = 3.93 - SystemDictionary::check_signature_loaders(method_signature, loader, 3.94 - class_loader, true, CHECK); 3.95 - if (failed_type_symbol != NULL) { 3.96 - const char* msg = "loader constraint violation: when resolving " 3.97 - "interface method \"%s\" the class loader (instance of %s) of the " 3.98 - "current class, %s, and the class loader (instance of %s) for " 3.99 - "the method's defining class, %s, have different Class objects for the type %s " 3.100 - "used in the signature"; 3.101 - char* sig = Method::name_and_sig_as_C_string(resolved_klass(),method_name,method_signature); 3.102 - const char* loader1 = SystemDictionary::loader_name(loader()); 3.103 - char* current = InstanceKlass::cast(current_klass())->name()->as_C_string(); 3.104 - const char* loader2 = SystemDictionary::loader_name(class_loader()); 3.105 - char* target = InstanceKlass::cast(resolved_method->method_holder()) 3.106 - ->name()->as_C_string(); 3.107 - char* failed_type_name = failed_type_symbol->as_C_string(); 3.108 - size_t buflen = strlen(msg) + strlen(sig) + strlen(loader1) + 3.109 - strlen(current) + strlen(loader2) + strlen(target) + 3.110 - strlen(failed_type_name) + 1; 3.111 - char* buf = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, buflen); 3.112 - jio_snprintf(buf, buflen, msg, sig, loader1, current, loader2, 3.113 - target, failed_type_name); 3.114 - THROW_MSG(vmSymbols::java_lang_LinkageError(), buf); 3.115 - } 3.116 - } 3.117 + check_method_loader_constraints(resolved_method, resolved_klass, method_name, 3.118 + method_signature, current_klass, "interface method", CHECK); 3.119 } 3.120 3.121 if (nostatics && resolved_method->is_static()) { 3.122 @@ -1051,6 +1033,10 @@ 3.123 Method::name_and_sig_as_C_string(resolved_klass(), 3.124 resolved_method->name(), 3.125 resolved_method->signature())); 3.126 + } else if (sel_method() != resolved_method()) { 3.127 + check_method_loader_constraints(sel_method, resolved_klass, 3.128 + sel_method->name(), sel_method->signature(), 3.129 + current_klass, "method", CHECK); 3.130 } 3.131 } 3.132
4.1 --- a/src/share/vm/interpreter/linkResolver.hpp Sat Oct 14 12:05:34 2017 +0000 4.2 +++ b/src/share/vm/interpreter/linkResolver.hpp Mon Oct 23 06:39:54 2017 -0700 4.3 @@ -1,5 +1,5 @@ 4.4 /* 4.5 - * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved. 4.6 + * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved. 4.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4.8 * 4.9 * This code is free software; you can redistribute it and/or modify it 4.10 @@ -135,6 +135,9 @@ 4.11 static void resolve_pool (KlassHandle& resolved_klass, Symbol*& method_name, Symbol*& method_signature, KlassHandle& current_klass, constantPoolHandle pool, int index, TRAPS); 4.12 4.13 static void resolve_interface_method(methodHandle& resolved_method, KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access, bool nostatics, TRAPS); 4.14 + static void check_method_loader_constraints(methodHandle& resolved_method, KlassHandle resolved_klass, 4.15 + Symbol* method_name, Symbol* method_signature, 4.16 + KlassHandle current_klass, const char* method_type, TRAPS); 4.17 static void resolve_method (methodHandle& resolved_method, KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access, bool require_methodref, TRAPS); 4.18 4.19 static void linktime_resolve_static_method (methodHandle& resolved_method, KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access, TRAPS);