--- a/.hgtags-top-repo Thu Dec 04 11:10:17 2008 -0800
+++ b/.hgtags-top-repo Wed Jul 05 16:44:31 2017 +0200
@@ -15,3 +15,4 @@
cc47a76899ed33a2c513cb688348244c9b5a1288 jdk7-b38
ab523b49de1fc73fefe6855ce1e0349bdbd7af29 jdk7-b39
44be42de6693063fb191989bf0e188de2fa51e7c jdk7-b40
+541bdc5ad32fc33255944d0a044ad992f3d915e8 jdk7-b41
--- a/README-builds.html Thu Dec 04 11:10:17 2008 -0800
+++ b/README-builds.html Wed Jul 05 16:44:31 2017 +0200
@@ -839,7 +839,7 @@
<blockquote>
All OpenJDK builds require access to least Ant 1.6.5.
The Ant tool is available from the
- <a href="http://ant.apache.org/antlibs/bindownload.cgi" target="_blank">
+ <a href="http://ant.apache.org" target="_blank">
Ant download site</a>.
You should always make sure <tt>ant</tt> is in your PATH, and
on Windows you may also need to set
--- a/corba/.hgtags Thu Dec 04 11:10:17 2008 -0800
+++ b/corba/.hgtags Wed Jul 05 16:44:31 2017 +0200
@@ -15,3 +15,4 @@
08be802754b0296c91a7713b6d85a015dbcd5349 jdk7-b38
55078b6661e286e90387d1d9950bd865f5cc436e jdk7-b39
184e21992f47a8d730df1adc5b21a108f3125489 jdk7-b40
+c90eeda9594ed2983403e2049aed8d503126c62e jdk7-b41
--- a/corba/make/common/Defs-windows.gmk Thu Dec 04 11:10:17 2008 -0800
+++ b/corba/make/common/Defs-windows.gmk Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved.
+# Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/corba/make/common/shared/Compiler-msvc.gmk Thu Dec 04 11:10:17 2008 -0800
+++ b/corba/make/common/shared/Compiler-msvc.gmk Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
+# Copyright 2005-2008 Sun Microsystems, Inc. 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
--- a/hotspot/.hgtags Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/.hgtags Wed Jul 05 16:44:31 2017 +0200
@@ -15,3 +15,4 @@
d9bc824aa078573829bb66572af847e26e1bd12e jdk7-b38
49ca90d77f34571b0757ebfcb8a7848ef2696b88 jdk7-b39
81a0cbe3b28460ce836109934ece03db7afaf9cc jdk7-b40
+f9d938ede1960d18cb7cf23c645b026519c1a678 jdk7-b41
--- a/hotspot/make/hotspot_version Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/make/hotspot_version Wed Jul 05 16:44:31 2017 +0200
@@ -35,7 +35,7 @@
HS_MAJOR_VER=14
HS_MINOR_VER=0
-HS_BUILD_NUMBER=08
+HS_BUILD_NUMBER=09
JDK_MAJOR_VER=1
JDK_MINOR_VER=7
--- a/hotspot/make/windows/build.make Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/make/windows/build.make Wed Jul 05 16:44:31 2017 +0200
@@ -200,29 +200,6 @@
checkSA::
@echo Not building SA: ARCH = ia64
-!elseif exist("$(MSVCDIR)\PlatformSDK\Include\dbgeng.h")
-# These don't have to be set because the default
-# setting of INCLUDE and LIB already contain the needed dirs.
-SA_INCLUDE =
-SA_LIB =
-
-!elseif exist("$(SYSTEMROOT)\..\Program Files\Microsoft SDK\include\dbgeng.h")
-# These don't have to be set because the default
-# setting of INCLUDE and LIB already contain the needed dirs.
-SA_INCLUDE =
-SA_LIB =
-
-!else
-checkSA::
- @echo .
- @echo ERROR: Can't build SA because dbgeng.h does not exist here:
- @echo $(MSVCDIR)\PlatformSDK\Include\dbgeng.h
- @echo nor here:
- @echo $(SYSTEMROOT)\..\Program Files\Microsoft SDK\include\dbgeng.h
- @echo You must use Vis. Studio .Net 2003 on Win 32, and you must
- @echo have the Microsoft SDK installed on Win amd64.
- @echo You can disable building of SA by specifying BUILD_WIN_SA = 0
- @echo . && false
!endif # ! "$(BUILD_WIN_SA)" != "1"
#########################################################################
--- a/hotspot/make/windows/makefiles/defs.make Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/make/windows/makefiles/defs.make Wed Jul 05 16:44:31 2017 +0200
@@ -119,7 +119,7 @@
# we want to release it. If we build it here,
# the SDK makefiles will copy it over and put it into
# the created image.
-BUILD_WIN_SA = 0
+BUILD_WIN_SA = 1
ifneq ($(ALT_BUILD_WIN_SA),)
BUILD_WIN_SA = $(ALT_BUILD_WIN_SA)
endif
--- a/hotspot/make/windows/makefiles/sa.make Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/make/windows/makefiles/sa.make Wed Jul 05 16:44:31 2017 +0200
@@ -49,6 +49,9 @@
default:: $(GENERATED)\sa-jdi.jar
+# Remove the space between $(SA_BUILD_VERSION_PROP) and > below as it adds a white space
+# at the end of SA version string and causes a version mismatch with the target VM version.
+
$(GENERATED)\sa-jdi.jar: $(AGENT_FILES1:/=\) $(AGENT_FILES2:/=\)
@if not exist $(SA_CLASSDIR) mkdir $(SA_CLASSDIR)
@echo ...Building sa-jdi.jar
@@ -56,15 +59,15 @@
@$(COMPILE_JAVAC) -source 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES1:/=\)
@$(COMPILE_JAVAC) -source 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES2:/=\)
$(COMPILE_RMIC) -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer
- $(QUIETLY) echo $(SA_BUILD_VERSION_PROP) > $(SA_PROPERTIES)
- $(RUN_JAR) cf $@ -C saclasses .
- $(RUN_JAR) uf $@ -C $(AGENT_SRC_DIR:/=\) META-INF\services\com.sun.jdi.connect.Connector
+ $(QUIETLY) echo $(SA_BUILD_VERSION_PROP)> $(SA_PROPERTIES)
$(QUIETLY) rm -f $(SA_CLASSDIR)/sun/jvm/hotspot/utilities/soql/sa.js
$(QUIETLY) cp $(AGENT_SRC_DIR)/sun/jvm/hotspot/utilities/soql/sa.js $(SA_CLASSDIR)/sun/jvm/hotspot/utilities/soql
- $(QUIETLY) mkdir -p $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources
- $(QUIETLY) rm -f $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources/*
- $(QUIETLY) cp $(AGENT_SRC_DIR)/sun/jvm/hotspot/ui/resources/*.png $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources/
- $(QUIETLY) cp -r $(AGENT_SRC_DIR)/images/* $(SA_CLASSDIR)/
+ $(QUIETLY) rm -rf $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources
+ $(QUIETLY) mkdir $(SA_CLASSDIR)\sun\jvm\hotspot\ui\resources
+ $(QUIETLY) cp $(AGENT_SRC_DIR)/sun/jvm/hotspot/ui/resources/*.png $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources
+ $(QUIETLY) cp -r $(AGENT_SRC_DIR)/images/* $(SA_CLASSDIR)
+ $(RUN_JAR) cf $@ -C saclasses .
+ $(RUN_JAR) uf $@ -C $(AGENT_SRC_DIR:/=\) META-INF\services\com.sun.jdi.connect.Connector
$(RUN_JAVAH) -classpath $(SA_CLASSDIR) -jni sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal
$(RUN_JAVAH) -classpath $(SA_CLASSDIR) -jni sun.jvm.hotspot.debugger.x86.X86ThreadContext
$(RUN_JAVAH) -classpath $(SA_CLASSDIR) -jni sun.jvm.hotspot.debugger.ia64.IA64ThreadContext
@@ -93,7 +96,7 @@
SA_CFLAGS = /nologo $(MS_RUNTIME_OPTION) /W3 /Gm $(GX_OPTION) /ZI /Od /D "WIN32" /D "_WINDOWS" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
!endif
!if "$(MT)" != ""
- SA_LINK_FLAGS = /manifest $(SA_LINK_FLAGS)
+SA_LINK_FLAGS = /manifest $(SA_LINK_FLAGS)
!endif
SASRCFILE = $(AGENT_DIR)/src/os/win32/windbg/sawindbg.cpp
SA_LFLAGS = $(SA_LINK_FLAGS) /nologo /subsystem:console /map /debug /machine:$(MACHINE)
--- a/hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -2085,7 +2085,7 @@
} else {
if (has_tos) {
// save object pointer before call_VM() clobbers it
- __ mov(Otos_i, Lscratch);
+ __ push_ptr(Otos_i); // put object on tos where GC wants it.
} else {
// Load top of stack (do not pop the value off the stack);
__ ld_ptr(Lesp, Interpreter::expr_offset_in_bytes(0), Otos_i);
@@ -2097,7 +2097,7 @@
__ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::post_field_access),
Otos_i, Rcache);
if (!is_static && has_tos) {
- __ mov(Lscratch, Otos_i); // restore object pointer
+ __ pop_ptr(Otos_i); // restore object pointer
__ verify_oop(Otos_i);
}
__ get_cache_and_index_at_bcp(Rcache, index, 1);
--- a/hotspot/src/cpu/x86/vm/vm_version_x86_32.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/cpu/x86/vm/vm_version_x86_32.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/cpu/x86/vm/vm_version_x86_64.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/cpu/x86/vm/vm_version_x86_64.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/os/linux/launcher/java.c Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/os/linux/launcher/java.c Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/os/linux/launcher/java.h Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/os/linux/launcher/java.h Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/os/linux/launcher/java_md.c Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/os/linux/launcher/java_md.c Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/os/linux/vm/globals_linux.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/os/linux/vm/globals_linux.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/os/linux/vm/os_linux.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/os/linux/vm/os_linux.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -2272,7 +2272,9 @@
uncommit_memory(addr, bytes);
}
-void os::numa_make_global(char *addr, size_t bytes) { }
+void os::numa_make_global(char *addr, size_t bytes) {
+ Linux::numa_interleave_memory(addr, bytes);
+}
void os::numa_make_local(char *addr, size_t bytes, int lgrp_hint) {
Linux::numa_tonode_memory(addr, bytes, lgrp_hint);
@@ -2314,7 +2316,7 @@
extern "C" void numa_warn(int number, char *where, ...) { }
extern "C" void numa_error(char *where) { }
-void os::Linux::libnuma_init() {
+bool os::Linux::libnuma_init() {
// sched_getcpu() should be in libc.
set_sched_getcpu(CAST_TO_FN_PTR(sched_getcpu_func_t,
dlsym(RTLD_DEFAULT, "sched_getcpu")));
@@ -2330,31 +2332,51 @@
dlsym(handle, "numa_available")));
set_numa_tonode_memory(CAST_TO_FN_PTR(numa_tonode_memory_func_t,
dlsym(handle, "numa_tonode_memory")));
+ set_numa_interleave_memory(CAST_TO_FN_PTR(numa_interleave_memory_func_t,
+ dlsym(handle, "numa_interleave_memory")));
+
+
if (numa_available() != -1) {
+ set_numa_all_nodes((unsigned long*)dlsym(handle, "numa_all_nodes"));
// Create a cpu -> node mapping
_cpu_to_node = new (ResourceObj::C_HEAP) GrowableArray<int>(0, true);
rebuild_cpu_to_node_map();
+ return true;
}
}
}
+ return false;
}
// rebuild_cpu_to_node_map() constructs a table mapping cpud id to node id.
// The table is later used in get_node_by_cpu().
void os::Linux::rebuild_cpu_to_node_map() {
- int cpu_num = os::active_processor_count();
+ const size_t NCPUS = 32768; // Since the buffer size computation is very obscure
+ // in libnuma (possible values are starting from 16,
+ // and continuing up with every other power of 2, but less
+ // than the maximum number of CPUs supported by kernel), and
+ // is a subject to change (in libnuma version 2 the requirements
+ // are more reasonable) we'll just hardcode the number they use
+ // in the library.
+ const size_t BitsPerCLong = sizeof(long) * CHAR_BIT;
+
+ size_t cpu_num = os::active_processor_count();
+ size_t cpu_map_size = NCPUS / BitsPerCLong;
+ size_t cpu_map_valid_size =
+ MIN2((cpu_num + BitsPerCLong - 1) / BitsPerCLong, cpu_map_size);
+
cpu_to_node()->clear();
cpu_to_node()->at_grow(cpu_num - 1);
- int node_num = numa_get_groups_num();
- int cpu_map_size = (cpu_num + BitsPerLong - 1) / BitsPerLong;
+ size_t node_num = numa_get_groups_num();
+
unsigned long *cpu_map = NEW_C_HEAP_ARRAY(unsigned long, cpu_map_size);
- for (int i = 0; i < node_num; i++) {
+ for (size_t i = 0; i < node_num; i++) {
if (numa_node_to_cpus(i, cpu_map, cpu_map_size * sizeof(unsigned long)) != -1) {
- for (int j = 0; j < cpu_map_size; j++) {
+ for (size_t j = 0; j < cpu_map_valid_size; j++) {
if (cpu_map[j] != 0) {
- for (int k = 0; k < BitsPerLong; k++) {
+ for (size_t k = 0; k < BitsPerCLong; k++) {
if (cpu_map[j] & (1UL << k)) {
- cpu_to_node()->at_put(j * BitsPerLong + k, i);
+ cpu_to_node()->at_put(j * BitsPerCLong + k, i);
}
}
}
@@ -2377,7 +2399,8 @@
os::Linux::numa_max_node_func_t os::Linux::_numa_max_node;
os::Linux::numa_available_func_t os::Linux::_numa_available;
os::Linux::numa_tonode_memory_func_t os::Linux::_numa_tonode_memory;
-
+os::Linux::numa_interleave_memory_func_t os::Linux::_numa_interleave_memory;
+unsigned long* os::Linux::_numa_all_nodes;
bool os::uncommit_memory(char* addr, size_t size) {
return ::mmap(addr, size,
@@ -3695,7 +3718,17 @@
}
if (UseNUMA) {
- Linux::libnuma_init();
+ if (!Linux::libnuma_init()) {
+ UseNUMA = false;
+ } else {
+ if ((Linux::numa_max_node() < 1)) {
+ // There's only one node(they start from 0), disable NUMA.
+ UseNUMA = false;
+ }
+ }
+ if (!UseNUMA && ForceNUMA) {
+ UseNUMA = true;
+ }
}
if (MaxFDLimit) {
--- a/hotspot/src/os/linux/vm/os_linux.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/os/linux/vm/os_linux.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -146,7 +146,7 @@
static bool is_floating_stack() { return _is_floating_stack; }
static void libpthread_init();
- static void libnuma_init();
+ static bool libnuma_init();
// Minimum stack size a thread can be created with (allowing
// the VM to completely create the thread and enter user code)
@@ -240,20 +240,23 @@
typedef int (*numa_max_node_func_t)(void);
typedef int (*numa_available_func_t)(void);
typedef int (*numa_tonode_memory_func_t)(void *start, size_t size, int node);
-
+ typedef void (*numa_interleave_memory_func_t)(void *start, size_t size, unsigned long *nodemask);
static sched_getcpu_func_t _sched_getcpu;
static numa_node_to_cpus_func_t _numa_node_to_cpus;
static numa_max_node_func_t _numa_max_node;
static numa_available_func_t _numa_available;
static numa_tonode_memory_func_t _numa_tonode_memory;
+ static numa_interleave_memory_func_t _numa_interleave_memory;
+ static unsigned long* _numa_all_nodes;
static void set_sched_getcpu(sched_getcpu_func_t func) { _sched_getcpu = func; }
static void set_numa_node_to_cpus(numa_node_to_cpus_func_t func) { _numa_node_to_cpus = func; }
static void set_numa_max_node(numa_max_node_func_t func) { _numa_max_node = func; }
static void set_numa_available(numa_available_func_t func) { _numa_available = func; }
static void set_numa_tonode_memory(numa_tonode_memory_func_t func) { _numa_tonode_memory = func; }
-
+ static void set_numa_interleave_memory(numa_interleave_memory_func_t func) { _numa_interleave_memory = func; }
+ static void set_numa_all_nodes(unsigned long* ptr) { _numa_all_nodes = ptr; }
public:
static int sched_getcpu() { return _sched_getcpu != NULL ? _sched_getcpu() : -1; }
static int numa_node_to_cpus(int node, unsigned long *buffer, int bufferlen) {
@@ -264,6 +267,11 @@
static int numa_tonode_memory(void *start, size_t size, int node) {
return _numa_tonode_memory != NULL ? _numa_tonode_memory(start, size, node) : -1;
}
+ static void numa_interleave_memory(void *start, size_t size) {
+ if (_numa_interleave_memory != NULL && _numa_all_nodes != NULL) {
+ _numa_interleave_memory(start, size, _numa_all_nodes);
+ }
+ }
static int get_node_by_cpu(int cpu_id);
};
--- a/hotspot/src/os/solaris/launcher/java.c Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/os/solaris/launcher/java.c Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/os/solaris/launcher/java.h Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/os/solaris/launcher/java.h Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/os/solaris/launcher/java_md.c Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/os/solaris/launcher/java_md.c Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/os/solaris/vm/globals_solaris.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/os/solaris/vm/globals_solaris.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/os/solaris/vm/os_solaris.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/os/solaris/vm/os_solaris.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -4638,7 +4638,7 @@
}
}
-void os::Solaris::liblgrp_init() {
+bool os::Solaris::liblgrp_init() {
void *handle = dlopen("liblgrp.so.1", RTLD_LAZY);
if (handle != NULL) {
os::Solaris::set_lgrp_home(CAST_TO_FN_PTR(lgrp_home_func_t, dlsym(handle, "lgrp_home")));
@@ -4653,9 +4653,9 @@
lgrp_cookie_t c = lgrp_init(LGRP_VIEW_CALLER);
set_lgrp_cookie(c);
- } else {
- warning("your OS does not support NUMA");
- }
+ return true;
+ }
+ return false;
}
void os::Solaris::misc_sym_init() {
@@ -4824,9 +4824,25 @@
vm_page_size()));
Solaris::libthread_init();
+
if (UseNUMA) {
- Solaris::liblgrp_init();
- }
+ if (!Solaris::liblgrp_init()) {
+ UseNUMA = false;
+ } else {
+ size_t lgrp_limit = os::numa_get_groups_num();
+ int *lgrp_ids = NEW_C_HEAP_ARRAY(int, lgrp_limit);
+ size_t lgrp_num = os::numa_get_leaf_groups(lgrp_ids, lgrp_limit);
+ FREE_C_HEAP_ARRAY(int, lgrp_ids);
+ if (lgrp_num < 2) {
+ // There's only one locality group, disable NUMA.
+ UseNUMA = false;
+ }
+ }
+ if (!UseNUMA && ForceNUMA) {
+ UseNUMA = true;
+ }
+ }
+
Solaris::misc_sym_init();
Solaris::signal_sets_init();
Solaris::init_signal_mem();
--- a/hotspot/src/os/solaris/vm/os_solaris.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/os/solaris/vm/os_solaris.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -176,7 +176,7 @@
public:
static void libthread_init();
static void synchronization_init();
- static void liblgrp_init();
+ static bool liblgrp_init();
// Load miscellaneous symbols.
static void misc_sym_init();
// This boolean allows users to forward their own non-matching signals
--- a/hotspot/src/os/windows/vm/globals_windows.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/os/windows/vm/globals_windows.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/os/windows/vm/os_windows.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/os/windows/vm/os_windows.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -2217,15 +2217,10 @@
// We only expect null pointers in the stubs (vtable)
// the rest are checked explicitly now.
//
- CodeBlob* cb = CodeCache::find_blob(pc);
- if (cb != NULL) {
- if (VtableStubs::stub_containing(pc) != NULL) {
- if (((uintptr_t)addr) < os::vm_page_size() ) {
- // an access to the first page of VM--assume it is a null pointer
- return Handle_Exception(exceptionInfo,
- SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL));
- }
- }
+ if (((uintptr_t)addr) < os::vm_page_size() ) {
+ // an access to the first page of VM--assume it is a null pointer
+ address stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL);
+ if (stub != NULL) return Handle_Exception(exceptionInfo, stub);
}
}
} // in_java
@@ -2241,9 +2236,8 @@
// Windows 98 reports faulting addresses incorrectly
if (!MacroAssembler::needs_explicit_null_check((intptr_t)addr) ||
!os::win32::is_nt()) {
-
- return Handle_Exception(exceptionInfo,
- SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL));
+ address stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL);
+ if (stub != NULL) return Handle_Exception(exceptionInfo, stub);
}
report_error(t, exception_code, pc, exceptionInfo->ExceptionRecord,
exceptionInfo->ContextRecord);
@@ -3353,6 +3347,10 @@
// initialize thread priority policy
prio_init();
+ if (UseNUMA && !ForceNUMA) {
+ UseNUMA = false; // Currently unsupported.
+ }
+
return JNI_OK;
}
--- a/hotspot/src/os/windows/vm/os_windows.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/os/windows/vm/os_windows.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/os_cpu/linux_x86/vm/linux_x86_32.ad Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/os_cpu/linux_x86/vm/linux_x86_32.ad Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
//
-// Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+// Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/serialization/XMLWriter.java Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/serialization/XMLWriter.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/tools/IdealGraphVisualizer/Difference/src/com/sun/hotspot/igv/difference/Difference.java Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/tools/IdealGraphVisualizer/Difference/src/com/sun/hotspot/igv/difference/Difference.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/tools/IdealGraphVisualizer/Filter/src/com/sun/hotspot/igv/filter/CustomFilter.java Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/tools/IdealGraphVisualizer/Filter/src/com/sun/hotspot/igv/filter/CustomFilter.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/tools/IdealGraphVisualizer/Util/src/com/sun/hotspot/igv/util/PropertiesSheet.java Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/tools/IdealGraphVisualizer/Util/src/com/sun/hotspot/igv/util/PropertiesSheet.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/tools/IdealGraphVisualizer/Util/src/com/sun/hotspot/igv/util/RangeSliderModel.java Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/tools/IdealGraphVisualizer/Util/src/com/sun/hotspot/igv/util/RangeSliderModel.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/DiagramViewModel.java Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/DiagramViewModel.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/adlc/adlparse.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/adlc/adlparse.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/adlc/adlparse.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/adlc/adlparse.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/adlc/filebuff.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/adlc/filebuff.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2002 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/adlc/filebuff.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/adlc/filebuff.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/adlc/formssel.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/adlc/formssel.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
@@ -676,21 +676,6 @@
}
-void GraphBuilder::kill_field(ciField* field) {
- if (UseLocalValueNumbering) {
- vmap()->kill_field(field);
- }
-}
-
-
-void GraphBuilder::kill_array(Value value) {
- if (UseLocalValueNumbering) {
- vmap()->kill_array(value->type());
- }
- _memory->store_value(value);
-}
-
-
void GraphBuilder::kill_all() {
if (UseLocalValueNumbering) {
vmap()->kill_all();
@@ -987,8 +972,8 @@
length = append(new ArrayLength(array, lock_stack()));
}
StoreIndexed* result = new StoreIndexed(array, index, length, type, value, lock_stack());
- kill_array(value); // invalidate all CSEs that are memory accesses of the same type
append(result);
+ _memory->store_value(value);
}
@@ -1478,9 +1463,6 @@
case Bytecodes::_putstatic:
{ Value val = pop(type);
append(new StoreField(append(obj), offset, field, val, true, lock_stack(), state_copy, is_loaded, is_initialized));
- if (UseLocalValueNumbering) {
- vmap()->kill_field(field); // invalidate all CSEs that are memory accesses
- }
}
break;
case Bytecodes::_getfield :
@@ -1503,7 +1485,6 @@
if (is_loaded) store = _memory->store(store);
if (store != NULL) {
append(store);
- kill_field(field); // invalidate all CSEs that are accesses of this field
}
}
break;
@@ -1900,6 +1881,8 @@
assert(i2->bci() != -1, "should already be linked");
return i2;
}
+ ValueNumberingEffects vne(vmap());
+ i1->visit(&vne);
}
if (i1->as_Phi() == NULL && i1->as_Local() == NULL) {
@@ -1926,14 +1909,8 @@
assert(_last == i1, "adjust code below");
StateSplit* s = i1->as_StateSplit();
if (s != NULL && i1->as_BlockEnd() == NULL) {
- // Continue CSE across certain intrinsics
- Intrinsic* intrinsic = s->as_Intrinsic();
- if (UseLocalValueNumbering) {
- if (intrinsic == NULL || !intrinsic->preserves_state()) {
- vmap()->kill_all(); // for now, hopefully we need this only for calls eventually
- }
- }
if (EliminateFieldAccess) {
+ Intrinsic* intrinsic = s->as_Intrinsic();
if (s->as_Invoke() != NULL || (intrinsic && !intrinsic->preserves_state())) {
_memory->kill();
}
--- a/hotspot/src/share/vm/c1/c1_GraphBuilder.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/c1/c1_GraphBuilder.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
@@ -283,8 +283,6 @@
Dependencies* dependency_recorder() const; // = compilation()->dependencies()
bool direct_compare(ciKlass* k);
- void kill_field(ciField* field);
- void kill_array(Value value);
void kill_all();
ValueStack* lock_stack();
--- a/hotspot/src/share/vm/c1/c1_IR.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/c1/c1_IR.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/c1/c1_ValueMap.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/c1/c1_ValueMap.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
@@ -133,53 +133,77 @@
virtual void kill_array(ValueType* type) = 0;
// visitor functions
- void do_StoreField (StoreField* x) { kill_field(x->field()); };
- void do_StoreIndexed (StoreIndexed* x) { kill_array(x->type()); };
- void do_MonitorEnter (MonitorEnter* x) { kill_memory(); };
- void do_MonitorExit (MonitorExit* x) { kill_memory(); };
- void do_Invoke (Invoke* x) { kill_memory(); };
- void do_UnsafePutRaw (UnsafePutRaw* x) { kill_memory(); };
- void do_UnsafePutObject(UnsafePutObject* x) { kill_memory(); };
- void do_Intrinsic (Intrinsic* x) { if (!x->preserves_state()) kill_memory(); };
+ void do_StoreField (StoreField* x) {
+ if (!x->is_initialized()) {
+ kill_memory();
+ } else {
+ kill_field(x->field());
+ }
+ }
+ void do_StoreIndexed (StoreIndexed* x) { kill_array(x->type()); }
+ void do_MonitorEnter (MonitorEnter* x) { kill_memory(); }
+ void do_MonitorExit (MonitorExit* x) { kill_memory(); }
+ void do_Invoke (Invoke* x) { kill_memory(); }
+ void do_UnsafePutRaw (UnsafePutRaw* x) { kill_memory(); }
+ void do_UnsafePutObject(UnsafePutObject* x) { kill_memory(); }
+ void do_Intrinsic (Intrinsic* x) { if (!x->preserves_state()) kill_memory(); }
- void do_Phi (Phi* x) { /* nothing to do */ };
- void do_Local (Local* x) { /* nothing to do */ };
- void do_Constant (Constant* x) { /* nothing to do */ };
- void do_LoadField (LoadField* x) { /* nothing to do */ };
- void do_ArrayLength (ArrayLength* x) { /* nothing to do */ };
- void do_LoadIndexed (LoadIndexed* x) { /* nothing to do */ };
- void do_NegateOp (NegateOp* x) { /* nothing to do */ };
- void do_ArithmeticOp (ArithmeticOp* x) { /* nothing to do */ };
- void do_ShiftOp (ShiftOp* x) { /* nothing to do */ };
- void do_LogicOp (LogicOp* x) { /* nothing to do */ };
- void do_CompareOp (CompareOp* x) { /* nothing to do */ };
- void do_IfOp (IfOp* x) { /* nothing to do */ };
- void do_Convert (Convert* x) { /* nothing to do */ };
- void do_NullCheck (NullCheck* x) { /* nothing to do */ };
- void do_NewInstance (NewInstance* x) { /* nothing to do */ };
- void do_NewTypeArray (NewTypeArray* x) { /* nothing to do */ };
- void do_NewObjectArray (NewObjectArray* x) { /* nothing to do */ };
- void do_NewMultiArray (NewMultiArray* x) { /* nothing to do */ };
- void do_CheckCast (CheckCast* x) { /* nothing to do */ };
- void do_InstanceOf (InstanceOf* x) { /* nothing to do */ };
- void do_BlockBegin (BlockBegin* x) { /* nothing to do */ };
- void do_Goto (Goto* x) { /* nothing to do */ };
- void do_If (If* x) { /* nothing to do */ };
- void do_IfInstanceOf (IfInstanceOf* x) { /* nothing to do */ };
- void do_TableSwitch (TableSwitch* x) { /* nothing to do */ };
- void do_LookupSwitch (LookupSwitch* x) { /* nothing to do */ };
- void do_Return (Return* x) { /* nothing to do */ };
- void do_Throw (Throw* x) { /* nothing to do */ };
- void do_Base (Base* x) { /* nothing to do */ };
- void do_OsrEntry (OsrEntry* x) { /* nothing to do */ };
- void do_ExceptionObject(ExceptionObject* x) { /* nothing to do */ };
- void do_RoundFP (RoundFP* x) { /* nothing to do */ };
- void do_UnsafeGetRaw (UnsafeGetRaw* x) { /* nothing to do */ };
- void do_UnsafeGetObject(UnsafeGetObject* x) { /* nothing to do */ };
- void do_UnsafePrefetchRead (UnsafePrefetchRead* x) { /* nothing to do */ };
- void do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) { /* nothing to do */ };
- void do_ProfileCall (ProfileCall* x) { /* nothing to do */ };
- void do_ProfileCounter (ProfileCounter* x) { /* nothing to do */ };
+ void do_Phi (Phi* x) { /* nothing to do */ }
+ void do_Local (Local* x) { /* nothing to do */ }
+ void do_Constant (Constant* x) { /* nothing to do */ }
+ void do_LoadField (LoadField* x) {
+ if (!x->is_initialized()) {
+ kill_memory();
+ }
+ }
+ void do_ArrayLength (ArrayLength* x) { /* nothing to do */ }
+ void do_LoadIndexed (LoadIndexed* x) { /* nothing to do */ }
+ void do_NegateOp (NegateOp* x) { /* nothing to do */ }
+ void do_ArithmeticOp (ArithmeticOp* x) { /* nothing to do */ }
+ void do_ShiftOp (ShiftOp* x) { /* nothing to do */ }
+ void do_LogicOp (LogicOp* x) { /* nothing to do */ }
+ void do_CompareOp (CompareOp* x) { /* nothing to do */ }
+ void do_IfOp (IfOp* x) { /* nothing to do */ }
+ void do_Convert (Convert* x) { /* nothing to do */ }
+ void do_NullCheck (NullCheck* x) { /* nothing to do */ }
+ void do_NewInstance (NewInstance* x) { /* nothing to do */ }
+ void do_NewTypeArray (NewTypeArray* x) { /* nothing to do */ }
+ void do_NewObjectArray (NewObjectArray* x) { /* nothing to do */ }
+ void do_NewMultiArray (NewMultiArray* x) { /* nothing to do */ }
+ void do_CheckCast (CheckCast* x) { /* nothing to do */ }
+ void do_InstanceOf (InstanceOf* x) { /* nothing to do */ }
+ void do_BlockBegin (BlockBegin* x) { /* nothing to do */ }
+ void do_Goto (Goto* x) { /* nothing to do */ }
+ void do_If (If* x) { /* nothing to do */ }
+ void do_IfInstanceOf (IfInstanceOf* x) { /* nothing to do */ }
+ void do_TableSwitch (TableSwitch* x) { /* nothing to do */ }
+ void do_LookupSwitch (LookupSwitch* x) { /* nothing to do */ }
+ void do_Return (Return* x) { /* nothing to do */ }
+ void do_Throw (Throw* x) { /* nothing to do */ }
+ void do_Base (Base* x) { /* nothing to do */ }
+ void do_OsrEntry (OsrEntry* x) { /* nothing to do */ }
+ void do_ExceptionObject(ExceptionObject* x) { /* nothing to do */ }
+ void do_RoundFP (RoundFP* x) { /* nothing to do */ }
+ void do_UnsafeGetRaw (UnsafeGetRaw* x) { /* nothing to do */ }
+ void do_UnsafeGetObject(UnsafeGetObject* x) { /* nothing to do */ }
+ void do_UnsafePrefetchRead (UnsafePrefetchRead* x) { /* nothing to do */ }
+ void do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) { /* nothing to do */ }
+ void do_ProfileCall (ProfileCall* x) { /* nothing to do */ }
+ void do_ProfileCounter (ProfileCounter* x) { /* nothing to do */ }
+};
+
+
+class ValueNumberingEffects: public ValueNumberingVisitor {
+ private:
+ ValueMap* _map;
+
+ public:
+ // implementation for abstract methods of ValueNumberingVisitor
+ void kill_memory() { _map->kill_memory(); }
+ void kill_field(ciField* field) { _map->kill_field(field); }
+ void kill_array(ValueType* type) { _map->kill_array(type); }
+
+ ValueNumberingEffects(ValueMap* map): _map(map) {}
};
--- a/hotspot/src/share/vm/ci/ciEnv.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/ci/ciEnv.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/ci/ciTypeFlow.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/ci/ciTypeFlow.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/classfile/classFileParser.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/classfile/classFileParser.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -325,24 +325,30 @@
// For objects in CMS generation, this closure marks
// given objects (transitively) as being reachable/live.
// This is currently used during the (weak) reference object
-// processing phase of the CMS final checkpoint step.
+// processing phase of the CMS final checkpoint step, as
+// well as during the concurrent precleaning of the discovered
+// reference lists.
class CMSKeepAliveClosure: public OopClosure {
private:
CMSCollector* _collector;
const MemRegion _span;
CMSMarkStack* _mark_stack;
CMSBitMap* _bit_map;
+ bool _concurrent_precleaning;
protected:
DO_OOP_WORK_DEFN
public:
CMSKeepAliveClosure(CMSCollector* collector, MemRegion span,
- CMSBitMap* bit_map, CMSMarkStack* mark_stack):
+ CMSBitMap* bit_map, CMSMarkStack* mark_stack,
+ bool cpc):
_collector(collector),
_span(span),
_bit_map(bit_map),
- _mark_stack(mark_stack) {
+ _mark_stack(mark_stack),
+ _concurrent_precleaning(cpc) {
assert(!_span.is_empty(), "Empty span could spell trouble");
}
+ bool concurrent_precleaning() const { return _concurrent_precleaning; }
virtual void do_oop(oop* p);
virtual void do_oop(narrowOop* p);
inline void do_oop_nv(oop* p) { CMSKeepAliveClosure::do_oop_work(p); }
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -538,6 +538,7 @@
_survivor_chunk_capacity(0), // -- ditto --
_survivor_chunk_index(0), // -- ditto --
_ser_pmc_preclean_ovflw(0),
+ _ser_kac_preclean_ovflw(0),
_ser_pmc_remark_ovflw(0),
_par_pmc_remark_ovflw(0),
_ser_kac_ovflw(0),
@@ -1960,6 +1961,7 @@
ref_processor()->set_enqueuing_is_done(false);
ref_processor()->enable_discovery();
+ ref_processor()->setup_policy(clear_all_soft_refs);
// If an asynchronous collection finishes, the _modUnionTable is
// all clear. If we are assuming the collection from an asynchronous
// collection, clear the _modUnionTable.
@@ -2383,6 +2385,9 @@
Universe::verify(true);
}
+ // Snapshot the soft reference policy to be used in this collection cycle.
+ ref_processor()->setup_policy(clear_all_soft_refs);
+
bool init_mark_was_synchronous = false; // until proven otherwise
while (_collectorState != Idling) {
if (TraceCMSState) {
@@ -4388,10 +4393,10 @@
CMSPrecleanRefsYieldClosure yield_cl(this);
assert(rp->span().equals(_span), "Spans should be equal");
CMSKeepAliveClosure keep_alive(this, _span, &_markBitMap,
- &_markStack);
+ &_markStack, true /* preclean */);
CMSDrainMarkingStackClosure complete_trace(this,
- _span, &_markBitMap, &_markStack,
- &keep_alive);
+ _span, &_markBitMap, &_markStack,
+ &keep_alive, true /* preclean */);
// We don't want this step to interfere with a young
// collection because we don't want to take CPU
@@ -4590,11 +4595,11 @@
if (!dirtyRegion.is_empty()) {
assert(numDirtyCards > 0, "consistency check");
HeapWord* stop_point = NULL;
+ stopTimer();
+ CMSTokenSyncWithLocks ts(true, gen->freelistLock(),
+ bitMapLock());
+ startTimer();
{
- stopTimer();
- CMSTokenSyncWithLocks ts(true, gen->freelistLock(),
- bitMapLock());
- startTimer();
verify_work_stacks_empty();
verify_overflow_empty();
sample_eden();
@@ -4611,10 +4616,6 @@
assert((CMSPermGenPrecleaningEnabled && (gen == _permGen)) ||
(_collectorState == AbortablePreclean && should_abort_preclean()),
"Unparsable objects should only be in perm gen.");
-
- stopTimer();
- CMSTokenSyncWithLocks ts(true, bitMapLock());
- startTimer();
_modUnionTable.mark_range(MemRegion(stop_point, dirtyRegion.end()));
if (should_abort_preclean()) {
break; // out of preclean loop
@@ -4852,17 +4853,19 @@
// recurrence of that condition.
assert(_markStack.isEmpty(), "No grey objects");
size_t ser_ovflw = _ser_pmc_remark_ovflw + _ser_pmc_preclean_ovflw +
- _ser_kac_ovflw;
+ _ser_kac_ovflw + _ser_kac_preclean_ovflw;
if (ser_ovflw > 0) {
if (PrintCMSStatistics != 0) {
gclog_or_tty->print_cr("Marking stack overflow (benign) "
- "(pmc_pc="SIZE_FORMAT", pmc_rm="SIZE_FORMAT", kac="SIZE_FORMAT")",
+ "(pmc_pc="SIZE_FORMAT", pmc_rm="SIZE_FORMAT", kac="SIZE_FORMAT
+ ", kac_preclean="SIZE_FORMAT")",
_ser_pmc_preclean_ovflw, _ser_pmc_remark_ovflw,
- _ser_kac_ovflw);
+ _ser_kac_ovflw, _ser_kac_preclean_ovflw);
}
_markStack.expand();
_ser_pmc_remark_ovflw = 0;
_ser_pmc_preclean_ovflw = 0;
+ _ser_kac_preclean_ovflw = 0;
_ser_kac_ovflw = 0;
}
if (_par_pmc_remark_ovflw > 0 || _par_kac_ovflw > 0) {
@@ -5675,40 +5678,29 @@
ResourceMark rm;
HandleMark hm;
- ReferencePolicy* soft_ref_policy;
-
- assert(!ref_processor()->enqueuing_is_done(), "Enqueuing should not be complete");
- // Process weak references.
- if (clear_all_soft_refs) {
- soft_ref_policy = new AlwaysClearPolicy();
- } else {
-#ifdef COMPILER2
- soft_ref_policy = new LRUMaxHeapPolicy();
-#else
- soft_ref_policy = new LRUCurrentHeapPolicy();
-#endif // COMPILER2
- }
- verify_work_stacks_empty();
ReferenceProcessor* rp = ref_processor();
assert(rp->span().equals(_span), "Spans should be equal");
+ assert(!rp->enqueuing_is_done(), "Enqueuing should not be complete");
+ // Process weak references.
+ rp->setup_policy(clear_all_soft_refs);
+ verify_work_stacks_empty();
+
CMSKeepAliveClosure cmsKeepAliveClosure(this, _span, &_markBitMap,
- &_markStack);
+ &_markStack, false /* !preclean */);
CMSDrainMarkingStackClosure cmsDrainMarkingStackClosure(this,
_span, &_markBitMap, &_markStack,
- &cmsKeepAliveClosure);
+ &cmsKeepAliveClosure, false /* !preclean */);
{
TraceTime t("weak refs processing", PrintGCDetails, false, gclog_or_tty);
if (rp->processing_is_mt()) {
CMSRefProcTaskExecutor task_executor(*this);
- rp->process_discovered_references(soft_ref_policy,
- &_is_alive_closure,
+ rp->process_discovered_references(&_is_alive_closure,
&cmsKeepAliveClosure,
&cmsDrainMarkingStackClosure,
&task_executor);
} else {
- rp->process_discovered_references(soft_ref_policy,
- &_is_alive_closure,
+ rp->process_discovered_references(&_is_alive_closure,
&cmsKeepAliveClosure,
&cmsDrainMarkingStackClosure,
NULL);
@@ -6163,8 +6155,8 @@
#endif
size_t CMSCollector::block_size_using_printezis_bits(HeapWord* addr) const {
- assert(_markBitMap.isMarked(addr) && _markBitMap.isMarked(addr + 1),
- "missing Printezis mark?");
+ assert(_markBitMap.isMarked(addr) && _markBitMap.isMarked(addr + 1),
+ "missing Printezis mark?");
HeapWord* nextOneAddr = _markBitMap.getNextMarkedWordAddress(addr + 2);
size_t size = pointer_delta(nextOneAddr + 1, addr);
assert(size == CompactibleFreeListSpace::adjustObjectSize(size),
@@ -8302,8 +8294,29 @@
}
)
if (simulate_overflow || !_mark_stack->push(obj)) {
- _collector->push_on_overflow_list(obj);
- _collector->_ser_kac_ovflw++;
+ if (_concurrent_precleaning) {
+ // We dirty the overflown object and let the remark
+ // phase deal with it.
+ assert(_collector->overflow_list_is_empty(), "Error");
+ // In the case of object arrays, we need to dirty all of
+ // the cards that the object spans. No locking or atomics
+ // are needed since no one else can be mutating the mod union
+ // table.
+ if (obj->is_objArray()) {
+ size_t sz = obj->size();
+ HeapWord* end_card_addr =
+ (HeapWord*)round_to((intptr_t)(addr+sz), CardTableModRefBS::card_size);
+ MemRegion redirty_range = MemRegion(addr, end_card_addr);
+ assert(!redirty_range.is_empty(), "Arithmetical tautology");
+ _collector->_modUnionTable.mark_range(redirty_range);
+ } else {
+ _collector->_modUnionTable.mark(addr);
+ }
+ _collector->_ser_kac_preclean_ovflw++;
+ } else {
+ _collector->push_on_overflow_list(obj);
+ _collector->_ser_kac_ovflw++;
+ }
}
}
}
@@ -8400,6 +8413,8 @@
void CMSDrainMarkingStackClosure::do_void() {
// the max number to take from overflow list at a time
const size_t num = _mark_stack->capacity()/4;
+ assert(!_concurrent_precleaning || _collector->overflow_list_is_empty(),
+ "Overflow list should be NULL during concurrent phases");
while (!_mark_stack->isEmpty() ||
// if stack is empty, check the overflow list
_collector->take_from_overflow_list(num, _mark_stack)) {
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -592,6 +592,7 @@
size_t _ser_pmc_preclean_ovflw;
size_t _ser_pmc_remark_ovflw;
size_t _par_pmc_remark_ovflw;
+ size_t _ser_kac_preclean_ovflw;
size_t _ser_kac_ovflw;
size_t _par_kac_ovflw;
NOT_PRODUCT(size_t _num_par_pushes;)
@@ -1749,21 +1750,30 @@
// work-routine/closure used to complete transitive
// marking of objects as live after a certain point
// in which an initial set has been completely accumulated.
+// This closure is currently used both during the final
+// remark stop-world phase, as well as during the concurrent
+// precleaning of the discovered reference lists.
class CMSDrainMarkingStackClosure: public VoidClosure {
CMSCollector* _collector;
MemRegion _span;
CMSMarkStack* _mark_stack;
CMSBitMap* _bit_map;
CMSKeepAliveClosure* _keep_alive;
+ bool _concurrent_precleaning;
public:
CMSDrainMarkingStackClosure(CMSCollector* collector, MemRegion span,
CMSBitMap* bit_map, CMSMarkStack* mark_stack,
- CMSKeepAliveClosure* keep_alive):
+ CMSKeepAliveClosure* keep_alive,
+ bool cpc):
_collector(collector),
_span(span),
_bit_map(bit_map),
_mark_stack(mark_stack),
- _keep_alive(keep_alive) { }
+ _keep_alive(keep_alive),
+ _concurrent_precleaning(cpc) {
+ assert(_concurrent_precleaning == _keep_alive->concurrent_precleaning(),
+ "Mismatch");
+ }
void do_void();
};
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
@@ -811,6 +811,7 @@
ReferenceProcessor* rp = g1h->ref_processor();
rp->verify_no_references_recorded();
rp->enable_discovery(); // enable ("weak") refs discovery
+ rp->setup_policy(false); // snapshot the soft ref policy to be used in this cycle
SATBMarkQueueSet& satb_mq_set = JavaThread::satb_mark_queue_set();
satb_mq_set.set_process_completed_threshold(G1SATBProcessCompletedThreshold);
@@ -1829,32 +1830,21 @@
void ConcurrentMark::weakRefsWork(bool clear_all_soft_refs) {
ResourceMark rm;
HandleMark hm;
- ReferencePolicy* soft_ref_policy;
+ G1CollectedHeap* g1h = G1CollectedHeap::heap();
+ ReferenceProcessor* rp = g1h->ref_processor();
// Process weak references.
- if (clear_all_soft_refs) {
- soft_ref_policy = new AlwaysClearPolicy();
- } else {
-#ifdef COMPILER2
- soft_ref_policy = new LRUMaxHeapPolicy();
-#else
- soft_ref_policy = new LRUCurrentHeapPolicy();
-#endif
- }
+ rp->setup_policy(clear_all_soft_refs);
assert(_markStack.isEmpty(), "mark stack should be empty");
- G1CollectedHeap* g1 = G1CollectedHeap::heap();
- G1CMIsAliveClosure g1IsAliveClosure(g1);
-
- G1CMKeepAliveClosure g1KeepAliveClosure(g1, this, nextMarkBitMap());
+ G1CMIsAliveClosure g1IsAliveClosure (g1h);
+ G1CMKeepAliveClosure g1KeepAliveClosure(g1h, this, nextMarkBitMap());
G1CMDrainMarkingStackClosure
g1DrainMarkingStackClosure(nextMarkBitMap(), &_markStack,
&g1KeepAliveClosure);
// XXXYYY Also: copy the parallel ref processing code from CMS.
- ReferenceProcessor* rp = g1->ref_processor();
- rp->process_discovered_references(soft_ref_policy,
- &g1IsAliveClosure,
+ rp->process_discovered_references(&g1IsAliveClosure,
&g1KeepAliveClosure,
&g1DrainMarkingStackClosure,
NULL);
--- a/hotspot/src/share/vm/gc_implementation/g1/dirtyCardQueue.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/dirtyCardQueue.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
@@ -891,6 +891,7 @@
ReferenceProcessorIsAliveMutator rp_is_alive_null(ref_processor(), NULL);
ref_processor()->enable_discovery();
+ ref_processor()->setup_policy(clear_all_soft_refs);
// Do collection work
{
@@ -2463,7 +2464,7 @@
COMPILER2_PRESENT(DerivedPointerTable::clear());
- // We want to turn off ref discovere, if necessary, and turn it back on
+ // We want to turn off ref discovery, if necessary, and turn it back on
// on again later if we do.
bool was_enabled = ref_processor()->discovery_enabled();
if (was_enabled) ref_processor()->disable_discovery();
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
@@ -33,8 +33,9 @@
// hook up weak ref data so it can be used during Mark-Sweep
assert(GenMarkSweep::ref_processor() == NULL, "no stomping");
+ assert(rp != NULL, "should be non-NULL");
GenMarkSweep::_ref_processor = rp;
- assert(rp != NULL, "should be non-NULL");
+ rp->setup_policy(clear_all_softrefs);
// When collecting the permanent generation methodOops may be moving,
// so we either have to flush all bcp data or convert it into bci.
@@ -121,23 +122,12 @@
&GenMarkSweep::follow_root_closure);
// Process reference objects found during marking
- ReferencePolicy *soft_ref_policy;
- if (clear_all_softrefs) {
- soft_ref_policy = new AlwaysClearPolicy();
- } else {
-#ifdef COMPILER2
- soft_ref_policy = new LRUMaxHeapPolicy();
-#else
- soft_ref_policy = new LRUCurrentHeapPolicy();
-#endif
- }
- assert(soft_ref_policy != NULL,"No soft reference policy");
- GenMarkSweep::ref_processor()->process_discovered_references(
- soft_ref_policy,
- &GenMarkSweep::is_alive,
- &GenMarkSweep::keep_alive,
- &GenMarkSweep::follow_stack_closure,
- NULL);
+ ReferenceProcessor* rp = GenMarkSweep::ref_processor();
+ rp->setup_policy(clear_all_softrefs);
+ rp->process_discovered_references(&GenMarkSweep::is_alive,
+ &GenMarkSweep::keep_alive,
+ &GenMarkSweep::follow_stack_closure,
+ NULL);
// Follow system dictionary roots and unload classes
bool purged_class = SystemDictionary::do_unloading(&GenMarkSweep::is_alive);
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegion.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegion.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/gc_implementation/g1/ptrQueue.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/ptrQueue.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/gc_implementation/g1/ptrQueue.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/ptrQueue.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/gc_implementation/includeDB_gc_g1 Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/includeDB_gc_g1 Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
//
-// Copyright 2004-2006 Sun Microsystems, Inc. All Rights Reserved.
+// Copyright 2004-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -759,17 +759,12 @@
thread_state_set.steals(),
thread_state_set.pops()+thread_state_set.steals());
}
- assert(thread_state_set.pushes() == thread_state_set.pops() + thread_state_set.steals(),
+ assert(thread_state_set.pushes() == thread_state_set.pops()
+ + thread_state_set.steals(),
"Or else the queues are leaky.");
- // For now, process discovered weak refs sequentially.
-#ifdef COMPILER2
- ReferencePolicy *soft_ref_policy = new LRUMaxHeapPolicy();
-#else
- ReferencePolicy *soft_ref_policy = new LRUCurrentHeapPolicy();
-#endif // COMPILER2
-
// Process (weak) reference objects found during scavenge.
+ ReferenceProcessor* rp = ref_processor();
IsAliveClosure is_alive(this);
ScanWeakRefClosure scan_weak_ref(this);
KeepAliveClosure keep_alive(&scan_weak_ref);
@@ -778,18 +773,17 @@
set_promo_failure_scan_stack_closure(&scan_without_gc_barrier);
EvacuateFollowersClosureGeneral evacuate_followers(gch, _level,
&scan_without_gc_barrier, &scan_with_gc_barrier);
- if (ref_processor()->processing_is_mt()) {
+ rp->setup_policy(clear_all_soft_refs);
+ if (rp->processing_is_mt()) {
ParNewRefProcTaskExecutor task_executor(*this, thread_state_set);
- ref_processor()->process_discovered_references(
- soft_ref_policy, &is_alive, &keep_alive, &evacuate_followers,
- &task_executor);
+ rp->process_discovered_references(&is_alive, &keep_alive,
+ &evacuate_followers, &task_executor);
} else {
thread_state_set.flush();
gch->set_par_threads(0); // 0 ==> non-parallel.
gch->save_marks();
- ref_processor()->process_discovered_references(
- soft_ref_policy, &is_alive, &keep_alive, &evacuate_followers,
- NULL);
+ rp->process_discovered_references(&is_alive, &keep_alive,
+ &evacuate_followers, NULL);
}
if (!promotion_failed()) {
// Swap the survivor spaces.
@@ -851,14 +845,14 @@
SpecializationStats::print();
- ref_processor()->set_enqueuing_is_done(true);
- if (ref_processor()->processing_is_mt()) {
+ rp->set_enqueuing_is_done(true);
+ if (rp->processing_is_mt()) {
ParNewRefProcTaskExecutor task_executor(*this, thread_state_set);
- ref_processor()->enqueue_discovered_references(&task_executor);
+ rp->enqueue_discovered_references(&task_executor);
} else {
- ref_processor()->enqueue_discovered_references(NULL);
+ rp->enqueue_discovered_references(NULL);
}
- ref_processor()->verify_no_references_recorded();
+ rp->verify_no_references_recorded();
}
static int sum;
@@ -1211,7 +1205,7 @@
int n = 0;
while (cur != NULL) {
oop obj_to_push = cur->forwardee();
- oop next = oop(cur->klass());
+ oop next = oop(cur->klass_or_null());
cur->set_klass(obj_to_push->klass());
if (par_scan_state->should_be_partially_scanned(obj_to_push, cur)) {
obj_to_push = cur;
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -172,6 +172,7 @@
COMPILER2_PRESENT(DerivedPointerTable::clear());
ref_processor()->enable_discovery();
+ ref_processor()->setup_policy(clear_all_softrefs);
mark_sweep_phase1(clear_all_softrefs);
@@ -517,20 +518,9 @@
// Process reference objects found during marking
{
- ReferencePolicy *soft_ref_policy;
- if (clear_all_softrefs) {
- soft_ref_policy = new AlwaysClearPolicy();
- } else {
-#ifdef COMPILER2
- soft_ref_policy = new LRUMaxHeapPolicy();
-#else
- soft_ref_policy = new LRUCurrentHeapPolicy();
-#endif // COMPILER2
- }
- assert(soft_ref_policy != NULL,"No soft reference policy");
+ ref_processor()->setup_policy(clear_all_softrefs);
ref_processor()->process_discovered_references(
- soft_ref_policy, is_alive_closure(), mark_and_push_closure(),
- follow_stack_closure(), NULL);
+ is_alive_closure(), mark_and_push_closure(), follow_stack_closure(), NULL);
}
// Follow system dictionary roots and unload classes
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2002 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1578,6 +1578,7 @@
COMPILER2_PRESENT(DerivedPointerTable::clear());
ref_processor()->enable_discovery();
+ ref_processor()->setup_policy(maximum_heap_compaction);
bool marked_for_unloading = false;
@@ -1894,26 +1895,14 @@
// Process reference objects found during marking
{
TraceTime tm_r("reference processing", print_phases(), true, gclog_or_tty);
- ReferencePolicy *soft_ref_policy;
- if (maximum_heap_compaction) {
- soft_ref_policy = new AlwaysClearPolicy();
- } else {
-#ifdef COMPILER2
- soft_ref_policy = new LRUMaxHeapPolicy();
-#else
- soft_ref_policy = new LRUCurrentHeapPolicy();
-#endif // COMPILER2
- }
- assert(soft_ref_policy != NULL, "No soft reference policy");
if (ref_processor()->processing_is_mt()) {
RefProcTaskExecutor task_executor;
ref_processor()->process_discovered_references(
- soft_ref_policy, is_alive_closure(), &mark_and_push_closure,
- &follow_stack_closure, &task_executor);
+ is_alive_closure(), &mark_and_push_closure, &follow_stack_closure,
+ &task_executor);
} else {
ref_processor()->process_discovered_references(
- soft_ref_policy, is_alive_closure(), &mark_and_push_closure,
- &follow_stack_closure, NULL);
+ is_alive_closure(), &mark_and_push_closure, &follow_stack_closure, NULL);
}
}
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -330,6 +330,7 @@
COMPILER2_PRESENT(DerivedPointerTable::clear());
reference_processor()->enable_discovery();
+ reference_processor()->setup_policy(false);
// We track how much was promoted to the next generation for
// the AdaptiveSizePolicy.
@@ -394,24 +395,16 @@
// Process reference objects discovered during scavenge
{
-#ifdef COMPILER2
- ReferencePolicy *soft_ref_policy = new LRUMaxHeapPolicy();
-#else
- ReferencePolicy *soft_ref_policy = new LRUCurrentHeapPolicy();
-#endif // COMPILER2
-
+ reference_processor()->setup_policy(false); // not always_clear
PSKeepAliveClosure keep_alive(promotion_manager);
PSEvacuateFollowersClosure evac_followers(promotion_manager);
- assert(soft_ref_policy != NULL,"No soft reference policy");
if (reference_processor()->processing_is_mt()) {
PSRefProcTaskExecutor task_executor;
reference_processor()->process_discovered_references(
- soft_ref_policy, &_is_alive_closure, &keep_alive, &evac_followers,
- &task_executor);
+ &_is_alive_closure, &keep_alive, &evac_followers, &task_executor);
} else {
reference_processor()->process_discovered_references(
- soft_ref_policy, &_is_alive_closure, &keep_alive, &evac_followers,
- NULL);
+ &_is_alive_closure, &keep_alive, &evac_followers, NULL);
}
}
--- a/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -414,9 +414,20 @@
if (limit > 0) {
limit = round_down(limit, page_size());
if (chunk_size > current_chunk_size(i)) {
- chunk_size = MIN2((off_t)chunk_size, (off_t)current_chunk_size(i) + (off_t)limit);
+ size_t upper_bound = pages_available * page_size();
+ if (upper_bound > limit &&
+ current_chunk_size(i) < upper_bound - limit) {
+ // The resulting upper bound should not exceed the available
+ // amount of memory (pages_available * page_size()).
+ upper_bound = current_chunk_size(i) + limit;
+ }
+ chunk_size = MIN2(chunk_size, upper_bound);
} else {
- chunk_size = MAX2((off_t)chunk_size, (off_t)current_chunk_size(i) - (off_t)limit);
+ size_t lower_bound = page_size();
+ if (current_chunk_size(i) > limit) { // lower_bound shouldn't underflow.
+ lower_bound = current_chunk_size(i) - limit;
+ }
+ chunk_size = MAX2(chunk_size, lower_bound);
}
}
assert(chunk_size <= pages_available * page_size(), "Chunk size out of range");
--- a/hotspot/src/share/vm/includeDB_core Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/includeDB_core Wed Jul 05 16:44:31 2017 +0200
@@ -2303,6 +2303,7 @@
javaCalls.cpp interfaceSupport.hpp
javaCalls.cpp interpreter.hpp
javaCalls.cpp javaCalls.hpp
+javaCalls.cpp jniCheck.hpp
javaCalls.cpp linkResolver.hpp
javaCalls.cpp mutexLocker.hpp
javaCalls.cpp nmethod.hpp
@@ -3434,6 +3435,7 @@
referenceProcessor.cpp systemDictionary.hpp
referenceProcessor.hpp instanceRefKlass.hpp
+referenceProcessor.hpp referencePolicy.hpp
reflection.cpp arguments.hpp
reflection.cpp handles.inline.hpp
--- a/hotspot/src/share/vm/includeDB_features Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/includeDB_features Wed Jul 05 16:44:31 2017 +0200
@@ -115,6 +115,8 @@
heapInspection.cpp os.hpp
heapInspection.cpp resourceArea.hpp
+javaCalls.cpp jniCheck.hpp
+
jniCheck.cpp fieldDescriptor.hpp
jniCheck.cpp handles.hpp
jniCheck.cpp instanceKlass.hpp
--- a/hotspot/src/share/vm/interpreter/bytecodeStream.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/interpreter/bytecodeStream.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/interpreter/bytecodes.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/interpreter/bytecodes.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/interpreter/bytecodes.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/interpreter/bytecodes.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/memory/defNewGeneration.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/memory/defNewGeneration.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -540,14 +540,6 @@
assert(gch->no_allocs_since_save_marks(0),
"save marks have not been newly set.");
- // Weak refs.
- // FIXME: Are these storage leaks, or are they resource objects?
-#ifdef COMPILER2
- ReferencePolicy *soft_ref_policy = new LRUMaxHeapPolicy();
-#else
- ReferencePolicy *soft_ref_policy = new LRUCurrentHeapPolicy();
-#endif // COMPILER2
-
// Not very pretty.
CollectorPolicy* cp = gch->collector_policy();
@@ -574,8 +566,10 @@
evacuate_followers.do_void();
FastKeepAliveClosure keep_alive(this, &scan_weak_ref);
- ref_processor()->process_discovered_references(
- soft_ref_policy, &is_alive, &keep_alive, &evacuate_followers, NULL);
+ ReferenceProcessor* rp = ref_processor();
+ rp->setup_policy(clear_all_soft_refs);
+ rp->process_discovered_references(&is_alive, &keep_alive, &evacuate_followers,
+ NULL);
if (!promotion_failed()) {
// Swap the survivor spaces.
eden()->clear(SpaceDecorator::Mangle);
--- a/hotspot/src/share/vm/memory/genCollectedHeap.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/memory/genCollectedHeap.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -525,8 +525,9 @@
if (rp->discovery_is_atomic()) {
rp->verify_no_references_recorded();
rp->enable_discovery();
+ rp->setup_policy(clear_all_soft_refs);
} else {
- // collect() will enable discovery as appropriate
+ // collect() below will enable discovery as appropriate
}
_gens[i]->collect(full, clear_all_soft_refs, size, is_tlab);
if (!rp->enqueuing_is_done()) {
--- a/hotspot/src/share/vm/memory/genMarkSweep.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/memory/genMarkSweep.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -31,8 +31,9 @@
// hook up weak ref data so it can be used during Mark-Sweep
assert(ref_processor() == NULL, "no stomping");
+ assert(rp != NULL, "should be non-NULL");
_ref_processor = rp;
- assert(rp != NULL, "should be non-NULL");
+ rp->setup_policy(clear_all_softrefs);
TraceTime t1("Full GC", PrintGC && !PrintGCDetails, true, gclog_or_tty);
@@ -245,20 +246,9 @@
// Process reference objects found during marking
{
- ReferencePolicy *soft_ref_policy;
- if (clear_all_softrefs) {
- soft_ref_policy = new AlwaysClearPolicy();
- } else {
-#ifdef COMPILER2
- soft_ref_policy = new LRUMaxHeapPolicy();
-#else
- soft_ref_policy = new LRUCurrentHeapPolicy();
-#endif // COMPILER2
- }
- assert(soft_ref_policy != NULL,"No soft reference policy");
+ ref_processor()->setup_policy(clear_all_softrefs);
ref_processor()->process_discovered_references(
- soft_ref_policy, &is_alive, &keep_alive,
- &follow_stack_closure, NULL);
+ &is_alive, &keep_alive, &follow_stack_closure, NULL);
}
// Follow system dictionary roots and unload classes
--- a/hotspot/src/share/vm/memory/referencePolicy.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/memory/referencePolicy.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
@@ -26,6 +26,11 @@
# include "incls/_referencePolicy.cpp.incl"
LRUCurrentHeapPolicy::LRUCurrentHeapPolicy() {
+ setup();
+}
+
+// Capture state (of-the-VM) information needed to evaluate the policy
+void LRUCurrentHeapPolicy::setup() {
_max_interval = (Universe::get_heap_free_at_last_gc() / M) * SoftRefLRUPolicyMSPerMB;
assert(_max_interval >= 0,"Sanity check");
}
@@ -47,6 +52,11 @@
/////////////////////// MaxHeap //////////////////////
LRUMaxHeapPolicy::LRUMaxHeapPolicy() {
+ setup();
+}
+
+// Capture state (of-the-VM) information needed to evaluate the policy
+void LRUMaxHeapPolicy::setup() {
size_t max_heap = MaxHeapSize;
max_heap -= Universe::get_heap_used_at_last_gc();
max_heap /= M;
--- a/hotspot/src/share/vm/memory/referencePolicy.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/memory/referencePolicy.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
@@ -26,9 +26,11 @@
// should be cleared.
-class ReferencePolicy : public ResourceObj {
+class ReferencePolicy : public CHeapObj {
public:
virtual bool should_clear_reference(oop p) { ShouldNotReachHere(); return true; }
+ // Capture state (of-the-VM) information needed to evaluate the policy
+ virtual void setup() { /* do nothing */ }
};
class NeverClearPolicy : public ReferencePolicy {
@@ -48,6 +50,8 @@
public:
LRUCurrentHeapPolicy();
+ // Capture state (of-the-VM) information needed to evaluate the policy
+ void setup();
bool should_clear_reference(oop p);
};
@@ -58,5 +62,7 @@
public:
LRUMaxHeapPolicy();
+ // Capture state (of-the-VM) information needed to evaluate the policy
+ void setup();
bool should_clear_reference(oop p);
};
--- a/hotspot/src/share/vm/memory/referenceProcessor.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/memory/referenceProcessor.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -25,6 +25,11 @@
# include "incls/_precompiled.incl"
# include "incls/_referenceProcessor.cpp.incl"
+ReferencePolicy* ReferenceProcessor::_always_clear_soft_ref_policy = NULL;
+ReferencePolicy* ReferenceProcessor::_default_soft_ref_policy = NULL;
+oop ReferenceProcessor::_sentinelRef = NULL;
+const int subclasses_of_ref = REF_PHANTOM - REF_OTHER;
+
// List of discovered references.
class DiscoveredList {
public:
@@ -47,7 +52,9 @@
}
bool empty() const { return head() == ReferenceProcessor::sentinel_ref(); }
size_t length() { return _len; }
- void set_length(size_t len) { _len = len; }
+ void set_length(size_t len) { _len = len; }
+ void inc_length(size_t inc) { _len += inc; assert(_len > 0, "Error"); }
+ void dec_length(size_t dec) { _len -= dec; }
private:
// Set value depending on UseCompressedOops. This could be a template class
// but then we have to fix all the instantiations and declarations that use this class.
@@ -56,10 +63,6 @@
size_t _len;
};
-oop ReferenceProcessor::_sentinelRef = NULL;
-
-const int subclasses_of_ref = REF_PHANTOM - REF_OTHER;
-
void referenceProcessor_init() {
ReferenceProcessor::init_statics();
}
@@ -80,6 +83,12 @@
}
assert(_sentinelRef != NULL && _sentinelRef->is_oop(),
"Just constructed it!");
+ _always_clear_soft_ref_policy = new AlwaysClearPolicy();
+ _default_soft_ref_policy = new COMPILER2_PRESENT(LRUMaxHeapPolicy())
+ NOT_COMPILER2(LRUCurrentHeapPolicy());
+ if (_always_clear_soft_ref_policy == NULL || _default_soft_ref_policy == NULL) {
+ vm_exit_during_initialization("Could not allocate reference policy object");
+ }
guarantee(RefDiscoveryPolicy == ReferenceBasedDiscovery ||
RefDiscoveryPolicy == ReferentBasedDiscovery,
"Unrecongnized RefDiscoveryPolicy");
@@ -106,6 +115,7 @@
vm_exit_during_initialization("Could not allocate ReferenceProcessor object");
}
rp->set_is_alive_non_header(is_alive_non_header);
+ rp->setup_policy(false /* default soft ref policy */);
return rp;
}
@@ -192,7 +202,6 @@
}
void ReferenceProcessor::process_discovered_references(
- ReferencePolicy* policy,
BoolObjectClosure* is_alive,
OopClosure* keep_alive,
VoidClosure* complete_gc,
@@ -207,7 +216,7 @@
// Soft references
{
TraceTime tt("SoftReference", trace_time, false, gclog_or_tty);
- process_discovered_reflist(_discoveredSoftRefs, policy, true,
+ process_discovered_reflist(_discoveredSoftRefs, _current_soft_ref_policy, true,
is_alive, keep_alive, complete_gc, task_executor);
}
@@ -436,13 +445,13 @@
// The "allow_null_referent" argument tells us to allow for the possibility
// of a NULL referent in the discovered Reference object. This typically
// happens in the case of concurrent collectors that may have done the
- // discovery concurrently or interleaved with mutator execution.
+ // discovery concurrently, or interleaved, with mutator execution.
inline void load_ptrs(DEBUG_ONLY(bool allow_null_referent));
// Move to the next discovered reference.
inline void next();
- // Remove the current reference from the list and move to the next.
+ // Remove the current reference from the list
inline void remove();
// Make the Reference object active again.
@@ -476,7 +485,6 @@
inline size_t removed() const { return _removed; }
)
-private:
inline void move_to_next();
private:
@@ -553,7 +561,7 @@
oopDesc::store_heap_oop((oop*)_prev_next, _next);
}
NOT_PRODUCT(_removed++);
- move_to_next();
+ _refs_list.dec_length(1);
}
inline void DiscoveredListIterator::move_to_next() {
@@ -591,12 +599,13 @@
gclog_or_tty->print_cr("Dropping reference (" INTPTR_FORMAT ": %s" ") by policy",
iter.obj(), iter.obj()->blueprint()->internal_name());
}
+ // Remove Reference object from list
+ iter.remove();
// Make the Reference object active again
iter.make_active();
// keep the referent around
iter.make_referent_alive();
- // Remove Reference object from list
- iter.remove();
+ iter.move_to_next();
} else {
iter.next();
}
@@ -629,12 +638,13 @@
iter.obj(), iter.obj()->blueprint()->internal_name());
}
// The referent is reachable after all.
+ // Remove Reference object from list.
+ iter.remove();
// Update the referent pointer as necessary: Note that this
// should not entail any recursive marking because the
// referent must already have been traversed.
iter.make_referent_alive();
- // Remove Reference object from list
- iter.remove();
+ iter.move_to_next();
} else {
iter.next();
}
@@ -670,6 +680,7 @@
} else {
keep_alive->do_oop((oop*)next_addr);
}
+ iter.move_to_next();
} else {
iter.next();
}
@@ -832,9 +843,9 @@
}
java_lang_ref_Reference::set_discovered(move_tail, ref_lists[to_idx].head());
ref_lists[to_idx].set_head(move_head);
- ref_lists[to_idx].set_length(ref_lists[to_idx].length() + refs_to_move);
+ ref_lists[to_idx].inc_length(refs_to_move);
ref_lists[from_idx].set_head(new_head);
- ref_lists[from_idx].set_length(ref_lists[from_idx].length() - refs_to_move);
+ ref_lists[from_idx].dec_length(refs_to_move);
} else {
++to_idx;
}
@@ -923,7 +934,6 @@
void ReferenceProcessor::clean_up_discovered_reflist(DiscoveredList& refs_list) {
assert(!discovery_is_atomic(), "Else why call this method?");
DiscoveredListIterator iter(refs_list, NULL, NULL);
- size_t length = refs_list.length();
while (iter.has_next()) {
iter.load_ptrs(DEBUG_ONLY(true /* allow_null_referent */));
oop next = java_lang_ref_Reference::next(iter.obj());
@@ -941,12 +951,11 @@
)
// Remove Reference object from list
iter.remove();
- --length;
+ iter.move_to_next();
} else {
iter.next();
}
}
- refs_list.set_length(length);
NOT_PRODUCT(
if (PrintGCDetails && TraceReferenceGC) {
gclog_or_tty->print(
@@ -1024,7 +1033,7 @@
// We have separate lists for enqueueing so no synchronization
// is necessary.
refs_list.set_head(obj);
- refs_list.set_length(refs_list.length() + 1);
+ refs_list.inc_length(1);
if (_discovered_list_needs_barrier) {
_bs->write_ref_field((void*)discovered_addr, current_head); guarantee(false, "Needs to be fixed: YSR");
}
@@ -1090,15 +1099,28 @@
// reachable.
if (is_alive_non_header() != NULL) {
oop referent = java_lang_ref_Reference::referent(obj);
- // We'd like to assert the following:
- // assert(referent != NULL, "Refs with null referents already filtered");
- // However, since this code may be executed concurrently with
- // mutators, which can clear() the referent, it is not
- // guaranteed that the referent is non-NULL.
+ // In the case of non-concurrent discovery, the last
+ // disjunct below should hold. It may not hold in the
+ // case of concurrent discovery because mutators may
+ // concurrently clear() a Reference.
+ assert(UseConcMarkSweepGC || UseG1GC || referent != NULL,
+ "Refs with null referents already filtered");
if (is_alive_non_header()->do_object_b(referent)) {
return false; // referent is reachable
}
}
+ if (rt == REF_SOFT) {
+ // For soft refs we can decide now if these are not
+ // current candidates for clearing, in which case we
+ // can mark through them now, rather than delaying that
+ // to the reference-processing phase. Since all current
+ // time-stamp policies advance the soft-ref clock only
+ // at a major collection cycle, this is always currently
+ // accurate.
+ if (!_current_soft_ref_policy->should_clear_reference(obj)) {
+ return false;
+ }
+ }
HeapWord* const discovered_addr = java_lang_ref_Reference::discovered_addr(obj);
const oop discovered = java_lang_ref_Reference::discovered(obj);
@@ -1168,7 +1190,7 @@
_bs->write_ref_field((oop*)discovered_addr, current_head);
}
list->set_head(obj);
- list->set_length(list->length() + 1);
+ list->inc_length(1);
}
// In the MT discovery case, it is currently possible to see
@@ -1209,45 +1231,48 @@
TraceTime tt("Preclean SoftReferences", PrintGCDetails && PrintReferenceGC,
false, gclog_or_tty);
for (int i = 0; i < _num_q; i++) {
+ if (yield->should_return()) {
+ return;
+ }
preclean_discovered_reflist(_discoveredSoftRefs[i], is_alive,
keep_alive, complete_gc, yield);
}
}
- if (yield->should_return()) {
- return;
- }
// Weak references
{
TraceTime tt("Preclean WeakReferences", PrintGCDetails && PrintReferenceGC,
false, gclog_or_tty);
for (int i = 0; i < _num_q; i++) {
+ if (yield->should_return()) {
+ return;
+ }
preclean_discovered_reflist(_discoveredWeakRefs[i], is_alive,
keep_alive, complete_gc, yield);
}
}
- if (yield->should_return()) {
- return;
- }
// Final references
{
TraceTime tt("Preclean FinalReferences", PrintGCDetails && PrintReferenceGC,
false, gclog_or_tty);
for (int i = 0; i < _num_q; i++) {
+ if (yield->should_return()) {
+ return;
+ }
preclean_discovered_reflist(_discoveredFinalRefs[i], is_alive,
keep_alive, complete_gc, yield);
}
}
- if (yield->should_return()) {
- return;
- }
// Phantom references
{
TraceTime tt("Preclean PhantomReferences", PrintGCDetails && PrintReferenceGC,
false, gclog_or_tty);
for (int i = 0; i < _num_q; i++) {
+ if (yield->should_return()) {
+ return;
+ }
preclean_discovered_reflist(_discoveredPhantomRefs[i], is_alive,
keep_alive, complete_gc, yield);
}
@@ -1256,9 +1281,12 @@
// Walk the given discovered ref list, and remove all reference objects
// whose referents are still alive, whose referents are NULL or which
-// are not active (have a non-NULL next field). NOTE: For this to work
-// correctly, refs discovery can not be happening concurrently with this
-// step.
+// are not active (have a non-NULL next field). NOTE: When we are
+// thus precleaning the ref lists (which happens single-threaded today),
+// we do not disable refs discovery to honour the correct semantics of
+// java.lang.Reference. As a result, we need to be careful below
+// that ref removal steps interleave safely with ref discovery steps
+// (in this thread).
void
ReferenceProcessor::preclean_discovered_reflist(DiscoveredList& refs_list,
BoolObjectClosure* is_alive,
@@ -1266,7 +1294,6 @@
VoidClosure* complete_gc,
YieldClosure* yield) {
DiscoveredListIterator iter(refs_list, keep_alive, is_alive);
- size_t length = refs_list.length();
while (iter.has_next()) {
iter.load_ptrs(DEBUG_ONLY(true /* allow_null_referent */));
oop obj = iter.obj();
@@ -1281,7 +1308,6 @@
}
// Remove Reference object from list
iter.remove();
- --length;
// Keep alive its cohort.
iter.make_referent_alive();
if (UseCompressedOops) {
@@ -1291,12 +1317,11 @@
oop* next_addr = (oop*)java_lang_ref_Reference::next_addr(obj);
keep_alive->do_oop(next_addr);
}
+ iter.move_to_next();
} else {
iter.next();
}
}
- refs_list.set_length(length);
-
// Close the reachable set
complete_gc->do_void();
--- a/hotspot/src/share/vm/memory/referenceProcessor.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/memory/referenceProcessor.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -23,7 +23,7 @@
*/
// ReferenceProcessor class encapsulates the per-"collector" processing
-// of "weak" references for GC. The interface is useful for supporting
+// of java.lang.Reference objects for GC. The interface is useful for supporting
// a generational abstraction, in particular when there are multiple
// generations that are being independently collected -- possibly
// concurrently and/or incrementally. Note, however, that the
@@ -75,6 +75,14 @@
// all collectors but the CMS collector).
BoolObjectClosure* _is_alive_non_header;
+ // Soft ref clearing policies
+ // . the default policy
+ static ReferencePolicy* _default_soft_ref_policy;
+ // . the "clear all" policy
+ static ReferencePolicy* _always_clear_soft_ref_policy;
+ // . the current policy below is either one of the above
+ ReferencePolicy* _current_soft_ref_policy;
+
// The discovered ref lists themselves
// The MT'ness degree of the queues below
@@ -90,6 +98,12 @@
DiscoveredList* discovered_soft_refs() { return _discoveredSoftRefs; }
static oop sentinel_ref() { return _sentinelRef; }
static oop* adr_sentinel_ref() { return &_sentinelRef; }
+ ReferencePolicy* setup_policy(bool always_clear) {
+ _current_soft_ref_policy = always_clear ?
+ _always_clear_soft_ref_policy : _default_soft_ref_policy;
+ _current_soft_ref_policy->setup(); // snapshot the policy threshold
+ return _current_soft_ref_policy;
+ }
public:
// Process references with a certain reachability level.
@@ -297,8 +311,7 @@
bool discover_reference(oop obj, ReferenceType rt);
// Process references found during GC (called by the garbage collector)
- void process_discovered_references(ReferencePolicy* policy,
- BoolObjectClosure* is_alive,
+ void process_discovered_references(BoolObjectClosure* is_alive,
OopClosure* keep_alive,
VoidClosure* complete_gc,
AbstractRefProcTaskExecutor* task_executor);
--- a/hotspot/src/share/vm/memory/tenuredGeneration.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/memory/tenuredGeneration.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/memory/universe.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/memory/universe.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -96,7 +96,7 @@
bool Universe::_fully_initialized = false;
size_t Universe::_heap_capacity_at_last_gc;
-size_t Universe::_heap_used_at_last_gc;
+size_t Universe::_heap_used_at_last_gc = 0;
CollectedHeap* Universe::_collectedHeap = NULL;
address Universe::_heap_base = NULL;
--- a/hotspot/src/share/vm/oops/constantPoolOop.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/oops/constantPoolOop.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/oops/oop.inline.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/oops/oop.inline.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -92,7 +92,7 @@
// This is only to be used during GC, for from-space objects, so no
// barrier is needed.
if (UseCompressedOops) {
- _metadata._compressed_klass = encode_heap_oop_not_null(k);
+ _metadata._compressed_klass = encode_heap_oop(k); // may be null (parnew overflow handling)
} else {
_metadata._klass = (klassOop)k;
}
--- a/hotspot/src/share/vm/opto/block.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/opto/block.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/opto/callnode.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/opto/callnode.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -395,7 +395,13 @@
OptoReg::regname(OptoReg::c_frame_pointer),
regalloc->reg2offset(box_reg));
}
- format_helper( regalloc, st, obj, "MON-OBJ[", i, &scobjs );
+ const char* obj_msg = "MON-OBJ[";
+ if (EliminateLocks) {
+ while( !box->is_BoxLock() ) box = box->in(1);
+ if (box->as_BoxLock()->is_eliminated())
+ obj_msg = "MON-OBJ(LOCK ELIMINATED)[";
+ }
+ format_helper( regalloc, st, obj, obj_msg, i, &scobjs );
}
for (i = 0; i < (uint)scobjs.length(); i++) {
@@ -908,8 +914,9 @@
add_req(lock->box_node());
add_req(lock->obj_node());
} else {
- add_req(NULL);
- add_req(NULL);
+ Node* top = Compile::current()->top();
+ add_req(top);
+ add_req(top);
}
jvms()->set_scloff(nextmon+MonitorEdges);
jvms()->set_endoff(req());
@@ -1382,7 +1389,7 @@
//
// If we are locking an unescaped object, the lock/unlock is unnecessary
//
- ConnectionGraph *cgr = Compile::current()->congraph();
+ ConnectionGraph *cgr = phase->C->congraph();
PointsToNode::EscapeState es = PointsToNode::GlobalEscape;
if (cgr != NULL)
es = cgr->escape_state(obj_node(), phase);
@@ -1450,6 +1457,7 @@
// Mark it eliminated to update any counters
lock->set_eliminated();
+ lock->set_coarsened();
}
} else if (result != NULL && ctrl->is_Region() &&
iter->_worklist.member(ctrl)) {
@@ -1484,7 +1492,7 @@
//
// If we are unlocking an unescaped object, the lock/unlock is unnecessary.
//
- ConnectionGraph *cgr = Compile::current()->congraph();
+ ConnectionGraph *cgr = phase->C->congraph();
PointsToNode::EscapeState es = PointsToNode::GlobalEscape;
if (cgr != NULL)
es = cgr->escape_state(obj_node(), phase);
--- a/hotspot/src/share/vm/opto/callnode.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/opto/callnode.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -780,7 +780,8 @@
//------------------------------AbstractLockNode-----------------------------------
class AbstractLockNode: public CallNode {
private:
- bool _eliminate; // indicates this lock can be safely eliminated
+ bool _eliminate; // indicates this lock can be safely eliminated
+ bool _coarsened; // indicates this lock was coarsened
#ifndef PRODUCT
NamedCounter* _counter;
#endif
@@ -801,6 +802,7 @@
public:
AbstractLockNode(const TypeFunc *tf)
: CallNode(tf, NULL, TypeRawPtr::BOTTOM),
+ _coarsened(false),
_eliminate(false)
{
#ifndef PRODUCT
@@ -819,6 +821,9 @@
// mark node as eliminated and update the counter if there is one
void set_eliminated();
+ bool is_coarsened() { return _coarsened; }
+ void set_coarsened() { _coarsened = true; }
+
// locking does not modify its arguments
virtual bool may_modify(const TypePtr *addr_t, PhaseTransform *phase){ return false;}
--- a/hotspot/src/share/vm/opto/compile.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/opto/compile.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1532,11 +1532,6 @@
if (failing()) return;
- // get rid of the connection graph since it's information is not
- // updated by optimizations
- _congraph = NULL;
-
-
// Loop transforms on the ideal graph. Range Check Elimination,
// peeling, unrolling, etc.
--- a/hotspot/src/share/vm/opto/escape.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/opto/escape.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -199,7 +199,8 @@
es = ptnode_adr(idx)->escape_state();
// if we have already computed a value, return it
- if (es != PointsToNode::UnknownEscape)
+ if (es != PointsToNode::UnknownEscape &&
+ ptnode_adr(idx)->node_type() == PointsToNode::JavaObject)
return es;
// PointsTo() calls n->uncast() which can return a new ideal node.
--- a/hotspot/src/share/vm/opto/locknode.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/opto/locknode.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -44,10 +44,15 @@
_inmask.Insert(reg);
}
+//-----------------------------hash--------------------------------------------
+uint BoxLockNode::hash() const {
+ return Node::hash() + _slot + (_is_eliminated ? Compile::current()->fixed_slots() : 0);
+}
+
//------------------------------cmp--------------------------------------------
uint BoxLockNode::cmp( const Node &n ) const {
const BoxLockNode &bn = (const BoxLockNode &)n;
- return bn._slot == _slot;
+ return bn._slot == _slot && bn._is_eliminated == _is_eliminated;
}
OptoReg::Name BoxLockNode::stack_slot(Node* box_node) {
--- a/hotspot/src/share/vm/opto/locknode.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/opto/locknode.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -36,7 +36,7 @@
virtual const RegMask &in_RegMask(uint) const;
virtual const RegMask &out_RegMask() const;
virtual uint size_of() const;
- virtual uint hash() const { return Node::hash() + _slot; }
+ virtual uint hash() const;
virtual uint cmp( const Node &n ) const;
virtual const class Type *bottom_type() const { return TypeRawPtr::BOTTOM; }
virtual uint ideal_reg() const { return Op_RegP; }
--- a/hotspot/src/share/vm/opto/macro.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/opto/macro.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -59,7 +59,7 @@
for (uint i = old_dbg_start; i < oldcall->req(); i++) {
Node* old_in = oldcall->in(i);
// Clone old SafePointScalarObjectNodes, adjusting their field contents.
- if (old_in->is_SafePointScalarObject()) {
+ if (old_in != NULL && old_in->is_SafePointScalarObject()) {
SafePointScalarObjectNode* old_sosn = old_in->as_SafePointScalarObject();
uint old_unique = C->unique();
Node* new_in = old_sosn->clone(jvms_adj, sosn_map);
@@ -1509,21 +1509,63 @@
if (!alock->is_eliminated()) {
return false;
}
- // Mark the box lock as eliminated if all correspondent locks are eliminated
- // to construct correct debug info.
- BoxLockNode* box = alock->box_node()->as_BoxLock();
- if (!box->is_eliminated()) {
- bool eliminate = true;
- for (DUIterator_Fast imax, i = box->fast_outs(imax); i < imax; i++) {
- Node *lck = box->fast_out(i);
- if (lck->is_Lock() && !lck->as_AbstractLock()->is_eliminated()) {
- eliminate = false;
- break;
- }
- }
- if (eliminate)
- box->set_eliminated();
- }
+ if (alock->is_Lock() && !alock->is_coarsened()) {
+ // Create new "eliminated" BoxLock node and use it
+ // in monitor debug info for the same object.
+ BoxLockNode* oldbox = alock->box_node()->as_BoxLock();
+ Node* obj = alock->obj_node();
+ if (!oldbox->is_eliminated()) {
+ BoxLockNode* newbox = oldbox->clone()->as_BoxLock();
+ newbox->set_eliminated();
+ transform_later(newbox);
+ // Replace old box node with new box for all users
+ // of the same object.
+ for (uint i = 0; i < oldbox->outcnt();) {
+
+ bool next_edge = true;
+ Node* u = oldbox->raw_out(i);
+ if (u == alock) {
+ i++;
+ continue; // It will be removed below
+ }
+ if (u->is_Lock() &&
+ u->as_Lock()->obj_node() == obj &&
+ // oldbox could be referenced in debug info also
+ u->as_Lock()->box_node() == oldbox) {
+ assert(u->as_Lock()->is_eliminated(), "sanity");
+ _igvn.hash_delete(u);
+ u->set_req(TypeFunc::Parms + 1, newbox);
+ next_edge = false;
+#ifdef ASSERT
+ } else if (u->is_Unlock() && u->as_Unlock()->obj_node() == obj) {
+ assert(u->as_Unlock()->is_eliminated(), "sanity");
+#endif
+ }
+ // Replace old box in monitor debug info.
+ if (u->is_SafePoint() && u->as_SafePoint()->jvms()) {
+ SafePointNode* sfn = u->as_SafePoint();
+ JVMState* youngest_jvms = sfn->jvms();
+ int max_depth = youngest_jvms->depth();
+ for (int depth = 1; depth <= max_depth; depth++) {
+ JVMState* jvms = youngest_jvms->of_depth(depth);
+ int num_mon = jvms->nof_monitors();
+ // Loop over monitors
+ for (int idx = 0; idx < num_mon; idx++) {
+ Node* obj_node = sfn->monitor_obj(jvms, idx);
+ Node* box_node = sfn->monitor_box(jvms, idx);
+ if (box_node == oldbox && obj_node == obj) {
+ int j = jvms->monitor_box_offset(idx);
+ _igvn.hash_delete(u);
+ u->set_req(j, newbox);
+ next_edge = false;
+ }
+ } // for (int idx = 0;
+ } // for (int depth = 1;
+ } // if (u->is_SafePoint()
+ if (next_edge) i++;
+ } // for (uint i = 0; i < oldbox->outcnt();)
+ } // if (!oldbox->is_eliminated())
+ } // if (alock->is_Lock() && !lock->is_coarsened())
#ifndef PRODUCT
if (PrintEliminateLocks) {
@@ -1562,6 +1604,15 @@
_igvn.subsume_node(ctrlproj, fallthroughproj);
_igvn.hash_delete(memproj);
_igvn.subsume_node(memproj, memproj_fallthrough);
+
+ // Delete FastLock node also if this Lock node is unique user
+ // (a loop peeling may clone a Lock node).
+ Node* flock = alock->as_Lock()->fastlock_node();
+ if (flock->outcnt() == 1) {
+ assert(flock->unique_out() == alock, "sanity");
+ _igvn.hash_delete(flock);
+ _igvn.subsume_node(flock, top());
+ }
}
// Seach for MemBarRelease node and delete it also.
@@ -1887,7 +1938,7 @@
bool PhaseMacroExpand::expand_macro_nodes() {
if (C->macro_count() == 0)
return false;
- // attempt to eliminate allocations
+ // First, attempt to eliminate locks
bool progress = true;
while (progress) {
progress = false;
@@ -1895,6 +1946,26 @@
Node * n = C->macro_node(i-1);
bool success = false;
debug_only(int old_macro_count = C->macro_count(););
+ if (n->is_AbstractLock()) {
+ success = eliminate_locking_node(n->as_AbstractLock());
+ } else if (n->Opcode() == Op_Opaque1 || n->Opcode() == Op_Opaque2) {
+ _igvn.add_users_to_worklist(n);
+ _igvn.hash_delete(n);
+ _igvn.subsume_node(n, n->in(1));
+ success = true;
+ }
+ assert(success == (C->macro_count() < old_macro_count), "elimination reduces macro count");
+ progress = progress || success;
+ }
+ }
+ // Next, attempt to eliminate allocations
+ progress = true;
+ while (progress) {
+ progress = false;
+ for (int i = C->macro_count(); i > 0; i--) {
+ Node * n = C->macro_node(i-1);
+ bool success = false;
+ debug_only(int old_macro_count = C->macro_count(););
switch (n->class_id()) {
case Node::Class_Allocate:
case Node::Class_AllocateArray:
@@ -1902,17 +1973,10 @@
break;
case Node::Class_Lock:
case Node::Class_Unlock:
- success = eliminate_locking_node(n->as_AbstractLock());
+ assert(!n->as_AbstractLock()->is_eliminated(), "sanity");
break;
default:
- if (n->Opcode() == Op_Opaque1 || n->Opcode() == Op_Opaque2) {
- _igvn.add_users_to_worklist(n);
- _igvn.hash_delete(n);
- _igvn.subsume_node(n, n->in(1));
- success = true;
- } else {
- assert(false, "unknown node type in macro list");
- }
+ assert(false, "unknown node type in macro list");
}
assert(success == (C->macro_count() < old_macro_count), "elimination reduces macro count");
progress = progress || success;
--- a/hotspot/src/share/vm/opto/output.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/opto/output.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -849,10 +849,8 @@
// Loop over monitors and insert into array
for(idx = 0; idx < num_mon; idx++) {
// Grab the node that defines this monitor
- Node* box_node;
- Node* obj_node;
- box_node = sfn->monitor_box(jvms, idx);
- obj_node = sfn->monitor_obj(jvms, idx);
+ Node* box_node = sfn->monitor_box(jvms, idx);
+ Node* obj_node = sfn->monitor_obj(jvms, idx);
// Create ScopeValue for object
ScopeValue *scval = NULL;
@@ -890,6 +888,7 @@
OptoReg::Name box_reg = BoxLockNode::stack_slot(box_node);
Location basic_lock = Location::new_stk_loc(Location::normal,_regalloc->reg2offset(box_reg));
+ while( !box_node->is_BoxLock() ) box_node = box_node->in(1);
monarray->append(new MonitorValue(scval, basic_lock, box_node->as_BoxLock()->is_eliminated()));
}
--- a/hotspot/src/share/vm/opto/phase.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/opto/phase.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/opto/phase.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/opto/phase.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/prims/jniCheck.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/prims/jniCheck.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
@@ -112,18 +112,6 @@
static const char * fatal_non_string = "JNI string operation received a non-string";
-
-// Report a JNI failure caught by -Xcheck:jni. Perform a core dump.
-// Note: two variations -- one to be called when in VM state (e.g. when
-// within IN_VM macro), one to be called when in NATIVE state.
-
-// When in VM state:
-static void ReportJNIFatalError(JavaThread* thr, const char *msg) {
- tty->print_cr("FATAL ERROR in native method: %s", msg);
- thr->print_stack();
- os::abort(true);
-}
-
// When in VM state:
static void ReportJNIWarning(JavaThread* thr, const char *msg) {
tty->print_cr("WARNING in native method: %s", msg);
--- a/hotspot/src/share/vm/prims/jniCheck.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/prims/jniCheck.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc. 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
@@ -22,6 +22,19 @@
*
*/
+extern "C" {
+ // Report a JNI failure caught by -Xcheck:jni. Perform a core dump.
+ // Note: two variations -- one to be called when in VM state (e.g. when
+ // within IN_VM macro), one to be called when in NATIVE state.
+
+ // When in VM state:
+ static void ReportJNIFatalError(JavaThread* thr, const char *msg) {
+ tty->print_cr("FATAL ERROR in native method: %s", msg);
+ thr->print_stack();
+ os::abort(true);
+ }
+}
+
//
// Checked JNI routines that are useful for outside of checked JNI
//
--- a/hotspot/src/share/vm/prims/jvmtiEnvBase.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiEnvBase.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/prims/jvmtiTrace.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiTrace.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/runtime/arguments.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/runtime/arguments.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -2322,7 +2322,12 @@
return JNI_ERR;
}
}
-
+ // Change the default value for flags which have different default values
+ // when working with older JDKs.
+ if (JDK_Version::current().compare_major(6) <= 0 &&
+ FLAG_IS_DEFAULT(UseVMInterruptibleIO)) {
+ FLAG_SET_DEFAULT(UseVMInterruptibleIO, true);
+ }
return JNI_OK;
}
--- a/hotspot/src/share/vm/runtime/biasedLocking.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/runtime/biasedLocking.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -582,13 +582,19 @@
if (heuristics == HR_NOT_BIASED) {
return NOT_BIASED;
} else if (heuristics == HR_SINGLE_REVOKE) {
- if (mark->biased_locker() == THREAD) {
+ Klass *k = Klass::cast(obj->klass());
+ markOop prototype_header = k->prototype_header();
+ if (mark->biased_locker() == THREAD &&
+ prototype_header->bias_epoch() == mark->bias_epoch()) {
// A thread is trying to revoke the bias of an object biased
// toward it, again likely due to an identity hash code
// computation. We can again avoid a safepoint in this case
// since we are only going to walk our own stack. There are no
// races with revocations occurring in other threads because we
// reach no safepoints in the revocation path.
+ // Also check the epoch because even if threads match, another thread
+ // can come in with a CAS to steal the bias of an object that has a
+ // stale epoch.
ResourceMark rm;
if (TraceBiasedLocking) {
tty->print_cr("Revoking bias by walking my own stack:");
--- a/hotspot/src/share/vm/runtime/globals.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/runtime/globals.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -342,6 +342,9 @@
product(bool, UseNUMA, false, \
"Use NUMA if available") \
\
+ product(bool, ForceNUMA, false, \
+ "Force NUMA optimizations on single-node/UMA systems") \
+ \
product(intx, NUMAChunkResizeWeight, 20, \
"Percentage (0-100) used to weight the current sample when " \
"computing exponentially decaying average for " \
@@ -1474,7 +1477,7 @@
"CMSPrecleanNumerator:CMSPrecleanDenominator yields convergence" \
" ratio") \
\
- product(bool, CMSPrecleanRefLists1, false, \
+ product(bool, CMSPrecleanRefLists1, true, \
"Preclean ref lists during (initial) preclean phase") \
\
product(bool, CMSPrecleanRefLists2, false, \
@@ -3262,9 +3265,10 @@
diagnostic(bool, PrintDTraceDOF, false, \
"Print the DTrace DOF passed to the system for JSDT probes") \
\
- product(bool, UseVMInterruptibleIO, true, \
+ product(bool, UseVMInterruptibleIO, false, \
"(Unstable, Solaris-specific) Thread interrupt before or with " \
- "EINTR for I/O operations results in OS_INTRPT")
+ "EINTR for I/O operations results in OS_INTRPT. The default value"\
+ " of this flag is true for JDK 6 and earliers")
/*
--- a/hotspot/src/share/vm/runtime/javaCalls.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/runtime/javaCalls.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
@@ -309,8 +309,12 @@
CHECK_UNHANDLED_OOPS_ONLY(thread->clear_unhandled_oops();)
- // Make sure that the arguments have the right type
- debug_only(args->verify(method, result->get_type(), thread));
+ // Verify the arguments
+
+ if (CheckJNICalls) {
+ args->verify(method, result->get_type(), thread);
+ }
+ else debug_only(args->verify(method, result->get_type(), thread));
// Ignore call if method is empty
if (method->is_empty_method()) {
@@ -431,24 +435,26 @@
return TaggedStackInterpreter ? _parameters : _value;
}
-//--------------------------------------------------------------------------------------
-// Non-Product code
-#ifndef PRODUCT
class SignatureChekker : public SignatureIterator {
private:
bool *_is_oop;
int _pos;
BasicType _return_type;
+ intptr_t* _value;
+ Thread* _thread;
public:
bool _is_return;
- SignatureChekker(symbolHandle signature, BasicType return_type, bool is_static, bool* is_oop) : SignatureIterator(signature) {
+ SignatureChekker(symbolHandle signature, BasicType return_type, bool is_static, bool* is_oop, intptr_t* value, Thread* thread) : SignatureIterator(signature) {
_is_oop = is_oop;
_is_return = false;
_return_type = return_type;
_pos = 0;
+ _value = value;
+ _thread = thread;
+
if (!is_static) {
check_value(true); // Receiver must be an oop
}
@@ -489,6 +495,24 @@
check_return_type(t);
return;
}
+
+ // verify handle and the oop pointed to by handle
+ int p = _pos;
+ bool bad = false;
+ // If argument is oop
+ if (_is_oop[p]) {
+ intptr_t v = _value[p];
+ if (v != 0 ) {
+ size_t t = (size_t)v;
+ bad = (t < (size_t)os::vm_page_size() ) || !(*(oop*)v)->is_oop_or_null(true);
+ if (CheckJNICalls && bad) {
+ ReportJNIFatalError((JavaThread*)_thread, "Bad JNI oop argument");
+ }
+ }
+ // for the regular debug case.
+ assert(!bad, "Bad JNI oop argument");
+ }
+
check_value(true);
}
@@ -505,6 +529,7 @@
void do_array(int begin, int end) { check_obj(T_OBJECT); }
};
+
void JavaCallArguments::verify(methodHandle method, BasicType return_type,
Thread *thread) {
guarantee(method->size_of_parameters() == size_of_parameters(), "wrong no. of arguments pushed");
@@ -515,10 +540,9 @@
// Check that oop information is correct
symbolHandle signature (thread, method->signature());
- SignatureChekker sc(signature, return_type, method->is_static(),_is_oop);
+ SignatureChekker sc(signature, return_type, method->is_static(),_is_oop, _value, thread);
sc.iterate_parameters();
sc.check_doing_return(true);
sc.iterate_returntype();
}
-#endif // PRODUCT
--- a/hotspot/src/share/vm/runtime/javaCalls.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/runtime/javaCalls.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
@@ -150,7 +150,7 @@
int size_of_parameters() const { return _size; }
// Verify that pushed arguments fits a given method
- void verify(methodHandle method, BasicType return_type, Thread *thread) PRODUCT_RETURN;
+ void verify(methodHandle method, BasicType return_type, Thread *thread);
};
// All calls to Java have to go via JavaCalls. Sets up the stack frame
--- a/hotspot/src/share/vm/runtime/perfMemory.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/runtime/perfMemory.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/runtime/perfMemory.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/runtime/perfMemory.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/runtime/sharedRuntime.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/runtime/sharedRuntime.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -556,7 +556,10 @@
// the caller was at a call site, it's safe to destroy all
// caller-saved registers, as these entry points do.
VtableStub* vt_stub = VtableStubs::stub_containing(pc);
- guarantee(vt_stub != NULL, "unable to find SEGVing vtable stub");
+
+ // If vt_stub is NULL, then return NULL to signal handler to report the SEGV error.
+ if (vt_stub == NULL) return NULL;
+
if (vt_stub->is_abstract_method_error(pc)) {
assert(!vt_stub->is_vtable_stub(), "should never see AbstractMethodErrors from vtable-type VtableStubs");
return StubRoutines::throw_AbstractMethodError_entry();
@@ -565,7 +568,9 @@
}
} else {
CodeBlob* cb = CodeCache::find_blob(pc);
- guarantee(cb != NULL, "exception happened outside interpreter, nmethods and vtable stubs (1)");
+
+ // If code blob is NULL, then return NULL to signal handler to report the SEGV error.
+ if (cb == NULL) return NULL;
// Exception happened in CodeCache. Must be either:
// 1. Inline-cache check in C2I handler blob,
@@ -574,7 +579,7 @@
if (!cb->is_nmethod()) {
guarantee(cb->is_adapter_blob(),
- "exception happened outside interpreter, nmethods and vtable stubs (2)");
+ "exception happened outside interpreter, nmethods and vtable stubs (1)");
// There is no handler here, so we will simply unwind.
return StubRoutines::throw_NullPointerException_at_call_entry();
}
--- a/hotspot/src/share/vm/runtime/thread.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/runtime/thread.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/services/threadService.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/services/threadService.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/utilities/array.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/utilities/array.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/utilities/constantTag.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/utilities/constantTag.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/utilities/growableArray.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/utilities/growableArray.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/utilities/hashtable.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/utilities/hashtable.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc. 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
--- a/hotspot/src/share/vm/utilities/macros.hpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/utilities/macros.hpp Wed Jul 05 16:44:31 2017 +0200
@@ -65,8 +65,10 @@
// COMPILER2 variant
#ifdef COMPILER2
#define COMPILER2_PRESENT(code) code
+#define NOT_COMPILER2(code)
#else // COMPILER2
#define COMPILER2_PRESENT(code)
+#define NOT_COMPILER2(code) code
#endif // COMPILER2
--- a/hotspot/src/share/vm/utilities/taskqueue.cpp Thu Dec 04 11:10:17 2008 -0800
+++ b/hotspot/src/share/vm/utilities/taskqueue.cpp Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/6756768/Test6756768.java Wed Jul 05 16:44:31 2017 +0200
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/**
+ * @test
+ * @bug 6756768
+ * @summary C1 generates invalid code
+ *
+ * @run main/othervm -Xcomp Test6756768
+ */
+
+class Test6756768a
+{
+ static boolean var_1 = true;
+}
+
+final class Test6756768b
+{
+ static boolean var_24 = false;
+ static int var_25 = 0;
+
+ static boolean var_temp1 = Test6756768a.var_1 = false;
+}
+
+public final class Test6756768 extends Test6756768a
+{
+ final static int var = var_1 ^ (Test6756768b.var_24 ? var_1 : var_1) ? Test6756768b.var_25 : 1;
+
+ static public void main(String[] args) {
+ if (var != 0) {
+ throw new InternalError("var = " + var);
+ }
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/6756768/Test6756768_2.java Wed Jul 05 16:44:31 2017 +0200
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/**
+ * @test
+ * @bug 6756768
+ * @summary C1 generates invalid code
+ *
+ * @run main/othervm -Xcomp Test6756768_2
+ */
+
+class Test6756768_2a {
+ static int var = ++Test6756768_2.var;
+}
+
+public class Test6756768_2 {
+ static int var = 1;
+
+ static Object d2 = null;
+
+ static void test_static_field() {
+ int v = var;
+ int v2 = Test6756768_2a.var;
+ int v3 = var;
+ var = v3;
+ }
+
+ public static void main(String[] args) {
+ var = 1;
+ test_static_field();
+ if (var != 2) {
+ throw new InternalError();
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/6775880/Test.java Wed Jul 05 16:44:31 2017 +0200
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ *
+ */
+
+/*
+ * @test
+ * @bug 6775880
+ * @summary EA +DeoptimizeALot: assert(mon_info->owner()->is_locked(),"object must be locked now")
+ * @compile -source 1.4 -target 1.4 Test.java
+ * @run main/othervm -server -Xbatch -XX:+DoEscapeAnalysis -XX:+DeoptimizeALot -XX:CompileCommand=exclude,java.lang.AbstractStringBuilder::append Test
+ */
+
+public class Test {
+
+ int cnt;
+ int b[];
+ String s;
+
+ String test() {
+ String res="";
+ for (int i=0; i < cnt; i++) {
+ if (i != 0) {
+ res = res +".";
+ }
+ res = res + b[i];
+ }
+ return res;
+ }
+
+ public static void main(String[] args) {
+ Test t = new Test();
+ t.cnt = 3;
+ t.b = new int[3];
+ t.b[0] = 0;
+ t.b[1] = 1;
+ t.b[2] = 2;
+ int j=0;
+ t.s = "";
+ for (int i=0; i<10001; i++) {
+ t.s = "c";
+ t.s = t.test();
+ }
+ System.out.println("After s=" + t.s);
+ }
+}
+
+
--- a/jdk/.hgtags Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/.hgtags Wed Jul 05 16:44:31 2017 +0200
@@ -15,3 +15,4 @@
cc5f810b5af8a3a83b0df5a29d9e24d7a0ff8086 jdk7-b38
4e51997582effa006dde5c6d8b8820b2045b9c7f jdk7-b39
2201dad60231a3c3e0346e3a0250d69ca3b71fd4 jdk7-b40
+44941f893cea95ecdd5987b12e548069bd803849 jdk7-b41
--- a/jdk/make/common/shared/Sanity.gmk Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/make/common/shared/Sanity.gmk Wed Jul 05 16:44:31 2017 +0200
@@ -1350,10 +1350,11 @@
$(ALSA_VERSION_CHECK).c:
@$(prep-target)
@$(ECHO) "#include <alsa/asoundlib.h>\n" \
- "int main(char** argv, int argc) {\n" \
- " printf(\"%s\", SND_LIB_VERSION_STR);\n" \
- " return 0;\n" \
- "}\n" \
+ "#include <stdio.h>\n" \
+ "int main(int argc, char** argv) {\n" \
+ " printf(\"%s\", SND_LIB_VERSION_STR);\n" \
+ " return 0;\n" \
+ "}\n" \
> $@
endif
--- a/jdk/make/javax/swing/Makefile Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/make/javax/swing/Makefile Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
+# Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/jdk/make/netbeans/jmx/build.xml Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/make/netbeans/jmx/build.xml Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
<!--
- Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
--- a/jdk/make/sun/net/spi/Makefile Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/make/sun/net/spi/Makefile Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/make/sun/net/spi/nameservice/Makefile Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/make/sun/net/spi/nameservice/Makefile Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/com/sun/java/swing/SwingUtilities3.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/SwingUtilities3.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/DesktopProperty.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/DesktopProperty.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsDesktopManager.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsDesktopManager.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsInternalFrameTitlePane.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsInternalFrameTitlePane.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsScrollBarUI.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsScrollBarUI.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTableHeaderUI.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTableHeaderUI.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/com/sun/jmx/defaults/ServiceName.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/defaults/ServiceName.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java Wed Jul 05 16:44:31 2017 +0200
@@ -70,6 +70,7 @@
import javax.management.ListenerNotFoundException;
import javax.management.MBeanException;
import javax.management.MBeanInfo;
+import javax.management.MBeanNotificationInfo;
import javax.management.MBeanPermission;
import javax.management.MBeanRegistration;
import javax.management.MBeanRegistrationException;
@@ -1045,8 +1046,10 @@
Object resource = getResource(mbean);
MBeanInjector.inject(resource, mbs, name);
if (MBeanInjector.injectsSendNotification(resource)) {
+ MBeanNotificationInfo[] mbnis =
+ mbean.getMBeanInfo().getNotifications();
NotificationBroadcasterSupport nbs =
- new NotificationBroadcasterSupport();
+ new NotificationBroadcasterSupport(mbnis);
MBeanInjector.injectSendNotification(resource, nbs);
mbean = NotifySupport.wrap(mbean, nbs);
}
--- a/jdk/src/share/classes/com/sun/jmx/mbeanserver/ClassLoaderRepositorySupport.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/ClassLoaderRepositorySupport.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanIntrospector.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanIntrospector.java Wed Jul 05 16:44:31 2017 +0200
@@ -44,6 +44,7 @@
import javax.management.ImmutableDescriptor;
import javax.management.IntrospectionException;
import javax.management.InvalidAttributeValueException;
+import javax.management.JMX;
import javax.management.MBean;
import javax.management.MBeanAttributeInfo;
import javax.management.MBeanConstructorInfo;
@@ -79,7 +80,7 @@
* ancestor with ConvertingMethod. But that would mean an extra object
* for every Method in every Standard MBean interface.
*/
-abstract class MBeanIntrospector<M> {
+public abstract class MBeanIntrospector<M> {
static final class PerInterfaceMap<M>
extends WeakHashMap<Class<?>, WeakReference<PerInterface<M>>> {}
@@ -538,24 +539,25 @@
}
static MBeanNotificationInfo[] findNotifications(Object moi) {
- if (!(moi instanceof NotificationBroadcaster))
- return null;
- MBeanNotificationInfo[] mbn =
- ((NotificationBroadcaster) moi).getNotificationInfo();
- if (mbn == null || mbn.length == 0)
- return findNotificationsFromAnnotations(moi.getClass());
- MBeanNotificationInfo[] result =
- new MBeanNotificationInfo[mbn.length];
- for (int i = 0; i < mbn.length; i++) {
- MBeanNotificationInfo ni = mbn[i];
- if (ni.getClass() != MBeanNotificationInfo.class)
- ni = (MBeanNotificationInfo) ni.clone();
- result[i] = ni;
+ if (moi instanceof NotificationBroadcaster) {
+ MBeanNotificationInfo[] mbn =
+ ((NotificationBroadcaster) moi).getNotificationInfo();
+ if (mbn != null && mbn.length > 0) {
+ MBeanNotificationInfo[] result =
+ new MBeanNotificationInfo[mbn.length];
+ for (int i = 0; i < mbn.length; i++) {
+ MBeanNotificationInfo ni = mbn[i];
+ if (ni.getClass() != MBeanNotificationInfo.class)
+ ni = (MBeanNotificationInfo) ni.clone();
+ result[i] = ni;
+ }
+ return result;
+ }
}
- return result;
+ return findNotificationsFromAnnotations(moi.getClass());
}
- private static MBeanNotificationInfo[] findNotificationsFromAnnotations(
+ public static MBeanNotificationInfo[] findNotificationsFromAnnotations(
Class<?> mbeanClass) {
Class<?> c = getAnnotatedNotificationInfoClass(mbeanClass);
if (c == null)
--- a/jdk/src/share/classes/com/sun/jmx/mbeanserver/ObjectInputStreamWithLoader.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/ObjectInputStreamWithLoader.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/com/sun/jmx/mbeanserver/SecureClassLoaderRepository.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/SecureClassLoaderRepository.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/com/sun/jmx/mbeanserver/WeakIdentityHashMap.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/WeakIdentityHashMap.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/com/sun/jmx/remote/internal/ArrayNotificationBuffer.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/remote/internal/ArrayNotificationBuffer.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/com/sun/jmx/remote/internal/Unmarshal.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/remote/internal/Unmarshal.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/com/sun/jmx/remote/util/ClassLoaderWithRepository.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/remote/util/ClassLoaderWithRepository.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/com/sun/jmx/remote/util/ClassLogger.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/remote/util/ClassLogger.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/com/sun/jmx/remote/util/OrderClassLoaders.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/remote/util/OrderClassLoaders.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/com/sun/net/ssl/internal/www/protocol/https/HttpsURLConnectionOldImpl.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/com/sun/net/ssl/internal/www/protocol/https/HttpsURLConnectionOldImpl.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1996-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1996-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/java/awt/EventDispatchThread.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/java/awt/EventDispatchThread.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1996-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/java/net/HttpURLConnection.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/java/net/HttpURLConnection.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1996-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/java/nio/Buffer.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/java/nio/Buffer.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
@@ -543,6 +543,10 @@
return mark;
}
+ final void discardMark() { // package-private
+ mark = -1;
+ }
+
static void checkBounds(int off, int len, int size) { // package-private
if ((off | len | (off + len) | (size - (off + len))) < 0)
throw new IndexOutOfBoundsException();
--- a/jdk/src/share/classes/java/nio/ByteBufferAs-X-Buffer.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/java/nio/ByteBufferAs-X-Buffer.java Wed Jul 05 16:44:31 2017 +0200
@@ -150,6 +150,7 @@
sb.compact();
position(rem);
limit(capacity());
+ discardMark();
return this;
#else[rw]
throw new ReadOnlyBufferException();
--- a/jdk/src/share/classes/java/nio/Direct-X-Buffer.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/java/nio/Direct-X-Buffer.java Wed Jul 05 16:44:31 2017 +0200
@@ -365,6 +365,7 @@
unsafe.copyMemory(ix(pos), ix(0), rem << $LG_BYTES_PER_VALUE$);
position(rem);
limit(capacity());
+ discardMark();
return this;
#else[rw]
throw new ReadOnlyBufferException();
--- a/jdk/src/share/classes/java/nio/Heap-X-Buffer.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/java/nio/Heap-X-Buffer.java Wed Jul 05 16:44:31 2017 +0200
@@ -222,6 +222,7 @@
System.arraycopy(hb, ix(position()), hb, ix(0), remaining());
position(remaining());
limit(capacity());
+ discardMark();
return this;
#else[rw]
throw new ReadOnlyBufferException();
--- a/jdk/src/share/classes/java/nio/channels/Channels.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/java/nio/channels/Channels.java Wed Jul 05 16:44:31 2017 +0200
@@ -65,6 +65,10 @@
private Channels() { } // No instantiation
+ private static void checkNotNull(Object o, String name) {
+ if (o == null)
+ throw new NullPointerException("\"" + name + "\" is null!");
+ }
/**
* Write all remaining bytes in buffer to the given channel.
@@ -120,6 +124,7 @@
* @return A new input stream
*/
public static InputStream newInputStream(ReadableByteChannel ch) {
+ checkNotNull(ch, "ch");
return new sun.nio.ch.ChannelInputStream(ch);
}
@@ -138,6 +143,8 @@
* @return A new output stream
*/
public static OutputStream newOutputStream(final WritableByteChannel ch) {
+ checkNotNull(ch, "ch");
+
return new OutputStream() {
private ByteBuffer bb = null;
@@ -193,9 +200,7 @@
* @return A new readable byte channel
*/
public static ReadableByteChannel newChannel(final InputStream in) {
- if (in == null) {
- throw new NullPointerException();
- }
+ checkNotNull(in, "in");
if (in instanceof FileInputStream &&
FileInputStream.class.equals(in.getClass())) {
@@ -270,9 +275,7 @@
* @return A new writable byte channel
*/
public static WritableByteChannel newChannel(final OutputStream out) {
- if (out == null) {
- throw new NullPointerException();
- }
+ checkNotNull(out, "out");
if (out instanceof FileOutputStream &&
FileOutputStream.class.equals(out.getClass())) {
@@ -357,8 +360,8 @@
CharsetDecoder dec,
int minBufferCap)
{
- dec.reset();
- return StreamDecoder.forDecoder(ch, dec, minBufferCap);
+ checkNotNull(ch, "ch");
+ return StreamDecoder.forDecoder(ch, dec.reset(), minBufferCap);
}
/**
@@ -393,6 +396,7 @@
public static Reader newReader(ReadableByteChannel ch,
String csName)
{
+ checkNotNull(csName, "csName");
return newReader(ch, Charset.forName(csName).newDecoder(), -1);
}
@@ -425,8 +429,8 @@
final CharsetEncoder enc,
final int minBufferCap)
{
- enc.reset();
- return StreamEncoder.forEncoder(ch, enc, minBufferCap);
+ checkNotNull(ch, "ch");
+ return StreamEncoder.forEncoder(ch, enc.reset(), minBufferCap);
}
/**
@@ -461,6 +465,7 @@
public static Writer newWriter(WritableByteChannel ch,
String csName)
{
+ checkNotNull(csName, "csName");
return newWriter(ch, Charset.forName(csName).newEncoder(), -1);
}
--- a/jdk/src/share/classes/java/nio/channels/SelectableChannel.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/java/nio/channels/SelectableChannel.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/java/nio/channels/spi/AbstractSelectableChannel.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/java/nio/channels/spi/AbstractSelectableChannel.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/java/text/SimpleDateFormat.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/java/text/SimpleDateFormat.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1996-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1996-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/management/ClientContext.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/ClientContext.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/management/DefaultLoaderRepository.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/DefaultLoaderRepository.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/management/JMRuntimeException.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/JMRuntimeException.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/management/JMX.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/JMX.java Wed Jul 05 16:44:31 2017 +0200
@@ -51,8 +51,6 @@
* this class.
*/
static final JMX proof = new JMX();
- private static final ClassLogger logger =
- new ClassLogger("javax.management.misc", "JMX");
private JMX() {}
@@ -824,11 +822,16 @@
*/
public static boolean isNotificationSource(Object mbean)
throws NotCompliantMBeanException {
- if (mbean instanceof NotificationBroadcaster)
- return true;
- Object resource = (mbean instanceof DynamicWrapperMBean) ?
- ((DynamicWrapperMBean) mbean).getWrappedObject() : mbean;
- return (MBeanInjector.injectsSendNotification(resource));
+ for (int i = 0; i < 2; i++) {
+ if (mbean instanceof NotificationBroadcaster ||
+ MBeanInjector.injectsSendNotification(mbean))
+ return true;
+ if (mbean instanceof DynamicWrapperMBean)
+ mbean = ((DynamicWrapperMBean) mbean).getWrappedObject();
+ else
+ break;
+ }
+ return false;
}
/**
--- a/jdk/src/share/classes/javax/management/MBeanAttributeInfo.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/MBeanAttributeInfo.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/management/MBeanConstructorInfo.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/MBeanConstructorInfo.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/management/MBeanInfo.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/MBeanInfo.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/management/Notification.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/Notification.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/management/NotificationListener.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/NotificationListener.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/management/StandardEmitterMBean.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/StandardEmitterMBean.java Wed Jul 05 16:44:31 2017 +0200
@@ -26,6 +26,7 @@
package javax.management;
import com.sun.jmx.mbeanserver.MBeanInjector;
+import com.sun.jmx.mbeanserver.MBeanIntrospector;
import static javax.management.JMX.MBeanOptions;
/**
@@ -195,10 +196,12 @@
MBeanOptions options,
NotificationEmitter emitter) {
super(implementation, mbeanInterface, options);
+ MBeanNotificationInfo[] defaultMBNIs = defaultMBNIs(implementation);
if (emitter == null)
- emitter = defaultEmitter();
+ emitter = defaultEmitter(defaultMBNIs);
this.emitter = emitter;
- this.notificationInfo = emitter.getNotificationInfo();
+ this.notificationInfo =
+ firstNonEmpty(emitter.getNotificationInfo(), defaultMBNIs);
injectEmitter();
}
@@ -320,15 +323,23 @@
protected StandardEmitterMBean(Class<?> mbeanInterface, MBeanOptions options,
NotificationEmitter emitter) {
super(mbeanInterface, options);
+ MBeanNotificationInfo[] defaultMBNIs = defaultMBNIs(this);
if (emitter == null)
- emitter = defaultEmitter();
+ emitter = defaultEmitter(defaultMBNIs);
this.emitter = emitter;
- this.notificationInfo = emitter.getNotificationInfo();
+ this.notificationInfo =
+ firstNonEmpty(emitter.getNotificationInfo(), defaultMBNIs);
injectEmitter();
}
- private NotificationEmitter defaultEmitter() {
- MBeanNotificationInfo[] mbnis = getNotificationInfo();
+ private static MBeanNotificationInfo[] defaultMBNIs(Object mbean) {
+ return MBeanIntrospector.findNotificationsFromAnnotations(
+ mbean.getClass());
+ }
+
+ private NotificationEmitter defaultEmitter(MBeanNotificationInfo[] defaultMBNIs) {
+ MBeanNotificationInfo[] mbnis =
+ firstNonEmpty(getNotificationInfo(), defaultMBNIs);
// Will be null unless getNotificationInfo() is overridden,
// since the notificationInfo field has not been set at this point.
if (mbnis == null)
@@ -336,6 +347,14 @@
return new NotificationBroadcasterSupport(mbnis);
}
+ private static <T> T[] firstNonEmpty(T[]... items) {
+ for (T[] t : items) {
+ if (t != null && t.length != 0)
+ return t;
+ }
+ return null;
+ }
+
private void injectEmitter() {
if (emitter instanceof SendNotification) {
try {
--- a/jdk/src/share/classes/javax/management/StandardMBean.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/StandardMBean.java Wed Jul 05 16:44:31 2017 +0200
@@ -1058,10 +1058,6 @@
cachedMBeanInfo = info;
}
- private boolean isMXBean() {
- return mbean.isMXBean();
- }
-
private static <T> boolean identicalArrays(T[] a, T[] b) {
if (a == b)
return true;
@@ -1466,7 +1462,7 @@
// Check for "MBeanNotificationInfo[] getNotificationInfo()"
// method.
//
- // This method is only taken into account for the MBeanInfo
+ // This method is taken into account for the MBeanInfo
// immutability checks if and only if the given subclass is
// StandardEmitterMBean itself or can be assigned to
// StandardEmitterMBean.
--- a/jdk/src/share/classes/javax/management/loading/DefaultLoaderRepository.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/loading/DefaultLoaderRepository.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/management/loading/MLetObjectInputStream.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/loading/MLetObjectInputStream.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanInfo.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanInfo.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Portions Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Portions Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/management/openmbean/CompositeDataSupport.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/openmbean/CompositeDataSupport.java Wed Jul 05 16:44:31 2017 +0200
@@ -101,7 +101,7 @@
* the same size as <tt>itemNames</tt>; must not be null.
*
* @throws IllegalArgumentException <tt>compositeType</tt> is null, or
- * <tt>itemNames[]</tt> or <tt>itemValues[]</tt> is null or empty, or one
+ * <tt>itemNames[]</tt> or <tt>itemValues[]</tt> is null, or one
* of the elements in <tt>itemNames[]</tt> is a null or empty string, or
* <tt>itemNames[]</tt> and <tt>itemValues[]</tt> are not of the same size.
*
--- a/jdk/src/share/classes/javax/management/openmbean/OpenMBeanParameterInfoSupport.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/openmbean/OpenMBeanParameterInfoSupport.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/management/relation/MBeanServerNotificationFilter.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/relation/MBeanServerNotificationFilter.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/management/relation/Role.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/relation/Role.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/management/relation/RoleList.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/relation/RoleList.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/management/relation/RoleResult.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/relation/RoleResult.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/management/relation/RoleUnresolved.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/relation/RoleUnresolved.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/management/relation/RoleUnresolvedList.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/relation/RoleUnresolvedList.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/management/remote/rmi/NoCallStackClassLoader.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/remote/rmi/NoCallStackClassLoader.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/management/remote/rmi/RMIConnection.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/remote/rmi/RMIConnection.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/management/remote/rmi/RMIServerImpl.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/management/remote/rmi/RMIServerImpl.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/AbstractCellEditor.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/AbstractCellEditor.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/AbstractListModel.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/AbstractListModel.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/AbstractSpinnerModel.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/AbstractSpinnerModel.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/ActionMap.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/ActionMap.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/AncestorNotifier.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/AncestorNotifier.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/ArrayTable.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/ArrayTable.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/ButtonGroup.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/ButtonGroup.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/DefaultBoundedRangeModel.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/DefaultBoundedRangeModel.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/DefaultButtonModel.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/DefaultButtonModel.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/DefaultFocusManager.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/DefaultFocusManager.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/DefaultSingleSelectionModel.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/DefaultSingleSelectionModel.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/GroupLayout.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/GroupLayout.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2006-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/InputMap.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/InputMap.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/JDesktopPane.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/JDesktopPane.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/JDialog.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/JDialog.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/JLayeredPane.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/JLayeredPane.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/JMenu.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/JMenu.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/JMenuItem.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/JMenuItem.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/JSpinner.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/JSpinner.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/JTextField.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/JTextField.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/JTree.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/JTree.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/JWindow.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/JWindow.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/KeyboardManager.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/KeyboardManager.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/LayoutComparator.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/LayoutComparator.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/LayoutFocusTraversalPolicy.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/LayoutFocusTraversalPolicy.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/LegacyGlueFocusTraversalPolicy.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/LegacyGlueFocusTraversalPolicy.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/MultiUIDefaults.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/MultiUIDefaults.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/RepaintManager.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/RepaintManager.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/SpringLayout.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/SpringLayout.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/Timer.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/Timer.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/TimerQueue.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/TimerQueue.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/UIDefaults.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/UIDefaults.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/UIManager.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/UIManager.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/border/CompoundBorder.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/border/CompoundBorder.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicButtonListener.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicButtonListener.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxEditor.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxEditor.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicGraphicsUtils.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicGraphicsUtils.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicInternalFrameTitlePane.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicInternalFrameTitlePane.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicLabelUI.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicLabelUI.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicMenuUI.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicMenuUI.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicPopupMenuUI.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicPopupMenuUI.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicRadioButtonUI.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicRadioButtonUI.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicToggleButtonUI.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicToggleButtonUI.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/basic/DragRecognitionSupport.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/DragRecognitionSupport.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/basic/LazyActionMap.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/LazyActionMap.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/metal/DefaultMetalTheme.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/metal/DefaultMetalTheme.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalBumps.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalBumps.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalFileChooserUI.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalFileChooserUI.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalInternalFrameTitlePane.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalInternalFrameTitlePane.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalRadioButtonUI.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalRadioButtonUI.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalSliderUI.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalSliderUI.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalToolBarUI.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalToolBarUI.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/synth/DefaultSynthStyleFactory.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/DefaultSynthStyleFactory.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/synth/ImagePainter.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/ImagePainter.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/synth/Region.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/Region.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthButtonUI.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthButtonUI.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthComboBoxUI.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthComboBoxUI.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthContext.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthContext.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthEditorPaneUI.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthEditorPaneUI.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthInternalFrameTitlePane.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthInternalFrameTitlePane.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthParser.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthParser.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthStyle.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthStyle.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextAreaUI.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextAreaUI.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextFieldUI.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextFieldUI.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTreeUI.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTreeUI.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/table/AbstractTableModel.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/table/AbstractTableModel.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/table/DefaultTableModel.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/table/DefaultTableModel.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/AsyncBoxView.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/AsyncBoxView.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/ComponentView.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/ComponentView.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/DefaultCaret.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/DefaultCaret.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/DefaultFormatter.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/DefaultFormatter.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/DefaultHighlighter.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/DefaultHighlighter.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/DefaultStyledDocument.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/DefaultStyledDocument.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/ElementIterator.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/ElementIterator.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/GapContent.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/GapContent.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/InternationalFormatter.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/InternationalFormatter.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/LayoutQueue.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/LayoutQueue.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/MaskFormatter.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/MaskFormatter.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/SegmentCache.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/SegmentCache.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/SimpleAttributeSet.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/SimpleAttributeSet.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/StringContent.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/StringContent.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/StyleContext.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/StyleContext.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/TableView.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/TableView.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/TextAction.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/TextAction.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/TextLayoutStrategy.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/TextLayoutStrategy.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/ZoneView.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/ZoneView.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/html/HRuleView.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/html/HRuleView.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2002 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/html/HTML.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/html/HTML.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/html/HTMLDocument.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/html/HTMLDocument.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/html/HTMLWriter.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/html/HTMLWriter.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/html/Map.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/html/Map.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/html/MinimalHTMLWriter.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/html/MinimalHTMLWriter.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/html/OptionListModel.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/html/OptionListModel.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/html/StyleSheet.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/html/StyleSheet.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/html/TableView.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/html/TableView.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/html/parser/TagStack.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/html/parser/TagStack.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/rtf/MockAttributeSet.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/rtf/MockAttributeSet.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/rtf/RTFParser.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/rtf/RTFParser.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/text/rtf/RTFReader.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/text/rtf/RTFReader.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/tree/DefaultTreeCellEditor.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/tree/DefaultTreeCellEditor.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/tree/DefaultTreeModel.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/tree/DefaultTreeModel.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/tree/FixedHeightLayoutCache.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/tree/FixedHeightLayoutCache.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/tree/VariableHeightLayoutCache.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/tree/VariableHeightLayoutCache.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/undo/StateEdit.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/undo/StateEdit.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/undo/UndoManager.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/undo/UndoManager.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/javax/swing/undo/UndoableEditSupport.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/javax/swing/undo/UndoableEditSupport.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/DigesterOutputStream.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/DigesterOutputStream.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DigesterOutputStream.java,v 1.2 2008/07/24 15:20:31 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/SignerOutputStream.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/SignerOutputStream.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: SignerOutputStream.java,v 1.2 2008/07/24 15:20:31 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheCanonicalizer.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheCanonicalizer.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: ApacheCanonicalizer.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheData.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheData.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: ApacheData.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheNodeSetData.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheNodeSetData.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: ApacheNodeSetData.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheOctetStreamData.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheOctetStreamData.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: ApacheOctetStreamData.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheTransform.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheTransform.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: ApacheTransform.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMBase64Transform.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMBase64Transform.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMBase64Transform.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCanonicalXMLC14NMethod.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCanonicalXMLC14NMethod.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMCanonicalXMLC14NMethod.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCanonicalizationMethod.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCanonicalizationMethod.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMCanonicalizationMethod.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCryptoBinary.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCryptoBinary.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMCryptoBinary.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMDigestMethod.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMDigestMethod.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMDigestMethod.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMEnvelopedTransform.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMEnvelopedTransform.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMEnvelopedTransform.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMExcC14NMethod.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMExcC14NMethod.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMExcC14NMethod.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMHMACSignatureMethod.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMHMACSignatureMethod.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMHMACSignatureMethod.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyInfo.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyInfo.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMKeyInfo.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyInfoFactory.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyInfoFactory.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMKeyInfoFactory.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyName.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyName.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMKeyName.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMKeyValue.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMManifest.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMManifest.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMManifest.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMPGPData.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMPGPData.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMPGPData.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureMethod.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureMethod.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMSignatureMethod.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMSignatureProperties.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMSignatureProperty.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignedInfo.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignedInfo.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMSignedInfo.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMStructure.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMStructure.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMStructure.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSubTreeData.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSubTreeData.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMSubTreeData.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMTransform.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMTransform.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMTransform.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMURIDereferencer.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMURIDereferencer.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMURIDereferencer.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMUtils.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMUtils.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMUtils.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMX509Data.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMX509Data.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMX509Data.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMX509IssuerSerial.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMX509IssuerSerial.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMX509IssuerSerial.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLObject.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLObject.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMXMLObject.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLSignatureFactory.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLSignatureFactory.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMXMLSignatureFactory.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXPathTransform.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXPathTransform.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMXPathTransform.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXSLTTransform.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXSLTTransform.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: DOMXSLTTransform.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/Utils.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/Utils.java Wed Jul 05 16:44:31 2017 +0200
@@ -19,7 +19,7 @@
*
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved.
*/
/*
* $Id: Utils.java,v 1.2 2008/07/24 15:20:32 mullan Exp $
--- a/jdk/src/share/classes/sun/awt/im/CompositionArea.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/awt/im/CompositionArea.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/sun/management/jmxremote/LocalRMIServerSocketFactory.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/management/jmxremote/LocalRMIServerSocketFactory.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 Sun Microsystems, Inc. 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
@@ -49,13 +49,34 @@
return new ServerSocket(port) {
@Override
public Socket accept() throws IOException {
- Socket socket = super.accept();
- InetAddress remoteAddr = socket.getInetAddress();
+ final Socket socket = super.accept();
+ final InetAddress remoteAddr = socket.getInetAddress();
final String msg = "The server sockets created using the " +
- "LocalRMIServerSocketFactory only accept connections " +
- "from clients running on the host where the RMI " +
- "remote objects have been exported.";
- if (remoteAddr.isAnyLocalAddress()) {
+ "LocalRMIServerSocketFactory only accept connections " +
+ "from clients running on the host where the RMI " +
+ "remote objects have been exported.";
+
+ if (remoteAddr == null) {
+ // Though unlikeky, the socket could be already
+ // closed... Send a more detailed message in
+ // this case. Also avoid throwing NullPointerExceptiion
+ //
+ String details = "";
+ if (socket.isClosed()) {
+ details = " Socket is closed.";
+ } else if (!socket.isConnected()) {
+ details = " Socket is not connected";
+ }
+ try {
+ socket.close();
+ } catch (Exception ok) {
+ // ok - this is just cleanup before throwing detailed
+ // exception.
+ }
+ throw new IOException(msg +
+ " Couldn't determine client address." +
+ details);
+ } else if (remoteAddr.isLoopbackAddress()) {
// local address: accept the connection.
return socket;
}
--- a/jdk/src/share/classes/sun/net/ProgressEvent.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/net/ProgressEvent.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2004-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/sun/net/httpserver/ExchangeImpl.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/net/httpserver/ExchangeImpl.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/sun/net/httpserver/FixedLengthInputStream.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/net/httpserver/FixedLengthInputStream.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/sun/net/httpserver/Request.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/net/httpserver/Request.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/sun/net/www/http/ChunkedOutputStream.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/net/www/http/ChunkedOutputStream.java Wed Jul 05 16:44:31 2017 +0200
@@ -29,32 +29,58 @@
/**
* OutputStream that sends the output to the underlying stream using chunked
* encoding as specified in RFC 2068.
- *
- * @author Alan Bateman
*/
public class ChunkedOutputStream extends PrintStream {
/* Default chunk size (including chunk header) if not specified */
static final int DEFAULT_CHUNK_SIZE = 4096;
+ private static final byte[] CRLF = {'\r', '\n'};
+ private static final int CRLF_SIZE = CRLF.length;
+ private static final byte[] FOOTER = CRLF;
+ private static final int FOOTER_SIZE = CRLF_SIZE;
+ private static final byte[] EMPTY_CHUNK_HEADER = getHeader(0);
+ private static final int EMPTY_CHUNK_HEADER_SIZE = getHeaderSize(0);
/* internal buffer */
private byte buf[];
+ /* size of data (excluding footers and headers) already stored in buf */
+ private int size;
+ /* current index in buf (i.e. buf[count] */
private int count;
+ /* number of bytes to be filled up to complete a data chunk
+ * currently being built */
+ private int spaceInCurrentChunk;
/* underlying stream */
private PrintStream out;
/* the chunk size we use */
- private int preferredChunkSize;
-
- /* if the users write buffer is bigger than this size, we
- * write direct from the users buffer instead of copying
- */
- static final int MAX_BUF_SIZE = 10 * 1024;
+ private int preferredChunkDataSize;
+ private int preferedHeaderSize;
+ private int preferredChunkGrossSize;
+ /* header for a complete Chunk */
+ private byte[] completeHeader;
/* return the size of the header for a particular chunk size */
- private int headerSize(int size) {
- return 2 + (Integer.toHexString(size)).length();
+ private static int getHeaderSize(int size) {
+ return (Integer.toHexString(size)).length() + CRLF_SIZE;
+ }
+
+ /* return a header for a particular chunk size */
+ private static byte[] getHeader(int size){
+ try {
+ String hexStr = Integer.toHexString(size);
+ byte[] hexBytes = hexStr.getBytes("US-ASCII");
+ byte[] header = new byte[getHeaderSize(size)];
+ for (int i=0; i<hexBytes.length; i++)
+ header[i] = hexBytes[i];
+ header[hexBytes.length] = CRLF[0];
+ header[hexBytes.length+1] = CRLF[1];
+ return header;
+ } catch (java.io.UnsupportedEncodingException e) {
+ /* This should never happen */
+ throw new InternalError(e.getMessage());
+ }
}
public ChunkedOutputStream(PrintStream o) {
@@ -63,111 +89,114 @@
public ChunkedOutputStream(PrintStream o, int size) {
super(o);
-
out = o;
if (size <= 0) {
size = DEFAULT_CHUNK_SIZE;
}
+
/* Adjust the size to cater for the chunk header - eg: if the
* preferred chunk size is 1k this means the chunk size should
- * be 1019 bytes (differs by 5 from preferred size because of
- * 3 bytes for chunk size in hex and CRLF).
+ * be 1017 bytes (differs by 7 from preferred size because of
+ * 3 bytes for chunk size in hex and CRLF (header) and CRLF (footer)).
+ *
+ * If headerSize(adjusted_size) is shorter then headerSize(size)
+ * then try to use the extra byte unless headerSize(adjusted_size+1)
+ * increases back to headerSize(size)
*/
if (size > 0) {
- int adjusted_size = size - headerSize(size);
- if (adjusted_size + headerSize(adjusted_size) < size) {
+ int adjusted_size = size - getHeaderSize(size) - FOOTER_SIZE;
+ if (getHeaderSize(adjusted_size+1) < getHeaderSize(size)){
adjusted_size++;
}
size = adjusted_size;
}
if (size > 0) {
- preferredChunkSize = size;
+ preferredChunkDataSize = size;
} else {
- preferredChunkSize = DEFAULT_CHUNK_SIZE - headerSize(DEFAULT_CHUNK_SIZE);
+ preferredChunkDataSize = DEFAULT_CHUNK_SIZE -
+ getHeaderSize(DEFAULT_CHUNK_SIZE) - FOOTER_SIZE;
}
+ preferedHeaderSize = getHeaderSize(preferredChunkDataSize);
+ preferredChunkGrossSize = preferedHeaderSize + preferredChunkDataSize
+ + FOOTER_SIZE;
+ completeHeader = getHeader(preferredChunkDataSize);
+
/* start with an initial buffer */
- buf = new byte[preferredChunkSize + 32];
+ buf = new byte[preferredChunkDataSize + 32];
+ reset();
}
/*
- * If flushAll is true, then all data is flushed in one chunk.
- *
- * If false and the size of the buffer data exceeds the preferred
- * chunk size then chunks are flushed to the output stream.
- * If there isn't enough data to make up a complete chunk,
- * then the method returns.
+ * Flush a buffered, completed chunk to an underlying stream. If the data in
+ * the buffer is insufficient to build up a chunk of "preferredChunkSize"
+ * then the data do not get flushed unless flushAll is true. If flushAll is
+ * true then the remaining data builds up a last chunk which size is smaller
+ * than preferredChunkSize, and then the last chunk gets flushed to
+ * underlying stream. If flushAll is true and there is no data in a buffer
+ * at all then an empty chunk (containing a header only) gets flushed to
+ * underlying stream.
*/
- private void flush(byte[] buf, boolean flushAll) {
- flush (buf, flushAll, 0);
- }
-
- private void flush(byte[] buf, boolean flushAll, int offset) {
- int chunkSize;
+ private void flush(boolean flushAll) {
+ if (spaceInCurrentChunk == 0) {
+ /* flush a completed chunk to underlying stream */
+ out.write(buf, 0, preferredChunkGrossSize);
+ out.flush();
+ reset();
+ } else if (flushAll){
+ /* complete the last chunk and flush it to underlying stream */
+ if (size > 0){
+ /* adjust a header start index in case the header of the last
+ * chunk is shorter then preferedHeaderSize */
- do {
- if (count < preferredChunkSize) {
- if (!flushAll) {
- break;
- }
- chunkSize = count;
+ int adjustedHeaderStartIndex = preferedHeaderSize -
+ getHeaderSize(size);
+
+ /* write header */
+ System.arraycopy(getHeader(size), 0, buf,
+ adjustedHeaderStartIndex, getHeaderSize(size));
+
+ /* write footer */
+ buf[count++] = FOOTER[0];
+ buf[count++] = FOOTER[1];
+
+ //send the last chunk to underlying stream
+ out.write(buf, adjustedHeaderStartIndex, count - adjustedHeaderStartIndex);
} else {
- chunkSize = preferredChunkSize;
- }
-
- byte[] bytes = null;
- try {
- bytes = (Integer.toHexString(chunkSize)).getBytes("US-ASCII");
- } catch (java.io.UnsupportedEncodingException e) {
- //This should never happen.
- throw new InternalError(e.getMessage());
+ //send an empty chunk (containing just a header) to underlying stream
+ out.write(EMPTY_CHUNK_HEADER, 0, EMPTY_CHUNK_HEADER_SIZE);
}
- out.write(bytes, 0, bytes.length);
- out.write((byte)'\r');
- out.write((byte)'\n');
- if (chunkSize > 0) {
- out.write(buf, offset, chunkSize);
- out.write((byte)'\r');
- out.write((byte)'\n');
- }
out.flush();
- if (checkError()) {
- break;
- }
- if (chunkSize > 0) {
- count -= chunkSize;
- offset += chunkSize;
- }
- } while (count > 0);
-
- if (!checkError() && count > 0) {
- System.arraycopy(buf, offset, this.buf, 0, count);
- }
+ reset();
+ }
}
+ @Override
public boolean checkError() {
return out.checkError();
}
- /*
- * Check if we have enough data for a chunk and if so flush to the
- * underlying output stream.
- */
- private void checkFlush() {
- if (count >= preferredChunkSize) {
- flush(buf, false);
- }
- }
-
/* Check that the output stream is still open */
private void ensureOpen() {
if (out == null)
setError();
}
+ /*
+ * Writes data from b[] to an internal buffer and stores the data as data
+ * chunks of a following format: {Data length in Hex}{CRLF}{data}{CRLF}
+ * The size of the data is preferredChunkSize. As soon as a completed chunk
+ * is read from b[] a process of reading from b[] suspends, the chunk gets
+ * flushed to the underlying stream and then the reading process from b[]
+ * continues. When there is no more sufficient data in b[] to build up a
+ * chunk of preferredChunkSize size the data get stored as an incomplete
+ * chunk of a following format: {space for data length}{CRLF}{data}
+ * The size of the data is of course smaller than preferredChunkSize.
+ */
+ @Override
public synchronized void write(byte b[], int off, int len) {
ensureOpen();
if ((off < 0) || (off > b.length) || (len < 0) ||
@@ -177,81 +206,95 @@
return;
}
- int l = preferredChunkSize - count;
+ /* if b[] contains enough data then one loop cycle creates one complete
+ * data chunk with a header, body and a footer, and then flushes the
+ * chunk to the underlying stream. Otherwise, the last loop cycle
+ * creates incomplete data chunk with empty header and with no footer
+ * and stores this incomplete chunk in an internal buffer buf[]
+ */
+ int bytesToWrite = len;
+ int inputIndex = off; /* the index of the byte[] currently being written */
+
+ do {
+ /* enough data to complete a chunk */
+ if (bytesToWrite >= spaceInCurrentChunk) {
- if ((len > MAX_BUF_SIZE) && (len > l)) {
- /* current chunk is empty just write the data */
- if (count == 0) {
- count = len;
- flush (b, false, off);
- return;
- }
+ /* header */
+ for (int i=0; i<completeHeader.length; i++)
+ buf[i] = completeHeader[i];
+
+ /* data */
+ System.arraycopy(b, inputIndex, buf, count, spaceInCurrentChunk);
+ inputIndex += spaceInCurrentChunk;
+ bytesToWrite -= spaceInCurrentChunk;
+ count += spaceInCurrentChunk;
- /* first finish the current chunk */
- if (l > 0) {
- System.arraycopy(b, off, buf, count, l);
- count = preferredChunkSize;
- flush(buf, false);
+ /* footer */
+ buf[count++] = FOOTER[0];
+ buf[count++] = FOOTER[1];
+ spaceInCurrentChunk = 0; //chunk is complete
+
+ flush(false);
+ if (checkError()){
+ break;
+ }
}
- count = len - l;
- /* Now write the rest of the data */
- flush (b, false, l+off);
- } else {
- int newcount = count + len;
+ /* not enough data to build a chunk */
+ else {
+ /* header */
+ /* do not write header if not enough bytes to build a chunk yet */
- if (newcount > buf.length) {
- byte newbuf[] = new byte[Math.max(buf.length << 1, newcount)];
- System.arraycopy(buf, 0, newbuf, 0, count);
- buf = newbuf;
+ /* data */
+ System.arraycopy(b, inputIndex, buf, count, bytesToWrite);
+ count += bytesToWrite;
+ size += bytesToWrite;
+ spaceInCurrentChunk -= bytesToWrite;
+ bytesToWrite = 0;
+
+ /* footer */
+ /* do not write header if not enough bytes to build a chunk yet */
}
- System.arraycopy(b, off, buf, count, len);
- count = newcount;
- checkFlush();
- }
+ } while (bytesToWrite > 0);
}
- public synchronized void write(int b) {
- ensureOpen();
- int newcount = count + 1;
- if (newcount > buf.length) {
- byte newbuf[] = new byte[Math.max(buf.length << 1, newcount)];
- System.arraycopy(buf, 0, newbuf, 0, count);
- buf = newbuf;
- }
- buf[count] = (byte)b;
- count = newcount;
- checkFlush();
+ @Override
+ public synchronized void write(int _b) {
+ byte b[] = {(byte)_b};
+ write(b, 0, 1);
}
public synchronized void reset() {
- count = 0;
+ count = preferedHeaderSize;
+ size = 0;
+ spaceInCurrentChunk = preferredChunkDataSize;
}
public int size() {
- return count;
+ return size;
}
+ @Override
public synchronized void close() {
ensureOpen();
/* if we have buffer a chunked send it */
- if (count > 0) {
- flush(buf, true);
+ if (size > 0) {
+ flush(true);
}
/* send a zero length chunk */
- flush(buf, true);
+ flush(true);
/* don't close the underlying stream */
out = null;
}
+ @Override
public synchronized void flush() {
ensureOpen();
- if (count > 0) {
- flush(buf, true);
+ if (size > 0) {
+ flush(true);
}
}
-
}
--- a/jdk/src/share/classes/sun/net/www/protocol/https/HttpsURLConnectionImpl.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/net/www/protocol/https/HttpsURLConnectionImpl.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/sun/nio/ch/AbstractPollSelectorImpl.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/nio/ch/AbstractPollSelectorImpl.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java Wed Jul 05 16:44:31 2017 +0200
@@ -770,6 +770,7 @@
new String[] {
"cp834",
"ibm834",
+ "834",
"ibm-834"
});
--- a/jdk/src/share/classes/sun/security/provider/certpath/OCSPResponse.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/security/provider/certpath/OCSPResponse.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/sun/swing/AccessibleMethod.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/swing/AccessibleMethod.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/sun/swing/SwingLazyValue.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/swing/SwingLazyValue.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/sun/swing/SwingUtilities2.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/swing/SwingUtilities2.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/sun/swing/plaf/synth/DefaultSynthStyle.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/swing/plaf/synth/DefaultSynthStyle.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/sun/util/calendar/ZoneInfo.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/util/calendar/ZoneInfo.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Portions Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Portions Copyright 1996-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Portions Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Portions Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Portions Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Portions Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Portions Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Portions Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Portions Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Portions Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Portions Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Portions Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Portions Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Portions Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Portions Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Portions Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Portions Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Portions Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Portions Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Portions Copyright 1997-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/share/native/sun/font/bidi/ubidi.c Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/share/native/sun/font/bidi/ubidi.c Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Portions Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Portions Copyright 2000-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/solaris/classes/sun/net/www/protocol/http/NTLMAuthentication.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/solaris/classes/sun/net/www/protocol/http/NTLMAuthentication.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/solaris/classes/sun/nio/ch/EPollSelectorImpl.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/solaris/classes/sun/nio/ch/EPollSelectorImpl.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/windows/classes/sun/nio/ch/WindowsSelectorImpl.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/windows/classes/sun/nio/ch/WindowsSelectorImpl.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc. 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
--- a/jdk/src/windows/native/java/lang/java_props_md.c Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/src/windows/native/java/lang/java_props_md.c Wed Jul 05 16:44:31 2017 +0200
@@ -38,6 +38,12 @@
#define VER_PLATFORM_WIN32_WINDOWS 1
#endif
+#ifndef PROCESSOR_ARCHITECTURE_AMD64
+#define PROCESSOR_ARCHITECTURE_AMD64 9
+#endif
+
+typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO);
+
#define SHELL_KEY "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders"
/* Encodings for Windows language groups. According to
@@ -674,9 +680,22 @@
{
char buf[100];
OSVERSIONINFOEX ver;
+ SYSTEM_INFO si;
+ PGNSI pGNSI;
+
ver.dwOSVersionInfoSize = sizeof(ver);
GetVersionEx((OSVERSIONINFO *) &ver);
+ ZeroMemory(&si, sizeof(SYSTEM_INFO));
+ // Call GetNativeSystemInfo if supported or GetSystemInfo otherwise.
+ pGNSI = (PGNSI) GetProcAddress(
+ GetModuleHandle(TEXT("kernel32.dll")),
+ "GetNativeSystemInfo");
+ if(NULL != pGNSI)
+ pGNSI(&si);
+ else
+ GetSystemInfo(&si);
+
/*
* From msdn page on OSVERSIONINFOEX, current as of this
* writing, decoding of dwMajorVersion and dwMinorVersion.
@@ -690,9 +709,14 @@
* Windows 3.51 3 51
* Windows NT 4.0 4 0
* Windows 2000 5 0
- * Windows XP 5 1
+ * Windows XP 32 bit 5 1
* Windows Server 2003 family 5 2
+ * Windows XP 64 bit 5 2
+ * where ((&ver.wServicePackMinor) + 2) = 1
+ * and si.wProcessorArchitecture = 9
* Windows Vista family 6 0
+ * Windows 2008 6 0
+ * where ((&ver.wServicePackMinor) + 2) = 1
*
* This mapping will presumably be augmented as new Windows
* versions are released.
@@ -720,7 +744,25 @@
switch (ver.dwMinorVersion) {
case 0: sprops.os_name = "Windows 2000"; break;
case 1: sprops.os_name = "Windows XP"; break;
- case 2: sprops.os_name = "Windows 2003"; break;
+ case 2:
+ /*
+ * From MSDN OSVERSIONINFOEX and SYSTEM_INFO documentation:
+ *
+ * "Because the version numbers for Windows Server 2003
+ * and Windows XP 6u4 bit are identical, you must also test
+ * whether the wProductType member is VER_NT_WORKSTATION.
+ * and si.wProcessorArchitecture is
+ * PROCESSOR_ARCHITECTURE_AMD64 (which is 9)
+ * If it is, the operating system is Windows XP 64 bit;
+ * otherwise, it is Windows Server 2003."
+ */
+ if(ver.wProductType == VER_NT_WORKSTATION &&
+ si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) {
+ sprops.os_name = "Windows XP"; /* 64 bit */
+ } else {
+ sprops.os_name = "Windows 2003";
+ }
+ break;
default: sprops.os_name = "Windows NT (unknown)"; break;
}
} else if (ver.dwMajorVersion == 6) {
--- a/jdk/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh Wed Jul 05 16:44:31 2017 +0200
@@ -1,7 +1,7 @@
#! /bin/sh
#
-# Copyright 1999-2002 Sun Microsystems, Inc. All Rights Reserved.
+# Copyright 1999-2008 Sun Microsystems, Inc. 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
--- a/jdk/test/java/nio/Buffer/Basic-X.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/java/nio/Buffer/Basic-X.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
@@ -31,6 +31,7 @@
#warn This file is preprocessed before being compiled
import java.nio.*;
+import java.lang.reflect.Method;
public class Basic$Type$
@@ -184,32 +185,57 @@
b.position(p);
}
+ private static void compact(Buffer b) {
+ try {
+ Class<?> cl = b.getClass();
+ Method m = cl.getDeclaredMethod("compact");
+ m.setAccessible(true);
+ m.invoke(b);
+ } catch (Exception e) {
+ fail(e.getMessage(), b);
+ }
+ }
+
+ private static void checkInvalidMarkException(final Buffer b) {
+ tryCatch(b, InvalidMarkException.class, new Runnable() {
+ public void run() {
+ b.mark();
+ compact(b);
+ b.reset();
+ }});
+ }
+
private static void testViews(int level, ByteBuffer b, boolean direct) {
ShortBuffer sb = b.asShortBuffer();
BasicShort.test(level, sb, direct);
checkBytes(b, new byte[] { 0, (byte)ic(0) });
+ checkInvalidMarkException(sb);
CharBuffer cb = b.asCharBuffer();
BasicChar.test(level, cb, direct);
checkBytes(b, new byte[] { 0, (byte)ic(0) });
+ checkInvalidMarkException(cb);
IntBuffer ib = b.asIntBuffer();
BasicInt.test(level, ib, direct);
checkBytes(b, new byte[] { 0, 0, 0, (byte)ic(0) });
+ checkInvalidMarkException(ib);
LongBuffer lb = b.asLongBuffer();
BasicLong.test(level, lb, direct);
checkBytes(b, new byte[] { 0, 0, 0, 0, 0, 0, 0, (byte)ic(0) });
+ checkInvalidMarkException(lb);
FloatBuffer fb = b.asFloatBuffer();
BasicFloat.test(level, fb, direct);
checkBytes(b, new byte[] { 0x42, (byte)0xc2, 0, 0 });
+ checkInvalidMarkException(fb);
DoubleBuffer db = b.asDoubleBuffer();
BasicDouble.test(level, db, direct);
checkBytes(b, new byte[] { 0x40, 0x58, 0x40, 0, 0, 0, 0, 0 });
-
+ checkInvalidMarkException(db);
}
private static void testHet(int level, ByteBuffer b) {
@@ -288,8 +314,11 @@
try {
thunk.run();
} catch (Throwable x) {
- if (ex.isAssignableFrom(x.getClass()))
+ if (ex.isAssignableFrom(x.getClass())) {
caught = true;
+ } else {
+ fail(x.getMessage() + " not expected");
+ }
}
if (!caught)
fail(ex.getName() + " not thrown", b);
@@ -356,7 +385,6 @@
// Exceptions
- boolean caught = false;
relPut(b);
b.limit(b.capacity() / 2);
b.position(b.limit());
@@ -386,6 +414,14 @@
b.put(b.limit(), ($type$)42);
}});
+ tryCatch(b, InvalidMarkException.class, new Runnable() {
+ public void run() {
+ b.position(0);
+ b.mark();
+ b.compact();
+ b.reset();
+ }});
+
// Values
b.clear();
--- a/jdk/test/java/nio/Buffer/Basic.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/java/nio/Buffer/Basic.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
@@ -25,7 +25,7 @@
* @summary Unit test for buffers
* @bug 4413135 4414911 4416536 4416562 4418782 4471053 4472779 4490253 4523725
* 4526177 4463011 4660660 4661219 4663521 4782970 4804304 4938424 6231529
- * 6221101 6234263 6535542 6591971
+ * 6221101 6234263 6535542 6591971 6593946
* @author Mark Reinhold
*/
--- a/jdk/test/java/nio/Buffer/BasicByte.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/java/nio/Buffer/BasicByte.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
@@ -31,6 +31,7 @@
// -- This file was mechanically generated: Do not edit! -- //
import java.nio.*;
+import java.lang.reflect.Method;
public class BasicByte
@@ -184,32 +185,57 @@
b.position(p);
}
+ private static void compact(Buffer b) {
+ try {
+ Class<?> cl = b.getClass();
+ Method m = cl.getDeclaredMethod("compact");
+ m.setAccessible(true);
+ m.invoke(b);
+ } catch (Exception e) {
+ fail(e.getMessage(), b);
+ }
+ }
+
+ private static void checkInvalidMarkException(final Buffer b) {
+ tryCatch(b, InvalidMarkException.class, new Runnable() {
+ public void run() {
+ b.mark();
+ compact(b);
+ b.reset();
+ }});
+ }
+
private static void testViews(int level, ByteBuffer b, boolean direct) {
ShortBuffer sb = b.asShortBuffer();
BasicShort.test(level, sb, direct);
checkBytes(b, new byte[] { 0, (byte)ic(0) });
+ checkInvalidMarkException(sb);
CharBuffer cb = b.asCharBuffer();
BasicChar.test(level, cb, direct);
checkBytes(b, new byte[] { 0, (byte)ic(0) });
+ checkInvalidMarkException(cb);
IntBuffer ib = b.asIntBuffer();
BasicInt.test(level, ib, direct);
checkBytes(b, new byte[] { 0, 0, 0, (byte)ic(0) });
+ checkInvalidMarkException(ib);
LongBuffer lb = b.asLongBuffer();
BasicLong.test(level, lb, direct);
checkBytes(b, new byte[] { 0, 0, 0, 0, 0, 0, 0, (byte)ic(0) });
+ checkInvalidMarkException(lb);
FloatBuffer fb = b.asFloatBuffer();
BasicFloat.test(level, fb, direct);
checkBytes(b, new byte[] { 0x42, (byte)0xc2, 0, 0 });
+ checkInvalidMarkException(fb);
DoubleBuffer db = b.asDoubleBuffer();
BasicDouble.test(level, db, direct);
checkBytes(b, new byte[] { 0x40, 0x58, 0x40, 0, 0, 0, 0, 0 });
-
+ checkInvalidMarkException(db);
}
private static void testHet(int level, ByteBuffer b) {
@@ -288,8 +314,11 @@
try {
thunk.run();
} catch (Throwable x) {
- if (ex.isAssignableFrom(x.getClass()))
+ if (ex.isAssignableFrom(x.getClass())) {
caught = true;
+ } else {
+ fail(x.getMessage() + " not expected");
+ }
}
if (!caught)
fail(ex.getName() + " not thrown", b);
@@ -356,7 +385,6 @@
// Exceptions
- boolean caught = false;
relPut(b);
b.limit(b.capacity() / 2);
b.position(b.limit());
@@ -386,6 +414,14 @@
b.put(b.limit(), (byte)42);
}});
+ tryCatch(b, InvalidMarkException.class, new Runnable() {
+ public void run() {
+ b.position(0);
+ b.mark();
+ b.compact();
+ b.reset();
+ }});
+
// Values
b.clear();
--- a/jdk/test/java/nio/Buffer/BasicChar.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/java/nio/Buffer/BasicChar.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
@@ -31,6 +31,7 @@
// -- This file was mechanically generated: Do not edit! -- //
import java.nio.*;
+import java.lang.reflect.Method;
public class BasicChar
@@ -283,13 +284,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
private static void tryCatch(Buffer b, Class ex, Runnable thunk) {
boolean caught = false;
try {
thunk.run();
} catch (Throwable x) {
- if (ex.isAssignableFrom(x.getClass()))
+ if (ex.isAssignableFrom(x.getClass())) {
caught = true;
+ } else {
+ fail(x.getMessage() + " not expected");
+ }
}
if (!caught)
fail(ex.getName() + " not thrown", b);
@@ -356,7 +385,6 @@
// Exceptions
- boolean caught = false;
relPut(b);
b.limit(b.capacity() / 2);
b.position(b.limit());
@@ -386,6 +414,14 @@
b.put(b.limit(), (char)42);
}});
+ tryCatch(b, InvalidMarkException.class, new Runnable() {
+ public void run() {
+ b.position(0);
+ b.mark();
+ b.compact();
+ b.reset();
+ }});
+
// Values
b.clear();
--- a/jdk/test/java/nio/Buffer/BasicDouble.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/java/nio/Buffer/BasicDouble.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
@@ -31,6 +31,7 @@
// -- This file was mechanically generated: Do not edit! -- //
import java.nio.*;
+import java.lang.reflect.Method;
public class BasicDouble
@@ -283,13 +284,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
private static void tryCatch(Buffer b, Class ex, Runnable thunk) {
boolean caught = false;
try {
thunk.run();
} catch (Throwable x) {
- if (ex.isAssignableFrom(x.getClass()))
+ if (ex.isAssignableFrom(x.getClass())) {
caught = true;
+ } else {
+ fail(x.getMessage() + " not expected");
+ }
}
if (!caught)
fail(ex.getName() + " not thrown", b);
@@ -356,7 +385,6 @@
// Exceptions
- boolean caught = false;
relPut(b);
b.limit(b.capacity() / 2);
b.position(b.limit());
@@ -386,6 +414,14 @@
b.put(b.limit(), (double)42);
}});
+ tryCatch(b, InvalidMarkException.class, new Runnable() {
+ public void run() {
+ b.position(0);
+ b.mark();
+ b.compact();
+ b.reset();
+ }});
+
// Values
b.clear();
--- a/jdk/test/java/nio/Buffer/BasicFloat.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/java/nio/Buffer/BasicFloat.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
@@ -31,6 +31,7 @@
// -- This file was mechanically generated: Do not edit! -- //
import java.nio.*;
+import java.lang.reflect.Method;
public class BasicFloat
@@ -283,13 +284,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
private static void tryCatch(Buffer b, Class ex, Runnable thunk) {
boolean caught = false;
try {
thunk.run();
} catch (Throwable x) {
- if (ex.isAssignableFrom(x.getClass()))
+ if (ex.isAssignableFrom(x.getClass())) {
caught = true;
+ } else {
+ fail(x.getMessage() + " not expected");
+ }
}
if (!caught)
fail(ex.getName() + " not thrown", b);
@@ -356,7 +385,6 @@
// Exceptions
- boolean caught = false;
relPut(b);
b.limit(b.capacity() / 2);
b.position(b.limit());
@@ -386,6 +414,14 @@
b.put(b.limit(), (float)42);
}});
+ tryCatch(b, InvalidMarkException.class, new Runnable() {
+ public void run() {
+ b.position(0);
+ b.mark();
+ b.compact();
+ b.reset();
+ }});
+
// Values
b.clear();
--- a/jdk/test/java/nio/Buffer/BasicInt.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/java/nio/Buffer/BasicInt.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
@@ -31,6 +31,7 @@
// -- This file was mechanically generated: Do not edit! -- //
import java.nio.*;
+import java.lang.reflect.Method;
public class BasicInt
@@ -283,13 +284,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
private static void tryCatch(Buffer b, Class ex, Runnable thunk) {
boolean caught = false;
try {
thunk.run();
} catch (Throwable x) {
- if (ex.isAssignableFrom(x.getClass()))
+ if (ex.isAssignableFrom(x.getClass())) {
caught = true;
+ } else {
+ fail(x.getMessage() + " not expected");
+ }
}
if (!caught)
fail(ex.getName() + " not thrown", b);
@@ -356,7 +385,6 @@
// Exceptions
- boolean caught = false;
relPut(b);
b.limit(b.capacity() / 2);
b.position(b.limit());
@@ -386,6 +414,14 @@
b.put(b.limit(), (int)42);
}});
+ tryCatch(b, InvalidMarkException.class, new Runnable() {
+ public void run() {
+ b.position(0);
+ b.mark();
+ b.compact();
+ b.reset();
+ }});
+
// Values
b.clear();
--- a/jdk/test/java/nio/Buffer/BasicLong.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/java/nio/Buffer/BasicLong.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
@@ -31,6 +31,7 @@
// -- This file was mechanically generated: Do not edit! -- //
import java.nio.*;
+import java.lang.reflect.Method;
public class BasicLong
@@ -283,13 +284,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
private static void tryCatch(Buffer b, Class ex, Runnable thunk) {
boolean caught = false;
try {
thunk.run();
} catch (Throwable x) {
- if (ex.isAssignableFrom(x.getClass()))
+ if (ex.isAssignableFrom(x.getClass())) {
caught = true;
+ } else {
+ fail(x.getMessage() + " not expected");
+ }
}
if (!caught)
fail(ex.getName() + " not thrown", b);
@@ -356,7 +385,6 @@
// Exceptions
- boolean caught = false;
relPut(b);
b.limit(b.capacity() / 2);
b.position(b.limit());
@@ -386,6 +414,14 @@
b.put(b.limit(), (long)42);
}});
+ tryCatch(b, InvalidMarkException.class, new Runnable() {
+ public void run() {
+ b.position(0);
+ b.mark();
+ b.compact();
+ b.reset();
+ }});
+
// Values
b.clear();
--- a/jdk/test/java/nio/Buffer/BasicShort.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/java/nio/Buffer/BasicShort.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc. 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
@@ -31,6 +31,7 @@
// -- This file was mechanically generated: Do not edit! -- //
import java.nio.*;
+import java.lang.reflect.Method;
public class BasicShort
@@ -283,13 +284,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
private static void tryCatch(Buffer b, Class ex, Runnable thunk) {
boolean caught = false;
try {
thunk.run();
} catch (Throwable x) {
- if (ex.isAssignableFrom(x.getClass()))
+ if (ex.isAssignableFrom(x.getClass())) {
caught = true;
+ } else {
+ fail(x.getMessage() + " not expected");
+ }
}
if (!caught)
fail(ex.getName() + " not thrown", b);
@@ -356,7 +385,6 @@
// Exceptions
- boolean caught = false;
relPut(b);
b.limit(b.capacity() / 2);
b.position(b.limit());
@@ -386,6 +414,14 @@
b.put(b.limit(), (short)42);
}});
+ tryCatch(b, InvalidMarkException.class, new Runnable() {
+ public void run() {
+ b.position(0);
+ b.mark();
+ b.compact();
+ b.reset();
+ }});
+
// Values
b.clear();
--- a/jdk/test/java/nio/Buffer/genBasic.sh Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/java/nio/Buffer/genBasic.sh Wed Jul 05 16:44:31 2017 +0200
@@ -1,7 +1,7 @@
#! /bin/sh
#
-# Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+# Copyright 2000-2008 Sun Microsystems, Inc. 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
@@ -23,10 +23,10 @@
# have any questions.
#
-SPP='sh ../../../../make/java/nio/spp.sh'
+javac -d . ../../../../make/tools/src/build/tools/spp/Spp.java
gen() {
- $SPP -K$1 -Dtype=$1 -DType=$2 -DFulltype=$3 <Basic-X.java >Basic$2.java
+ java build.tools.spp.Spp -K$1 -Dtype=$1 -DType=$2 -DFulltype=$3 <Basic-X.java >Basic$2.java
}
gen byte Byte Byte
@@ -36,3 +36,5 @@
gen long Long Long
gen float Float Float
gen double Double Double
+
+rm -rf build
--- a/jdk/test/java/nio/Buffer/genCopyDirectMemory.sh Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/java/nio/Buffer/genCopyDirectMemory.sh Wed Jul 05 16:44:31 2017 +0200
@@ -1,7 +1,7 @@
#! /bin/sh
#
-# Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
+# Copyright 2002-2008 Sun Microsystems, Inc. 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
@@ -23,10 +23,10 @@
# have any questions.
#
-SPP='sh ../../../../make/java/nio/spp.sh'
+javac -d . ../../../../make/tools/src/build/tools/spp/Spp.java > Spp.java
gen() {
- $SPP -K$1 -Dtype=$1 -DType=$2 -DFulltype=$3<CopyDirect-X-Memory.java >CopyDirect$2Memory.java
+ java build.tools.spp.Spp -K$1 -Dtype=$1 -DType=$2 -DFulltype=$3<CopyDirect-X-Memory.java >CopyDirect$2Memory.java
}
gen byte Byte Byte
@@ -37,3 +37,4 @@
gen float Float Float
gen double Double Double
+rm -rf build
--- a/jdk/test/java/nio/channels/Channels/Basic.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/java/nio/channels/Channels/Basic.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 Sun Microsystems, Inc. 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
@@ -22,12 +22,13 @@
*/
/* @test
- * @bug 4417152 4481572 6248930
+ * @bug 4417152 4481572 6248930 6725399
* @summary Test Channels basic functionality
*/
import java.io.*;
import java.nio.*;
+import java.nio.charset.*;
import java.nio.channels.*;
@@ -50,22 +51,106 @@
test();
}
+ static void failNpeExpected() {
+ throw new RuntimeException("Did not get the expected NullPointerException.");
+ }
+
private static void test() throws Exception {
+ //Test if methods of Channels throw NPE with null argument(s)
+ try {
+ Channels.newInputStream((ReadableByteChannel)null);
+ failNpeExpected();
+ } catch (NullPointerException npe) {}
+
+ try {
+ Channels.newOutputStream((WritableByteChannel)null);
+ failNpeExpected();
+ } catch (NullPointerException npe) {}
+
try {
ReadableByteChannel channel = Channels.newChannel((InputStream)null);
-
- throw new RuntimeException("Did not get the expected NullPointerException.");
- } catch (NullPointerException ne) {
- // OK. As expected.
- }
+ failNpeExpected();
+ } catch (NullPointerException ne) {} // OK. As expected.
try {
WritableByteChannel channel = Channels.newChannel((OutputStream)null);
+ failNpeExpected();
+ } catch (NullPointerException ne) {} // OK. As expected.
- throw new RuntimeException("Did not get the expected NullPointerException.");
- } catch (NullPointerException ne) {
- // OK. As expected.
- }
+ WritableByteChannel wbc = new WritableByteChannel() {
+ public int write(ByteBuffer src) { return 0; }
+ public void close() throws IOException { }
+ public boolean isOpen() { return true; }
+ };
+
+ ReadableByteChannel rbc = new ReadableByteChannel() {
+ public int read(ByteBuffer dst) { return 0; }
+ public void close() {}
+ public boolean isOpen() { return true; }
+ };
+
+ try {
+ Channels.newReader((ReadableByteChannel)null,
+ Charset.defaultCharset().newDecoder(),
+ -1);
+ failNpeExpected();
+ } catch (NullPointerException npe) {}
+
+ try {
+ Channels.newReader(rbc, (CharsetDecoder)null, -1);
+ failNpeExpected();
+ } catch (NullPointerException npe) {}
+
+ try {
+ Channels.newReader((ReadableByteChannel)null,
+ Charset.defaultCharset().name());
+ failNpeExpected();
+ } catch (NullPointerException npe) {}
+
+ try {
+ Channels.newReader(rbc, null);
+ failNpeExpected();
+ } catch (NullPointerException npe) {}
+
+
+ try {
+ Channels.newReader(null, null);
+ failNpeExpected();
+ } catch (NullPointerException npe) {}
+
+ try {
+ Channels.newWriter((WritableByteChannel)null,
+ Charset.defaultCharset().newEncoder(),
+ -1);
+ failNpeExpected();
+ } catch (NullPointerException npe) {}
+
+ try {
+ Channels.newWriter(null, null, -1);
+ failNpeExpected();
+ } catch (NullPointerException npe) {}
+
+ try {
+ Channels.newWriter(wbc, null, -1);
+ failNpeExpected();
+ } catch (NullPointerException npe) {}
+
+ try {
+ Channels.newWriter((WritableByteChannel)null,
+ Charset.defaultCharset().name());
+ failNpeExpected();
+ } catch (NullPointerException npe) {}
+
+ try {
+ Channels.newWriter(wbc, null);
+ failNpeExpected();
+ } catch (NullPointerException npe) {}
+
+ try {
+ Channels.newWriter(null, null);
+ failNpeExpected();
+ } catch (NullPointerException npe) {}
+
try {
blah = File.createTempFile("blah", null);
--- a/jdk/test/java/util/TimeZone/OldIDMappingTest.sh Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/java/util/TimeZone/OldIDMappingTest.sh Wed Jul 05 16:44:31 2017 +0200
@@ -1,4 +1,4 @@
-# Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved.
+# Copyright 2003-2008 Sun Microsystems, Inc. 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
--- a/jdk/test/javax/management/Introspector/AnnotatedNotificationInfoTest.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/javax/management/Introspector/AnnotatedNotificationInfoTest.java Wed Jul 05 16:44:31 2017 +0200
@@ -22,8 +22,8 @@
*/
/*
- * @test %M% %I%
- * @bug 6323980
+ * @test
+ * @bug 6323980 6772779
* @summary Test @NotificationInfo annotation
* @author Eamonn McManus
* @run main/othervm -ea AnnotatedNotificationInfoTest
@@ -32,6 +32,7 @@
import java.io.Serializable;
import java.lang.management.ManagementFactory;
import java.lang.reflect.Field;
+import java.util.Arrays;
import javax.annotation.Resource;
import javax.management.AttributeChangeNotification;
import javax.management.Description;
@@ -134,6 +135,23 @@
private static Object mbeanIntf5 = new Intf5Impl();
+ @NotificationInfo(
+ types = {"foo", "bar"},
+ notificationClass = AttributeChangeNotification.class,
+ description = @Description(
+ value = "description",
+ bundleBaseName = "bundle",
+ key = "key"),
+ descriptorFields = {"foo=bar"})
+ public static interface Intf6MBean {}
+
+ public static class Intf6 implements Intf6MBean {
+ @Resource
+ private volatile SendNotification send;
+ }
+
+ private static Object mbeanIntf6 = new Intf6();
+
public static interface Impl1MBean {}
@NotificationInfo(
@@ -202,22 +220,21 @@
private static Object mbeanMBean2 = new MBean2();
- // Following disabled until we support it
-// @MBean
-// @NotificationInfo(
-// types = {"foo", "bar"},
-// notificationClass = AttributeChangeNotification.class,
-// description = @Description(
-// value = "description",
-// bundleBaseName = "bundle",
-// key = "key"),
-// descriptorFields = {"foo=bar"})
-// public static class MBean3 {
-// @Resource
-// private volatile SendNotification send;
-// }
-//
-// private static Object mbeanMBean3 = new MBean3();
+ @MBean
+ @NotificationInfo(
+ types = {"foo", "bar"},
+ notificationClass = AttributeChangeNotification.class,
+ description = @Description(
+ value = "description",
+ bundleBaseName = "bundle",
+ key = "key"),
+ descriptorFields = {"foo=bar"})
+ public static class MBean3 {
+ @Resource
+ private volatile SendNotification send;
+ }
+
+ private static Object mbeanMBean3 = new MBean3();
@MXBean
@NotificationInfo(
@@ -237,6 +254,23 @@
private static Object mbeanMXBean2 = new MXBean2();
+ // Classes for the second test. This tests the simplest case, which is
+ // the first example in the javadoc for @NotificationInfo. Notice that
+ // this MBean is not a NotificationBroadcaster and does not inject a
+ // SendNotification! That should possibly be an error, but it's currently
+ // allowed by the spec.
+ @NotificationInfo(types={"com.example.notifs.create",
+ "com.example.notifs.destroy"})
+ public static interface CacheMBean {
+ public int getCachedNum();
+ }
+
+ public static class Cache implements CacheMBean {
+ public int getCachedNum() {
+ return 0;
+ }
+ }
+
public static void main(String[] args) throws Exception {
if (!AnnotatedNotificationInfoTest.class.desiredAssertionStatus())
throw new Exception("Test must be run with -ea");
@@ -267,5 +301,14 @@
assert mbnis[0].equals(expected) : mbnis[0];
mbs.unregisterMBean(on);
}
+
+ mbs.registerMBean(new Cache(), on);
+ MBeanInfo mbi = mbs.getMBeanInfo(on);
+ MBeanNotificationInfo[] mbnis = mbi.getNotifications();
+ assert mbnis.length == 1 : mbnis.length;
+ String[] types = mbnis[0].getNotifTypes();
+ String[] expectedTypes =
+ CacheMBean.class.getAnnotation(NotificationInfo.class).types();
+ assert Arrays.equals(types, expectedTypes) : Arrays.toString(types);
}
}
--- a/jdk/test/javax/management/Introspector/AnnotationTest.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/javax/management/Introspector/AnnotationTest.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. 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
--- a/jdk/test/javax/management/MBeanServer/DynamicWrapperMBeanTest.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/javax/management/MBeanServer/DynamicWrapperMBeanTest.java Wed Jul 05 16:44:31 2017 +0200
@@ -23,14 +23,27 @@
/*
* @test DynamicWrapperMBeanTest
- * @bug 6624232
+ * @bug 6624232 6776225
* @summary Test the DynamicWrapperMBean interface
* @author Eamonn McManus
*/
import java.lang.management.ManagementFactory;
+import javax.annotation.Resource;
+import javax.management.JMX;
+import javax.management.ListenerNotFoundException;
+import javax.management.MBeanNotificationInfo;
import javax.management.MBeanServer;
+import javax.management.Notification;
+import javax.management.NotificationBroadcaster;
+import javax.management.NotificationBroadcasterSupport;
+import javax.management.NotificationEmitter;
+import javax.management.NotificationFilter;
+import javax.management.NotificationInfo;
+import javax.management.NotificationListener;
import javax.management.ObjectName;
+import javax.management.SendNotification;
+import javax.management.StandardEmitterMBean;
import javax.management.StandardMBean;
import javax.management.modelmbean.ModelMBeanInfo;
import javax.management.modelmbean.ModelMBeanInfoSupport;
@@ -39,6 +52,25 @@
import static javax.management.StandardMBean.Options;
public class DynamicWrapperMBeanTest {
+ private static String failure;
+
+ public static void main(String[] args) throws Exception {
+ wrapTest();
+ notifTest();
+
+ if (failure == null)
+ System.out.println("TEST PASSED");
+ else
+ throw new Exception("TEST FAILED: " + failure);
+ }
+
+ private static final Options wrappedVisOpts = new Options();
+ private static final Options wrappedInvisOpts = new Options();
+ static {
+ wrappedVisOpts.setWrappedObjectVisible(true);
+ wrappedInvisOpts.setWrappedObjectVisible(false);
+ }
+
public static interface WrappedMBean {
public void sayHello();
}
@@ -48,19 +80,13 @@
}
}
- private static String failure;
-
- public static void main(String[] args) throws Exception {
+ private static void wrapTest() throws Exception {
if (Wrapped.class.getClassLoader() ==
StandardMBean.class.getClassLoader()) {
throw new Exception(
"TEST ERROR: Resource and StandardMBean have same ClassLoader");
}
- Options wrappedVisOpts = new Options();
- wrappedVisOpts.setWrappedObjectVisible(true);
- Options wrappedInvisOpts = new Options();
- wrappedInvisOpts.setWrappedObjectVisible(false);
assertEquals("Options withWrappedObjectVisible(false)",
new Options(), wrappedInvisOpts);
@@ -138,8 +164,223 @@
assertEquals("isInstanceOf(RequiredModelMBean) for invisible resource",
true, mbs.isInstanceOf(invisibleName, RequiredModelMBean.class.getName()));
- if (failure != null)
- throw new Exception("TEST FAILED: " + failure);
+ mbs.unregisterMBean(visibleName);
+ mbs.unregisterMBean(invisibleName);
+ }
+
+ private static enum WrapType {
+ NBS("NotificationBroadcasterSupport"),
+ INJ("@Resource SendNotification"),
+ STD_MBEAN_NBS("StandardMBean delegating to NotificationBroadcasterSupport"),
+ STD_MBEAN_INJ("StandardMBean delegating to @Resource SendNotification"),
+ STD_MBEAN_SUB_NBS("StandardMBean subclass implementing NotificationBroadcaster"),
+ STD_MBEAN_SUB_INJ("StandardMBean subclass with @Resource SendNotification"),
+ STD_EMIT_MBEAN_NBS("StandardEmitterMBean delegating to NotificationBroadcasterSupport"),
+ STD_EMIT_MBEAN_INJ("StandardEmitterMBean delegating to @Resource SendNotification"),
+ STD_EMIT_MBEAN_SUB("StandardEmitterMBean subclass"),
+ STD_EMIT_MBEAN_SUB_INJ("StandardEmitterMBean subclass with @Resource SendNotification");
+
+ WrapType(String s) {
+ this.s = s;
+ }
+
+ @Override
+ public String toString() {
+ return s;
+ }
+
+ private final String s;
+ }
+
+ @NotificationInfo(
+ types = {"foo", "bar"}
+ )
+ public static interface BroadcasterMBean {
+ public void send(Notification n);
+ }
+
+ public static class Broadcaster
+ extends NotificationBroadcasterSupport implements BroadcasterMBean {
+ public void send(Notification n) {
+ super.sendNotification(n);
+ }
+ }
+
+ public static interface SendNotifMBean extends BroadcasterMBean {
+ }
+
+ public static class SendNotif implements SendNotifMBean {
+ @Resource
+ private volatile SendNotification sendNotif;
+
+ public void send(Notification n) {
+ sendNotif.sendNotification(n);
+ }
+ }
+
+ public static class StdBroadcaster
+ extends StandardMBean
+ implements BroadcasterMBean, NotificationBroadcaster {
+ private final NotificationBroadcasterSupport nbs =
+ new NotificationBroadcasterSupport();
+
+ public StdBroadcaster() throws Exception {
+ super(BroadcasterMBean.class);
+ }
+
+ public void send(Notification n) {
+ nbs.sendNotification(n);
+ }
+
+ public void addNotificationListener(NotificationListener listener,
+ NotificationFilter filter, Object handback) {
+ nbs.addNotificationListener(listener, filter, handback);
+ }
+
+ public MBeanNotificationInfo[] getNotificationInfo() {
+ return null;
+ }
+
+ public void removeNotificationListener(NotificationListener listener)
+ throws ListenerNotFoundException {
+ nbs.removeNotificationListener(listener);
+ }
+ }
+
+ public static class StdSendNotif
+ extends StandardMBean implements SendNotifMBean {
+ @Resource
+ private volatile SendNotification sendNotif;
+
+ public StdSendNotif() throws Exception {
+ super(SendNotifMBean.class);
+ }
+
+ public void send(Notification n) {
+ sendNotif.sendNotification(n);
+ }
+ }
+
+ public static class StdEmitterBroadcaster // :-)
+ extends StandardEmitterMBean
+ implements BroadcasterMBean {
+
+ public StdEmitterBroadcaster() throws Exception {
+ super(BroadcasterMBean.class, null);
+ }
+
+ public void send(Notification n) {
+ super.sendNotification(n);
+ }
+ }
+
+ // This case is unlikely - if you're using @Resource SendNotification
+ // then there's no point in using StandardEmitterMBean, since
+ // StandardMBean would suffice.
+ public static class StdEmitterSendNotif
+ extends StandardEmitterMBean implements SendNotifMBean {
+ @Resource
+ private volatile SendNotification sendNotif;
+
+ public StdEmitterSendNotif() {
+ super(SendNotifMBean.class, null);
+ }
+
+ public void send(Notification n) {
+ sendNotif.sendNotification(n);
+ }
+ }
+
+ // Test that JMX.isNotificationSource and
+ // mbs.isInstanceOf("NotificationBroadcaster") work correctly even when
+ // the MBean is a broadcaster by virtue of its wrapped resource.
+ // Test that we find the MBeanNotificationInfo[] from the @NotificationInfo
+ // annotation on BroadcasterMBean. We cover a large number of different
+ // MBean types, but all ultimately implement that interface.
+ private static void notifTest() throws Exception {
+ System.out.println("===Testing notification senders===");
+
+ for (WrapType wrapType : WrapType.values()) {
+ System.out.println("---" + wrapType);
+
+ final Object mbean;
+
+ switch (wrapType) {
+ case NBS:
+ // An MBean that extends NotificationBroadcasterSupport
+ mbean = new Broadcaster();
+ break;
+ case INJ:
+ // An MBean that injects SendNotification
+ mbean = new SendNotif();
+ break;
+ case STD_MBEAN_NBS:
+ // A StandardMBean that delegates to a NotificationBroadcasterSupport
+ mbean = new StandardMBean(
+ new Broadcaster(), BroadcasterMBean.class, wrappedVisOpts);
+ break;
+ case STD_MBEAN_INJ:
+ // A StandardMBean that delegates to an object that injects
+ // SendNotification
+ mbean = new StandardMBean(
+ new SendNotif(), BroadcasterMBean.class, wrappedVisOpts);
+ break;
+ case STD_EMIT_MBEAN_NBS: {
+ // A StandardEmitterMBean that delegates to a NotificationBroadcasterSupport
+ Broadcaster broadcaster = new Broadcaster();
+ mbean = new StandardEmitterMBean(
+ broadcaster, BroadcasterMBean.class, wrappedVisOpts,
+ broadcaster);
+ break;
+ }
+ case STD_EMIT_MBEAN_INJ: {
+ // A StandardEmitterMBean that delegates to an object that injects
+ // SendNotification
+ SendNotif sendNotif = new SendNotif();
+ mbean = new StandardEmitterMBean(
+ sendNotif, BroadcasterMBean.class, wrappedVisOpts,
+ null);
+ break;
+ }
+ case STD_MBEAN_SUB_NBS:
+ // A subclass of StandardMBean that implements NotificationBroadcaster
+ mbean = new StdBroadcaster();
+ break;
+ case STD_MBEAN_SUB_INJ:
+ // A subclass of StandardMBean that injects SendNotification
+ mbean = new StdSendNotif();
+ break;
+ case STD_EMIT_MBEAN_SUB:
+ // A subclass of StandardEmitterMBean
+ mbean = new StdEmitterBroadcaster();
+ break;
+ case STD_EMIT_MBEAN_SUB_INJ:
+ // A subclass of StandardEmitterMBean that injects SendNotification
+ // (which is a rather strange thing to do and probably a user
+ // misunderstanding but we should do the right thing anyway).
+ mbean = new StdEmitterSendNotif();
+ break;
+ default:
+ throw new AssertionError();
+ }
+
+ MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+
+ final ObjectName name = new ObjectName("a:type=Sender");
+ mbs.registerMBean(mbean, name);
+ boolean isBroadcaster = mbs.isInstanceOf(
+ name, NotificationBroadcaster.class.getName());
+ assertEquals("JMX.isNotificationSource(mbean)",
+ true, JMX.isNotificationSource(mbean));
+ assertEquals("isInstanceOf(NotificationBroadcaster)",
+ true, isBroadcaster);
+ MBeanNotificationInfo[] mbnis =
+ mbs.getMBeanInfo(name).getNotifications();
+ assertEquals("MBeanNotificationInfo not empty",
+ true, (mbnis.length > 0));
+
+ mbs.unregisterMBean(name);
+ }
}
private static void assertEquals(String what, Object expect, Object actual) {
--- a/jdk/test/javax/management/MBeanServer/MBeanExceptionTest.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/javax/management/MBeanServer/MBeanExceptionTest.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2004-2008 Sun Microsystems, Inc. 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
--- a/jdk/test/javax/management/context/ContextTest.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/javax/management/context/ContextTest.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 Sun Microsystems, Inc. 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
--- a/jdk/test/javax/management/context/LocaleTest.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/javax/management/context/LocaleTest.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 Sun Microsystems, Inc. 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
--- a/jdk/test/javax/management/context/LocalizableTest.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/javax/management/context/LocalizableTest.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 Sun Microsystems, Inc. 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
--- a/jdk/test/javax/management/context/localizable/MBeanDescriptions_fr.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/javax/management/context/localizable/MBeanDescriptions_fr.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 Sun Microsystems, Inc. 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
--- a/jdk/test/javax/management/context/localizable/Whatsit.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/javax/management/context/localizable/Whatsit.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 Sun Microsystems, Inc. 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
--- a/jdk/test/javax/management/context/localizable/WhatsitMBean.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/javax/management/context/localizable/WhatsitMBean.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 Sun Microsystems, Inc. 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
--- a/jdk/test/javax/management/remote/mandatory/provider/ProviderTest.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/javax/management/remote/mandatory/provider/ProviderTest.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc. 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
--- a/jdk/test/javax/management/remote/mandatory/subjectDelegation/SimpleStandard.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/javax/management/remote/mandatory/subjectDelegation/SimpleStandard.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc. 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
--- a/jdk/test/javax/swing/RepaintManager/6608456/bug6608456.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/javax/swing/RepaintManager/6608456/bug6608456.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 Sun Microsystems, Inc. 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
--- a/jdk/test/javax/swing/text/html/HRuleView/Test5062055.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/javax/swing/text/html/HRuleView/Test5062055.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 Sun Microsystems, Inc. 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
--- a/jdk/test/javax/xml/crypto/dsig/GenerationTests.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/javax/xml/crypto/dsig/GenerationTests.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc. 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
--- a/jdk/test/lib/security/cacerts/VerifyCACerts.java Thu Dec 04 11:10:17 2008 -0800
+++ b/jdk/test/lib/security/cacerts/VerifyCACerts.java Wed Jul 05 16:44:31 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc. 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
@@ -23,11 +23,12 @@
/**
* @test
- * @bug 4400624 6321453
+ * @bug 4400624 6321453 6728890 6732157 6754779 6768559
* @summary Make sure all self-signed root cert signatures are valid
*/
import java.io.FileInputStream;
import java.security.KeyStore;
+import java.security.MessageDigest;
import java.security.cert.*;
import java.util.*;
@@ -39,25 +40,102 @@
System.getProperty("file.separator") + "security" +
System.getProperty("file.separator") + "cacerts";
+ private static boolean atLeastOneFailed = false;
+
+ private static MessageDigest md;
+
+ // map of cert alias to SHA1 fingerprint
+ private static Map<String, String> fpMap = new HashMap<String, String>();
+
+ private static String[][] entries = {
+ { "swisssignsilverg2ca", "9B:AA:E5:9F:56:EE:21:CB:43:5A:BE:25:93:DF:A7:F0:40:D1:1D:CB"},
+ { "swisssigngoldg2ca", "D8:C5:38:8A:B7:30:1B:1B:6E:D4:7A:E6:45:25:3A:6F:9F:1A:27:61"},
+ { "swisssignplatinumg2ca", "56:E0:FA:C0:3B:8F:18:23:55:18:E5:D3:11:CA:E8:C2:43:31:AB:66"},
+ { "verisigntsaca", "BE:36:A4:56:2F:B2:EE:05:DB:B3:D3:23:23:AD:F4:45:08:4E:D6:56"},
+ { "camerfirmachambersignca", "4A:BD:EE:EC:95:0D:35:9C:89:AE:C7:52:A1:2C:5B:29:F6:D6:AA:0C"},
+ { "camerfirmachambersca", "78:6A:74:AC:76:AB:14:7F:9C:6A:30:50:BA:9E:A8:7E:FE:9A:CE:3C"},
+ { "camerfirmachamberscommerceca", "6E:3A:55:A4:19:0C:19:5C:93:84:3C:C0:DB:72:2E:31:30:61:F0:B1"},
+ { "deutschetelekomrootca2", "85:A4:08:C0:9C:19:3E:5D:51:58:7D:CD:D6:13:30:FD:8C:DE:37:BF"},
+ };
+
+ static {
+ for (String[] entry : entries) {
+ fpMap.put(entry[0], entry[1]);
+ }
+ };
+
public static void main(String[] args) throws Exception {
+ md = MessageDigest.getInstance("SHA1");
+ KeyStore ks = KeyStore.getInstance("JKS");
+ ks.load(new FileInputStream(cacertsFileName), "changeit".toCharArray());
+ // check that all entries in the map are in the keystore
+ for (String alias : fpMap.keySet()) {
+ if (!ks.isCertificateEntry(alias)) {
+ atLeastOneFailed = true;
+ System.err.println(alias + " is not in cacerts");
+ }
+ }
// pull all the trusted self-signed CA certs out of the cacerts file
// and verify their signatures
- KeyStore ks = KeyStore.getInstance("JKS");
- ks.load(new FileInputStream(cacertsFileName), "changeit".toCharArray());
Enumeration<String> aliases = ks.aliases();
while (aliases.hasMoreElements()) {
String alias = aliases.nextElement();
System.out.println("Verifying " + alias);
- if (!ks.isCertificateEntry(alias))
- throw new Exception(alias + " is not a trusted cert entry");
+ if (!ks.isCertificateEntry(alias)) {
+ atLeastOneFailed = true;
+ System.err.println(alias + " is not a trusted cert entry");
+ }
Certificate cert = ks.getCertificate(alias);
// remember the GTE CyberTrust CA cert for further tests
if (alias.equals("gtecybertrustca")) {
- throw new Exception
+ atLeastOneFailed = true;
+ System.err.println
("gtecybertrustca is expired and should be deleted");
}
cert.verify(cert.getPublicKey());
+ if (!checkFingerprint(alias, cert)) {
+ atLeastOneFailed = true;
+ System.err.println
+ (alias + " SHA1 fingerprint is incorrect");
+ }
+ }
+
+ if (atLeastOneFailed) {
+ throw new Exception("At least one cacert test failed");
}
}
+
+ private static boolean checkFingerprint(String alias, Certificate cert)
+ throws Exception {
+ String fingerprint = fpMap.get(alias);
+ if (fingerprint == null) {
+ // no entry for alias
+ return true;
+ }
+ System.out.println("Checking fingerprint of " + alias);
+ byte[] digest = md.digest(cert.getEncoded());
+ return fingerprint.equals(toHexString(digest));
+ }
+
+ private static String toHexString(byte[] block) {
+ StringBuffer buf = new StringBuffer();
+ int len = block.length;
+ for (int i = 0; i < len; i++) {
+ byte2hex(block[i], buf);
+ if (i < len-1) {
+ buf.append(":");
+ }
+ }
+ return buf.toString();
+ }
+
+ private static void byte2hex(byte b, StringBuffer buf) {
+ char[] hexChars = { '0', '1', '2', '3', '4', '5', '6', '7', '8',
+ '9', 'A', 'B', 'C', 'D', 'E', 'F' };
+ int high = ((b & 0xf0) >> 4);
+ int low = (b & 0x0f);
+ buf.append(hexChars[high]);
+ buf.append(hexChars[low]);
+ }
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/management/jmxremote/LocalRMIServerSocketFactoryTest.java Wed Jul 05 16:44:31 2017 +0200
@@ -0,0 +1,145 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/**
+ * @test LocalRMIServerSocketFactoryTest.java
+ * @bug 6774170
+ * @summary Connect to a server socket returned by the LocalRMIServerSocketFactory.
+ *
+ * @author Daniel Fuchs
+ *
+ * @run compile -XDignore.symbol.file=true -source 1.6 -g LocalRMIServerSocketFactoryTest.java
+ * @run main LocalRMIServerSocketFactoryTest
+ */
+
+import sun.management.jmxremote.LocalRMIServerSocketFactory;
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.util.concurrent.SynchronousQueue;
+
+public class LocalRMIServerSocketFactoryTest {
+
+ private static final SynchronousQueue<Exception> queue =
+ new SynchronousQueue<Exception>();
+
+ static final class Result extends Exception {
+
+ private Result() {
+ super("SUCCESS: No exception was thrown");
+ }
+ static final Result SUCCESS = new Result();
+ }
+
+ private static void checkError(String message) throws Exception {
+
+ // Wait for the server to set the error field.
+ final Exception x = queue.take();
+
+ if (x == Result.SUCCESS) {
+ return;
+ }
+
+
+ // case of 6674166: this is very unlikely to happen, even if
+ // both 6674166 and 6774170 aren't fixed. If it happens
+ // however, it might indicate that neither defects are fixed.
+
+ if (x instanceof NullPointerException) {
+ throw new Exception(message + " - " +
+ "Congratulations! it seems you have triggered 6674166. " +
+ "Neither 6674166 nor 6774170 seem to be fixed: " + x, x);
+ } else if (x instanceof IOException) {
+ throw new Exception(message + " - " +
+ "Unexpected IOException. Maybe you triggered 6674166? " +
+ x, x);
+ } else if (x != null) {
+ throw new Exception(message + " - " +
+ "Ouch, that's bad. " +
+ "This is a new kind of unexpected exception " +
+ x, x);
+ }
+ }
+
+ public static void main(String[] args) throws Exception {
+ final LocalRMIServerSocketFactory f =
+ new LocalRMIServerSocketFactory();
+ final ServerSocket s = f.createServerSocket(0);
+ final int port = s.getLocalPort();
+ Thread t = new Thread() {
+
+ public void run() {
+ while (true) {
+ Exception error = Result.SUCCESS;
+ try {
+ System.err.println("Accepting: ");
+ final Socket ss = s.accept();
+ System.err.println(ss.getInetAddress() + " accepted");
+ } catch (Exception x) {
+ x.printStackTrace();
+ error = x;
+ } finally {
+ try {
+ // wait for the client to get the exception.
+ queue.put(error);
+ } catch (Exception x) {
+ // too bad!
+ System.err.println("Could't send result to client!");
+ x.printStackTrace();
+ return;
+ }
+ }
+ }
+ }
+ };
+ t.setDaemon(true);
+ t.start();
+
+ System.err.println("new Socket((String)null, port)");
+ final Socket s1 = new Socket((String) null, port);
+ checkError("new Socket((String)null, port)");
+ s1.close();
+ System.err.println("new Socket((String)null, port): PASSED");
+
+ System.err.println("new Socket(InetAddress.getByName(null), port)");
+ final Socket s2 = new Socket(InetAddress.getByName(null), port);
+ checkError("new Socket(InetAddress.getByName(null), port)");
+ s2.close();
+ System.err.println("new Socket(InetAddress.getByName(null), port): PASSED");
+
+ System.err.println("new Socket(localhost, port)");
+ final Socket s3 = new Socket("localhost", port);
+ checkError("new Socket(localhost, port)");
+ s3.close();
+ System.err.println("new Socket(localhost, port): PASSED");
+
+ System.err.println("new Socket(127.0.0.1, port)");
+ final Socket s4 = new Socket("127.0.0.1", port);
+ checkError("new Socket(127.0.0.1, port)");
+ s4.close();
+ System.err.println("new Socket(127.0.0.1, port): PASSED");
+
+ }
+}