-
Notifications
You must be signed in to change notification settings - Fork 0
/
PrimOp-Bytecode.dl
27 lines (23 loc) · 816 Bytes
/
PrimOp-Bytecode.dl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
primop pure
"addrToAny#" :: T_Addr -> {"GHC.Prim.Unit#" %a}
"anyToAddr#" :: %a -> {"State#" {RealWorld}} -> {"GHC.Prim.Unit#" T_Addr}
"mkApUpd0#" :: {"BCO#"} -> {"GHC.Prim.Unit#" %a}
primop effectful
"newBCO#" :: {"ByteArray#"} -> {"ByteArray#"} -> {"Array#" %a} -> T_Int64 -> {"ByteArray#"} -> {"State#" %s} -> {"GHC.Prim.Unit#" {"BCO#"}}
primop pure
"unpackClosure#" :: %a -> {"GHC.Prim.(#,,#)" T_Addr {"ByteArray#"} {"Array#" %b}}
"getApStackVal#" :: %a -> T_Int64 -> {"GHC.Prim.(#,#)" T_Int64 %b}
*/
// Future work
Error(r, "Unsupported (reachable) bytecode related primop") :-
( op = "addrToAny#"
; op = "anyToAddr#"
; op = "mkApUpd0#"
; op = "newBCO#"
; op = "unpackClosure#"
; op = "getApStackVal#"
),
Call(r, op, _),
HasInst(f, r),
ReachableCode(f).