This is an automated email from the ASF dual-hosted git repository. jtulach pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-netbeans-html4j.git
commit 68228faeff77a74649e2076f1cb504c35aca8bf2 Author: Jaroslav Tulach <[email protected]> AuthorDate: Thu Feb 14 19:02:17 2019 +0100 Use round-robin cache --- .../java/org/netbeans/html/ko4j/CacheObjs.java | 54 +++++++--------------- 1 file changed, 17 insertions(+), 37 deletions(-) diff --git a/ko4j/src/main/java/org/netbeans/html/ko4j/CacheObjs.java b/ko4j/src/main/java/org/netbeans/html/ko4j/CacheObjs.java index 6311ff2..4da77c2 100644 --- a/ko4j/src/main/java/org/netbeans/html/ko4j/CacheObjs.java +++ b/ko4j/src/main/java/org/netbeans/html/ko4j/CacheObjs.java @@ -19,56 +19,36 @@ package org.netbeans.html.ko4j; -import java.lang.ref.WeakReference; import org.netbeans.html.boot.spi.Fn; -final class CacheObjs extends WeakReference<Fn.Presenter> { +final class CacheObjs { /* both @GuardedBy CacheObjs.class */ - private static CacheObjs list; - private CacheObjs next; + private static CacheObjs[] list = new CacheObjs[16]; + private static int listAt = 0; + private final Fn.Presenter ref; /* both @GuardedBy presenter single threaded access */ private Object[] jsObjects; private int jsIndex; - private CacheObjs(CacheObjs next, Fn.Presenter p) { - super(p); - this.next = next; + private CacheObjs(Fn.Presenter p) { + this.ref = p; } - static synchronized CacheObjs find(Fn.Presenter key) { - if (list == null) { - return list = new CacheObjs(null, key); - } - - Fn.Presenter p; - for (;;) { - p = list.get(); - if (p != null) { - break; - } - list = list.next; - } - - if (p == key) { - return list; - } - - CacheObjs prev = list; - CacheObjs now = list.next; + Fn.Presenter get() { + return ref; + } - while (now != null) { - p = now.get(); - if (p == null) { - prev.next = now; - } - if (p == key) { - return now; + static synchronized CacheObjs find(Fn.Presenter key) { + for (int i = 0; i < list.length; i++) { + if (list[i] != null && list[i].get() == key) { + return list[i]; } - prev = now; - now = now.next; } - return prev.next = new CacheObjs(null, key); + CacheObjs co = new CacheObjs(key); + list[listAt] = co; + listAt = (listAt + 1) % list.length; + return co; } Object getJSObject() { --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected] For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists
