Exemplo n.º 1
0
        public override void Defragment(IDefragmentContext context)
        {
            var payLoadOffSet = context.ReadInt();

            if (payLoadOffSet == 0)
            {
                return;
            }
            var savedOffSet = context.Offset();

            context.Seek(payLoadOffSet);
            var classMetadataId = context.CopyIDReturnOriginalID();
            var typeHandler     = CorrectTypeHandlerVersionFor(context, classMetadataId
                                                               );

            if (typeHandler != null)
            {
                if (IsPlainObject(typeHandler))
                {
                    context.CopySlotlessID();
                }
                else
                {
                    SeekSecondaryOffset(context, typeHandler);
                    context.Defragment(typeHandler);
                }
            }
            context.Seek(savedOffSet);
        }
Exemplo n.º 2
0
		public override void Defragment(IDefragmentContext context)
		{
			int payLoadOffSet = context.ReadInt();
			if (payLoadOffSet == 0)
			{
				return;
			}
			int savedOffSet = context.Offset();
			context.Seek(payLoadOffSet);
			int classMetadataId = context.CopyIDReturnOriginalID();
			ITypeHandler4 typeHandler = CorrectTypeHandlerVersionFor(context, classMetadataId
				);
			if (typeHandler != null)
			{
				if (IsPlainObject(typeHandler))
				{
					context.CopySlotlessID();
				}
				else
				{
					SeekSecondaryOffset(context, typeHandler);
					context.Defragment(typeHandler);
				}
			}
			context.Seek(savedOffSet);
		}