public UnserializeCacheEntry(Env env, Value value) { CopyRoot root = new CopyRoot(this); value = value.copyTree(env, root); _valueRef = new SoftReference <Value>(value); }
void free(CopyRoot root) { if (_freeList == null) { _freeList = new FreeList <SoftReference <CopyRoot> >(2); } _freeList.free(new SoftReference <CopyRoot>(root)); }
public Value getValue(Env env) { SoftReference <CopyRoot> copyRef = null; if (_freeList != null) { copyRef = _freeList.allocate(); } if (copyRef != null) { CopyRoot copy = copyRef.get(); if (copy != null) { copy.allocate(env); return(copy.getRoot()); } } Value value = null; if (_valueRef != null) { value = _valueRef.get(); } if (value != null) { CopyRoot root = new CopyRoot(this); root.allocate(env); Value copy = value.copyTree(env, root); root.setRoot(copy); return(copy); } else { return(null); } }
/** * Copy for unserialization. * * XXX: need to update for references */ protected ArrayCopyValueImpl(Env env, ArrayValue copy, CopyRoot root) { super(env, copy, root); _root = root; }
public CopyObjectExtValue(Env env, ObjectExtValue copy, CopyRoot root) { super(env, copy, root); _root = root; }