/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