X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fprelude%2Fprimops.txt.pp;h=525a837940453bedcf07b58cbb3d292003a7c62b;hb=971160abf8ce633fed23eb603cf9e0fb08d1746d;hp=cb7c79234def0c32f2d559ea8ba355258adaa075;hpb=42b8aa9e4a054ae6784e6c90c9adc615a9703b8c;p=ghc-hetmet.git diff --git a/compiler/prelude/primops.txt.pp b/compiler/prelude/primops.txt.pp index cb7c792..525a837 100644 --- a/compiler/prelude/primops.txt.pp +++ b/compiler/prelude/primops.txt.pp @@ -578,7 +578,7 @@ primtype MutableArray# s a primop NewArrayOp "newArray#" GenPrimOp Int# -> a -> State# s -> (# State# s, MutableArray# s a #) - {Create a new mutable array of specified size (in bytes), + {Create a new mutable array with the specified number of elements, in the specified state thread, with each element containing the specified initial value.} with @@ -600,6 +600,14 @@ primop WriteArrayOp "writeArray#" GenPrimOp with has_side_effects = True +primop SizeofArrayOp "sizeofArray#" GenPrimOp + Array# a -> Int# + {Return the number of elements in the array.} + +primop SizeofMutableArrayOp "sizeofMutableArray#" GenPrimOp + MutableArray# s a -> Int# + {Return the number of elements in the array.} + primop IndexArrayOp "indexArray#" GenPrimOp Array# a -> Int# -> (# a #) {Read from specified index of immutable array. Result is packaged into @@ -1140,10 +1148,14 @@ primop RaiseOp "raise#" GenPrimOp -- raiseIO# needs to be a primop, because exceptions in the IO monad -- must be *precise* - we don't want the strictness analyser turning -- one kind of bottom into another, as it is allowed to do in pure code. +-- +-- But we *do* want to know that it returns bottom after +-- being applied to two arguments primop RaiseIOOp "raiseIO#" GenPrimOp a -> State# RealWorld -> (# State# RealWorld, b #) with + strictness = { \ _arity -> mkStrictSig (mkTopDmdType [lazyDmd,lazyDmd] BotRes) } out_of_line = True has_side_effects = True