# HG changeset patch # User amurillo # Date 1423241386 28800 # Node ID 1f6ba0d2923dadba87aac4ed779dd1ed0161ec2b # Parent 0499e4a89c7672b032af3d02ac99929274b5ffe5# Parent 9686a796c829bf0d5a4303947474a97e0fd5826c Merge diff -r 0499e4a89c76 -r 1f6ba0d2923d make/hotspot_version --- a/make/hotspot_version Wed Feb 04 12:14:23 2015 -0800 +++ b/make/hotspot_version Fri Feb 06 08:49:46 2015 -0800 @@ -35,7 +35,7 @@ HS_MAJOR_VER=25 HS_MINOR_VER=60 -HS_BUILD_NUMBER=02 +HS_BUILD_NUMBER=03 JDK_MAJOR_VER=1 JDK_MINOR_VER=8 diff -r 0499e4a89c76 -r 1f6ba0d2923d make/linux/makefiles/build_vm_def.sh --- a/make/linux/makefiles/build_vm_def.sh Wed Feb 04 12:14:23 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ -#!/bin/sh - -# If we're cross compiling use that path for nm -if [ "$CROSS_COMPILE_ARCH" != "" ]; then -NM=$ALT_COMPILER_PATH/nm -else -NM=nm -fi - -$NM --defined-only $* \ - | awk '{ - if ($3 ~ /^_ZTV/ || $3 ~ /^gHotSpotVM/) print "\t" $3 ";" - if ($3 ~ /^UseSharedSpaces$/) print "\t" $3 ";" - if ($3 ~ /^_ZN9Arguments17SharedArchivePathE$/) print "\t" $3 ";" - }' \ - | sort -u diff -r 0499e4a89c76 -r 1f6ba0d2923d make/linux/makefiles/vm.make --- a/make/linux/makefiles/vm.make Wed Feb 04 12:14:23 2015 -0800 +++ b/make/linux/makefiles/vm.make Fri Feb 06 08:49:46 2015 -0800 @@ -245,8 +245,14 @@ rm -f $@ cat $^ > $@ +VMDEF_PAT = ^_ZTV +VMDEF_PAT := ^gHotSpotVM|$(VMDEF_PAT) +VMDEF_PAT := ^UseSharedSpaces$$|$(VMDEF_PAT) +VMDEF_PAT := ^_ZN9Arguments17SharedArchivePathE$$|$(VMDEF_PAT) + vm.def: $(Res_Files) $(Obj_Files) - sh $(GAMMADIR)/make/linux/makefiles/build_vm_def.sh *.o > $@ + $(QUIETLY) $(NM) --defined-only $(Obj_Files) | sort -k3 -u | \ + awk '$$3 ~ /$(VMDEF_PAT)/ { print "\t" $$3 ";" }' > $@ mapfile_ext: rm -f $@ diff -r 0499e4a89c76 -r 1f6ba0d2923d src/cpu/sparc/vm/macroAssembler_sparc.inline.hpp --- a/src/cpu/sparc/vm/macroAssembler_sparc.inline.hpp Wed Feb 04 12:14:23 2015 -0800 +++ b/src/cpu/sparc/vm/macroAssembler_sparc.inline.hpp Fri Feb 06 08:49:46 2015 -0800 @@ -630,7 +630,12 @@ inline void MacroAssembler::ldf(FloatRegisterImpl::Width w, const Address& a, FloatRegister d, int offset) { relocate(a.rspec(offset)); - ldf(w, a.base(), a.disp() + offset, d); + if (a.has_index()) { + assert(offset == 0, ""); + ldf(w, a.base(), a.index(), d); + } else { + ldf(w, a.base(), a.disp() + offset, d); + } } // returns if membar generates anything, obviously this code should mirror diff -r 0499e4a89c76 -r 1f6ba0d2923d src/share/vm/memory/tenuredGeneration.cpp --- a/src/share/vm/memory/tenuredGeneration.cpp Wed Feb 04 12:14:23 2015 -0800 +++ b/src/share/vm/memory/tenuredGeneration.cpp Fri Feb 06 08:49:46 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved. * 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,6 @@ #include "precompiled.hpp" #include "gc_implementation/shared/collectorCounters.hpp" -#include "gc_implementation/shared/parGCAllocBuffer.hpp" #include "memory/allocation.inline.hpp" #include "memory/blockOffsetTable.inline.hpp" #include "memory/generation.inline.hpp" @@ -34,6 +33,9 @@ #include "oops/oop.inline.hpp" #include "runtime/java.hpp" #include "utilities/macros.hpp" +#if INCLUDE_ALL_GCS +#include "gc_implementation/shared/parGCAllocBuffer.hpp" +#endif TenuredGeneration::TenuredGeneration(ReservedSpace rs, size_t initial_byte_size, int level, diff -r 0499e4a89c76 -r 1f6ba0d2923d src/share/vm/opto/escape.cpp --- a/src/share/vm/opto/escape.cpp Wed Feb 04 12:14:23 2015 -0800 +++ b/src/share/vm/opto/escape.cpp Fri Feb 06 08:49:46 2015 -0800 @@ -205,6 +205,11 @@ _verify = false; } #endif + // Bytecode analyzer BCEscapeAnalyzer, used for Call nodes + // processing, calls to CI to resolve symbols (types, fields, methods) + // referenced in bytecode. During symbol resolution VM may throw + // an exception which CI cleans and converts to compilation failure. + if (C->failing()) return false; // 2. Finish Graph construction by propagating references to all // java objects through graph. diff -r 0499e4a89c76 -r 1f6ba0d2923d src/share/vm/opto/output.cpp --- a/src/share/vm/opto/output.cpp Wed Feb 04 12:14:23 2015 -0800 +++ b/src/share/vm/opto/output.cpp Fri Feb 06 08:49:46 2015 -0800 @@ -2473,7 +2473,7 @@ if( iop == Op_Con ) continue; // Do not schedule Top if( iop == Op_Node && // Do not schedule PhiNodes, ProjNodes mach->pipeline() == MachNode::pipeline_class() && - !n->is_SpillCopy() ) // Breakpoints, Prolog, etc + !n->is_SpillCopy() && !n->is_MachMerge() ) // Breakpoints, Prolog, etc continue; break; // Funny loop structure to be sure... } diff -r 0499e4a89c76 -r 1f6ba0d2923d src/share/vm/opto/postaloc.cpp --- a/src/share/vm/opto/postaloc.cpp Wed Feb 04 12:14:23 2015 -0800 +++ b/src/share/vm/opto/postaloc.cpp Fri Feb 06 08:49:46 2015 -0800 @@ -428,6 +428,7 @@ // Insert the merge node into the block before the first use. uint use_index = block->find_node(reg2defuse.at(reg).first_use()); block->insert_node(merge, use_index++); + _cfg.map_node_to_block(merge, block); // Let the allocator know about the new node, use the same lrg _lrg_map.extend(merge->_idx, lrg); diff -r 0499e4a89c76 -r 1f6ba0d2923d src/share/vm/prims/jvmtiClassFileReconstituter.hpp --- a/src/share/vm/prims/jvmtiClassFileReconstituter.hpp Wed Feb 04 12:14:23 2015 -0800 +++ b/src/share/vm/prims/jvmtiClassFileReconstituter.hpp Fri Feb 06 08:49:46 2015 -0800 @@ -68,11 +68,11 @@ ~JvmtiConstantPoolReconstituter() { if (_symmap != NULL) { - os::free(_symmap, mtClass); + delete _symmap; _symmap = NULL; } if (_classmap != NULL) { - os::free(_classmap, mtClass); + delete _classmap; _classmap = NULL; } } diff -r 0499e4a89c76 -r 1f6ba0d2923d src/share/vm/prims/jvmtiTagMap.cpp --- a/src/share/vm/prims/jvmtiTagMap.cpp Wed Feb 04 12:14:23 2015 -0800 +++ b/src/share/vm/prims/jvmtiTagMap.cpp Fri Feb 06 08:49:46 2015 -0800 @@ -1045,10 +1045,16 @@ { assert(str->klass() == SystemDictionary::String_klass(), "not a string"); + typeArrayOop s_value = java_lang_String::value(str); + + // JDK-6584008: the value field may be null if a String instance is + // partially constructed. + if (s_value == NULL) { + return 0; + } // get the string value and length // (string value may be offset from the base) int s_len = java_lang_String::length(str); - typeArrayOop s_value = java_lang_String::value(str); int s_offset = java_lang_String::offset(str); jchar* value; if (s_len > 0) { diff -r 0499e4a89c76 -r 1f6ba0d2923d test/runtime/6888954/vmerrors.sh --- a/test/runtime/6888954/vmerrors.sh Wed Feb 04 12:14:23 2015 -0800 +++ b/test/runtime/6888954/vmerrors.sh Fri Feb 06 08:49:46 2015 -0800 @@ -1,4 +1,4 @@ -# Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -61,11 +61,12 @@ # EXCEPTION_ACCESS_VIOLATION - Win-* # SIGBUS - Solaris SPARC-64 # SIGSEGV - Linux-*, Solaris SPARC-32, Solaris X86-* +# SIGILL - Aix # # Note: would like to use "pc=0x00*0f," in the pattern, but Solaris SPARC-* # gets its signal at a PC in test_error_handler(). # -bad_func_ptr_re='(SIGBUS|SIGSEGV|EXCEPTION_ACCESS_VIOLATION).* at pc=' +bad_func_ptr_re='(SIGBUS|SIGSEGV|SIGILL|EXCEPTION_ACCESS_VIOLATION).* at pc=' guarantee_re='guarantee[(](str|num).*failed: *' fatal_re='fatal error: *' tail_1='.*expected null' diff -r 0499e4a89c76 -r 1f6ba0d2923d test/test_env.sh --- a/test/test_env.sh Wed Feb 04 12:14:23 2015 -0800 +++ b/test/test_env.sh Fri Feb 06 08:49:46 2015 -0800 @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -53,7 +53,7 @@ # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + AIX | Darwin | Linux | SunOS ) NULL=/dev/null PS=":" FS="/" @@ -130,26 +130,31 @@ fi VM_OS="unknown" -grep "solaris" vm_version.out > ${NULL} +grep "aix" vm_version.out > ${NULL} if [ $? = 0 ] then - VM_OS="solaris" + VM_OS="aix" +fi +grep "bsd" vm_version.out > ${NULL} +if [ $? = 0 ] +then + VM_OS="bsd" fi grep "linux" vm_version.out > ${NULL} if [ $? = 0 ] then VM_OS="linux" fi +grep "solaris" vm_version.out > ${NULL} +if [ $? = 0 ] +then + VM_OS="solaris" +fi grep "windows" vm_version.out > ${NULL} if [ $? = 0 ] then VM_OS="windows" fi -grep "bsd" vm_version.out > ${NULL} -if [ $? = 0 ] -then - VM_OS="bsd" -fi VM_CPU="unknown" grep "sparc" vm_version.out > ${NULL} diff -r 0499e4a89c76 -r 1f6ba0d2923d test/testlibrary/com/oracle/java/testlibrary/Platform.java --- a/test/testlibrary/com/oracle/java/testlibrary/Platform.java Wed Feb 04 12:14:23 2015 -0800 +++ b/test/testlibrary/com/oracle/java/testlibrary/Platform.java Fri Feb 06 08:49:46 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -61,6 +61,18 @@ return dataModel.equals("64"); } + public static boolean isAix() { + return isOs("aix"); + } + + public static boolean isLinux() { + return isOs("linux"); + } + + public static boolean isOSX() { + return isOs("mac"); + } + public static boolean isSolaris() { return isOs("sunos"); } @@ -69,14 +81,6 @@ return isOs("win"); } - public static boolean isOSX() { - return isOs("mac"); - } - - public static boolean isLinux() { - return isOs("linux"); - } - private static boolean isOs(String osname) { return osName.toLowerCase().startsWith(osname.toLowerCase()); } @@ -130,7 +134,9 @@ */ public static boolean shouldSAAttach() throws Exception { - if (isLinux()) { + if (isAix()) { + return false; // SA not implemented. + } else if (isLinux()) { return canPtraceAttachLinux(); } else if (isOSX()) { return canAttachOSX();