From be3f972202fb36c4e6d818d0072c7df9a0577be3 Mon Sep 17 00:00:00 2001 From: Marty Stumpf Date: Fri, 16 Jul 2021 11:30:46 -0700 Subject: [PATCH] Add time to emitCek. --- plutus-core/plutus-core.cabal | 5 +++-- .../UntypedPlutusCore/Evaluation/Machine/Cek/Internal.hs | 7 ++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/plutus-core/plutus-core.cabal b/plutus-core/plutus-core.cabal index 8079d60617a..1c4ad32c0c5 100644 --- a/plutus-core/plutus-core.cabal +++ b/plutus-core/plutus-core.cabal @@ -5,8 +5,8 @@ license: Apache-2.0 license-files: LICENSE NOTICE -maintainer: vanessa.mchale@iohk.io -author: Vanessa McHale +maintainer: michael.peyton-jones@iohk.io +author: Plutus Core Team tested-with: ghc ==8.2.2 ghc ==8.4.3 ghc ==8.6.1 synopsis: Language library for Plutus Core description: @@ -301,6 +301,7 @@ library th-lift -any, th-lift-instances -any, th-utilities -any, + time -any, transformers -any, unordered-containers -any, witherable -any, diff --git a/plutus-core/untyped-plutus-core/src/UntypedPlutusCore/Evaluation/Machine/Cek/Internal.hs b/plutus-core/untyped-plutus-core/src/UntypedPlutusCore/Evaluation/Machine/Cek/Internal.hs index b60a365f3b9..18d423aeccb 100644 --- a/plutus-core/untyped-plutus-core/src/UntypedPlutusCore/Evaluation/Machine/Cek/Internal.hs +++ b/plutus-core/untyped-plutus-core/src/UntypedPlutusCore/Evaluation/Machine/Cek/Internal.hs @@ -73,7 +73,9 @@ import Data.Proxy import Data.STRef import Data.Semigroup (stimes) import Data.Text.Prettyprint.Doc +import Data.Time.Clock (getCurrentTime) import Data.Word64Array.Word8 +import System.IO.Unsafe (unsafePerformIO) import Universe {- Note [Compilation peculiarities] @@ -472,9 +474,12 @@ spendBudgetCek = let (CekBudgetSpender spend) = ?cekBudgetSpender in spend emitCek :: GivenCekEmitter s => String -> CekM uni fun s () emitCek str = let mayLogsRef = ?cekEmitter + withTime = str ++ (show $ unsafePerformIO getCurrentTime) in case mayLogsRef of Nothing -> pure () - Just logsRef -> CekCarryingM $ modifySTRef logsRef (`DList.snoc` str) + Just logsRef -> + CekCarryingM $ + modifySTRef logsRef (`DList.snoc` withTime) -- see Note [Scoping]. -- | Instantiate all the free variables of a term by looking them up in an environment.