File tree Expand file tree Collapse file tree
VirtualMachine/EVIL.Ceres/ExecutionEngine Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -423,6 +423,21 @@ public void SetOnNativeFunctionInvoke(NativeFunctionInvokeHandler? handler)
423423 OnNativeFunctionInvoke = handler ;
424424 }
425425
426+ public Fiber SpawnChild (
427+ bool immunized ,
428+ FiberCrashHandler ? crashHandler = null ,
429+ Dictionary < string , ClosureContext > ? closureContexts = null )
430+ {
431+ var fiber = VirtualMachine . Scheduler . CreateFiber (
432+ immunized ,
433+ crashHandler ,
434+ closureContexts ?? _closureContexts
435+ ) ;
436+
437+ fiber . Parent = this ;
438+ return fiber ;
439+ }
440+
426441 public DynamicValue ThrowFromNative ( DynamicValue value )
427442 {
428443 lock ( _callStack )
Original file line number Diff line number Diff line change @@ -19,6 +19,8 @@ public sealed class FiberScheduler(
1919
2020 public ConcurrentFiberCollection Fibers { get ; } = new ( initialCapacity ) ;
2121
22+ public FiberCrashHandler DefaultCrashHandler => _defaultCrashHandler ;
23+
2224 [ MethodImpl ( MethodImplOptions . AggressiveInlining ) ]
2325 private void ProcessFiber ( Fiber fiber )
2426 {
@@ -90,7 +92,7 @@ public Fiber CreateFiber(
9092 {
9193 var fiber = new Fiber (
9294 vm ,
93- crashHandler ?? _defaultCrashHandler ,
95+ crashHandler ?? DefaultCrashHandler ,
9496 closureContexts
9597 ) ;
9698
Original file line number Diff line number Diff line change @@ -1196,15 +1196,15 @@ public void Step()
11961196 ) ;
11971197 }
11981198
1199- var awaitee = _fiber . VirtualMachine . Scheduler . CreateFiber (
1199+ var awaitee = _fiber . SpawnChild (
12001200 false ,
12011201 closureContexts : ( Dictionary < string , ClosureContext > ) frame . Fiber . ClosureContexts
12021202 ) ;
1203- awaitee . Parent = _fiber ;
12041203 awaitee . Schedule ( a . Chunk ! , args ) ;
12051204 awaitee . Resume ( ) ;
1206-
1205+
12071206 PushValue ( awaitee ) ;
1207+
12081208 _fiber . WaitFor ( awaitee ) ;
12091209 break ;
12101210 }
You can’t perform that action at this time.
0 commit comments