Merge
diff --git a/.hgtags-top-repo b/.hgtags-top-repo
index fc0eb11..1d81682 100644
--- a/.hgtags-top-repo
+++ b/.hgtags-top-repo
@@ -373,3 +373,4 @@
 b31a07adaef50dacba20e376cff6f1096e745092 jdk8u40-b20
 765a17e75fd622f7b892381e23c9b2c531d416f0 jdk8u40-b21
 ae4980d195b64eec58884b233d7efd312205bac8 jdk8u60-b00
+acf81f6fb265c1564b16fd8202a324a9022e204b jdk8u60-b01
diff --git a/corba/.hgtags b/corba/.hgtags
index 8505170..de362c7 100644
--- a/corba/.hgtags
+++ b/corba/.hgtags
@@ -371,3 +371,4 @@
 445eceffc829e205037098115c26e38e85ea5f7c jdk8u40-b20
 9c54cc92c0beb29179abbce272d3f5c8ba4ffd0e jdk8u40-b21
 8bbc2bb414b7e9331c2014c230553d72c9d161c5 jdk8u60-b00
+15ae8298b34beb30f2bd7baa7ff895af2bec13f6 jdk8u60-b01
diff --git a/hotspot/.hgtags b/hotspot/.hgtags
index 5390585..d094eaa 100644
--- a/hotspot/.hgtags
+++ b/hotspot/.hgtags
@@ -588,3 +588,5 @@
 d9349fa8822336e0244da0a8448f3e6b2d62741d hs25.60-b00
 ebf89088c08ab0508b9002b48dd3d68a340259af hs25.60-b01
 5fa73007ceb92a13742fc4a24ec935a6494f8045 hs25.60-b02
+702cc6067686acaa45f7b455b7490edc056c2ae0 jdk8u60-b01
+1f6ba0d2923dadba87aac4ed779dd1ed0161ec2b hs25.60-b03
diff --git a/hotspot/make/hotspot_version b/hotspot/make/hotspot_version
index bd27c28..c0bb9fa 100644
--- a/hotspot/make/hotspot_version
+++ b/hotspot/make/hotspot_version
@@ -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 --git a/hotspot/make/linux/makefiles/build_vm_def.sh b/hotspot/make/linux/makefiles/build_vm_def.sh
deleted file mode 100644
index ea81ff6..0000000
--- a/hotspot/make/linux/makefiles/build_vm_def.sh
+++ /dev/null
@@ -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 --git a/hotspot/make/linux/makefiles/vm.make b/hotspot/make/linux/makefiles/vm.make
index eebf68f..d5060be 100644
--- a/hotspot/make/linux/makefiles/vm.make
+++ b/hotspot/make/linux/makefiles/vm.make
@@ -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 --git a/hotspot/src/cpu/sparc/vm/macroAssembler_sparc.inline.hpp b/hotspot/src/cpu/sparc/vm/macroAssembler_sparc.inline.hpp
index 7e3804f..3518d0b 100644
--- a/hotspot/src/cpu/sparc/vm/macroAssembler_sparc.inline.hpp
+++ b/hotspot/src/cpu/sparc/vm/macroAssembler_sparc.inline.hpp
@@ -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 --git a/hotspot/src/share/vm/memory/tenuredGeneration.cpp b/hotspot/src/share/vm/memory/tenuredGeneration.cpp
index a18d681..d7432ba 100644
--- a/hotspot/src/share/vm/memory/tenuredGeneration.cpp
+++ b/hotspot/src/share/vm/memory/tenuredGeneration.cpp
@@ -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 --git a/hotspot/src/share/vm/opto/escape.cpp b/hotspot/src/share/vm/opto/escape.cpp
index 384fe08..86bc5b4 100644
--- a/hotspot/src/share/vm/opto/escape.cpp
+++ b/hotspot/src/share/vm/opto/escape.cpp
@@ -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 --git a/hotspot/src/share/vm/opto/output.cpp b/hotspot/src/share/vm/opto/output.cpp
index 5a32e38..0563ebb 100644
--- a/hotspot/src/share/vm/opto/output.cpp
+++ b/hotspot/src/share/vm/opto/output.cpp
@@ -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 --git a/hotspot/src/share/vm/opto/postaloc.cpp b/hotspot/src/share/vm/opto/postaloc.cpp
index f245776..cec4c5d 100644
--- a/hotspot/src/share/vm/opto/postaloc.cpp
+++ b/hotspot/src/share/vm/opto/postaloc.cpp
@@ -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 --git a/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.hpp b/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.hpp
index 4170cf9..1ac45ef 100644
--- a/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.hpp
+++ b/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.hpp
@@ -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 --git a/hotspot/src/share/vm/prims/jvmtiTagMap.cpp b/hotspot/src/share/vm/prims/jvmtiTagMap.cpp
index 3967e5b..1ae7ce6 100644
--- a/hotspot/src/share/vm/prims/jvmtiTagMap.cpp
+++ b/hotspot/src/share/vm/prims/jvmtiTagMap.cpp
@@ -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 --git a/hotspot/test/runtime/6888954/vmerrors.sh b/hotspot/test/runtime/6888954/vmerrors.sh
index ebd9149..3864575 100644
--- a/hotspot/test/runtime/6888954/vmerrors.sh
+++ b/hotspot/test/runtime/6888954/vmerrors.sh
@@ -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 --git a/hotspot/test/test_env.sh b/hotspot/test/test_env.sh
index fa912dd..65dff91 100644
--- a/hotspot/test/test_env.sh
+++ b/hotspot/test/test_env.sh
@@ -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 --git a/hotspot/test/testlibrary/com/oracle/java/testlibrary/Platform.java b/hotspot/test/testlibrary/com/oracle/java/testlibrary/Platform.java
index 8f31d45..0f402ca 100644
--- a/hotspot/test/testlibrary/com/oracle/java/testlibrary/Platform.java
+++ b/hotspot/test/testlibrary/com/oracle/java/testlibrary/Platform.java
@@ -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,20 +61,24 @@
         return dataModel.equals("64");
     }
 
