1 ---------------------------------------------------------------------------
4 -- This hand-written interface file allows you to bring into scope the
5 -- primitive operations and types that GHC knows about.
6 ---------------------------------------------------------------------------
10 __interface "std" PrelGHC 1 0 where
19 -- Magical assert thingy
32 -- Concurrency primitives
38 blockAsyncExceptionszh
39 unblockAsyncExceptionszh
55 seq -- Defined in MkId
128 #if WORD_SIZE_IN_BITS < 32
133 #if WORD_SIZE_IN_BITS < 64
139 nullAddrzh -- Defined in MkId
143 #if (WORD_SIZE_IN_BITS == 32 || WORD_SIZE_IN_BITS == 64)
214 -- Integer is implemented by foreign imports on .NET, so no primops
234 #if WORD_SIZE_IN_BITS < 32
240 #if WORD_SIZE_IN_BITS < 64
257 sameMutableByteArrayzh
271 indexStablePtrArrayzh
307 writeStablePtrArrayzh
318 indexWideCharOffAddrzh
324 indexStablePtrOffAddrzh
335 readWideCharOffAddrzh
341 readStablePtrOffAddrzh
352 writeWideCharOffAddrzh
356 writeForeignObjOffAddrzh
359 writeStablePtrOffAddrzh
370 indexCharOffForeignObjzh
371 indexWideCharOffForeignObjzh
372 indexIntOffForeignObjzh
373 indexWordOffForeignObjzh
374 indexAddrOffForeignObjzh
375 indexFloatOffForeignObjzh
376 indexDoubleOffForeignObjzh
377 indexStablePtrOffForeignObjzh
378 indexInt8OffForeignObjzh
379 indexInt16OffForeignObjzh
380 indexInt32OffForeignObjzh
381 indexInt64OffForeignObjzh
382 indexWord8OffForeignObjzh
383 indexWord16OffForeignObjzh
384 indexWord32OffForeignObjzh
385 indexWord64OffForeignObjzh
387 unsafeFreezzeArrayzh -- Note zz in the middle
388 unsafeFreezzeByteArrayzh -- Ditto
392 sizzeofByteArrayzh -- Ditto
393 sizzeofMutableByteArrayzh -- Ditto
425 reallyUnsafePtrEqualityzh
431 unsafeCoercezh -- unsafeCoerce# :: forall a b. a -> b
432 -- It's defined in ghc/compiler/basicTypes/MkId.lhs
436 -- Export PrelErr.error, so that others do not have to import PrelErr
437 __export PrelErr error ;
441 --------------------------------------------------
442 instance {CCallable Charzh} = zdfCCallableCharzh;
443 instance {CCallable Doublezh} = zdfCCallableDoublezh;
444 instance {CCallable Floatzh} = zdfCCallableFloatzh;
445 instance {CCallable Intzh} = zdfCCallableIntzh;
446 instance {CCallable Addrzh} = zdfCCallableAddrzh;
447 instance {CCallable Int64zh} = zdfCCallableInt64zh;
448 instance {CCallable Word64zh} = zdfCCallableWord64zh;
449 instance {CCallable Wordzh} = zdfCCallableWordzh;
450 instance {CCallable ByteArrayzh} = zdfCCallableByteArrayzh;
451 instance __forall s => {CCallable (MutableByteArrayzh s)} = zdfCCallableMutableByteArrayzh;
452 instance {CCallable ForeignObjzh} = zdfCCallableForeignObjzh;
453 instance __forall s => {CCallable (StablePtrzh s)} = zdfCCallableStablePtrzh;
454 -- CCallable and CReturnable have kind (Type AnyBox) so that
455 -- things like Int# can be instances of CCallable.
456 1 class CCallable a :: ? ;
457 1 class CReturnable a :: ? ;
459 1 assert :: __forall a => PrelBase.Bool -> a -> a ;
461 -- These guys do not really exist:
463 1 zdfCCallableCharzh :: {CCallable Charzh} ;
464 1 zdfCCallableDoublezh :: {CCallable Doublezh} ;
465 1 zdfCCallableFloatzh :: {CCallable Floatzh} ;
466 1 zdfCCallableIntzh :: {CCallable Intzh} ;
467 1 zdfCCallableAddrzh :: {CCallable Addrzh} ;
468 1 zdfCCallableInt64zh :: {CCallable Int64zh} ;
469 1 zdfCCallableWord64zh :: {CCallable Word64zh} ;
470 1 zdfCCallableWordzh :: {CCallable Wordzh} ;
471 1 zdfCCallableByteArrayzh :: {CCallable ByteArrayzh} ;
472 1 zdfCCallableMutableByteArrayzh :: __forall s => {CCallable (MutableByteArrayzh s)} ;
473 1 zdfCCallableForeignObjzh :: {CCallable ForeignObjzh} ;
474 1 zdfCCallableStablePtrzh :: __forall a => {CCallable (StablePtrzh a)} ;