Skip to content

Commit

Permalink
refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
CPunisher committed Sep 21, 2024
1 parent 2c51d2b commit b52e30b
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 79 deletions.
85 changes: 14 additions & 71 deletions crates/rspack_core/src/compiler/module_executor/ctrl.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,7 @@ use rspack_collections::IdentifierMap;
use rustc_hash::{FxHashMap as HashMap, FxHashSet as HashSet};
use tokio::sync::mpsc::{error::TryRecvError, UnboundedReceiver};

use super::{
entry::{EntryParam, EntryTask},
execute::ExecuteTask,
load::LoadTask,
};
use super::entry::{EntryParam, EntryTask};
use crate::{
compiler::make::repair::MakeTaskContext,
utils::task_loop::{Task, TaskResult, TaskType},
Expand Down Expand Up @@ -58,27 +54,14 @@ pub enum Event {
),
// current_module_identifier and sub dependency count
FinishModule(ModuleIdentifier, usize),
ExecuteModule(EntryParam, ExecuteTask),
LoadModule(EntryParam, LoadTask),
EnterModule(Box<EntryTask>, Box<dyn Task<MakeTaskContext>>),
Stop(),
}

#[derive(Debug)]
pub enum LoaderTaskKind {
ExecuteTask,
LoadTask,
}

#[derive(Debug)]
pub struct LoaderTask {
kind: LoaderTaskKind,
task: Box<dyn Task<MakeTaskContext>>,
}

#[derive(Debug)]
pub struct CtrlTask {
pub event_receiver: UnboundedReceiver<Event>,
loader_task_map: HashMap<DependencyId, LoaderTask>,
loader_task_map: HashMap<DependencyId, Box<dyn Task<MakeTaskContext>>>,
running_module_map: IdentifierMap<UnfinishCounter>,
}

Expand Down Expand Up @@ -123,7 +106,7 @@ impl Task<MakeTaskContext> for CtrlTask {
.loader_task_map
.remove(&dep_id)
.expect("should have loader task");
return Ok(vec![loader_task.task, self]);
return Ok(vec![loader_task, self]);
};

let value = self
Expand Down Expand Up @@ -151,33 +134,13 @@ impl Task<MakeTaskContext> for CtrlTask {
})]);
}
}
Event::ExecuteModule(param, execute_task) => {
let dep_id = match &param {
Event::EnterModule(entry_task, loader_task) => {
let dep_id = match &entry_task.param {
EntryParam::DependencyId(id, _) => *id,
EntryParam::Entry(dep) => *dep.id(),
};
self.loader_task_map.insert(
dep_id,
LoaderTask {
kind: LoaderTaskKind::ExecuteTask,
task: Box::new(execute_task),
},
);
return Ok(vec![Box::new(EntryTask { param }), self]);
}
Event::LoadModule(param, load_task) => {
let dep_id = match &param {
EntryParam::DependencyId(id, _) => *id,
EntryParam::Entry(dep) => *dep.id(),
};
self.loader_task_map.insert(
dep_id,
LoaderTask {
kind: LoaderTaskKind::LoadTask,
task: Box::new(load_task),
},
);
return Ok(vec![Box::new(EntryTask { param }), self]);
self.loader_task_map.insert(dep_id, loader_task);
return Ok(vec![entry_task, self]);
}
Event::Stop() => {
return Ok(vec![]);
Expand Down Expand Up @@ -247,7 +210,7 @@ impl Task<MakeTaskContext> for FinishModuleTask {
.loader_task_map
.remove(&dep_id)
.expect("should have execute task");
res.push(loader_task.task);
res.push(loader_task);
continue;
};

Expand All @@ -270,33 +233,13 @@ impl Task<MakeTaskContext> for FinishModuleTask {
queue.push_back(mid);
}
}
Event::ExecuteModule(param, execute_task) => {
let dep_id = match &param {
EntryParam::DependencyId(id, _) => *id,
EntryParam::Entry(dep) => *dep.id(),
};
ctrl_task.loader_task_map.insert(
dep_id,
LoaderTask {
kind: LoaderTaskKind::ExecuteTask,
task: Box::new(execute_task),
},
);
res.push(Box::new(EntryTask { param }));
}
Event::LoadModule(param, load_task) => {
let dep_id = match &param {
Event::EnterModule(entry_task, loader_task) => {
let dep_id = match &entry_task.param {
EntryParam::DependencyId(id, _) => *id,
EntryParam::Entry(dep) => *dep.id(),
};
ctrl_task.loader_task_map.insert(
dep_id,
LoaderTask {
kind: LoaderTaskKind::LoadTask,
task: Box::new(load_task),
},
);
res.push(Box::new(EntryTask { param }));
ctrl_task.loader_task_map.insert(dep_id, loader_task);
res.push(entry_task);
}
Event::Stop() => {
return Ok(vec![]);
Expand Down Expand Up @@ -328,7 +271,7 @@ impl Task<MakeTaskContext> for FinishModuleTask {
.loader_task_map
.remove(&connection.dependency_id)
.expect("should have loader task");
res.push(loader_task.task);
res.push(loader_task);
}
}

Expand Down
17 changes: 9 additions & 8 deletions crates/rspack_core/src/compiler/module_executor/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ mod overwrite;

use dashmap::DashMap;
use dashmap::{mapref::entry::Entry, DashSet};
use entry::EntryTask;
pub use execute::ExecuteModuleId;
pub use execute::ExecutedRuntimeModule;
use load::{LoadModuleResult, LoadTask};
Expand Down Expand Up @@ -198,15 +199,15 @@ impl ModuleExecutor {

let (tx, rx) = oneshot::channel();
sender
.send(Event::ExecuteModule(
param,
ExecuteTask {
.send(Event::EnterModule(
Box::new(EntryTask { param }),
Box::new(ExecuteTask {
entry_dep_id: dep_id,
layer,
public_path,
base_uri,
result_sender: tx,
},
}),
))
.expect("should success");
let (execute_result, assets, code_generated_modules, executed_runtime_modules) =
Expand Down Expand Up @@ -273,12 +274,12 @@ impl ModuleExecutor {

let (tx, rx) = oneshot::channel();
sender
.send(Event::LoadModule(
param,
LoadTask {
.send(Event::EnterModule(
Box::new(EntryTask { param }),
Box::new(LoadTask {
entry_dep_id: dep_id,
result_sender: tx,
},
}),
))
.expect("should success");
rx.await.expect("should receiver success")
Expand Down

0 comments on commit b52e30b

Please sign in to comment.