Skip to content

Commit

Permalink
[Builtins] Make 'geq' inlinable
Browse files Browse the repository at this point in the history
  • Loading branch information
effectfully committed Jan 21, 2023
1 parent ff72adc commit 5cf0066
Showing 1 changed file with 39 additions and 2 deletions.
41 changes: 39 additions & 2 deletions plutus-core/plutus-core/src/PlutusCore/Default/Universe.hs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ import Data.IntCast (intCastEq)
import Data.Proxy
import Data.Text qualified as Text
import Data.Word
import GHC.Exts (inline, oneShot)
import GHC.Exts (inline, noinline, oneShot)
import Text.Pretty
import Text.PrettyBy
import Text.PrettyBy.Fixity
Expand Down Expand Up @@ -109,7 +109,44 @@ pattern DefaultUniList uniA =
pattern DefaultUniPair uniA uniB =
DefaultUniProtoPair `DefaultUniApply` uniA `DefaultUniApply` uniB

deriveGEq ''DefaultUni
instance GEq DefaultUni where
geq = geqStep where
geqStep :: DefaultUni a1 -> DefaultUni a2 -> Maybe (a1 :~: a2)
geqStep DefaultUniInteger a2 = do
DefaultUniInteger <- Just a2
Just Refl
geqStep DefaultUniByteString a2 = do
DefaultUniByteString <- Just a2
Just Refl
geqStep DefaultUniString a2 = do
DefaultUniString <- Just a2
Just Refl
geqStep DefaultUniUnit a2 = do
DefaultUniUnit <- Just a2
Just Refl
geqStep DefaultUniBool a2 = do
DefaultUniBool <- Just a2
Just Refl
geqStep DefaultUniProtoList a2 = do
DefaultUniProtoList <- Just a2
Just Refl
geqStep DefaultUniProtoPair a2 = do
DefaultUniProtoPair <- Just a2
Just Refl
geqStep (DefaultUniApply f1 x1) a2 = do
DefaultUniApply f2 x2 <- Just a2
Refl <- noinline geqRec f1 f2
Refl <- noinline geqRec x1 x2
Just Refl
geqStep DefaultUniData a2 = do
DefaultUniData <- Just a2
Just Refl
{-# INLINE geqStep #-}

geqRec :: DefaultUni a1 -> DefaultUni a2 -> Maybe (a1 :~: a2)
geqRec = geqStep
{-# NOINLINE geqRec #-}

deriveGCompare ''DefaultUni

-- | For pleasing the coverage checker.
Expand Down

0 comments on commit 5cf0066

Please sign in to comment.