Ejemplo n.º 1
0
        /// <summary>
        /// Base constructor that every other constructor should call.
        /// </summary>
        private PipTable(PathTable pathTable, PageablePipStore store, ConcurrentDenseIndex <MutablePipState> mutables, int maxDegreeOfParallelism, bool debug)
        {
            Contract.Requires(store != null);
            Contract.Requires(mutables != null);

            m_store    = store;
            m_mutables = mutables;
            m_serializationScheduler = new PipTableSerializationScheduler(maxDegreeOfParallelism, debug: debug, serializer: ProcessQueueItem);
            m_dummyHashSourceFilePip = new HashSourceFile(
                FileArtifact.CreateSourceFile(
                    AbsolutePath.Create(pathTable, PathGeneratorUtilities.GetAbsolutePath("B", "DUMMY_HASH_SOURCE_FILE"))));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Creates a new pip table
        /// </summary>
        public PipTable(PathTable pathTable, SymbolTable symbolTable, int initialBufferSize, int maxDegreeOfParallelism, bool debug)
        {
            Contract.Requires(pathTable != null);
            Contract.Requires(symbolTable != null);
            Contract.Requires(initialBufferSize >= 0);
            Contract.Requires(maxDegreeOfParallelism >= -1);
            Contract.Requires(maxDegreeOfParallelism > 0 || debug);

            m_store    = new PageablePipStore(pathTable, symbolTable, initialBufferSize, debug);
            m_mutables = new ConcurrentDenseIndex <MutablePipState>(debug);
            m_serializationScheduler = new PipTableSerializationScheduler(maxDegreeOfParallelism, debug, ProcessQueueItem);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Constructor used by deserialization
        /// </summary>
        private PipTable(PageablePipStore store, ConcurrentDenseIndex <MutablePipState> mutables, int pipCount, int maxDegreeOfParallelism)
        {
            Contract.Requires(store != null);
            Contract.Requires(mutables != null);

            m_lastId   = pipCount;
            m_count    = pipCount;
            m_store    = store;
            m_mutables = mutables;

            m_serializationScheduler = new PipTableSerializationScheduler(maxDegreeOfParallelism, debug: false, serializer: ProcessQueueItem);
            m_serializationScheduler.Complete(); // Don't allow more changes
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Creates a new pip table
        /// </summary>
        public PipTable(PathTable pathTable, SymbolTable symbolTable, int initialBufferSize, int maxDegreeOfParallelism, bool debug)
        {
            Contract.Requires(pathTable != null);
            Contract.Requires(symbolTable != null);
            Contract.Requires(initialBufferSize >= 0);
            Contract.Requires(maxDegreeOfParallelism >= -1);
            Contract.Requires(maxDegreeOfParallelism > 0 || debug);

            m_store    = new PageablePipStore(pathTable, symbolTable, initialBufferSize, debug);
            m_mutables = new ConcurrentDenseIndex <MutablePipState>(debug);
            m_serializationScheduler = new PipTableSerializationScheduler(maxDegreeOfParallelism, debug, ProcessQueueItem);

            AbsolutePath dummyFilePath = AbsolutePath.Create(pathTable, PathGeneratorUtilities.GetAbsolutePath("B", "DUMMY_HASH_SOURCE_FILE"));

            m_dummyHashSourceFilePip = new HashSourceFile(FileArtifact.CreateSourceFile(dummyFilePath));
        }