@@ -79,20 +79,23 @@ pub struct RuntimeConfig<UserMacroTask: 'static> {
7979 pub builtins : Vec < & ' static str > ,
8080 /// User event loop handler.
8181 pub eventloop_handler : EventLoopHandler < UserMacroTask > ,
82+ /// Macro tasks eventloop receiver.
83+ pub macro_task_rx : Receiver < MacroTask < UserMacroTask > > ,
8284}
8385
8486pub struct Runtime < UserMacroTask : ' static > {
8587 pub config : RuntimeConfig < UserMacroTask > ,
8688 pub agent : GcAgent ,
8789 pub realm_root : RealmRoot ,
8890 pub host_hooks : & ' static RuntimeHostHooks < UserMacroTask > ,
89- pub macro_task_rx : Receiver < MacroTask < UserMacroTask > > ,
9091}
9192
9293impl < UserMacroTask > Runtime < UserMacroTask > {
9394 /// Create a new [Runtime] given a [RuntimeConfig]. Use [Runtime::run] to run it.
94- pub fn new ( mut config : RuntimeConfig < UserMacroTask > ) -> Self {
95- let ( host_data, macro_task_rx) = HostData :: new ( ) ;
95+ pub fn new (
96+ mut config : RuntimeConfig < UserMacroTask > ,
97+ host_data : HostData < UserMacroTask > ,
98+ ) -> Self {
9699 let host_hooks = RuntimeHostHooks :: new ( host_data) ;
97100
98101 let host_hooks: & RuntimeHostHooks < UserMacroTask > = & * Box :: leak ( Box :: new ( host_hooks) ) ;
@@ -125,7 +128,6 @@ impl<UserMacroTask> Runtime<UserMacroTask> {
125128 agent,
126129 realm_root,
127130 host_hooks,
128- macro_task_rx,
129131 }
130132 }
131133
@@ -204,7 +206,7 @@ impl<UserMacroTask> Runtime<UserMacroTask> {
204206
205207 // Listen for pending macro tasks and resolve one by one
206208 pub fn handle_macro_task ( & mut self ) {
207- match self . macro_task_rx . recv ( ) {
209+ match self . config . macro_task_rx . recv ( ) {
208210 Ok ( MacroTask :: ResolvePromise ( root_value) ) => {
209211 self . agent . run_in_realm ( & self . realm_root , |agent, gc| {
210212 let value = root_value. take ( agent) ;
0 commit comments