Exemple #1
0
 /// <summary>
 /// Read away debugging marker if needed
 /// </summary>
 protected static void ReadEntryMarker(PageableStore store, BuildXLReader reader)
 {
     if (store.Debug)
     {
         uint marker = reader.ReadUInt32();
         Contract.Assume(marker == EntryMarker);
     }
 }
Exemple #2
0
        /// <summary>
        /// Deserializes a string table
        /// </summary>
        public static Task <StringTable> DeserializeAsync(BuildXLReader reader)
        {
            Contract.Requires(reader != null);

            var state = ReadSerializationState(reader);

            return(Task.FromResult(new StringTable(state)));
        }
Exemple #3
0
        internal static LineInfo Deserialize(BuildXLReader reader)
        {
            Contract.RequiresNotNull(reader);
            var line     = reader.ReadInt32Compact();
            var position = reader.ReadInt32Compact();

            return(new LineInfo(line, position));
        }
Exemple #4
0
#pragma warning restore 809

        internal static FileArtifactWithAttributes Deserialize(BuildXLReader reader)
        {
            Contract.RequiresNotNull(reader);

            return(new FileArtifactWithAttributes(
                       reader.ReadAbsolutePath(),
                       reader.ReadUInt32()));
        }
Exemple #5
0
        internal static LocationData Deserialize(BuildXLReader reader)
        {
            Contract.Requires(reader != null);
            var line     = reader.ReadInt32Compact();
            var path     = reader.ReadAbsolutePath();
            var position = reader.ReadInt32Compact();

            return(path.IsValid ? new LocationData(path, line, position) : LocationData.Invalid);
        }
Exemple #6
0
        internal static TokenTextData Deserialize(BuildXLReader reader)
        {
            Contract.RequiresNotNull(reader);
            var line     = reader.ReadInt32Compact();
            var text     = reader.ReadTokenText();
            var position = reader.ReadInt32Compact();

            return(new TokenTextData(line, position, text));
        }
Exemple #7
0
        internal static TokenTextData Deserialize(BuildXLReader reader)
        {
            Contract.Requires(reader != null);
            Contract.Ensures(Contract.Result <TokenTextData>().IsValid);
            var line     = reader.ReadInt32Compact();
            var text     = reader.ReadTokenText();
            var position = reader.ReadInt32Compact();

            return(new TokenTextData(line, position, text));
        }
Exemple #8
0
 private LargeStringBuffer(BuildXLReader reader)
 {
     m_indexCursor = reader.ReadInt32();
     m_size        = reader.ReadInt64();
     m_byteArrays  = reader.ReadArray(r =>
     {
         var length = r.ReadInt32Compact();
         return(r.ReadBytes(length));
     },
                                      minimumLength: BytesPerBuffer);
 }
Exemple #9
0
        internal static TokenData Deserialize(BuildXLReader reader)
        {
            Contract.RequiresNotNull(reader);
            Contract.Ensures(Contract.Result <TokenData>().IsValid);
            var line     = reader.ReadInt32Compact();
            var path     = reader.ReadAbsolutePath();
            var text     = reader.ReadTokenText();
            var position = reader.ReadInt32Compact();

            return(new TokenData(path, line, position, text));
        }
Exemple #10
0
        /// <nodoc />
        public static SandboxedProcessExecutorTestHook Deserialize(Stream stream)
        {
            using (var reader = new BuildXLReader(false, stream, true))
            {
                bool failVmConnection = reader.ReadBoolean();

                return(new SandboxedProcessExecutorTestHook
                {
                    FailVmConnection = failVmConnection
                });
            }
        }
Exemple #11
0
        /// <summary>
        /// Deserializes
        /// </summary>
        /// <remarks>
        /// Returns null if the StringTable task returns null, or if it turns out that hash codes no longer match
        /// </remarks>
        public static async Task <SymbolTable> DeserializeAsync(BuildXLReader reader, Task <StringTable> stringTableTask)
        {
            Contract.Requires(reader != null);
            Contract.Requires(stringTableTask != null);

            var state = await ReadSerializationStateAsync(reader, stringTableTask);

            var stringTable = await stringTableTask;

            if (state != null && stringTable != null)
            {
                return(new SymbolTable(state, stringTable));
            }

            return(null);
        }
