Esempio n. 1
0
            public void Record(object obj, IntPtr onStack, int stackPos)
            {
                LuaObjCacheSlimStorageRecord record;

                if (ObjMap.TryGetValue(obj, out record))
                {
                    Remove(record);
                }

                record = new LuaObjCacheSlimStorageRecord()
                {
                    Obj      = obj,
                    Pointer  = onStack,
                    StackPos = stackPos,
                };
                var node = List.AddLast(record);

                record.Node = node;

                node.Value          = record;
                PointerMap[onStack] = record;
                PosMap[stackPos]    = record;
                ObjMap[obj]         = record;

                if (List.Count > StorageMaxCount)
                {
                    RemoveFirst();
                }
            }
Esempio n. 2
0
 private void Remove(LuaObjCacheSlimStorageRecord record)
 {
     List.Remove(record.Node);
     PointerMap.Remove(record.Pointer);
     PosMap.Remove(record.StackPos);
     ObjMap.Remove(record.Obj);
 }