src/Pure/Tools/build_process.scala
changeset 77297 226a880d0423
parent 77296 eeaa2872320b
child 77310 6754b5eceb12
equal deleted inserted replaced
77296:eeaa2872320b 77297:226a880d0423
   195 
   195 
   196   private def test_running(): Boolean = synchronized { !_build_graph.is_empty }
   196   private def test_running(): Boolean = synchronized { !_build_graph.is_empty }
   197 
   197 
   198   private def stop_running(): Unit = synchronized { _running.valuesIterator.foreach(_.terminate()) }
   198   private def stop_running(): Unit = synchronized { _running.valuesIterator.foreach(_.terminate()) }
   199 
   199 
   200   private def finished_running(): List[Build_Job] = synchronized {
   200   private def finished_running(): List[Build_Job.Build_Session] = synchronized {
   201     _running.valuesIterator.filter(_.is_finished).toList
   201     List.from(
       
   202       _running.valuesIterator.flatMap {
       
   203         case job: Build_Job.Build_Session if job.is_finished => Some(job)
       
   204         case _ => None
       
   205       })
   202   }
   206   }
   203 
   207 
   204   private def job_running(name: String, job: Build_Job): Build_Job = synchronized {
   208   private def job_running(name: String, job: Build_Job): Build_Job = synchronized {
   205     _running += (name -> job)
   209     _running += (name -> job)
   206     job
   210     job
   231     val threads = Markup.Session_Timing.Threads.unapply(props) getOrElse 1
   235     val threads = Markup.Session_Timing.Threads.unapply(props) getOrElse 1
   232     val timing = Markup.Timing_Properties.get(props)
   236     val timing = Markup.Timing_Properties.get(props)
   233     "Timing " + session_name + " (" + threads + " threads, " + timing.message_factor + ")"
   237     "Timing " + session_name + " (" + threads + " threads, " + timing.message_factor + ")"
   234   }
   238   }
   235 
   239 
   236   private def finish_job(job: Build_Job): Unit = {
   240   private def finish_job(job: Build_Job.Build_Session): Unit = {
   237     val session_name = job.session_name
   241     val session_name = job.session_name
   238     val process_result = job.join
   242     val process_result = job.join
   239     val output_heap = job.finish
   243     val output_heap = job.finish
   240 
   244 
   241     val log_lines = process_result.out_lines.filterNot(Protocol_Message.Marker.test)
   245     val log_lines = process_result.out_lines.filterNot(Protocol_Message.Marker.test)
   349 
   353 
   350       val job =
   354       val job =
   351         synchronized {
   355         synchronized {
   352           val numa_node = next_numa_node()
   356           val numa_node = next_numa_node()
   353           job_running(session_name,
   357           job_running(session_name,
   354             new Build_Job(progress, session_background, store, do_store,
   358             new Build_Job.Build_Session(progress, session_background, store, do_store,
   355               resources, session_setup, input_heaps, numa_node))
   359               resources, session_setup, input_heaps, numa_node))
   356         }
   360         }
   357       job.start()
   361       job.start()
   358     }
   362     }
   359     else {
   363     else {