Exemple #12
0
        /// <summary>
        /// Deserializes
        /// </summary>
        /// <remarks>
        /// Returns null if the StringTable task returns null, or if it turns out that hash codes no longer match.
        /// </remarks>
        public static async Task <PathTable> DeserializeAsync(BuildXLReader reader, Task <StringTable> stringTableTask)
        {
            Contract.RequiresNotNull(reader);
            Contract.RequiresNotNull(stringTableTask);

            var state = await ReadSerializationStateAsync(reader, stringTableTask);

            Contract.AssertNotNull(state);
            var stringTable = await stringTableTask;

            if (stringTable != null)
            {
                return(new PathTable(state, stringTable));
            }

            throw new BuildXLException("Failed to deserialize path table because its deserialized string table is null; the string table is potentially corrupted");
        }
Exemple #13
0
        protected static SerializedState ReadSerializedState(BuildXLReader reader)
        {
            Contract.RequiresNotNull(reader);

            bool debug       = reader.ReadBoolean();
            int  streamCount = reader.ReadInt32();

            int[] pageStreamLengths = new int[streamCount];
            for (int i = 0; i < streamCount; i++)
            {
                pageStreamLengths[i] = reader.ReadInt32();
            }

            List <PageStreamBase> streams = new List <PageStreamBase>(streamCount);

            for (int i = 0; i < streamCount; i++)
            {
                streams.Add(MemoryPageStream.Deserialize(reader, pageStreamLengths[i]));
            }

            Contract.Assert(streams.Count == streamCount);
            int lastId = reader.ReadInt32();
            ConcurrentDenseIndex <ItemLocation> offsets = new ConcurrentDenseIndex <ItemLocation>(debug);

            for (uint i = 0; i < lastId; i++)
            {
                PageableStoreId id = new PageableStoreId(i + 1);

                var streamIdentifier = reader.ReadInt32();
                var offset           = reader.ReadInt32();

                offsets[id.Value] = new ItemLocation(streams[streamIdentifier], offset);
            }

            return(new SerializedState()
            {
                Debug = debug,
                PageStreams = streams,
                ItemLocations = offsets,
                LastId = lastId,
            });
        }
        internal static DottedIdentifier Deserialize(BuildXLReader reader, SymbolTable table)
        {
            Contract.Requires(reader != null);
            Contract.Requires(table != null);
            Contract.Ensures(Contract.Result <DottedIdentifier>() != null);

            // we'll need this argument in the future so prevent warnings until then.
            Analysis.IgnoreArgument(table);

            DottedIdentifier current = null;
            DottedIdentifier head    = null;

            while (true)
            {
                var s = reader.ReadSymbolAtom();
                if (!s.IsValid)
                {
                    break;
                }

                if (current == null)
                {
                    // head node
                    head    = new DottedIdentifier(s);
                    current = head;
                }
                else
                {
                    // extend the tail...
                    current.m_tail = new DottedIdentifier(s);
                    current        = current.m_tail;
                }
            }

            Contract.Assume(head != null);
            return(head);
        }
 /// <nodoc />
 public StreamBinaryReader()
 {
     _eventReadBuffer   = new MemoryStream();
     _eventBufferReader = BuildXLReader.Create(_eventReadBuffer);
 }
Exemple #16
0
 internal static LargeStringBuffer Deserialize(BuildXLReader reader)
 {
     return(new LargeStringBuffer(reader));
 }
Exemple #17
0
 /// <nodoc />
 public StreamBinaryReader()
 {
     m_stream = new SwappableStream(Stream.Null);
     m_reader = BuildXLReader.Create(m_stream, leaveOpen: true);
 }
Exemple #18
0
 /// <summary>
 /// Deserializes <see cref="ModuleId"/>.
 /// </summary>
 public static ModuleId Deserialize(BuildXLReader reader) => new ModuleId(reader.ReadStringId());