-    public static boolean isSolaris() {
-        return isOs("sunos");
+    public static boolean isAix() {
+        return isOs("aix");
     }
 
-    public static boolean isWindows() {
-        return isOs("win");
+    public static boolean isLinux() {
+        return isOs("linux");
     }
 
     public static boolean isOSX() {
         return isOs("mac");
     }
 
-    public static boolean isLinux() {
-        return isOs("linux");
+    public static boolean isSolaris() {
+        return isOs("sunos");
+    }
+
+    public static boolean isWindows() {
+        return isOs("win");
     }
 
     private static boolean isOs(String osname) {
@@ -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();
diff --git a/jaxp/.hgtags b/jaxp/.hgtags
index d6b808e..654504e 100644
--- a/jaxp/.hgtags
+++ b/jaxp/.hgtags
@@ -373,3 +373,4 @@
 7bfc889330e0ec1fd495990eaa0d7f0c390b7304 jdk8u40-b20
 78d90db9de2801eec010ccb9f0db3caf969dfc3b jdk8u40-b21
 3b73732d6886dc8155f0c1fbb125ca60d9e2fd2b jdk8u60-b00
+b0e15cd169a93080c4e30e9eb3061d0b329bf38c jdk8u60-b01
diff --git a/jaxws/.hgtags b/jaxws/.hgtags
index 999d5d8..7ba8f0c 100644
--- a/jaxws/.hgtags
+++ b/jaxws/.hgtags
@@ -371,3 +371,4 @@
 a21c4edfdf4402f027183ac8c8aac2db49df3b7d jdk8u40-b20
 16485a38b6bc762b363f4e439047486742fbcfcb jdk8u40-b21
 c8b402c28fe51e25f3298e1266f2ae48bda8d3e0 jdk8u60-b00
+7a0dacd12a9e42f581c11edeb51a69af9a8ab16d jdk8u60-b01
diff --git a/jdk/.hgtags b/jdk/.hgtags
index 87b498a..961f01c 100644
--- a/jdk/.hgtags
+++ b/jdk/.hgtags
@@ -374,3 +374,4 @@
 7784dab075ed82be2275f4694164bbb9cc1cde3f jdk8u40-b20
 564bca490631e4ed4f7993e6633ed9ee62067624 jdk8u40-b21
 5c31204d19e5976f025026db3d5c17331e8c44db jdk8u60-b00
+c46daef6edb5385d11876ed40f292a4b62e96867 jdk8u60-b01
diff --git a/langtools/.hgtags b/langtools/.hgtags
index 4098781..b13d291 100644
--- a/langtools/.hgtags
+++ b/langtools/.hgtags
@@ -371,3 +371,4 @@
 c3d6d1a5339952fbe4124e700407b7211446c99c jdk8u40-b20
 9113c7c8d902ec94b28ca0ef4a6466bdba65fcfc jdk8u40-b21
 0c514d1fd006fc79d35b670de10c370c8d559db7 jdk8u60-b00
+0ba07c272e33c93377a5d7ed98b9de873cc91980 jdk8u60-b01
diff --git a/nashorn/.hgtags b/nashorn/.hgtags
index 0367bb4..a1e70b2 100644
--- a/nashorn/.hgtags
+++ b/nashorn/.hgtags
@@ -359,3 +359,4 @@
 4d240320929f7b2247eeb97e43efe2370b70582e jdk8u40-b20
 dbb663a9d9aa2807ef501c7d20f29415816a1973 jdk8u40-b21
 6ec61d2494283fbaca6df227f1a5b45487dc1ca7 jdk8u60-b00
+af290f203369ecf8e67b89c4a3a8df0bf535230e jdk8u60-b01