File tree Expand file tree Collapse file tree 4 files changed +17
-12
lines changed Expand file tree Collapse file tree 4 files changed +17
-12
lines changed Original file line number Diff line number Diff line change @@ -16,8 +16,7 @@ extern async def spawn(task: Task[Unit]): Unit =
16
16
js "$effekt.capture(k => { setTimeout(() => k($effekt.unit), 0); return $effekt.run(${task}) })"
17
17
llvm """
18
18
call void @c_yield(%Stack %stack)
19
- %unboxed = call ccc %Neg @unbox(%Pos ${task})
20
- call void @run(%Neg %unboxed)
19
+ call void @run(%Pos %task)
21
20
ret void
22
21
"""
23
22
Original file line number Diff line number Diff line change @@ -401,7 +401,7 @@ void c_tcp_accept_cb(uv_stream_t* server, int status) {
401
401
}
402
402
403
403
sharePositive (accept_closure -> handler );
404
- run_Int (unbox ( accept_closure -> handler ) , (int64_t )client );
404
+ run_Int (accept_closure -> handler , (int64_t )client );
405
405
}
406
406
407
407
void c_tcp_accept (Int listener , struct Pos handler , Stack stack ) {
Original file line number Diff line number Diff line change @@ -726,7 +726,10 @@ define void @resume_Pos(%Stack %stack, %Pos %argument) {
726
726
ret void
727
727
}
728
728
729
- define void @run (%Neg %f ) {
729
+ define void @run (%Pos %boxed ) {
730
+ ; unbox
731
+ %f = call %Neg @unbox (%Pos %boxed )
732
+
730
733
; fresh stack
731
734
%stack = call %Stack @withEmptyStack ()
732
735
@@ -741,7 +744,10 @@ define void @run(%Neg %f) {
741
744
ret void
742
745
}
743
746
744
- define void @run_Int (%Neg %f , i64 %argument ) {
747
+ define void @run_Int (%Pos %boxed , i64 %argument ) {
748
+ ; unbox
749
+ %f = call %Neg @unbox (%Pos %boxed )
750
+
745
751
; fresh stack
746
752
%stack = call %Stack @withEmptyStack ()
747
753
@@ -756,7 +762,10 @@ define void @run_Int(%Neg %f, i64 %argument) {
756
762
ret void
757
763
}
758
764
759
- define void @run_Pos (%Neg %f , %Pos %argument ) {
765
+ define void @run_Pos (%Pos %boxed , %Pos %argument ) {
766
+ ; unbox
767
+ %f = call %Neg @unbox (%Pos %boxed )
768
+
760
769
; fresh stack
761
770
%stack = call %Stack @withEmptyStack ()
762
771
Original file line number Diff line number Diff line change @@ -34,15 +34,12 @@ typedef struct StackValue* Stack;
34
34
35
35
// Defined in rts.ll
36
36
37
- extern struct Pos box (struct Neg );
38
- extern struct Neg unbox (struct Pos );
39
-
40
37
extern void resume_Int (Stack , Int );
41
38
extern void resume_Pos (Stack , struct Pos );
42
39
43
- extern void run (struct Neg );
44
- extern void run_Int (struct Neg , Int );
45
- extern void run_Pos (struct Neg , struct Pos );
40
+ extern void run (struct Pos );
41
+ extern void run_Int (struct Pos , Int );
42
+ extern void run_Pos (struct Pos , struct Pos );
46
43
47
44
// Reference counting primitives defined in LLVM
48
45
extern void eraseNegative (struct Neg );
You can’t perform that action at this time.
0 commit comments