/hg/release/icedtea6-1.11: Remove unused patches and those which...
andrew at icedtea.classpath.org
andrew at icedtea.classpath.org
Tue Jul 9 08:29:22 PDT 2013
changeset 49e2fd0a8dfd in /hg/release/icedtea6-1.11
details: http://icedtea.classpath.org/hg/release/icedtea6-1.11?cmd=changeset;node=49e2fd0a8dfd
author: Andrew John Hughes <gnu.andrew at redhat.com>
date: Tue Jul 09 16:29:08 2013 +0100
Remove unused patches and those which need more testing in HEAD.
2013-07-09 Andrew John Hughes <gnu.andrew at redhat.com>
* patches/ecj/ant.patch,
* patches/openjdk/6990754-handle_renames.patch,
* patches/openjdk/6990754-use_native_memory_for_symboltable.patch,
* patches/openjdk/7008809-report_class_in_arraystoreexception.patch,
* patches/openjdk/7014851-unused_parallel_compaction_code.patch,
* patches/openjdk/7017732-move_static_fields_to_class.patch,
* patches/openjdk/7036747-elfstringtable.patch,
* patches/openjdk/7086585-flexible_field_injection.patch,
* patches/openjdk/7188114-alternate_command_line_parser.patch,
* patches/openjdk/7199143-OCSP_timeout.patch,
* patches/openjdk/8002070-remove_logger_stack_search.patch,
* patches/openjdk/8002070-remove_logger_stack_search_2.patch,
* patches/openjdk/8006120-server_jre.patch,
* patches/openjdk/8006536-remove_trailing_slashes.patch,
* patches/openjdk/8009463-space_and_final_backslash.patch,
* patches/openjdk/8010118-caller_sensitive.patch,
* patches/openjdk/8010213-set_socketoptions_windows.patch,
* patches/openjdk/8011139-revise_checking_getenclosingclass.patch,
* patches/openjdk/8011313-OCSP_timeout_wrong_value.patch,
* patches/openjdk/8011990-logger_test_urls.patch,
* patches/openjdk/8012243-serial_regression.patch,
* patches/openjdk/8013380-handle_renames.patch,
* patches/openjdk/8013380-logger_stack_walk_glassfish.patch,
* patches/openjdk/8014205-blank_swing_dialogs_windows.patch,
* patches/openjdk/8014618-strip_leading_zeros_premastersecret.patch,
* patches/openjdk/8014676-javadebugger_space_in_paths.patch,
* patches/openjdk/8014745-logger_stack_walk_switch.patch,
* patches/openjdk/8014968-OCSP_timeout_default.patch,
* patches/security/20130618/7158805-nested_subroutine_rewriting-it6.patch,
* patches/security/20130618/8001330-checking_order_improvement-it6.patch,
* patches/security/20130618/hs_merge-01.patch,
* patches/security/20130618/hs_merge-02.patch,
* patches/security/20130618/hs_merge-03.patch,
* patches/security/20130618/hs_merge-04.patch,
* patches/sparc.patch:
Remove unused patches.
* Makefile.am:
(ICEDTEA_PATCHES): Remove patches which need more testing before
release.
* patches/ecj/override.patch: Drop recent addition. In accordance with
PR1397, we should avoid extending this patch in favour of either not
including @Override additions or setting source/target correctly.
* patches/security/20130618/7158805-nested_subroutine_rewriting.patch,
* patches/security/20130618/8001330-checking_order_improvement.patch:
Replace with Chris' patches, regenerated as unified diffs.
diffstat:
ChangeLog | 52 +-
Makefile.am | 28 +-
patches/ecj/ant.patch | 20 -
patches/ecj/override.patch | 11 -
patches/openjdk/6990754-handle_renames.patch | 925 -
patches/openjdk/6990754-use_native_memory_for_symboltable.patch | 18949 ----------
patches/openjdk/7008809-report_class_in_arraystoreexception.patch | 189 -
patches/openjdk/7014851-unused_parallel_compaction_code.patch | 810 -
patches/openjdk/7017732-move_static_fields_to_class.patch | 3079 -
patches/openjdk/7036747-elfstringtable.patch | 130 -
patches/openjdk/7086585-flexible_field_injection.patch | 3424 -
patches/openjdk/7188114-alternate_command_line_parser.patch | 611 -
patches/openjdk/7199143-OCSP_timeout.patch | 53 -
patches/openjdk/8002070-remove_logger_stack_search.patch | 152 -
patches/openjdk/8002070-remove_logger_stack_search_2.patch | 546 -
patches/openjdk/8006120-server_jre.patch | 60 -
patches/openjdk/8006536-remove_trailing_slashes.patch | 43 -
patches/openjdk/8009463-space_and_final_backslash.patch | 33 -
patches/openjdk/8010118-caller_sensitive.patch | 2950 -
patches/openjdk/8010213-set_socketoptions_windows.patch | 29 -
patches/openjdk/8011139-revise_checking_getenclosingclass.patch | 58 -
patches/openjdk/8011154-awt_regression.patch | 20 +
patches/openjdk/8011154-awt_regresssion.patch | 20 -
patches/openjdk/8011313-OCSP_timeout_wrong_value.patch | 31 -
patches/openjdk/8011990-logger_test_urls.patch | 55 -
patches/openjdk/8012243-serial_regression.patch | 42 -
patches/openjdk/8013380-handle_renames.patch | 107 -
patches/openjdk/8013380-logger_stack_walk_glassfish.patch | 936 -
patches/openjdk/8014205-blank_swing_dialogs_windows.patch | 146 -
patches/openjdk/8014427-raster_regression.patch | 20 +
patches/openjdk/8014427-raster_regresssion.patch | 20 -
patches/openjdk/8014618-strip_leading_zeros_premastersecret.patch | 149 -
patches/openjdk/8014676-javadebugger_space_in_paths.patch | 32 -
patches/openjdk/8014745-logger_stack_walk_switch.patch | 199 -
patches/openjdk/8014968-OCSP_timeout_default.patch | 19 -
patches/security/20130618/7158805-nested_subroutine_rewriting-it6.patch | 743 -
patches/security/20130618/7158805-nested_subroutine_rewriting.patch | 39 +-
patches/security/20130618/8001330-checking_order_improvement-it6.patch | 500 -
patches/security/20130618/8001330-checking_order_improvement.patch | 37 +-
patches/security/20130618/hs_merge-01.patch | 284 -
patches/security/20130618/hs_merge-02.patch | 155 -
patches/security/20130618/hs_merge-03.patch | 18 -
patches/security/20130618/hs_merge-04.patch | 44 -
patches/sparc.patch | 1808 -
44 files changed, 149 insertions(+), 37427 deletions(-)
diffs (truncated from 37891 to 500 lines):
diff -r d146c22f9e46 -r 49e2fd0a8dfd ChangeLog
--- a/ChangeLog Wed Jul 03 23:28:46 2013 -0400
+++ b/ChangeLog Tue Jul 09 16:29:08 2013 +0100
@@ -1,3 +1,51 @@
+2013-07-09 Andrew John Hughes <gnu.andrew at redhat.com>
+
+ * patches/ecj/ant.patch,
+ * patches/openjdk/6990754-handle_renames.patch,
+ * patches/openjdk/6990754-use_native_memory_for_symboltable.patch,
+ * patches/openjdk/7008809-report_class_in_arraystoreexception.patch,
+ * patches/openjdk/7014851-unused_parallel_compaction_code.patch,
+ * patches/openjdk/7017732-move_static_fields_to_class.patch,
+ * patches/openjdk/7036747-elfstringtable.patch,
+ * patches/openjdk/7086585-flexible_field_injection.patch,
+ * patches/openjdk/7188114-alternate_command_line_parser.patch,
+ * patches/openjdk/7199143-OCSP_timeout.patch,
+ * patches/openjdk/8002070-remove_logger_stack_search.patch,
+ * patches/openjdk/8002070-remove_logger_stack_search_2.patch,
+ * patches/openjdk/8006120-server_jre.patch,
+ * patches/openjdk/8006536-remove_trailing_slashes.patch,
+ * patches/openjdk/8009463-space_and_final_backslash.patch,
+ * patches/openjdk/8010118-caller_sensitive.patch,
+ * patches/openjdk/8010213-set_socketoptions_windows.patch,
+ * patches/openjdk/8011139-revise_checking_getenclosingclass.patch,
+ * patches/openjdk/8011313-OCSP_timeout_wrong_value.patch,
+ * patches/openjdk/8011990-logger_test_urls.patch,
+ * patches/openjdk/8012243-serial_regression.patch,
+ * patches/openjdk/8013380-handle_renames.patch,
+ * patches/openjdk/8013380-logger_stack_walk_glassfish.patch,
+ * patches/openjdk/8014205-blank_swing_dialogs_windows.patch,
+ * patches/openjdk/8014618-strip_leading_zeros_premastersecret.patch,
+ * patches/openjdk/8014676-javadebugger_space_in_paths.patch,
+ * patches/openjdk/8014745-logger_stack_walk_switch.patch,
+ * patches/openjdk/8014968-OCSP_timeout_default.patch,
+ * patches/security/20130618/7158805-nested_subroutine_rewriting-it6.patch,
+ * patches/security/20130618/8001330-checking_order_improvement-it6.patch,
+ * patches/security/20130618/hs_merge-01.patch,
+ * patches/security/20130618/hs_merge-02.patch,
+ * patches/security/20130618/hs_merge-03.patch,
+ * patches/security/20130618/hs_merge-04.patch,
+ * patches/sparc.patch:
+ Remove unused patches.
+ * Makefile.am:
+ (ICEDTEA_PATCHES): Remove patches which need more testing before
+ release.
+ * patches/ecj/override.patch: Drop recent addition. In accordance with
+ PR1397, we should avoid extending this patch in favour of either not
+ including @Override additions or setting source/target correctly.
+ * patches/security/20130618/7158805-nested_subroutine_rewriting.patch,
+ * patches/security/20130618/8001330-checking_order_improvement.patch:
+ Replace with Chris' patches, regenerated as unified diffs.
+
2013-07-03 Omair Majid <omajid at redhat.com>
* patches/openjdk/6541350-tz_display_names_l10n.patch,
@@ -63,7 +111,9 @@
* NEWS: Update with backports.
2013-06-26 Chris Phillips <chrisphi at redhat.com>
- * Makefile.am (SECURITY_PATCHES): Drop
+
+ * Makefile.am:
+ (SECURITY_PATCHES): Drop
patches/security/20130618/7158805-nested_subroutine_rewriting.patch
patches/security/20130618/8001330-checking_order_improvement.patch
patches/openjdk/7036747-elfstringtable.patch
diff -r d146c22f9e46 -r 49e2fd0a8dfd Makefile.am
--- a/Makefile.am Wed Jul 03 23:28:46 2013 -0400
+++ b/Makefile.am Tue Jul 09 16:29:08 2013 +0100
@@ -377,8 +377,8 @@
patches/security/20130618/diamond_fix.patch \
patches/security/20130618/handle_npe.patch \
patches/security/20130618/javac_issue.patch \
- patches/security/20130618/7158805-nested_subroutine_rewriting-it6.patch \
- patches/security/20130618/8001330-checking_order_improvement-it6.patch \
+ patches/security/20130618/7158805-nested_subroutine_rewriting.patch \
+ patches/security/20130618/8001330-checking_order_improvement.patch \
patches/security/20130618/8000642-better_transportation_handling.patch \
patches/openjdk/6786028-wcag_bold_tags.patch \
patches/openjdk/6786682-wcag_lang.patch \
@@ -620,40 +620,20 @@
patches/object-factory-cl-internal.patch \
patches/openjdk/8009530-icu_kern_table_support_broken.patch \
patches/openjdk/7171223-strict_aliasing.patch \
- patches/openjdk/7188114-alternate_command_line_parser.patch \
- patches/openjdk/7199143-OCSP_timeout.patch \
- patches/openjdk/8006120-server_jre.patch \
- patches/openjdk/8006536-remove_trailing_slashes.patch \
patches/openjdk/8009165-inappropriate_method_in_reflectutil.patch \
patches/openjdk/8009217-fix_test_compile.patch \
- patches/openjdk/8009463-space_and_final_backslash.patch \
patches/openjdk/8009610-blacklist_malware_certificate.patch \
- patches/openjdk/8010213-set_socketoptions_windows.patch \
patches/openjdk/8010714-xml_dsig_retrievalmethod.patch \
- patches/openjdk/8011154-awt_regresssion.patch \
- patches/openjdk/8011313-OCSP_timeout_wrong_value.patch \
+ patches/openjdk/8011154-awt_regression.patch \
patches/openjdk/8011992-MlibOpsTest_failed.patch \
patches/openjdk/8012112-MlibOpsTest_fails.patch \
patches/openjdk/8012617-arrayindexoutofbounds_linebreakmeasurer.patch \
patches/openjdk/8012933-appcontext_disposed_too_early.patch \
patches/openjdk/8013196-TimeZone_getDefault_throws_exception.patch \
- patches/openjdk/8014205-blank_swing_dialogs_windows.patch \
- patches/openjdk/8014427-raster_regresssion.patch \
- patches/openjdk/8014618-strip_leading_zeros_premastersecret.patch \
- patches/openjdk/8014676-javadebugger_space_in_paths.patch \
- patches/openjdk/8014968-OCSP_timeout_default.patch \
- patches/openjdk/8002070-remove_logger_stack_search.patch \
- patches/openjdk/8002070-remove_logger_stack_search_2.patch \
- patches/openjdk/8010118-caller_sensitive.patch \
+ patches/openjdk/8014427-raster_regression.patch \
patches/openjdk/8010727-empty_logger_name.patch \
patches/openjdk/8010939-logmanager_deadlock.patch \
- patches/openjdk/8011990-logger_test_urls.patch \
- patches/openjdk/8013380-logger_stack_walk_glassfish.patch \
- patches/openjdk/8013380-handle_renames.patch \
- patches/openjdk/8014745-logger_stack_walk_switch.patch \
- patches/openjdk/8012243-serial_regression.patch \
patches/openjdk/8014718-remove_logging_suntoolkit.patch \
- patches/openjdk/8011139-revise_checking_getenclosingclass.patch \
patches/openjdk/8009996-emitter_bean.patch \
patches/openjdk/6541350-tz_display_names_l10n.patch \
patches/openjdk/6821191-tz_display_names_l10n.patch \
diff -r d146c22f9e46 -r 49e2fd0a8dfd patches/ecj/ant.patch
--- a/patches/ecj/ant.patch Wed Jul 03 23:28:46 2013 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
---- iopenjdk/jaxws/make/Makefile 2007-10-12 03:52:21.000000000 -0400
-+++ openjdk/jaxws/make/Makefile 2007-11-13 11:02:07.000000000 -0500
-@@ -80,6 +80,7 @@
- endif
-
- ifdef ALT_BOOTDIR
-+ ANT_OPTIONS += -Dplugs=$(ALT_BINARY_PLUGS_PATH)
- ANT_JAVA_HOME = JAVA_HOME=$(ALT_BOOTDIR)
- endif
-
---- iopenjdk/jaxws/make/build.xml 2007-10-12 03:52:21.000000000 -0400
-+++ openjdk/jaxws/make/build.xml 2007-11-13 11:02:43.000000000 -0500
-@@ -109,6 +109,7 @@
- memoryMaximumSize="${javac.memoryMaximumSize}"
- target="${javac.target}"
- excludes="com/sun/tools/internal/txw2/**">
-+ <compilerarg line="-bootclasspath ${build.dir}/../../jaxp/build/classes:${build.classes.dir}:../../../generated:${plugs}/jre/lib/tools.jar:${plugs}/jre/lib/rt-closed.jar"/>
- <compilerarg value="-J-Xbootclasspath/p:${bootstrap.dir}/lib/javac.jar"/>
- <compilerarg line="${javac.version.opt}"/>
- <compilerarg line="${javac.no.jdk.warnings}"/>
diff -r d146c22f9e46 -r 49e2fd0a8dfd patches/ecj/override.patch
--- a/patches/ecj/override.patch Wed Jul 03 23:28:46 2013 -0400
+++ b/patches/ecj/override.patch Tue Jul 09 16:29:08 2013 +0100
@@ -310,14 +310,3 @@
public final void close() {
open = false;
synchronized (AbstractMidiDevice.this.traRecLock) {
-diff -ruN openjdk-ecj.orig/jdk/src/share/classes/java/awt/image/BufferedImage.java openjdk-ecj/jdk/src/share/classes/java/awt/image/BufferedImage.java
---- openjdk-ecj.orig/jdk/src/share/classes/java/awt/image/BufferedImage.java 2013-07-01 13:03:32.946070591 -0400
-+++ openjdk-ecj/jdk/src/share/classes/java/awt/image/BufferedImage.java 2013-07-01 13:33:55.905426035 -0400
-@@ -810,7 +810,6 @@
- new PrivilegedAction<Boolean>()
- {
-
-- @Override
- public Boolean run() {
- final ClassLoader std = System.class.getClassLoader();
-
diff -r d146c22f9e46 -r 49e2fd0a8dfd patches/openjdk/6990754-handle_renames.patch
--- a/patches/openjdk/6990754-handle_renames.patch Wed Jul 03 23:28:46 2013 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,925 +0,0 @@
-This handles the rename bits of the original 6990754
-diff -ruN openjdk.orig/hotspot/src/share/vm/oops/symbol.cpp openjdk/hotspot/src/share/vm/oops/symbol.cpp
---- openjdk.orig/hotspot/src/share/vm/oops/symbol.cpp 1969-12-31 19:00:00.000000000 -0500
-+++ openjdk/hotspot/src/share/vm/oops/symbol.cpp 2013-06-25 14:49:37.268431428 -0400
-@@ -0,0 +1,231 @@
-+/*
-+ * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ *
-+ */
-+
-+
-+#include "precompiled.hpp"
-+#include "oops/oop.inline.hpp"
-+#include "oops/symbol.hpp"
-+#include "runtime/os.hpp"
-+#include "memory/allocation.inline.hpp"
-+
-+Symbol::Symbol(const u1* name, int length) : _refcount(0), _length(length) {
-+ _identity_hash = os::random();
-+ for (int i = 0; i < _length; i++) {
-+ byte_at_put(i, name[i]);
-+ }
-+}
-+
-+void* Symbol::operator new(size_t size, int len) {
-+ return (void *) AllocateHeap(object_size(len) * HeapWordSize, "symbol");
-+}
-+
-+// ------------------------------------------------------------------
-+// Symbol::equals
-+//
-+// Compares the symbol with a string of the given length.
-+bool Symbol::equals(const char* str, int len) const {
-+ int l = utf8_length();
-+ if (l != len) return false;
-+ while (l-- > 0) {
-+ if (str[l] != (char) byte_at(l))
-+ return false;
-+ }
-+ assert(l == -1, "we should be at the beginning");
-+ return true;
-+}
-+
-+
-+// ------------------------------------------------------------------
-+// Symbol::starts_with
-+//
-+// Tests if the symbol starts with the specified prefix of the given
-+// length.
-+bool Symbol::starts_with(const char* prefix, int len) const {
-+ if (len > utf8_length()) return false;
-+ while (len-- > 0) {
-+ if (prefix[len] != (char) byte_at(len))
-+ return false;
-+ }
-+ assert(len == -1, "we should be at the beginning");
-+ return true;
-+}
-+
-+
-+// ------------------------------------------------------------------
-+// Symbol::index_of
-+//
-+// Finds if the given string is a substring of this symbol's utf8 bytes.
-+// Return -1 on failure. Otherwise return the first index where str occurs.
-+int Symbol::index_of_at(int i, const char* str, int len) const {
-+ assert(i >= 0 && i <= utf8_length(), "oob");
-+ if (len <= 0) return 0;
-+ char first_char = str[0];
-+ address bytes = (address) ((Symbol*)this)->base();
-+ address limit = bytes + utf8_length() - len; // inclusive limit
-+ address scan = bytes + i;
-+ if (scan > limit)
-+ return -1;
-+ for (;;) {
-+ scan = (address) memchr(scan, first_char, (limit + 1 - scan));
-+ if (scan == NULL)
-+ return -1; // not found
-+ assert(scan >= bytes+i && scan <= limit, "scan oob");
-+ if (memcmp(scan, str, len) == 0)
-+ return (int)(scan - bytes);
-+ }
-+}
-+
-+
-+char* Symbol::as_C_string(char* buf, int size) const {
-+ if (size > 0) {
-+ int len = MIN2(size - 1, utf8_length());
-+ for (int i = 0; i < len; i++) {
-+ buf[i] = byte_at(i);
-+ }
-+ buf[len] = '\0';
-+ }
-+ return buf;
-+}
-+
-+char* Symbol::as_C_string() const {
-+ int len = utf8_length();
-+ char* str = NEW_RESOURCE_ARRAY(char, len + 1);
-+ return as_C_string(str, len + 1);
-+}
-+
-+char* Symbol::as_C_string_flexible_buffer(Thread* t,
-+ char* buf, int size) const {
-+ char* str;
-+ int len = utf8_length();
-+ int buf_len = len + 1;
-+ if (size < buf_len) {
-+ str = NEW_RESOURCE_ARRAY(char, buf_len);
-+ } else {
-+ str = buf;
-+ }
-+ return as_C_string(str, buf_len);
-+}
-+
-+void Symbol::print_symbol_on(outputStream* st) const {
-+ st = st ? st : tty;
-+ int length = UTF8::unicode_length((const char*)bytes(), utf8_length());
-+ const char *ptr = (const char *)bytes();
-+ jchar value;
-+ for (int index = 0; index < length; index++) {
-+ ptr = UTF8::next(ptr, &value);
-+ if (value >= 32 && value < 127 || value == '\'' || value == '\\') {
-+ st->put(value);
-+ } else {
-+ st->print("\\u%04x", value);
-+ }
-+ }
-+}
-+
-+jchar* Symbol::as_unicode(int& length) const {
-+ Symbol* this_ptr = (Symbol*)this;
-+ length = UTF8::unicode_length((char*)this_ptr->bytes(), utf8_length());
-+ jchar* result = NEW_RESOURCE_ARRAY(jchar, length);
-+ if (length > 0) {
-+ UTF8::convert_to_unicode((char*)this_ptr->bytes(), result, length);
-+ }
-+ return result;
-+}
-+
-+const char* Symbol::as_klass_external_name(char* buf, int size) const {
-+ if (size > 0) {
-+ char* str = as_C_string(buf, size);
-+ int length = (int)strlen(str);
-+ // Turn all '/'s into '.'s (also for array klasses)
-+ for (int index = 0; index < length; index++) {
-+ if (str[index] == '/') {
-+ str[index] = '.';
-+ }
-+ }
-+ return str;
-+ } else {
-+ return buf;
-+ }
-+}
-+
-+const char* Symbol::as_klass_external_name() const {
-+ char* str = as_C_string();
-+ int length = (int)strlen(str);
-+ // Turn all '/'s into '.'s (also for array klasses)
-+ for (int index = 0; index < length; index++) {
-+ if (str[index] == '/') {
-+ str[index] = '.';
-+ }
-+ }
-+ return str;
-+}
-+
-+
-+void Symbol::print_on(outputStream* st) const {
-+ if (this == NULL) {
-+ st->print_cr("NULL");
-+ } else {
-+ st->print("Symbol: '");
-+ print_symbol_on(st);
-+ st->print("'");
-+ st->print(" count %d", refcount());
-+ }
-+}
-+
-+// The print_value functions are present in all builds, to support the
-+// disassembler and error reporting.
-+void Symbol::print_value_on(outputStream* st) const {
-+ if (this == NULL) {
-+ st->print("NULL");
-+ } else {
-+ st->print("'");
-+ for (int i = 0; i < utf8_length(); i++) {
-+ st->print("%c", byte_at(i));
-+ }
-+ st->print("'");
-+ }
-+}
-+
-+void Symbol::increment_refcount() {
-+ // Only increment the refcount if positive. If negative either
-+ // overflow has occurred or it is a permanent symbol in a read only
-+ // shared archive.
-+ if (_refcount >= 0) {
-+ Atomic::inc(&_refcount);
-+ NOT_PRODUCT(Atomic::inc(&_total_count);)
-+ }
-+}
-+
-+void Symbol::decrement_refcount() {
-+ if (_refcount >= 0) {
-+ Atomic::dec(&_refcount);
-+#ifdef ASSERT
-+ if (_refcount < 0) {
-+ print();
-+ assert(false, "reference count underflow for symbol");
-+ }
-+#endif
-+ }
-+}
-+
-+NOT_PRODUCT(int Symbol::_total_count = 0;)
-diff -ruN openjdk.orig/hotspot/src/share/vm/oops/symbol.hpp openjdk/hotspot/src/share/vm/oops/symbol.hpp
---- openjdk.orig/hotspot/src/share/vm/oops/symbol.hpp 1969-12-31 19:00:00.000000000 -0500
-+++ openjdk/hotspot/src/share/vm/oops/symbol.hpp 2013-06-25 14:49:37.269431439 -0400
-@@ -0,0 +1,223 @@
-+/*
-+ * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ *
-+ */
-+
-+#ifndef SHARE_VM_OOPS_SYMBOL_HPP
-+#define SHARE_VM_OOPS_SYMBOL_HPP
-+
-+#include "utilities/utf8.hpp"
-+#include "memory/allocation.hpp"
-+
-+// A Symbol is a canonicalized string.
-+// All Symbols reside in global SymbolTable and are reference counted.
-+
-+// Reference counting
-+//
-+// All Symbols are allocated and added to the SymbolTable.
-+// When a class is unloaded, the reference counts of the Symbol pointers in
-+// the ConstantPool and in instanceKlass (see release_C_heap_structures) are
-+// decremented. When the reference count for a Symbol goes to 0, the garbage
-+// collector can free the Symbol and remove it from the SymbolTable.
-+//
-+// 0) Symbols need to be reference counted when a pointer to the Symbol is
-+// saved in persistent storage. This does not include the pointer
-+// in the SymbolTable bucket (the _literal field in HashtableEntry)
-+// that points to the Symbol. All other stores of a Symbol*
-+// to a field of a persistent variable (e.g., the _name filed in
-+// FieldAccessInfo or _ptr in a CPSlot) is reference counted.
-+//
-+// 1) The lookup of a "name" in the SymbolTable either creates a Symbol F for
-+// "name" and returns a pointer to F or finds a pre-existing Symbol F for
-+// "name" and returns a pointer to it. In both cases the reference count for F
-+// is incremented under the assumption that a pointer to F will be created from
-+// the return value. Thus the increment of the reference count is on the lookup
-+// and not on the assignment to the new Symbol*. That is
-+// Symbol* G = lookup()
-+// ^ increment on lookup()
-+// and not
-+// Symbol* G = lookup()
-+// ^ increment on assignmnet
-+// The reference count must be decremented manually when the copy of the
-+// pointer G is destroyed.
-+//
-+// 2) For a local Symbol* A that is a copy of an existing Symbol* B, the
-+// reference counting is elided when the scope of B is greater than the scope
-+// of A. For example, in the code fragment
-+// below "klass" is passed as a parameter to the method. Symbol* "kn"
-+// is a copy of the name in "klass".
-+//
-+// Symbol* kn = klass->name();
-+// unsigned int d_hash = dictionary()->compute_hash(kn, class_loader);
-+//
-+// The scope of "klass" is greater than the scope of "kn" so the reference
-+// counting for "kn" is elided.
-+//
-+// Symbol* copied from ConstantPool entries are good candidates for reference
-+// counting elision. The ConstantPool entries for a class C exist until C is
-+// unloaded. If a Symbol* is copied out of the ConstantPool into Symbol* X,
-+// the Symbol* in the ConstantPool will in general out live X so the reference
-+// counting on X can be elided.
-+//
-+// For cases where the scope of A is not greater than the scope of B,
-+// the reference counting is explicitly done. See ciSymbol,
-+// ResolutionErrorEntry and ClassVerifier for examples.
-+//
-+// 3) When a Symbol K is created for temporary use, generally for substrings of
-+// an existing symbol or to create a new symbol, assign it to a
-+// TempNewSymbol. The SymbolTable methods new_symbol(), lookup()
-+// and probe() all potentially return a pointer to a new Symbol.
-+// The allocation (or lookup) of K increments the reference count for K
-+// and the destructor decrements the reference count.
-+//
More information about the distro-pkg-dev
mailing list