/// <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")))); }
/// <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); }
/// <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 }
/// <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)); }