# HG changeset patch # User prr # Date 1516208924 28800 # Node ID 36a1966132aa8b3fe6435ddb80bf3c17f4c20574 # Parent 6cfee3ad7a769b25497ae4205ed378f9c0cad8eb# Parent 7067fe4e054e68821c3077b2f79d14210602b3c9 Merge diff -r 6cfee3ad7a76 -r 36a1966132aa .hgtags --- a/.hgtags Wed Jan 17 10:58:22 2018 +0530 +++ b/.hgtags Wed Jan 17 09:08:44 2018 -0800 @@ -464,3 +464,4 @@ 959f2f7cbaa6d2ee45d50029744efb219721576c jdk-10+36 4f830b447edf04fb4a52151a5ad44d9bb60723cd jdk-10+37 e569e83139fdfbecfeb3cd9014d560917787f158 jdk-10+38 +5b834ec962366e00d4445352a999a3ac14e26f64 jdk-10+39 diff -r 6cfee3ad7a76 -r 36a1966132aa make/data/currency/CurrencyData.properties --- a/make/data/currency/CurrencyData.properties Wed Jan 17 10:58:22 2018 +0530 +++ b/make/data/currency/CurrencyData.properties Wed Jan 17 09:08:44 2018 -0800 @@ -32,7 +32,7 @@ # Version of the currency code information in this class. # It is a serial number that accompanies with each amendment. -dataVersion=162 +dataVersion=164 # List of all valid ISO 4217 currency codes. # To ensure compatibility, do not remove codes. @@ -52,7 +52,7 @@ NIO558-NLG528-NOK578-NPR524-NZD554-OMR512-PAB590-PEN604-PGK598-PHP608-\ PKR586-PLN985-PTE620-PYG600-QAR634-ROL946-RON946-RSD941-RUB643-RUR810-RWF646-SAR682-\ SBD090-SCR690-SDD736-SDG938-SEK752-SGD702-SHP654-SIT705-SKK703-SLL694-SOS706-\ - SRD968-SRG740-SSP728-STD678-SVC222-SYP760-SZL748-THB764-TJS972-TMM795-TMT934-TND788-TOP776-\ + SRD968-SRG740-SSP728-STD678-STN930-SVC222-SYP760-SZL748-THB764-TJS972-TMM795-TMT934-TND788-TOP776-\ TPE626-TRL792-TRY949-TTD780-TWD901-TZS834-UAH980-UGX800-USD840-USN997-USS998-UYI940-\ UYU858-UZS860-VEB862-VEF937-VND704-VUV548-WST882-XAF950-XAG961-XAU959-XBA955-\ XBB956-XBC957-XBD958-XCD951-XDR960-XFO000-XFU000-XOF952-XPD964-XPF953-\ @@ -196,7 +196,7 @@ CW=ANG # CYPRUS CY=EUR -# CZECH REPUBLIC (THE) +# CZECHIA CZ=CZK # DENMARK DK=DKK @@ -470,7 +470,7 @@ # SOUTH SUDAN SS=SSP # SAO TOME AND PRINCIPE -ST=STD +ST=STN # SAUDI ARABIA SA=SAR # SENEGAL diff -r 6cfee3ad7a76 -r 36a1966132aa make/gensrc/Gensrc-java.desktop.gmk --- a/make/gensrc/Gensrc-java.desktop.gmk Wed Jan 17 10:58:22 2018 +0530 +++ b/make/gensrc/Gensrc-java.desktop.gmk Wed Jan 17 09:08:44 2018 -0800 @@ -1,5 +1,5 @@ # -# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -46,7 +46,6 @@ $(TOPDIR)/src/java.desktop/share/classes/sun/awt/resources \ $(TOPDIR)/src/java.desktop/share/classes/com/sun/accessibility/internal/resources \ $(TOPDIR)/src/java.desktop/share/classes/com/sun/java/swing/plaf/motif/resources \ - $(TOPDIR)/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/resources \ $(TOPDIR)/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources \ $(TOPDIR)/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources \ $(TOPDIR)/src/java.desktop/share/classes/com/sun/swing/internal/plaf/synth/resources \ @@ -61,7 +60,10 @@ endif ifeq ($(OPENJDK_TARGET_OS), windows) - PROP_SRC_DIRS += $(TOPDIR)/src/java.desktop/windows/classes/sun/awt/windows + PROP_SRC_DIRS += \ + $(TOPDIR)/src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/resources \ + $(TOPDIR)/src/java.desktop/windows/classes/sun/awt/windows \ + # endif ifeq ($(filter $(OPENJDK_TARGET_OS), windows macosx), ) diff -r 6cfee3ad7a76 -r 36a1966132aa make/mapfiles/libjava/mapfile-vers --- a/make/mapfiles/libjava/mapfile-vers Wed Jan 17 10:58:22 2018 +0530 +++ b/make/mapfiles/libjava/mapfile-vers Wed Jan 17 09:08:44 2018 -0800 @@ -1,5 +1,5 @@ # -# Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -74,6 +74,7 @@ JNU_ThrowStringIndexOutOfBoundsException; JNU_ToString; + Java_java_io_FileDescriptor_cleanupClose0; Java_java_io_FileDescriptor_close0; Java_java_io_FileDescriptor_initIDs; Java_java_io_FileDescriptor_sync; @@ -257,7 +258,6 @@ Java_jdk_internal_reflect_NativeConstructorAccessorImpl_newInstance0; Java_jdk_internal_reflect_NativeMethodAccessorImpl_invoke0; Java_jdk_internal_reflect_Reflection_getCallerClass__; - Java_jdk_internal_reflect_Reflection_getCallerClass__I; Java_jdk_internal_reflect_Reflection_getClassAccessFlags; Java_jdk_internal_misc_VM_latestUserDefinedLoader0; Java_jdk_internal_misc_VM_getuid; diff -r 6cfee3ad7a76 -r 36a1966132aa make/mapfiles/libjava/reorder-sparc --- a/make/mapfiles/libjava/reorder-sparc Wed Jan 17 10:58:22 2018 +0530 +++ b/make/mapfiles/libjava/reorder-sparc Wed Jan 17 09:08:44 2018 -0800 @@ -27,7 +27,6 @@ text: .text%Java_java_io_FileOutputStream_initIDs; text: .text%Java_java_lang_System_setIn0; text: .text%Java_sun_reflect_Reflection_getCallerClass__; -text: .text%Java_sun_reflect_Reflection_getCallerClass__I; text: .text%Java_java_lang_Class_forName0; text: .text%Java_java_lang_Object_getClass; text: .text%Java_sun_reflect_Reflection_getClassAccessFlags; diff -r 6cfee3ad7a76 -r 36a1966132aa make/mapfiles/libjava/reorder-sparcv9 --- a/make/mapfiles/libjava/reorder-sparcv9 Wed Jan 17 10:58:22 2018 +0530 +++ b/make/mapfiles/libjava/reorder-sparcv9 Wed Jan 17 09:08:44 2018 -0800 @@ -26,7 +26,6 @@ text: .text%Java_java_io_FileOutputStream_initIDs; text: .text%Java_java_lang_System_setIn0; text: .text%Java_sun_reflect_Reflection_getCallerClass__; -text: .text%Java_sun_reflect_Reflection_getCallerClass__I; text: .text%Java_java_lang_Class_forName0; text: .text%Java_java_lang_String_intern; text: .text%Java_java_lang_StringUTF16_isBigEndian; diff -r 6cfee3ad7a76 -r 36a1966132aa make/mapfiles/libjava/reorder-x86 --- a/make/mapfiles/libjava/reorder-x86 Wed Jan 17 10:58:22 2018 +0530 +++ b/make/mapfiles/libjava/reorder-x86 Wed Jan 17 09:08:44 2018 -0800 @@ -27,7 +27,6 @@ text: .text%Java_java_io_FileOutputStream_initIDs; text: .text%Java_java_lang_System_setIn0; text: .text%Java_sun_reflect_Reflection_getCallerClass__; -text: .text%Java_sun_reflect_Reflection_getCallerClass__I; text: .text%Java_java_lang_Class_forName0; text: .text%Java_java_lang_String_intern; text: .text%Java_java_lang_StringUTF16_isBigEndian; diff -r 6cfee3ad7a76 -r 36a1966132aa src/hotspot/cpu/aarch64/aarch64.ad --- a/src/hotspot/cpu/aarch64/aarch64.ad Wed Jan 17 10:58:22 2018 +0530 +++ b/src/hotspot/cpu/aarch64/aarch64.ad Wed Jan 17 09:08:44 2018 -0800 @@ -5844,8 +5844,8 @@ operand immByteMapBase() %{ // Get base of card map - predicate((jbyte*)n->get_ptr() == - ((CardTableModRefBS*)(Universe::heap()->barrier_set()))->byte_map_base); + predicate(Universe::heap()->barrier_set()->is_a(BarrierSet::CardTableModRef) && + (jbyte*)n->get_ptr() == ((CardTableModRefBS*)(Universe::heap()->barrier_set()))->byte_map_base); match(ConP); op_cost(0); diff -r 6cfee3ad7a76 -r 36a1966132aa src/hotspot/cpu/aarch64/assembler_aarch64.hpp --- a/src/hotspot/cpu/aarch64/assembler_aarch64.hpp Wed Jan 17 10:58:22 2018 +0530 +++ b/src/hotspot/cpu/aarch64/assembler_aarch64.hpp Wed Jan 17 09:08:44 2018 -0800 @@ -848,7 +848,7 @@ // architecture. In debug mode we shrink it in order to test // trampolines, but not so small that branches in the interpreter // are out of range. - static const unsigned long branch_range = INCLUDE_JVMCI ? 128 * M : NOT_DEBUG(128 * M) DEBUG_ONLY(2 * M); + static const unsigned long branch_range = NOT_DEBUG(128 * M) DEBUG_ONLY(2 * M); static bool reachable_from_branch_at(address branch, address target) { return uabs(target - branch) < branch_range; diff -r 6cfee3ad7a76 -r 36a1966132aa src/hotspot/cpu/aarch64/compiledIC_aarch64.cpp --- a/src/hotspot/cpu/aarch64/compiledIC_aarch64.cpp Wed Jan 17 10:58:22 2018 +0530 +++ b/src/hotspot/cpu/aarch64/compiledIC_aarch64.cpp Wed Jan 17 09:08:44 2018 -0800 @@ -71,6 +71,13 @@ return 7 * NativeInstruction::instruction_size; } +int CompiledStaticCall::to_trampoline_stub_size() { + // Somewhat pessimistically, we count 3 instructions here (although + // there are only two) because we sometimes emit an alignment nop. + // Trampoline stubs are always word aligned. + return 3 * NativeInstruction::instruction_size + wordSize; +} + // Relocation entries for call stub, compiled java to interpreter. int CompiledStaticCall::reloc_to_interp_stub() { return 4; // 3 in emit_to_interp_stub + 1 in emit_call diff -r 6cfee3ad7a76 -r 36a1966132aa src/hotspot/cpu/aarch64/jvmciCodeInstaller_aarch64.cpp --- a/src/hotspot/cpu/aarch64/jvmciCodeInstaller_aarch64.cpp Wed Jan 17 10:58:22 2018 +0530 +++ b/src/hotspot/cpu/aarch64/jvmciCodeInstaller_aarch64.cpp Wed Jan 17 09:08:44 2018 -0800 @@ -109,7 +109,7 @@ TRACE_jvmci_3("relocating (foreign call) at " PTR_FORMAT, p2i(inst)); } -void CodeInstaller::pd_relocate_JavaMethod(Handle hotspot_method, jint pc_offset, TRAPS) { +void CodeInstaller::pd_relocate_JavaMethod(CodeBuffer &cbuf, Handle hotspot_method, jint pc_offset, TRAPS) { #ifdef ASSERT Method* method = NULL; // we need to check, this might also be an unresolved method @@ -124,22 +124,22 @@ case INVOKEINTERFACE: { assert(method == NULL || !method->is_static(), "cannot call static method with invokeinterface"); NativeCall* call = nativeCall_at(_instructions->start() + pc_offset); - call->set_destination(SharedRuntime::get_resolve_virtual_call_stub()); _instructions->relocate(call->instruction_address(), virtual_call_Relocation::spec(_invoke_mark_pc)); + call->trampoline_jump(cbuf, SharedRuntime::get_resolve_virtual_call_stub()); break; } case INVOKESTATIC: { assert(method == NULL || method->is_static(), "cannot call non-static method with invokestatic"); NativeCall* call = nativeCall_at(_instructions->start() + pc_offset); - call->set_destination(SharedRuntime::get_resolve_static_call_stub()); _instructions->relocate(call->instruction_address(), relocInfo::static_call_type); + call->trampoline_jump(cbuf, SharedRuntime::get_resolve_static_call_stub()); break; } case INVOKESPECIAL: { assert(method == NULL || !method->is_static(), "cannot call static method with invokespecial"); NativeCall* call = nativeCall_at(_instructions->start() + pc_offset); - call->set_destination(SharedRuntime::get_resolve_opt_virtual_call_stub()); _instructions->relocate(call->instruction_address(), relocInfo::opt_virtual_call_type); + call->trampoline_jump(cbuf, SharedRuntime::get_resolve_opt_virtual_call_stub()); break; } default: diff -r 6cfee3ad7a76 -r 36a1966132aa src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp --- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp Wed Jan 17 10:58:22 2018 +0530 +++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp Wed Jan 17 09:08:44 2018 -0800 @@ -801,7 +801,7 @@ assert(is_NativeCallTrampolineStub_at(stub_start_addr), "doesn't look like a trampoline"); end_a_stub(); - return stub; + return stub_start_addr; } address MacroAssembler::ic_call(address entry, jint method_index) { diff -r 6cfee3ad7a76 -r 36a1966132aa src/hotspot/cpu/aarch64/nativeInst_aarch64.cpp --- a/src/hotspot/cpu/aarch64/nativeInst_aarch64.cpp Wed Jan 17 10:58:22 2018 +0530 +++ b/src/hotspot/cpu/aarch64/nativeInst_aarch64.cpp Wed Jan 17 09:08:44 2018 -0800 @@ -367,3 +367,24 @@ set_ptr_at(data_offset, new_destination); OrderAccess::release(); } + +// Generate a trampoline for a branch to dest. If there's no need for a +// trampoline, simply patch the call directly to dest. +address NativeCall::trampoline_jump(CodeBuffer &cbuf, address dest) { + MacroAssembler a(&cbuf); + address stub = NULL; + + if (a.far_branches() + && ! is_NativeCallTrampolineStub_at(instruction_address() + displacement())) { + stub = a.emit_trampoline_stub(instruction_address() - cbuf.insts()->start(), dest); + } + + if (stub == NULL) { + // If we generated no stub, patch this call directly to dest. + // This will happen if we don't need far branches or if there + // already was a trampoline. + set_destination(dest); + } + + return stub; +} diff -r 6cfee3ad7a76 -r 36a1966132aa src/hotspot/cpu/aarch64/nativeInst_aarch64.hpp --- a/src/hotspot/cpu/aarch64/nativeInst_aarch64.hpp Wed Jan 17 10:58:22 2018 +0530 +++ b/src/hotspot/cpu/aarch64/nativeInst_aarch64.hpp Wed Jan 17 09:08:44 2018 -0800 @@ -61,7 +61,7 @@ return uint_at(0); } - bool is_blr() const { return (encoding() & 0xfffffc1f) == 0xd63f0000; } + bool is_blr() const { return (encoding() & 0xff9ffc1f) == 0xd61f0000; } // blr(register) or br(register) bool is_adr_aligned() const { return (encoding() & 0xff000000) == 0x10000000; } // adr Xn,