summaryrefslogtreecommitdiff
path: root/java/openjdk6/files/icedtea/security/20130416/7200507.patch
diff options
context:
space:
mode:
Diffstat (limited to 'java/openjdk6/files/icedtea/security/20130416/7200507.patch')
-rw-r--r--java/openjdk6/files/icedtea/security/20130416/7200507.patch230
1 files changed, 0 insertions, 230 deletions
diff --git a/java/openjdk6/files/icedtea/security/20130416/7200507.patch b/java/openjdk6/files/icedtea/security/20130416/7200507.patch
deleted file mode 100644
index db3c012bf638..000000000000
--- a/java/openjdk6/files/icedtea/security/20130416/7200507.patch
+++ /dev/null
@@ -1,230 +0,0 @@
-# HG changeset patch
-# User malenkov
-# Date 1360332416 -14400
-# Node ID b2b6ab9d345561a349b840b4d0f18ef9bb9911e4
-# Parent 4d66f7ebcf99c1b322f47ff0aa6adadcd995f8f4
-7200507: Refactor Introspector internals
-Reviewed-by: ahgross, art
-
-diff --git a/src/share/classes/java/beans/ThreadGroupContext.java b/src/share/classes/java/beans/ThreadGroupContext.java
---- jdk/src/share/classes/java/beans/ThreadGroupContext.java
-+++ jdk/src/share/classes/java/beans/ThreadGroupContext.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2011, 2013, 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
-@@ -29,7 +29,6 @@
- import com.sun.beans.finder.PropertyEditorFinder;
-
- import java.awt.GraphicsEnvironment;
--import java.util.HashMap;
- import java.util.Map;
- import java.util.WeakHashMap;
-
-@@ -42,7 +41,7 @@
- */
- final class ThreadGroupContext {
-
-- private static final Map<ThreadGroup, ThreadGroupContext> contexts = new WeakHashMap<ThreadGroup, ThreadGroupContext>();
-+ private static final WeakIdentityMap<ThreadGroupContext> contexts = new WeakIdentityMap<ThreadGroupContext>();
-
- /**
- * Returns the appropriate {@code AppContext} for the caller,
-@@ -69,6 +68,8 @@
- private BeanInfoFinder beanInfoFinder;
- private PropertyEditorFinder propertyEditorFinder;
-
-+ private ThreadGroupContext() {
-+ }
-
- boolean isDesignTime() {
- return this.isDesignTime;
-diff --git a/src/share/classes/java/beans/WeakIdentityMap.java b/src/share/classes/java/beans/WeakIdentityMap.java
-new file mode 100644
---- /dev/null
-+++ jdk/src/share/classes/java/beans/WeakIdentityMap.java
-@@ -0,0 +1,181 @@
-+/*
-+ * Copyright (c) 2013, 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. Oracle designates this
-+ * particular file as subject to the "Classpath" exception as provided
-+ * by Oracle in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
-+ */
-+
-+package java.beans;
-+
-+import java.lang.ref.ReferenceQueue;
-+import java.lang.ref.WeakReference;
-+
-+/**
-+ * Hash table based mapping, which uses weak references to store keys
-+ * and reference-equality in place of object-equality to compare them.
-+ * An entry will automatically be removed when its key is no longer
-+ * in ordinary use. Both null values and the null key are supported.
-+ *
-+ * @see java.util.IdentityHashMap
-+ * @see java.util.WeakHashMap
-+ */
-+final class WeakIdentityMap<T> {
-+
-+ private static final int MAXIMUM_CAPACITY = 1 << 30; // it MUST be a power of two
-+ private static final Object NULL = new Object(); // special object for null key
-+
-+ private final ReferenceQueue<Object> queue = new ReferenceQueue<Object>();
-+
-+ private Entry<T>[] table = newTable(1<<3); // table's length MUST be a power of two
-+ private int threshold = 6; // the next size value at which to resize
-+ private int size = 0; // the number of key-value mappings
-+
-+ public T get(Object key) {
-+ removeStaleEntries();
-+ if (key == null) {
-+ key = NULL;
-+ }
-+ int hash = key.hashCode();
-+ int index = getIndex(this.table, hash);
-+ for (Entry<T> entry = this.table[index]; entry != null; entry = entry.next) {
-+ if (entry.isMatched(key, hash)) {
-+ return entry.value;
-+ }
-+ }
-+ return null;
-+ }
-+
-+ public T put(Object key, T value) {
-+ removeStaleEntries();
-+ if (key == null) {
-+ key = NULL;
-+ }
-+ int hash = key.hashCode();
-+ int index = getIndex(this.table, hash);
-+ for (Entry<T> entry = this.table[index]; entry != null; entry = entry.next) {
-+ if (entry.isMatched(key, hash)) {
-+ T oldValue = entry.value;
-+ entry.value = value;
-+ return oldValue;
-+ }
-+ }
-+ this.table[index] = new Entry<T>(key, hash, value, this.queue, this.table[index]);
-+ if (++this.size >= this.threshold) {
-+ if (this.table.length == MAXIMUM_CAPACITY) {
-+ this.threshold = Integer.MAX_VALUE;
-+ }
-+ else {
-+ removeStaleEntries();
-+ Entry<T>[] table = newTable(this.table.length * 2);
-+ transfer(this.table, table);
-+
-+ // If ignoring null elements and processing ref queue caused massive
-+ // shrinkage, then restore old table. This should be rare, but avoids
-+ // unbounded expansion of garbage-filled tables.
-+ if (this.size >= this.threshold / 2) {
-+ this.table = table;
-+ this.threshold *= 2;
-+ }
-+ else {
-+ transfer(table, this.table);
-+ }
-+ }
-+ }
-+ return null;
-+ }
-+
-+ private void removeStaleEntries() {
-+ for (Object ref = this.queue.poll(); ref != null; ref = this.queue.poll()) {
-+ @SuppressWarnings("unchecked")
-+ Entry<T> entry = (Entry<T>) ref;
-+ int index = getIndex(this.table, entry.hash);
-+
-+ Entry<T> prev = this.table[index];
-+ Entry<T> current = prev;
-+ while (current != null) {
-+ Entry<T> next = current.next;
-+ if (current == entry) {
-+ if (prev == entry) {
-+ this.table[index] = next;
-+ }
-+ else {
-+ prev.next = next;
-+ }
-+ entry.value = null; // Help GC
-+ entry.next = null; // Help GC
-+ this.size--;
-+ break;
-+ }
-+ prev = current;
-+ current = next;
-+ }
-+ }
-+ }
-+
-+ private void transfer(Entry<T>[] oldTable, Entry<T>[] newTable) {
-+ for (int i = 0; i < oldTable.length; i++) {
-+ Entry<T> entry = oldTable[i];
-+ oldTable[i] = null;
-+ while (entry != null) {
-+ Entry<T> next = entry.next;
-+ Object key = entry.get();
-+ if (key == null) {
-+ entry.value = null; // Help GC
-+ entry.next = null; // Help GC
-+ this.size--;
-+ }
-+ else {
-+ int index = getIndex(newTable, entry.hash);
-+ entry.next = newTable[index];
-+ newTable[index] = entry;
-+ }
-+ entry = next;
-+ }
-+ }
-+ }
-+
-+
-+ @SuppressWarnings("unchecked")
-+ private Entry<T>[] newTable(int length) {
-+ return (Entry<T>[]) new Entry<?>[length];
-+ }
-+
-+ private static int getIndex(Entry<?>[] table, int hash) {
-+ return hash & (table.length - 1);
-+ }
-+
-+ private static class Entry<T> extends WeakReference<Object> {
-+ private final int hash;
-+ private T value;
-+ private Entry<T> next;
-+
-+ Entry(Object key, int hash, T value, ReferenceQueue<Object> queue, Entry<T> next) {
-+ super(key, queue);
-+ this.hash = hash;
-+ this.value = value;
-+ this.next = next;
-+ }
-+
-+ boolean isMatched(Object key, int hash) {
-+ return (this.hash == hash) && (key == get());
-+ }
-+ }
-+}