Updated to security jdk8u121-b14

This commit is contained in:
Jiri Vanek 2017-01-24 13:38:19 +01:00
parent a4eab871ae
commit edf0421b2a
12 changed files with 196 additions and 584 deletions

2
.gitignore vendored
View File

@ -66,3 +66,5 @@
/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u102-b14.tar.xz /aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u102-b14.tar.xz
/aarch64-port-jdk8u-aarch64-jdk8u111-b16.tar.xz /aarch64-port-jdk8u-aarch64-jdk8u111-b16.tar.xz
/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u111-b16.tar.xz /aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u111-b16.tar.xz
/openjdk8-forests-latest-aarch64-aarch64-jdk8u121-b14.tar.xz
/openjdk8-forests-latest-shenandoah-aarch64-shenandoah-jdk8u121-b14.tar.xz

View File

@ -1,45 +0,0 @@
# HG changeset patch
# User dsamersoff
# Date 1403087398 25200
# Wed Jun 18 03:29:58 2014 -0700
# Node ID 13411144d46b50d0087f35eca2b8e827aae558f1
# Parent 10c9f8461c297a200ef57970c1f4c32d4081d790
8044762, PR2960: com/sun/jdi/OptionTest.java test time out
Summary: gdata could be NULL in debugInit_exit
Reviewed-by: dcubed
diff -r 10c9f8461c29 -r 13411144d46b src/share/back/debugInit.c
--- openjdk/jdk/src/share/back/debugInit.c Fri May 20 19:42:05 2016 +0100
+++ openjdk/jdk/src/share/back/debugInit.c Wed Jun 18 03:29:58 2014 -0700
@@ -1307,22 +1307,26 @@
if ( error != JVMTI_ERROR_NONE ) {
exit_code = 1;
if ( docoredump ) {
+ LOG_MISC(("Dumping core as requested by command line"));
finish_logging(exit_code);
abort();
}
}
+
if ( msg==NULL ) {
msg = "";
}
LOG_MISC(("Exiting with error %s(%d): %s", jvmtiErrorText(error), error, msg));
- gdata->vmDead = JNI_TRUE;
+ if (gdata != NULL) {
+ gdata->vmDead = JNI_TRUE;
- /* Let's try and cleanup the JVMTI, if we even have one */
- if ( gdata->jvmti != NULL ) {
- /* Dispose of jvmti (gdata->jvmti becomes NULL) */
- disposeEnvironment(gdata->jvmti);
+ /* Let's try and cleanup the JVMTI, if we even have one */
+ if ( gdata->jvmti != NULL ) {
+ /* Dispose of jvmti (gdata->jvmti becomes NULL) */
+ disposeEnvironment(gdata->jvmti);
+ }
}
/* Finish up logging. We reach here if JDWP is doing the exiting. */

View File

@ -1,123 +0,0 @@
# HG changeset patch
# User dsamersoff
# Date 1409228402 25200
# Thu Aug 28 05:20:02 2014 -0700
# Node ID f4c9545cd8a56a5fab74c95de3573623ba2b83c4
# Parent 13411144d46b50d0087f35eca2b8e827aae558f1
8049226, PR2960: com/sun/jdi/OptionTest.java test times out again
Summary: Don't call jni_FatalError if transport initialization fails
Reviewed-by: sspitsyn, sla
diff -r 13411144d46b -r f4c9545cd8a5 src/share/back/debugInit.c
--- openjdk/jdk/src/share/back/debugInit.c Wed Jun 18 03:29:58 2014 -0700
+++ openjdk/jdk/src/share/back/debugInit.c Thu Aug 28 05:20:02 2014 -0700
@@ -1013,7 +1013,7 @@
atexit_finish_logging(void)
{
/* Normal exit(0) (not _exit()) may only reach here */
- finish_logging(0); /* Only first call matters */
+ finish_logging(); /* Only first call matters */
}
static jboolean
@@ -1301,43 +1301,49 @@
void
debugInit_exit(jvmtiError error, const char *msg)
{
- int exit_code = 0;
+ enum exit_codes { EXIT_NO_ERRORS = 0, EXIT_JVMTI_ERROR = 1, EXIT_TRANSPORT_ERROR = 2 };
- /* Pick an error code */
- if ( error != JVMTI_ERROR_NONE ) {
- exit_code = 1;
- if ( docoredump ) {
- LOG_MISC(("Dumping core as requested by command line"));
- finish_logging(exit_code);
- abort();
- }
+ // Prepare to exit. Log error and finish logging
+ LOG_MISC(("Exiting with error %s(%d): %s", jvmtiErrorText(error), error,
+ ((msg == NULL) ? "" : msg)));
+
+ // coredump requested by command line. Keep JVMTI data dirty
+ if (error != JVMTI_ERROR_NONE && docoredump) {
+ LOG_MISC(("Dumping core as requested by command line"));
+ finish_logging();
+ abort();
}
- if ( msg==NULL ) {
- msg = "";
- }
+ finish_logging();
- LOG_MISC(("Exiting with error %s(%d): %s", jvmtiErrorText(error), error, msg));
-
+ // Cleanup the JVMTI if we have one
if (gdata != NULL) {
gdata->vmDead = JNI_TRUE;
-
- /* Let's try and cleanup the JVMTI, if we even have one */
- if ( gdata->jvmti != NULL ) {
- /* Dispose of jvmti (gdata->jvmti becomes NULL) */
+ if (gdata->jvmti != NULL) {
+ // Dispose of jvmti (gdata->jvmti becomes NULL)
disposeEnvironment(gdata->jvmti);
}
}
- /* Finish up logging. We reach here if JDWP is doing the exiting. */
- finish_logging(exit_code); /* Only first call matters */
-
- /* Let's give the JNI a FatalError if non-exit 0, which is historic way */
- if ( exit_code != 0 ) {
- JNIEnv *env = NULL;
- jniFatalError(env, msg, error, exit_code);
+ // We are here with no errors. Kill entire process and exit with zero exit code
+ if (error == JVMTI_ERROR_NONE) {
+ forceExit(EXIT_NO_ERRORS);
+ return;
}
- /* Last chance to die, this kills the entire process. */
- forceExit(exit_code);
+ // No transport initilized.
+ // As we don't have any details here exiting with separate exit code
+ if (error == AGENT_ERROR_TRANSPORT_INIT) {
+ forceExit(EXIT_TRANSPORT_ERROR);
+ return;
+ }
+
+ // We have JVMTI error. Call hotspot jni_FatalError handler
+ jniFatalError(NULL, msg, error, EXIT_JVMTI_ERROR);
+
+ // hotspot calls os:abort() so we should never reach code below,
+ // but guard against possible hotspot changes
+
+ // Last chance to die, this kills the entire process.
+ forceExit(EXIT_JVMTI_ERROR);
}
diff -r 13411144d46b -r f4c9545cd8a5 src/share/back/log_messages.c
--- openjdk/jdk/src/share/back/log_messages.c Wed Jun 18 03:29:58 2014 -0700
+++ openjdk/jdk/src/share/back/log_messages.c Thu Aug 28 05:20:02 2014 -0700
@@ -230,7 +230,7 @@
/* Finish up logging, flush output to the logfile. */
void
-finish_logging(int exit_code)
+finish_logging()
{
#ifdef JDWP_LOGGING
MUTEX_LOCK(my_mutex);
diff -r 13411144d46b -r f4c9545cd8a5 src/share/back/log_messages.h
--- openjdk/jdk/src/share/back/log_messages.h Wed Jun 18 03:29:58 2014 -0700
+++ openjdk/jdk/src/share/back/log_messages.h Thu Aug 28 05:20:02 2014 -0700
@@ -29,7 +29,7 @@
/* LOG: Must be called like: LOG_category(("anything")) or LOG_category((format,args)) */
void setup_logging(const char *, unsigned);
-void finish_logging(int);
+void finish_logging();
#define LOG_NULL ((void)0)

View File

@ -1,47 +0,0 @@
# HG changeset patch
# User aph
# Date 1461121375 -3600
# Wed Apr 20 04:02:55 2016 +0100
# Node ID 5605c859f0ec47d6f507cc83e783554a4210ccf6
# Parent 7458e5178c8646a9b4f76ac3d13b222abed3f16f
8154210: Zero: Better byte behaviour
Summary: Complete support for 8132051 on Zero and fix failure on 64-bit big-endian systems
Reviewed-by: andrew, chrisphi
diff -r 7458e5178c86 -r 5605c859f0ec src/cpu/zero/vm/cppInterpreter_zero.cpp
--- openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp Tue May 17 03:03:36 2016 +0100
+++ openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp Wed Apr 20 04:02:55 2016 +0100
@@ -220,9 +220,16 @@
// Push our result
for (int i = 0; i < result_slots; i++) {
// Adjust result to smaller
- intptr_t res = result[-i];
+ union {
+ intptr_t res;
+ jint res_jint;
+ };
+ res = result[-i];
if (result_slots == 1) {
- res = narrow(method->result_type(), res);
+ BasicType t = method->result_type();
+ if (is_subword_type(t)) {
+ res_jint = (jint)narrow(t, res_jint);
+ }
}
stack->push(res);
}
diff -r 7458e5178c86 -r 5605c859f0ec src/share/vm/interpreter/bytecodeInterpreter.cpp
--- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp Tue May 17 03:03:36 2016 +0100
+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp Wed Apr 20 04:02:55 2016 +0100
@@ -593,8 +593,9 @@
/* 0xDC */ &&opc_default, &&opc_default, &&opc_default, &&opc_default,
/* 0xE0 */ &&opc_default, &&opc_default, &&opc_default, &&opc_default,
-/* 0xE4 */ &&opc_default, &&opc_fast_aldc, &&opc_fast_aldc_w, &&opc_return_register_finalizer,
-/* 0xE8 */ &&opc_invokehandle,&&opc_default, &&opc_default, &&opc_default,
+/* 0xE4 */ &&opc_default, &&opc_default, &&opc_fast_aldc, &&opc_fast_aldc_w,
+/* 0xE8 */ &&opc_return_register_finalizer,
+ &&opc_invokehandle, &&opc_default, &&opc_default,
/* 0xEC */ &&opc_default, &&opc_default, &&opc_default, &&opc_default,
/* 0xF0 */ &&opc_default, &&opc_default, &&opc_default, &&opc_default,

View File

@ -1,32 +0,0 @@
# HG changeset patch
# User simonis
# Date 1466155884 -7200
# Fri Jun 17 11:31:24 2016 +0200
# Node ID 74081c30fede694b547c8b3386b9887ff14e8775
# Parent 3fc29347b27fdd2075e6ec6d80bb26ab2bf667c1
8158260, PR2991, RH1341258: PPC64: unaligned Unsafe.getInt can lead to the generation of illegal instructions
Summary: Adjust instruction generation.
Reviewed-by: goetz
Contributed-by: gromero@linux.vnet.ibm.com, horii@jp.ibm.com
diff -r 3fc29347b27f -r 74081c30fede src/cpu/ppc/vm/ppc.ad
--- openjdk/hotspot/src/cpu/ppc/vm/ppc.ad Fri May 20 19:42:15 2016 +0100
+++ openjdk/hotspot/src/cpu/ppc/vm/ppc.ad Fri Jun 17 11:31:24 2016 +0200
@@ -5461,7 +5461,7 @@
%}
// Match loading integer and casting it to long.
-instruct loadI2L(iRegLdst dst, memory mem) %{
+instruct loadI2L(iRegLdst dst, memoryAlg4 mem) %{
match(Set dst (ConvI2L (LoadI mem)));
predicate(_kids[0]->_leaf->as_Load()->is_unordered());
ins_cost(MEMORY_REF_COST);
@@ -5477,7 +5477,7 @@
%}
// Match loading integer and casting it to long - acquire.
-instruct loadI2L_ac(iRegLdst dst, memory mem) %{
+instruct loadI2L_ac(iRegLdst dst, memoryAlg4 mem) %{
match(Set dst (ConvI2L (LoadI mem)));
ins_cost(3*MEMORY_REF_COST);

View File

@ -1,115 +0,0 @@
# HG changeset patch
# User thartmann
# Date 1468206230 -3600
# Mon Jul 11 04:03:50 2016 +0100
# Node ID 7c89f7f3f2c57d64970cc2ae3a81d24765830118
# Parent 4b40867e627dd9043bc67a4795caa9834ef69478
8159244, PR3074: Partially initialized string object created by C2's string concat optimization may escape
Summary: Emit release barrier after String creation to prevent partially initialized object from escaping.
Reviewed-by: kvn
diff -r 4b40867e627d -r 7c89f7f3f2c5 src/share/vm/opto/stringopts.cpp
--- openjdk/hotspot/src/share/vm/opto/stringopts.cpp Fri Jun 17 11:31:24 2016 +0200
+++ openjdk/hotspot/src/share/vm/opto/stringopts.cpp Mon Jul 11 04:03:50 2016 +0100
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2016, 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
@@ -1640,6 +1640,12 @@
kit.store_String_length(kit.control(), result, length);
}
kit.store_String_value(kit.control(), result, char_array);
+
+ // The value field is final. Emit a barrier here to ensure that the effect
+ // of the initialization is committed to memory before any code publishes
+ // a reference to the newly constructed object (see Parse::do_exits()).
+ assert(AllocateNode::Ideal_allocation(result, _gvn) != NULL, "should be newly allocated");
+ kit.insert_mem_bar(Op_MemBarRelease, result);
} else {
result = C->top();
}
diff -r 4b40867e627d -r 7c89f7f3f2c5 test/compiler/stringopts/TestStringObjectInitialization.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ openjdk/hotspot/test/compiler/stringopts/TestStringObjectInitialization.java Mon Jul 11 04:03:50 2016 +0100
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2016, 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.
+ */
+
+
+import java.util.Arrays;
+
+/*
+ * @test
+ * @bug 8159244
+ * @requires vm.gc == "Parallel" | vm.gc == "null"
+ * @summary Verifies that no partially initialized String object escapes from
+ * C2's String concat optimization in a highly concurrent setting.
+ * This test triggers the bug in about 1 out of 10 runs.
+ * @compile -XDstringConcat=inline TestStringObjectInitialization.java
+ * @run main/othervm/timeout=300 -XX:+IgnoreUnrecognizedVMOptions -XX:-UseCompressedOops -XX:-CompactStrings
+ * -XX:-UseG1GC -XX:+UseParallelGC TestStringObjectInitialization
+ */
+public class TestStringObjectInitialization {
+
+ String myString;
+
+ public static void main(String[] args) throws Exception {
+ TestStringObjectInitialization t = new TestStringObjectInitialization();
+ // Create some threads that concurrently update 'myString'
+ for (int i = 0; i < 100; ++i) {
+ (new Thread(new Runner(t))).start();
+ }
+ Thread last = new Thread(new Runner(t));
+ last.start();
+ last.join();
+ }
+
+ private void add(String message) {
+ // String escapes to other threads here
+ myString += message;
+ }
+
+ public void run(String s, String[] sArray) {
+ // Trigger C2's string concatenation optimization
+ add(s + Arrays.toString(sArray) + " const ");
+ }
+}
+
+class Runner implements Runnable {
+ private TestStringObjectInitialization test;
+
+ public Runner(TestStringObjectInitialization t) {
+ test = t;
+ }
+
+ public void run(){
+ String[] array = {"a", "b", "c"};
+ for (int i = 0; i < 10000; ++i) {
+ test.run("a", array);
+ }
+ }
+}
+

View File

@ -1,7 +1,7 @@
diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp diff --git a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
--- jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp.size_t 2015-05-19 12:16:26.000000000 -0400 --- openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
+++ jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp 2015-06-09 10:21:39.000000000 -0400 +++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
@@ -2659,7 +2659,7 @@ void CFLS_LAB::get_from_global_pool(size @@ -2659,7 +2659,7 @@
if (ResizeOldPLAB && CMSOldPLABResizeQuicker) { if (ResizeOldPLAB && CMSOldPLABResizeQuicker) {
size_t multiple = _num_blocks[word_sz]/(CMSOldPLABToleranceFactor*CMSOldPLABNumRefills*n_blks); size_t multiple = _num_blocks[word_sz]/(CMSOldPLABToleranceFactor*CMSOldPLABNumRefills*n_blks);
n_blks += CMSOldPLABReactivityFactor*multiple*n_blks; n_blks += CMSOldPLABReactivityFactor*multiple*n_blks;
@ -10,10 +10,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compact
} }
assert(n_blks > 0, "Error"); assert(n_blks > 0, "Error");
_cfls->par_get_chunk_of_blocks(word_sz, n_blks, fl); _cfls->par_get_chunk_of_blocks(word_sz, n_blks, fl);
diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp diff --git a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
--- jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp.size_t 2015-05-19 12:16:26.000000000 -0400 --- openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
+++ jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp 2015-06-09 10:21:39.000000000 -0400 +++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
@@ -957,7 +957,7 @@ void ConcurrentMarkSweepGeneration::comp @@ -957,7 +957,7 @@
if (free_percentage < desired_free_percentage) { if (free_percentage < desired_free_percentage) {
size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage)); size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage));
assert(desired_capacity >= capacity(), "invalid expansion size"); assert(desired_capacity >= capacity(), "invalid expansion size");
@ -22,7 +22,7 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurr
if (PrintGCDetails && Verbose) { if (PrintGCDetails && Verbose) {
size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage)); size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage));
gclog_or_tty->print_cr("\nFrom compute_new_size: "); gclog_or_tty->print_cr("\nFrom compute_new_size: ");
@@ -6575,7 +6575,7 @@ void CMSCollector::reset(bool asynch) { @@ -6577,7 +6577,7 @@
HeapWord* curAddr = _markBitMap.startWord(); HeapWord* curAddr = _markBitMap.startWord();
while (curAddr < _markBitMap.endWord()) { while (curAddr < _markBitMap.endWord()) {
size_t remaining = pointer_delta(_markBitMap.endWord(), curAddr); size_t remaining = pointer_delta(_markBitMap.endWord(), curAddr);
@ -31,7 +31,7 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurr
_markBitMap.clear_large_range(chunk); _markBitMap.clear_large_range(chunk);
if (ConcurrentMarkSweepThread::should_yield() && if (ConcurrentMarkSweepThread::should_yield() &&
!foregroundGCIsActive() && !foregroundGCIsActive() &&
@@ -6873,7 +6873,7 @@ void CMSMarkStack::expand() { @@ -6875,7 +6875,7 @@
return; return;
} }
// Double capacity if possible // Double capacity if possible
@ -40,10 +40,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurr
// Do not give up existing stack until we have managed to // Do not give up existing stack until we have managed to
// get the double capacity that we desired. // get the double capacity that we desired.
ReservedSpace rs(ReservedSpace::allocation_align_size_up( ReservedSpace rs(ReservedSpace::allocation_align_size_up(
diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp diff --git a/src/share/vm/gc_implementation/g1/concurrentMark.cpp b/src/share/vm/gc_implementation/g1/concurrentMark.cpp
--- jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.size_t 2015-05-19 12:16:26.000000000 -0400 --- openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp
+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp 2015-06-09 10:21:39.000000000 -0400 +++ openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp
@@ -3902,7 +3902,7 @@ void CMTask::drain_local_queue(bool part @@ -3903,7 +3903,7 @@
// of things to do) or totally (at the very end). // of things to do) or totally (at the very end).
size_t target_size; size_t target_size;
if (partially) { if (partially) {
@ -52,7 +52,7 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.size_
} else { } else {
target_size = 0; target_size = 0;
} }
@@ -4728,7 +4728,7 @@ size_t G1PrintRegionLivenessInfoClosure: @@ -4707,7 +4707,7 @@
// The > 0 check is to deal with the prev and next live bytes which // The > 0 check is to deal with the prev and next live bytes which
// could be 0. // could be 0.
if (*hum_bytes > 0) { if (*hum_bytes > 0) {
@ -61,10 +61,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.size_
*hum_bytes -= bytes; *hum_bytes -= bytes;
} }
return bytes; return bytes;
diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp diff --git a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
--- jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp.size_t 2015-05-19 12:16:26.000000000 -0400 --- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp 2015-06-09 10:21:39.000000000 -0400 +++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
@@ -1726,7 +1726,7 @@ HeapWord* G1CollectedHeap::expand_and_al @@ -1726,7 +1726,7 @@
verify_region_sets_optional(); verify_region_sets_optional();
@ -73,10 +73,22 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp.size
ergo_verbose1(ErgoHeapSizing, ergo_verbose1(ErgoHeapSizing,
"attempt heap expansion", "attempt heap expansion",
ergo_format_reason("allocation request failed") ergo_format_reason("allocation request failed")
diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp diff --git a/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp b/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp
--- jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp.size_t 2015-05-19 12:16:26.000000000 -0400 --- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp
+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp 2015-06-09 10:21:39.000000000 -0400 +++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp
@@ -38,7 +38,7 @@ G1StringDedupQueue::G1StringDedupQueue() @@ -117,7 +117,7 @@
return reserved_size() - committed_size();
}
-size_t G1PageBasedVirtualSpace::addr_to_page_index(char* addr) const {
+uintptr_t G1PageBasedVirtualSpace::addr_to_page_index(char* addr) const {
return (addr - _low_boundary) / _page_size;
}
diff --git a/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp b/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp
--- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp
+++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp
@@ -38,7 +38,7 @@
_cancel(false), _cancel(false),
_empty(true), _empty(true),
_dropped(0) { _dropped(0) {
@ -85,22 +97,22 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp.s
_queues = NEW_C_HEAP_ARRAY(G1StringDedupWorkerQueue, _nqueues, mtGC); _queues = NEW_C_HEAP_ARRAY(G1StringDedupWorkerQueue, _nqueues, mtGC);
for (size_t i = 0; i < _nqueues; i++) { for (size_t i = 0; i < _nqueues; i++) {
new (_queues + i) G1StringDedupWorkerQueue(G1StringDedupWorkerQueue::default_segment_size(), _max_cache_size, _max_size); new (_queues + i) G1StringDedupWorkerQueue(G1StringDedupWorkerQueue::default_segment_size(), _max_cache_size, _max_size);
diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp diff --git a/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp b/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp
--- jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp.size_t 2015-05-19 12:16:26.000000000 -0400 --- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp
+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp 2015-06-09 10:21:39.000000000 -0400 +++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp
@@ -110,7 +110,7 @@ public: @@ -120,7 +120,7 @@
}; };
G1StringDedupEntryCache::G1StringDedupEntryCache() { G1StringDedupEntryCache::G1StringDedupEntryCache(size_t max_size) :
- _nlists = MAX2(ParallelGCThreads, (size_t)1); - _nlists(MAX2(ParallelGCThreads, (size_t)1)),
+ _nlists = MAX2(ParallelGCThreads, (uintx)1); + _nlists(MAX2(ParallelGCThreads, (uintx)1)),
_lists = PaddedArray<G1StringDedupEntryFreeList, mtGC>::create_unfreeable((uint)_nlists); _max_list_length(0),
} _cached(PaddedArray<G1StringDedupEntryList, mtGC>::create_unfreeable((uint)_nlists)),
_overflowed(PaddedArray<G1StringDedupEntryList, mtGC>::create_unfreeable((uint)_nlists)) {
diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp diff --git a/src/share/vm/gc_implementation/g1/heapRegion.cpp b/src/share/vm/gc_implementation/g1/heapRegion.cpp
--- jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp.size_t 2015-05-19 12:16:26.000000000 -0400 --- openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp
+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp 2015-06-09 10:21:39.000000000 -0400 +++ openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp
@@ -109,7 +109,7 @@ void HeapRegion::setup_heap_region_size( @@ -109,7 +109,7 @@
if (FLAG_IS_DEFAULT(G1HeapRegionSize)) { if (FLAG_IS_DEFAULT(G1HeapRegionSize)) {
size_t average_heap_size = (initial_heap_size + max_heap_size) / 2; size_t average_heap_size = (initial_heap_size + max_heap_size) / 2;
region_size = MAX2(average_heap_size / HeapRegionBounds::target_number(), region_size = MAX2(average_heap_size / HeapRegionBounds::target_number(),
@ -109,10 +121,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp.size_t jd
} }
int region_size_log = log2_long((jlong) region_size); int region_size_log = log2_long((jlong) region_size);
diff -up jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp diff --git a/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp b/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
--- jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp.size_t 2015-05-19 12:16:26.000000000 -0400 --- openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
+++ jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp 2015-06-09 10:21:39.000000000 -0400 +++ openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
@@ -194,7 +194,7 @@ bool ParScanThreadState::take_from_overf @@ -194,7 +194,7 @@
const size_t num_overflow_elems = of_stack->size(); const size_t num_overflow_elems = of_stack->size();
const size_t space_available = queue->max_elems() - queue->size(); const size_t space_available = queue->max_elems() - queue->size();
const size_t num_take_elems = MIN3(space_available / 4, const size_t num_take_elems = MIN3(space_available / 4,
@ -121,10 +133,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
num_overflow_elems); num_overflow_elems);
// Transfer the most recent num_take_elems from the overflow // Transfer the most recent num_take_elems from the overflow
// stack to our work queue. // stack to our work queue.
diff -up jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp diff --git a/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp b/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
--- jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp.size_t 2015-05-19 12:16:26.000000000 -0400 --- openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
+++ jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2015-06-09 10:21:39.000000000 -0400 +++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
@@ -910,8 +910,8 @@ void PSParallelCompact::initialize_space @@ -910,8 +910,8 @@
void PSParallelCompact::initialize_dead_wood_limiter() void PSParallelCompact::initialize_dead_wood_limiter()
{ {
const size_t max = 100; const size_t max = 100;
@ -135,10 +147,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallel
_dwl_first_term = 1.0 / (sqrt(2.0 * M_PI) * _dwl_std_dev); _dwl_first_term = 1.0 / (sqrt(2.0 * M_PI) * _dwl_std_dev);
DEBUG_ONLY(_dwl_initialized = true;) DEBUG_ONLY(_dwl_initialized = true;)
_dwl_adjustment = normal_distribution(1.0); _dwl_adjustment = normal_distribution(1.0);
diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp diff --git a/src/share/vm/memory/collectorPolicy.cpp b/src/share/vm/memory/collectorPolicy.cpp
--- jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t 2015-05-19 12:16:26.000000000 -0400 --- openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp
+++ jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp 2015-06-09 10:21:39.000000000 -0400 +++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp
@@ -385,7 +385,7 @@ void TwoGenerationCollectorPolicy::initi @@ -385,7 +385,7 @@
uintx calculated_size = NewSize + OldSize; uintx calculated_size = NewSize + OldSize;
double shrink_factor = (double) MaxHeapSize / calculated_size; double shrink_factor = (double) MaxHeapSize / calculated_size;
uintx smaller_new_size = align_size_down((uintx)(NewSize * shrink_factor), _gen_alignment); uintx smaller_new_size = align_size_down((uintx)(NewSize * shrink_factor), _gen_alignment);
@ -147,7 +159,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspo
_initial_gen0_size = NewSize; _initial_gen0_size = NewSize;
// OldSize is already aligned because above we aligned MaxHeapSize to // OldSize is already aligned because above we aligned MaxHeapSize to
@@ -433,7 +433,7 @@ void GenCollectorPolicy::initialize_size @@ -433,7 +433,7 @@
// yield a size that is too small) and bound it by MaxNewSize above. // yield a size that is too small) and bound it by MaxNewSize above.
// Ergonomics plays here by previously calculating the desired // Ergonomics plays here by previously calculating the desired
// NewSize and MaxNewSize. // NewSize and MaxNewSize.
@ -156,7 +168,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspo
} }
assert(max_new_size > 0, "All paths should set max_new_size"); assert(max_new_size > 0, "All paths should set max_new_size");
@@ -455,24 +455,23 @@ void GenCollectorPolicy::initialize_size @@ -455,24 +455,23 @@
// lower limit. // lower limit.
_min_gen0_size = NewSize; _min_gen0_size = NewSize;
desired_new_size = NewSize; desired_new_size = NewSize;
@ -186,7 +198,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspo
assert(_min_gen0_size > 0, "Sanity check"); assert(_min_gen0_size > 0, "Sanity check");
_initial_gen0_size = desired_new_size; _initial_gen0_size = desired_new_size;
@@ -573,7 +572,7 @@ void TwoGenerationCollectorPolicy::initi @@ -573,7 +572,7 @@
} else { } else {
// It's been explicitly set on the command line. Use the // It's been explicitly set on the command line. Use the
// OldSize and then determine the consequences. // OldSize and then determine the consequences.
@ -195,10 +207,10 @@ diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspo
_initial_gen1_size = OldSize; _initial_gen1_size = OldSize;
// If the user has explicitly set an OldSize that is inconsistent // If the user has explicitly set an OldSize that is inconsistent
diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/share/vm/memory/metaspace.cpp diff --git a/src/share/vm/memory/metaspace.cpp b/src/share/vm/memory/metaspace.cpp
--- jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t 2015-05-19 12:16:26.000000000 -0400 --- openjdk/hotspot/src/share/vm/memory/metaspace.cpp
+++ jdk8/hotspot/src/share/vm/memory/metaspace.cpp 2015-06-09 10:21:39.000000000 -0400 +++ openjdk/hotspot/src/share/vm/memory/metaspace.cpp
@@ -1455,7 +1455,7 @@ void MetaspaceGC::initialize() { @@ -1455,7 +1455,7 @@
void MetaspaceGC::post_initialize() { void MetaspaceGC::post_initialize() {
// Reset the high-water mark once the VM initialization is done. // Reset the high-water mark once the VM initialization is done.
@ -207,7 +219,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/
} }
bool MetaspaceGC::can_expand(size_t word_size, bool is_class) { bool MetaspaceGC::can_expand(size_t word_size, bool is_class) {
@@ -1515,7 +1515,7 @@ void MetaspaceGC::compute_new_size() { @@ -1515,7 +1515,7 @@
(size_t)MIN2(min_tmp, double(max_uintx)); (size_t)MIN2(min_tmp, double(max_uintx));
// Don't shrink less than the initial generation size // Don't shrink less than the initial generation size
minimum_desired_capacity = MAX2(minimum_desired_capacity, minimum_desired_capacity = MAX2(minimum_desired_capacity,
@ -216,7 +228,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/
if (PrintGCDetails && Verbose) { if (PrintGCDetails && Verbose) {
gclog_or_tty->print_cr("\nMetaspaceGC::compute_new_size: "); gclog_or_tty->print_cr("\nMetaspaceGC::compute_new_size: ");
@@ -1573,7 +1573,7 @@ void MetaspaceGC::compute_new_size() { @@ -1573,7 +1573,7 @@
const double max_tmp = used_after_gc / minimum_used_percentage; const double max_tmp = used_after_gc / minimum_used_percentage;
size_t maximum_desired_capacity = (size_t)MIN2(max_tmp, double(max_uintx)); size_t maximum_desired_capacity = (size_t)MIN2(max_tmp, double(max_uintx));
maximum_desired_capacity = MAX2(maximum_desired_capacity, maximum_desired_capacity = MAX2(maximum_desired_capacity,
@ -225,7 +237,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/
if (PrintGCDetails && Verbose) { if (PrintGCDetails && Verbose) {
gclog_or_tty->print_cr(" " gclog_or_tty->print_cr(" "
" maximum_free_percentage: %6.2f" " maximum_free_percentage: %6.2f"
@@ -3245,7 +3245,7 @@ void Metaspace::global_initialize() { @@ -3285,7 +3285,7 @@
// on the medium chunk list. The next chunk will be small and progress // on the medium chunk list. The next chunk will be small and progress
// from there. This size calculated by -version. // from there. This size calculated by -version.
_first_class_chunk_word_size = MIN2((size_t)MediumChunk*6, _first_class_chunk_word_size = MIN2((size_t)MediumChunk*6,
@ -234,10 +246,10 @@ diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/
_first_class_chunk_word_size = align_word_size_up(_first_class_chunk_word_size); _first_class_chunk_word_size = align_word_size_up(_first_class_chunk_word_size);
// Arbitrarily set the initial virtual space to a multiple // Arbitrarily set the initial virtual space to a multiple
// of the boot class loader size. // of the boot class loader size.
diff -up jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp.size_t jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp diff --git a/src/share/vm/memory/threadLocalAllocBuffer.cpp b/src/share/vm/memory/threadLocalAllocBuffer.cpp
--- jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp.size_t 2015-05-19 12:16:26.000000000 -0400 --- openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
+++ jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp 2015-06-09 10:21:39.000000000 -0400 +++ openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
@@ -238,13 +238,13 @@ size_t ThreadLocalAllocBuffer::initial_d @@ -238,13 +238,13 @@
size_t init_sz = 0; size_t init_sz = 0;
if (TLABSize > 0) { if (TLABSize > 0) {
@ -254,10 +266,10 @@ diff -up jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp.size_t jdk8
init_sz = align_object_size(init_sz); init_sz = align_object_size(init_sz);
} }
init_sz = MIN2(MAX2(init_sz, min_size()), max_size()); init_sz = MIN2(MAX2(init_sz, min_size()), max_size());
diff -up jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.size_t jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp diff --git a/src/share/vm/oops/objArrayKlass.inline.hpp b/src/share/vm/oops/objArrayKlass.inline.hpp
--- jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.size_t 2015-05-19 12:16:26.000000000 -0400 --- openjdk/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp
+++ jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp 2015-06-09 10:21:39.000000000 -0400 +++ openjdk/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp
@@ -48,7 +48,7 @@ void ObjArrayKlass::objarray_follow_cont @@ -48,7 +48,7 @@
const size_t beg_index = size_t(index); const size_t beg_index = size_t(index);
assert(beg_index < len || len == 0, "index too large"); assert(beg_index < len || len == 0, "index too large");
@ -266,7 +278,7 @@ diff -up jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.size_t jdk8/hot
const size_t end_index = beg_index + stride; const size_t end_index = beg_index + stride;
T* const base = (T*)a->base(); T* const base = (T*)a->base();
T* const beg = base + beg_index; T* const beg = base + beg_index;
@@ -82,7 +82,7 @@ void ObjArrayKlass::objarray_follow_cont @@ -82,7 +82,7 @@
const size_t beg_index = size_t(index); const size_t beg_index = size_t(index);
assert(beg_index < len || len == 0, "index too large"); assert(beg_index < len || len == 0, "index too large");
@ -275,10 +287,10 @@ diff -up jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.size_t jdk8/hot
const size_t end_index = beg_index + stride; const size_t end_index = beg_index + stride;
T* const base = (T*)a->base(); T* const base = (T*)a->base();
T* const beg = base + beg_index; T* const beg = base + beg_index;
diff -up jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t jdk8/hotspot/src/share/vm/runtime/arguments.cpp diff --git a/src/share/vm/runtime/arguments.cpp b/src/share/vm/runtime/arguments.cpp
--- jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t 2015-05-19 12:16:26.000000000 -0400 --- openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+++ jdk8/hotspot/src/share/vm/runtime/arguments.cpp 2015-06-09 10:21:39.000000000 -0400 +++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp
@@ -1277,7 +1277,7 @@ void Arguments::set_cms_and_parnew_gc_fl @@ -1283,7 +1283,7 @@
// NewSize was set on the command line and it is larger than // NewSize was set on the command line and it is larger than
// preferred_max_new_size. // preferred_max_new_size.
if (!FLAG_IS_DEFAULT(NewSize)) { // NewSize explicitly set at command-line if (!FLAG_IS_DEFAULT(NewSize)) { // NewSize explicitly set at command-line
@ -287,7 +299,7 @@ diff -up jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t jdk8/hotspot/src
} else { } else {
FLAG_SET_ERGO(uintx, MaxNewSize, preferred_max_new_size); FLAG_SET_ERGO(uintx, MaxNewSize, preferred_max_new_size);
} }
@@ -1302,8 +1302,8 @@ void Arguments::set_cms_and_parnew_gc_fl @@ -1308,8 +1308,8 @@
// Unless explicitly requested otherwise, make young gen // Unless explicitly requested otherwise, make young gen
// at least min_new, and at most preferred_max_new_size. // at least min_new, and at most preferred_max_new_size.
if (FLAG_IS_DEFAULT(NewSize)) { if (FLAG_IS_DEFAULT(NewSize)) {
@ -298,7 +310,7 @@ diff -up jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t jdk8/hotspot/src
if (PrintGCDetails && Verbose) { if (PrintGCDetails && Verbose) {
// Too early to use gclog_or_tty // Too early to use gclog_or_tty
tty->print_cr("CMS ergo set NewSize: " SIZE_FORMAT, NewSize); tty->print_cr("CMS ergo set NewSize: " SIZE_FORMAT, NewSize);
@@ -1313,7 +1313,7 @@ void Arguments::set_cms_and_parnew_gc_fl @@ -1319,7 +1319,7 @@
// so it's NewRatio x of NewSize. // so it's NewRatio x of NewSize.
if (FLAG_IS_DEFAULT(OldSize)) { if (FLAG_IS_DEFAULT(OldSize)) {
if (max_heap > NewSize) { if (max_heap > NewSize) {
@ -307,15 +319,3 @@ diff -up jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t jdk8/hotspot/src
if (PrintGCDetails && Verbose) { if (PrintGCDetails && Verbose) {
// Too early to use gclog_or_tty // Too early to use gclog_or_tty
tty->print_cr("CMS ergo set OldSize: " SIZE_FORMAT, OldSize); tty->print_cr("CMS ergo set OldSize: " SIZE_FORMAT, OldSize);
diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp
--- jdk8/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp.size_t 2015-06-09 10:35:04.000000000 -0400
+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp 2015-06-09 10:33:21.000000000 -0400
@@ -117,7 +117,7 @@ size_t G1PageBasedVirtualSpace::uncommit
return reserved_size() - committed_size();
}
-size_t G1PageBasedVirtualSpace::addr_to_page_index(char* addr) const {
+uintptr_t G1PageBasedVirtualSpace::addr_to_page_index(char* addr) const {
return (addr - _low_boundary) / _page_size;
}

View File

@ -56,7 +56,7 @@
%ifarch %{jit_arches} %ifarch %{jit_arches}
%global bootstrap_build 1 %global bootstrap_build 1
%else %else
%global bootstrap_build 0 %global bootstrap_build 1
%endif %endif
%if %{bootstrap_build} %if %{bootstrap_build}
@ -168,9 +168,9 @@
# Standard JPackage naming and versioning defines. # Standard JPackage naming and versioning defines.
%global origin openjdk %global origin openjdk
# note, following three variables are sedded from update_sources if used correctly. Hardcode them rather there. # note, following three variables are sedded from update_sources if used correctly. Hardcode them rather there.
%global project aarch64-port %global project openjdk8-forests
%global repo jdk8u %global repo latest-aarch64
%global revision aarch64-jdk8u111-b16 %global revision aarch64-jdk8u121-b14
# eg # jdk8u60-b27 -> jdk8u60 or # aarch64-jdk8u60-b27 -> aarch64-jdk8u60 (dont forget spec escape % by %%) # eg # jdk8u60-b27 -> jdk8u60 or # aarch64-jdk8u60-b27 -> aarch64-jdk8u60 (dont forget spec escape % by %%)
%global whole_update %(VERSION=%{revision}; echo ${VERSION%%-*}) %global whole_update %(VERSION=%{revision}; echo ${VERSION%%-*})
# eg jdk8u60 -> 60 or aarch64-jdk8u60 -> 60 # eg jdk8u60 -> 60 or aarch64-jdk8u60 -> 60
@ -257,7 +257,10 @@ if [ "$1" -gt 1 ]; then
"${sum}" = '5ea976e209d0d0b5b6ab148416123e02' -o \\ "${sum}" = '5ea976e209d0d0b5b6ab148416123e02' -o \\
"${sum}" = '059d61cfbb47e337b011ecda9350db9b' -o \\ "${sum}" = '059d61cfbb47e337b011ecda9350db9b' -o \\
"${sum}" = '59dafb237e5def3ccf8a3ad589fb2777' -o \\ "${sum}" = '59dafb237e5def3ccf8a3ad589fb2777' -o \\
"${sum}" = '5ab4c77cf14fbd7f7ee6f51a7a73d88c' ]; then "${sum}" = '84d16306cd4c2ae76ba81a3775e92cee' -o \\
"${sum}" = '5ab4c77cf14fbd7f7ee6f51a7a73d88c' -o \\
"${sum}" = 'b727442b4ac0e3b8a26ec9741ad463e5' -o \\
"${sum}" = 'a59c6d96aeae1303fb8ba85e97588e9d' ]; then
if [ -f "${javasecurity}.rpmnew" ]; then if [ -f "${javasecurity}.rpmnew" ]; then
mv -f "${javasecurity}.rpmnew" "${javasecurity}" mv -f "${javasecurity}.rpmnew" "${javasecurity}"
fi fi
@ -797,7 +800,7 @@ Obsoletes: java-1.7.0-openjdk-accessibility%1
Name: java-%{javaver}-%{origin} Name: java-%{javaver}-%{origin}
Version: %{javaver}.%{updatever} Version: %{javaver}.%{updatever}
Release: 5.%{buildver}%{?dist} Release: 1.%{buildver}%{?dist}
# java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons, # java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons,
# and this change was brought into RHEL-4. java-1.5.0-ibm packages # and this change was brought into RHEL-4. java-1.5.0-ibm packages
# also included the epoch in their virtual provides. This created a # also included the epoch in their virtual provides. This created a
@ -853,7 +856,7 @@ Source20: repackReproduciblePolycies.sh
Source100: config.guess Source100: config.guess
Source101: config.sub Source101: config.sub
# shenandoah hotpost # shenandoah hotpost
Source999: aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u111-b16.tar.xz Source999: openjdk8-forests-latest-shenandoah-aarch64-shenandoah-jdk8u121-b14.tar.xz
# RPM/distribution specific patches # RPM/distribution specific patches
@ -925,20 +928,6 @@ Patch526: 6260348-pr3066.patch
# S8162384, PR3122, RH1358661: Performance regression: bimorphic inlining may be bypassed by type speculation # S8162384, PR3122, RH1358661: Performance regression: bimorphic inlining may be bypassed by type speculation
Patch532: 8162384-pr3122-rh1358661.patch Patch532: 8162384-pr3122-rh1358661.patch
# Patches upstream and appearing in 8u111
# S8159244, PR3074: Partially initialized string object created by C2's string concat optimization may escape
Patch527: 8159244-pr3074.patch
# Patches upstream and appearing in 8u112
# S8044762, PR2960: com/sun/jdi/OptionTest.java test time out
Patch521: 8044762-pr2960.patch
# S8049226, PR2960: com/sun/jdi/OptionTest.java test times out again
Patch522: 8049226-pr2960.patch
# 8154210: Zero: Better byte behaviour
Patch606: 8154210.patch
# S8158260, PR2991, RH1341258: JVM on PPC64 LE crashes due to an illegal instruction in JITed code
Patch524: 8158260-pr2991-rh1341258.patch
# Patches ineligible for 8u # Patches ineligible for 8u
# 8043805: Allow using a system-installed libjpeg # 8043805: Allow using a system-installed libjpeg
Patch201: system-libjpeg.patch Patch201: system-libjpeg.patch
@ -1260,10 +1249,8 @@ sh %{SOURCE12}
%patch103 %patch103
# ppc64le fixes # ppc64le fixes
%patch524
# Zero fixes. # Zero fixes.
%patch606
%patch603 %patch603
%patch601 %patch601
@ -1284,12 +1271,9 @@ sh %{SOURCE12}
%patch517 %patch517
%patch518 %patch518
%patch400 %patch400
%patch521
%patch522
%patch523 %patch523
%patch525 %patch525
%patch526 %patch526
%patch527
%patch528 %patch528
%patch532 %patch532
%patch533 %patch533
@ -1936,6 +1920,21 @@ require "copy_jdk_configs.lua"
%endif %endif
%changelog %changelog
* Tue Jan 24 2017 jvanek <jvanek@redhat.com> - 1:1.8.0.121-1.b14
- updated to aarch64-jdk8u121-b14 (from openjdk8-forests/latest-aarch64)
- updated to aarch64-shenandoah-jdk8u121-b14 (from openjdk8-forests/latest-shenandoah) of hotspot
- used openjdk8-forests-latest-aarch64-aarch64-jdk8u121-b14.tar.xz as new sources
- used openjdk8-forests-latest-shenandoah-aarch64-shenandoah-jdk8u121-b14.tar.xz as new sources for hotspot
- deleted: 8044762-pr2960.patch 8049226-pr2960.patch 8154210.patch 8158260-pr2991-rh1341258.patch 8159244-pr3074.patch
- adapted java-1.8.0-openjdk-size_t.patch pr1834-rh1022017.patch rh1163501.patch
- updated from internal (rhel) repo OPENJDK_URL_DEFAULT=ssh://t...redhat.com//...ty/
- with custom PR2126=/.../pr2126.patch (removed newly added brainpool curves)
- withspecial values of PROJECT_NAME="openjdk8-forests", REPO_NAME="latest-aarch64"
- with correct tag VERSION="aarch64-jdk8u121-b14"
- and for shenandoah hotspot used custom repo REPO_NAME=latest-shenandoah
- with correct tag VERSION="aarch64-shenandoah-jdk8u121-b14"
- complete changes to generate_source_tarball.sh update_package.sh NOT commited (willbe regenerated from official repos soon)
* Mon Jan 09 2017 jvanek <jvanek@redhat.com - 1:1.8.0.111-5.b16 * Mon Jan 09 2017 jvanek <jvanek@redhat.com - 1:1.8.0.111-5.b16
- Added arched dependencies to headless/main package - Added arched dependencies to headless/main package

View File

@ -1,44 +1,28 @@
diff -r a5c3d9643077 src/share/classes/sun/security/ssl/SupportedEllipticCurvesExtension.java diff --git a/src/share/classes/sun/security/ssl/SupportedEllipticCurvesExtension.java b/src/share/classes/sun/security/ssl/SupportedEllipticCurvesExtension.java
--- openjdk/jdk/src/share/classes/sun/security/ssl/SupportedEllipticCurvesExtension.java Tue Feb 10 16:24:28 2015 +0000 --- openjdk/jdk/src/share/classes/sun/security/ssl/SupportedEllipticCurvesExtension.java
+++ openjdk/jdk/src/share/classes/sun/security/ssl/SupportedEllipticCurvesExtension.java Thu May 14 04:01:02 2015 +0100 +++ openjdk/jdk/src/share/classes/sun/security/ssl/SupportedEllipticCurvesExtension.java
@@ -37,25 +37,11 @@ @@ -160,20 +160,10 @@
// the extension value to send in the ClientHello message }
static final SupportedEllipticCurvesExtension DEFAULT; }
} else { // default curves
- private static final boolean fips; - int[] ids;
- - if (requireFips) {
static { - ids = new int[] {
- int[] ids; - // only NIST curves in FIPS mode
- fips = SunJSSE.isFIPS(); - 23, 24, 25, 9, 10, 11, 12, 13, 14,
- if (fips == false) { - };
- ids = new int[] { - } else {
- // NIST curves first - ids = new int[] {
- // prefer NIST P-256, rest in order of increasing key length - // NIST curves first
- 23, 1, 3, 19, 21, 6, 7, 9, 10, 24, 11, 12, 25, 13, 14, - 23, 24, 25, 9, 10, 11, 12, 13, 14,
- // non-NIST curves - // non-NIST curves
- 15, 16, 17, 2, 18, 4, 5, 20, 8, 22, - 22,
- }; - };
- } else { - }
- ids = new int[] { + int[] ids = new int[] {
- // same as above, but allow only NIST curves in FIPS mode + // NSS currently only supports these three NIST curves
- 23, 1, 3, 19, 21, 6, 7, 9, 10, 24, 11, 12, 25, 13, 14, + 23, 24, 25
- }; + };
- }
+ int[] ids = new int[] {
+ // NSS currently only supports these three NIST curves
+ 23, 24, 25
+ };
DEFAULT = new SupportedEllipticCurvesExtension(ids);
}
@@ -150,10 +136,6 @@
if ((index <= 0) || (index >= NAMED_CURVE_OID_TABLE.length)) {
return false;
}
- if (fips == false) {
- // in non-FIPS mode, we support all valid indices
- return true;
- }
return DEFAULT.contains(index);
}
idList = new ArrayList<>(ids.length);
for (int curveId : ids) {

View File

@ -1,65 +1,54 @@
--- jdk8/jdk/src/share/classes/com/sun/crypto/provider/DHKeyPairGenerator.java Tue Mar 17 00:09:12 2015 +0300 diff --git a/src/share/classes/com/sun/crypto/provider/DHKeyPairGenerator.java b/src/share/classes/com/sun/crypto/provider/DHKeyPairGenerator.java
+++ jdk8/jdk/src/share/classes/com/sun/crypto/provider/DHKeyPairGenerator.java Wed Apr 08 14:25:54 2015 +0100 --- openjdk/jdk/src/share/classes/com/sun/crypto/provider/DHKeyPairGenerator.java
@@ -1,5 +1,6 @@ +++ openjdk/jdk/src/share/classes/com/sun/crypto/provider/DHKeyPairGenerator.java
@@ -1,5 +1,6 @@
/* /*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014 Red Hat Inc. + * Copyright (c) 2014 Red Hat Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@@ -80,10 +81,10 @@ @@ -74,10 +75,10 @@
* @param random the source of randomness
*/
public void initialize(int keysize, SecureRandom random) {
- if ((keysize < 512) || (keysize > 2048) || (keysize % 64 != 0)) {
+ if ((keysize < 512) || (keysize > 4096) || (keysize % 64 != 0)) {
throw new InvalidParameterException("Keysize must be multiple "
+ "of 64, and can only range "
- + "from 512 to 2048 "
+ + "from 512 to 4096 "
+ "(inclusive)");
}
this.pSize = keysize;
@@ -115,11 +116,11 @@
params = (DHParameterSpec)algParams;
pSize = params.getP().bitLength();
- if ((pSize < 512) || (pSize > 2048) ||
+ if ((pSize < 512) || (pSize > 4096) ||
(pSize % 64 != 0)) {
throw new InvalidAlgorithmParameterException
("Prime size must be multiple of 64, and can only range "
- + "from 512 to 2048 (inclusive)");
+ + "from 512 to 4096 (inclusive)");
}
// exponent size is optional, could be 0
--- jdk8/jdk/src/share/classes/com/sun/crypto/provider/DHParameterGenerator.java Tue Mar 17 00:09:12 2015 +0300
+++ jdk8/jdk/src/share/classes/com/sun/crypto/provider/DHParameterGenerator.java Wed Apr 08 14:25:54 2015 +0100
@@ -1,5 +1,6 @@
/*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014 Red Hat Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -60,11 +61,11 @@
private static void checkKeySize(int keysize) private static void checkKeySize(int keysize)
throws InvalidAlgorithmParameterException { throws InvalidParameterException {
- if ((keysize != 2048) &&
+ if ((keysize != 2048) && (keysize != 4096) && - if ((keysize < 512) || (keysize > 2048) || ((keysize & 0x3F) != 0)) {
((keysize < 512) || (keysize > 1024) || (keysize % 64 != 0))) { + if ((keysize < 512) || (keysize > 4096) || ((keysize & 0x3F) != 0)) {
throw new InvalidAlgorithmParameterException( throw new InvalidParameterException(
"Keysize must be multiple of 64 ranging from " "DH key size must be multiple of 64, and can only range " +
- + "512 to 1024 (inclusive), or 2048"); - "from 512 to 2048 (inclusive). " +
+ + "512 to 1024 (inclusive), or 2048, or 4096"); + "from 512 to 4096 (inclusive). " +
"The specific key size " + keysize + " is not supported");
} }
} }
diff --git a/src/share/classes/com/sun/crypto/provider/DHParameterGenerator.java b/src/share/classes/com/sun/crypto/provider/DHParameterGenerator.java
--- openjdk/jdk/src/share/classes/com/sun/crypto/provider/DHParameterGenerator.java
+++ openjdk/jdk/src/share/classes/com/sun/crypto/provider/DHParameterGenerator.java
@@ -1,5 +1,6 @@
/*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014 Red Hat Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -60,11 +61,11 @@
--- jdk8/jdk/src/share/classes/sun/security/pkcs11/P11KeyPairGenerator.java Tue Mar 17 00:09:12 2015 +0300 private static void checkKeySize(int keysize)
+++ jdk8/jdk/src/share/classes/sun/security/pkcs11/P11KeyPairGenerator.java Wed Apr 08 14:25:54 2015 +0100 throws InvalidParameterException {
@@ -278,11 +278,11 @@ - if ((keysize != 2048) &&
+ if ((keysize != 2048) && (keysize != 4096) &&
((keysize < 512) || (keysize > 1024) || (keysize % 64 != 0))) {
throw new InvalidParameterException(
"DH key size must be multiple of 64 and range " +
- "from 512 to 1024 (inclusive), or 2048. " +
+ "from 512 to 1024 (inclusive), or 2048, or 4096. " +
"The specific key size " + keysize + " is not supported");
}
}
diff --git a/src/share/classes/sun/security/pkcs11/P11KeyPairGenerator.java b/src/share/classes/sun/security/pkcs11/P11KeyPairGenerator.java
--- openjdk/jdk/src/share/classes/sun/security/pkcs11/P11KeyPairGenerator.java
+++ openjdk/jdk/src/share/classes/sun/security/pkcs11/P11KeyPairGenerator.java
@@ -285,11 +285,11 @@
// this restriction is in the spec for DSA // this restriction is in the spec for DSA
// since we currently use DSA parameters for DH as well, // since we currently use DSA parameters for DH as well,
// it also applies to DH if no parameters are specified // it also applies to DH if no parameters are specified
@ -68,21 +57,22 @@
((keySize > 1024) || ((keySize & 0x3f) != 0))) { ((keySize > 1024) || ((keySize & 0x3f) != 0))) {
throw new InvalidAlgorithmParameterException(algorithm + throw new InvalidAlgorithmParameterException(algorithm +
" key must be multiples of 64 if less than 1024 bits" + " key must be multiples of 64 if less than 1024 bits" +
- ", or 2048 bits"); - ", or 2048 bits. " +
+ ", or 2048 bits, or 4096 bits"); + ", or 2048 bits, or 4096 bits. " +
"The specific key size " +
keySize + " is not supported");
} }
} diff --git a/test/com/sun/crypto/provider/KeyAgreement/TestExponentSize.java b/test/com/sun/crypto/provider/KeyAgreement/TestExponentSize.java
} --- openjdk/jdk/test/com/sun/crypto/provider/KeyAgreement/TestExponentSize.java
--- jdk8/jdk/test/com/sun/crypto/provider/KeyAgreement/TestExponentSize.java Tue Mar 17 00:09:12 2015 +0300 +++ openjdk/jdk/test/com/sun/crypto/provider/KeyAgreement/TestExponentSize.java
+++ jdk8/jdk/test/com/sun/crypto/provider/KeyAgreement/TestExponentSize.java Wed Apr 08 14:25:54 2015 +0100 @@ -1,5 +1,6 @@
@@ -1,5 +1,6 @@
/* /*
* Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014 Red Hat Inc. + * Copyright (c) 2014 Red Hat Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@@ -58,7 +59,7 @@ @@ -58,7 +59,7 @@
*/ */
private enum Sizes { private enum Sizes {
two56(256), three84(384), five12(512), seven68(768), ten24(1024), two56(256), three84(384), five12(512), seven68(768), ten24(1024),
@ -91,7 +81,7 @@
private final int intSize; private final int intSize;
private final BigInteger bigIntValue; private final BigInteger bigIntValue;
@@ -130,6 +131,19 @@ @@ -130,6 +131,19 @@
kp = kpg.generateKeyPair(); kp = kpg.generateKeyPair();
checkKeyPair(kp, Sizes.twenty48, Sizes.five12); checkKeyPair(kp, Sizes.twenty48, Sizes.five12);
@ -111,4 +101,3 @@
System.out.println("OK"); System.out.println("OK");
} }

View File

@ -1,3 +1,3 @@
822e321b710defc8f9c8ec97a6f34b55 systemtap-tapset-3.1.0.tar.xz SHA512 (systemtap-tapset-3.1.0.tar.xz) = e3558dc9d56dff5125a869807135e84ca73a2640d8d8fff2f45dc0dd7d153b81b48c08480e09a75667eba62362f74091465fac622aa0d9b104bfb18b4eba80e1
f33dff82e5c0d33d81d8100576b612eb aarch64-port-jdk8u-aarch64-jdk8u111-b16.tar.xz SHA512 (openjdk8-forests-latest-aarch64-aarch64-jdk8u121-b14.tar.xz) = 8a5418c0560736d3450bbb4f3a0b19d028713f39634630d4e3689c664f25e2dbe9473c3657d5e02c5c614a37dce3cfb9db93a449f5f7f0294dec748514b67dc8
dcb3a75964f52a50bb32b2179132724f aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u111-b16.tar.xz SHA512 (openjdk8-forests-latest-shenandoah-aarch64-shenandoah-jdk8u121-b14.tar.xz) = 1b7e9a598fb43c96599393fbe712056e8031ddd985d9abe5e4ffdaa309a9b43659da29f9d9294cd0dab8cbb1d19fc8149c49fee6e81fced120c18d59f015ce81

View File

@ -24,7 +24,7 @@ if [ "x$REPO_NAME" = "x" ] ; then
REPO_NAME="jdk8u" REPO_NAME="jdk8u"
fi fi
if [ "x$VERSION" = "x" ] ; then if [ "x$VERSION" = "x" ] ; then
VERSION="aarch64-jdk8u111-b16" VERSION="aarch64-jdk8u121-b14"
fi fi
if [ "x$COMPRESSION" = "x" ] ; then if [ "x$COMPRESSION" = "x" ] ; then
@ -102,7 +102,7 @@ if [ "x$VERSION" = "xtip" ] ; then
VERSION="tip" VERSION="tip"
else else
#hardcoding version for anything else except tip #hardcoding version for anything else except tip
VERSION="aarch64-shenandoah-jdk8u111-b16" VERSION="aarch64-shenandoah-jdk8u121-b14"
fi fi
MAIN_REPO_NAME=$REPO_NAME MAIN_REPO_NAME=$REPO_NAME
REPO_NAME=jdk8u-shenandoah REPO_NAME=jdk8u-shenandoah