Transpiled version (10036L) is out of date.
//static final Map<Class, HashMap<S, Field>> getOpt_cache = newDangerousWeakHashMap(f getOpt_special_init); sclass getOpt_Map extends WeakHashMap { *() { if (getOpt_special == null) getOpt_special = new HashMap; clear(); } public void clear() { super.clear(); //print("getOpt clear"); put(Class.class, getOpt_special); put(S.class, getOpt_special); } } static final Map<Class, HashMap<S, Field>> getOpt_cache = ifdef AssumeNoClassUnloading syncHashMap(); endifdef ifndef AssumeNoClassUnloading _registerDangerousWeakMap(synchroMap(new getOpt_Map)); endifndef static HashMap getOpt_special; // just a marker /*static void getOpt_special_init(Map map) { map.put(Class.class, getOpt_special); map.put(S.class, getOpt_special); }*/ static Map<S, Field> getOpt_getFieldMap(O o) { Class c = _getClass(o); HashMap<S, Field> map = getOpt_cache.get(c); if (map == null) map = getOpt_makeCache(c); ret map; } static Object getOpt_cached(Object o, String field) ctex { if (o == null) ret null; Map<S, Field> map = getOpt_getFieldMap(o); if (map == getOpt_special) { if (o instanceof Class) return getOpt((Class) o, field); /*if (o instanceof S) ret getOpt(getBot((S) o), field);*/ if (o instanceof Map) ret ((Map) o).get(field); } Field f = map.get(field); if (f != null) ret f.get(o); ifclass DynamicObject if (o instanceof DynamicObject) ret syncMapGet2(((DynamicObject) o).fieldValues, field); endif ret null; } // used internally - we are in synchronized block static HashMap<S, Field> getOpt_makeCache(Class c) { HashMap<S, Field> map; if (isSubtypeOf(c, Map.class)) map = getOpt_special; else { map = new HashMap; if (!reflection_classesNotToScan().contains(c.getName())) { Class _c = c; do { for (Field f : _c.getDeclaredFields()) { makeAccessible(f); S name = f.getName(); if (!map.containsKey(name)) map.put(name, f); } _c = _c.getSuperclass(); } while (_c != null); } } if (getOpt_cache != null) getOpt_cache.put(c, map); ret map; }
Began life as a copy of #1001101
download show line numbers debug dex old transpilations
Travelled to 19 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, ddnzoavkxhuk, gwrvuhgaqvyk, irmadwmeruwu, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, onxytkatvevr, pyentgdyhuwx, pzhvpgtvlbxg, sawdedvomwva, tslmcundralx, tvejysmllsmz, veepotesqksf, vouqrxazstgt, whxojlpjdney
No comments. add comment
Snippet ID: | #1005583 |
Snippet name: | getOpt_cached (optimized version of getOpt), getOpt_makeCache |
Eternal ID of this version: | #1005583/32 |
Text MD5: | e020db79a7b00ae589b9fb2e725e3854 |
Author: | stefan |
Category: | javax |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2023-01-31 19:45:16 |
Source code size: | 2269 bytes / 85 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 896 / 1567 |
Version history: | 31 change(s) |
Referenced in: | [show references] |