[Git][ghc/ghc][wip/marge_bot_batch_merge_job] 13 commits: JS: clean up FFI 'fat arrow' calls in base:System.Posix.Internals (#23481)
Marge Bot (@marge-bot)
gitlab at gitlab.haskell.org
Wed Jun 7 17:41:51 UTC 2023
Marge Bot pushed to branch wip/marge_bot_batch_merge_job at Glasgow Haskell Compiler / GHC
Commits:
b7600997 by Josh Meredith at 2023-06-07T13:10:21-04:00
JS: clean up FFI 'fat arrow' calls in base:System.Posix.Internals (#23481)
- - - - -
f2aa3929 by Sebastian Graf at 2023-06-07T13:41:20-04:00
Update CODEOWNERS
- - - - -
68decb14 by Matthew Pickering at 2023-06-07T13:41:20-04:00
Revert "Remove IPE enabled builds from CI"
This reverts commit 41b41577c8a28c236fa37e8f73aa1c6dc368d951.
- - - - -
1678122e by Matthew Pickering at 2023-06-07T13:41:20-04:00
Revert "Update user's guide and release notes, small fixes"
This reverts commit 3ded9a1cd22f9083f31bc2f37ee1b37f9d25dab7.
- - - - -
ac068d8f by Matthew Pickering at 2023-06-07T13:41:20-04:00
Revert "Add IPE-enabled builds to CI"
This reverts commit 09d93bd0305b0f73422ce7edb67168c71d32c15f.
- - - - -
08db6535 by Matthew Pickering at 2023-06-07T13:41:20-04:00
Revert "Add optional dependencies to ./configure output"
This reverts commit a00488665cd890a26a5564a64ba23ff12c9bec58.
- - - - -
5986b6bf by Matthew Pickering at 2023-06-07T13:41:20-04:00
Revert "Fix IPE data decompression buffer allocation"
This reverts commit 0e85099b9316ee24565084d5586bb7290669b43a.
- - - - -
50da6d88 by Matthew Pickering at 2023-06-07T13:41:20-04:00
Revert "Fix byte order of IPE data, fix IPE tests"
This reverts commit 7872e2b6f08ea40d19a251c4822a384d0b397327.
- - - - -
3415cd9d by Matthew Pickering at 2023-06-07T13:41:20-04:00
Revert "Add note describing IPE data compression"
This reverts commit 69563c97396b8fde91678fae7d2feafb7ab9a8b0.
- - - - -
d2a31742 by Matthew Pickering at 2023-06-07T13:41:20-04:00
Revert "Fix libzstd detection in configure and RTS"
This reverts commit 5aef5658ad5fb96bac7719710e0ea008bf7b62e0.
- - - - -
51a65145 by Matthew Pickering at 2023-06-07T13:41:20-04:00
Revert "IPE data compression"
This reverts commit b7a640acf7adc2880e5600d69bcf2918fee85553.
- - - - -
cb148618 by Matthew Pickering at 2023-06-07T13:41:20-04:00
Revert "Add IPE compression to configure"
This reverts commit 5d1f2411f4becea8650d12d168e989241edee186.
- - - - -
06112cd1 by Matthew Pickering at 2023-06-07T13:41:20-04:00
Revert "Restructure IPE buffer layout"
This reverts commit f3556d6cefd3d923b36bfcda0c8185abb1d11a91.
- - - - -
24 changed files:
- .gitlab/gen_ci.hs
- .gitlab/jobs.yaml
- CODEOWNERS
- compiler/GHC/StgToCmm/InfoTableProv.hs
- compiler/ghc.cabal.in
- configure.ac
- docs/users_guide/9.8.1-notes.rst
- docs/users_guide/debug-info.rst
- hadrian/cfg/system.config.in
- hadrian/src/Oracles/Flag.hs
- hadrian/src/Oracles/Setting.hs
- hadrian/src/Rules/Generate.hs
- hadrian/src/Settings/Packages.hs
- libraries/base/System/Posix/Internals.hs
- m4/fp_find_libnuma.m4
- − m4/fp_find_libzstd.m4
- rts/IPE.c
- rts/IPE.h
- rts/include/rts/IPE.h
- rts/rts.cabal.in
- testsuite/tests/rts/ipe/ipeEventLog_fromMap.c
- testsuite/tests/rts/ipe/ipeMap.c
- testsuite/tests/rts/ipe/ipe_lib.c
- testsuite/tests/rts/ipe/ipe_lib.h
Changes:
=====================================
.gitlab/gen_ci.hs
=====================================
@@ -141,7 +141,6 @@ data BuildConfig
, llvmBootstrap :: Bool
, withAssertions :: Bool
, withNuma :: Bool
- , withZstd :: Bool
, crossTarget :: Maybe String
, crossEmulator :: CrossEmulator
, configureWrapper :: Maybe String
@@ -155,11 +154,10 @@ data BuildConfig
-- Extra arguments to pass to ./configure due to the BuildConfig
configureArgsStr :: BuildConfig -> String
configureArgsStr bc = unwords $
- ["--enable-unregisterised"| unregisterised bc ]
+ ["--enable-unregisterised"| unregisterised bc ]
++ ["--disable-tables-next-to-code" | not (tablesNextToCode bc) ]
++ ["--with-intree-gmp" | Just _ <- pure (crossTarget bc) ]
++ ["--with-system-libffi" | crossTarget bc == Just "wasm32-wasi" ]
- ++ ["--enable-ipe-data-compression" | withZstd bc ]
-- Compute the hadrian flavour from the BuildConfig
mkJobFlavour :: BuildConfig -> Flavour
@@ -174,12 +172,8 @@ mkJobFlavour BuildConfig{..} = Flavour buildFlavour opts
data Flavour = Flavour BaseFlavour [FlavourTrans]
-data FlavourTrans =
- Llvm
- | Dwarf
- | FullyStatic
- | ThreadSanitiser
- | NoSplitSections
+data FlavourTrans
+ = Llvm | Dwarf | FullyStatic | ThreadSanitiser | NoSplitSections
| BootNonmovingGc
data BaseFlavour = Release | Validate | SlowValidate deriving Eq
@@ -198,7 +192,6 @@ vanilla = BuildConfig
, llvmBootstrap = False
, withAssertions = False
, withNuma = False
- , withZstd = False
, crossTarget = Nothing
, crossEmulator = NoEmulator
, configureWrapper = Nothing
@@ -231,9 +224,6 @@ debug = vanilla { buildFlavour = SlowValidate
, withNuma = True
}
-zstdIpe :: BuildConfig
-zstdIpe = vanilla { withZstd = True }
-
static :: BuildConfig
static = vanilla { fullyStatic = True }
@@ -323,18 +313,18 @@ testEnv arch opsys bc = intercalate "-" $
-- | The hadrian flavour string we are going to use for this build
flavourString :: Flavour -> String
-flavourString (Flavour base trans) = base_string base ++ concatMap (("+" ++) . flavour_string) trans
+flavourString (Flavour base trans) = baseString base ++ concatMap (("+" ++) . flavourString) trans
where
- base_string Release = "release"
- base_string Validate = "validate"
- base_string SlowValidate = "slow-validate"
+ baseString Release = "release"
+ baseString Validate = "validate"
+ baseString SlowValidate = "slow-validate"
- flavour_string Llvm = "llvm"
- flavour_string Dwarf = "debug_info"
- flavour_string FullyStatic = "fully_static"
- flavour_string ThreadSanitiser = "thread_sanitizer"
- flavour_string NoSplitSections = "no_split_sections"
- flavour_string BootNonmovingGc = "boot_nonmoving_gc"
+ flavourString Llvm = "llvm"
+ flavourString Dwarf = "debug_info"
+ flavourString FullyStatic = "fully_static"
+ flavourString ThreadSanitiser = "thread_sanitizer"
+ flavourString NoSplitSections = "no_split_sections"
+ flavourString BootNonmovingGc = "boot_nonmoving_gc"
-- The path to the docker image (just for linux builders)
dockerImage :: Arch -> Opsys -> Maybe String
@@ -527,7 +517,7 @@ manualRule rules = rules { when = Manual }
-- For example, even if you don't explicitly disable a rule it will end up in the
-- rule list with the OFF state.
enumRules :: OnOffRules -> [OnOffRule]
-enumRules o = map lkup rulesList
+enumRules o = map lkup rules
where
enabled_rules = rule_set o
lkup r = OnOffRule (if S.member r enabled_rules then On else Off) r
@@ -563,7 +553,6 @@ data Rule = FastCI -- ^ Run this job when the fast-ci label is set
| LLVMBackend -- ^ Only run this job when the "LLVM backend" label is present
| FreeBSDLabel -- ^ Only run this job when the "FreeBSD" label is set.
| NonmovingGc -- ^ Only run this job when the "non-moving GC" label is set.
- | IpeData -- ^ Only run this job when the "IPE" label is set
| Disable -- ^ Don't run this job.
deriving (Bounded, Enum, Ord, Eq)
@@ -590,14 +579,12 @@ ruleString On ReleaseOnly = "$RELEASE_JOB == \"yes\""
ruleString Off ReleaseOnly = "$RELEASE_JOB != \"yes\""
ruleString On Nightly = "$NIGHTLY"
ruleString Off Nightly = "$NIGHTLY == null"
-ruleString On IpeData = "$CI_MERGE_REQUEST_LABELS =~ /.*IPE.*/"
-ruleString Off IpeData = true
ruleString On Disable = false
ruleString Off Disable = true
-- Enumeration of all the rules
-rulesList :: [Rule]
-rulesList = [minBound .. maxBound]
+rules :: [Rule]
+rules = [minBound .. maxBound]
-- | A 'Job' is the description of a single job in a gitlab pipeline. The
-- job contains all the information about how to do the build but can be further
@@ -886,7 +873,6 @@ job_groups =
, validateBuilds Amd64 (Linux Debian10) nativeInt
, fastCI (validateBuilds Amd64 (Linux Debian10) unreg)
, fastCI (validateBuilds Amd64 (Linux Debian10) debug)
- , disableValidate (validateBuilds Amd64 (Linux Debian10) zstdIpe)
, -- Nightly allowed to fail: #22520
modifyNightlyJobs allowFailure
(modifyValidateJobs manual tsan_jobs)
@@ -894,7 +880,7 @@ job_groups =
modifyNightlyJobs allowFailure
(modifyValidateJobs manual (validateBuilds Amd64 (Linux Debian10) noTntc))
, addValidateRule LLVMBackend (validateBuilds Amd64 (Linux Debian10) llvm)
- , addValidateRule IpeData (validateBuilds Amd64 (Linux Debian10) zstdIpe)
+
, disableValidate (standardBuilds Amd64 (Linux Debian11))
-- We still build Deb9 bindists for now due to Ubuntu 18 and Linux Mint 19
-- not being at EOL until April 2023 and they still need tinfo5.
=====================================
.gitlab/jobs.yaml
=====================================
@@ -35,7 +35,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -97,7 +97,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -155,7 +155,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -213,7 +213,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -276,7 +276,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -335,7 +335,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -394,7 +394,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -453,7 +453,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -518,7 +518,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -579,7 +579,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -641,7 +641,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -703,7 +703,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -765,7 +765,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -826,7 +826,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -887,7 +887,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -948,7 +948,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -1008,7 +1008,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -1067,7 +1067,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -1126,7 +1126,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -1186,7 +1186,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -1245,7 +1245,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -1264,7 +1264,7 @@
"BIGNUM_BACKEND": "gmp",
"BIN_DIST_NAME": "ghc-x86_64-linux-deb10-validate",
"BUILD_FLAVOUR": "validate",
- "CONFIGURE_ARGS": "--enable-ipe-data-compression",
+ "CONFIGURE_ARGS": "",
"TEST_ENV": "x86_64-linux-deb10-validate",
"XZ_OPT": "-9"
}
@@ -1304,7 +1304,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -1363,7 +1363,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -1422,7 +1422,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -1483,7 +1483,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -1544,7 +1544,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -1606,7 +1606,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -1665,7 +1665,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -1725,7 +1725,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -1784,7 +1784,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -1845,7 +1845,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -1907,7 +1907,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -1968,7 +1968,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -2028,7 +2028,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -2087,7 +2087,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -2142,7 +2142,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -2201,7 +2201,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -2264,7 +2264,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -2328,7 +2328,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -2389,7 +2389,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -2450,7 +2450,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -2516,7 +2516,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -2579,7 +2579,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -2642,7 +2642,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -2705,7 +2705,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -2766,7 +2766,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -2827,7 +2827,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -2888,7 +2888,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -2949,7 +2949,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -3011,7 +3011,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -3072,7 +3072,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -3135,7 +3135,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -3198,7 +3198,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -3261,7 +3261,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -3322,7 +3322,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -3383,7 +3383,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -3440,7 +3440,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -3500,7 +3500,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -3564,7 +3564,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -3628,7 +3628,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && ($CI_MERGE_REQUEST_LABELS =~ /.*FreeBSD.*/) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && ($CI_MERGE_REQUEST_LABELS =~ /.*FreeBSD.*/) && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -3688,7 +3688,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -3749,7 +3749,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -3810,7 +3810,7 @@
"rules": [
{
"allow_failure": true,
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "manual"
}
],
@@ -3871,7 +3871,7 @@
"rules": [
{
"allow_failure": true,
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "manual"
}
],
@@ -3931,7 +3931,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -3990,7 +3990,7 @@
"rules": [
{
"allow_failure": true,
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "manual"
}
],
@@ -4048,7 +4048,7 @@
],
"rules": [
{
- "if": "(\"true\" == \"true\") && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "(\"true\" == \"true\") && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -4107,7 +4107,7 @@
],
"rules": [
{
- "if": "(\"true\" == \"true\") && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "(\"true\" == \"true\") && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -4130,64 +4130,6 @@
"TEST_ENV": "x86_64-linux-deb10-unreg-validate"
}
},
- "x86_64-linux-deb10-validate": {
- "after_script": [
- ".gitlab/ci.sh save_cache",
- ".gitlab/ci.sh clean",
- "cat ci_timings"
- ],
- "allow_failure": false,
- "artifacts": {
- "expire_in": "2 weeks",
- "paths": [
- "ghc-x86_64-linux-deb10-validate.tar.xz",
- "junit.xml"
- ],
- "reports": {
- "junit": "junit.xml"
- },
- "when": "always"
- },
- "cache": {
- "key": "x86_64-linux-deb10-$CACHE_REV",
- "paths": [
- "cabal-cache",
- "toolchain"
- ]
- },
- "dependencies": [],
- "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV",
- "needs": [
- {
- "artifacts": false,
- "job": "hadrian-ghc-in-ghci"
- }
- ],
- "rules": [
- {
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && ($CI_MERGE_REQUEST_LABELS =~ /.*IPE.*/) && (\"true\" == \"true\")",
- "when": "on_success"
- }
- ],
- "script": [
- "sudo chown ghc:ghc -R .",
- ".gitlab/ci.sh setup",
- ".gitlab/ci.sh configure",
- ".gitlab/ci.sh build_hadrian",
- ".gitlab/ci.sh test_hadrian"
- ],
- "stage": "full-build",
- "tags": [
- "x86_64-linux"
- ],
- "variables": {
- "BIGNUM_BACKEND": "gmp",
- "BIN_DIST_NAME": "ghc-x86_64-linux-deb10-validate",
- "BUILD_FLAVOUR": "validate",
- "CONFIGURE_ARGS": "--enable-ipe-data-compression",
- "TEST_ENV": "x86_64-linux-deb10-validate"
- }
- },
"x86_64-linux-deb10-validate+debug_info": {
"after_script": [
".gitlab/ci.sh save_cache",
@@ -4223,7 +4165,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -4281,7 +4223,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && ($CI_MERGE_REQUEST_LABELS =~ /.*LLVM backend.*/) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && ($CI_MERGE_REQUEST_LABELS =~ /.*LLVM backend.*/) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -4340,7 +4282,7 @@
"rules": [
{
"allow_failure": true,
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "manual"
}
],
@@ -4400,7 +4342,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -4460,7 +4402,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -4521,7 +4463,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && ($CI_MERGE_REQUEST_LABELS =~ /.*non-moving GC.*/) && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && ($CI_MERGE_REQUEST_LABELS =~ /.*non-moving GC.*/) && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -4580,7 +4522,7 @@
],
"rules": [
{
- "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
@@ -4636,7 +4578,7 @@
],
"rules": [
{
- "if": "(\"true\" == \"true\") && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "if": "(\"true\" == \"true\") && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
"when": "on_success"
}
],
=====================================
CODEOWNERS
=====================================
@@ -36,6 +36,7 @@
/compiler/GHC/Rename/ @simonpj @rae
/compiler/GHC/Types/ @simonpj @rae
/compiler/GHC/HsToCore/ @simonpj @rae
+/compiler/GHC/HsToCore/Pmc* @sgraf
/compiler/GHC/Tc/Deriv/ @RyanGlScott
/compiler/GHC/CmmToAsm/ @simonmar @bgamari @AndreasK
/compiler/GHC/CmmToAsm/Wasm/ @TerrorJack
@@ -43,13 +44,12 @@
/compiler/GHC/StgToCmm/ @simonmar @osa1
/compiler/GHC/Cmm/ @simonmar @osa1
/compiler/ghci/ @simonmar
-/compiler/GHC/Core/Op/CallArity.hs @nomeata
-/compiler/utils/UnVarGraph.hs @nomeata
-/compiler/GHC/Core/Op/Exitify.hs @nomeata
+/compiler/GHC/Core/Opt/CallArity.hs @nomeata
+/compiler/GHC/Core/Opt/Exitify.hs @nomeata
/compiler/GHC/Stg/CSE.hs @nomeata
-/compiler/GHC/Stg/Lift.hs @sgraf
+/compiler/GHC/Stg/Lift* @sgraf
/compiler/GHC/Cmm/Switch.hs @nomeata
-/compiler/GHC/Core/Op/DmdAnal.hs @simonpj @sgraf
+/compiler/GHC/Core/Opt/ @simonpj @sgraf
/compiler/GHC/ThToHs.hs @rae
/compiler/GHC/Wasm/ @nrnrnr
=====================================
compiler/GHC/StgToCmm/InfoTableProv.hs
=====================================
@@ -1,188 +1,67 @@
-{-# LANGUAGE CPP #-}
-
module GHC.StgToCmm.InfoTableProv (emitIpeBufferListNode) where
-import Foreign
-
-#if defined(HAVE_LIBZSTD)
-import Foreign.C.Types
-import qualified Data.ByteString.Internal as BSI
-import GHC.IO (unsafePerformIO)
-#endif
-
import GHC.Prelude
import GHC.Platform
-import GHC.Types.SrcLoc (pprUserRealSpan, srcSpanFile)
import GHC.Unit.Module
import GHC.Utils.Outputable
+import GHC.Types.SrcLoc (pprUserRealSpan, srcSpanFile)
import GHC.Data.FastString (fastStringToShortText, unpackFS, LexicalFastString(..))
-import GHC.Cmm
import GHC.Cmm.CLabel
+import GHC.Cmm.Expr
import GHC.Cmm.Utils
import GHC.StgToCmm.Config
+import GHC.StgToCmm.Lit (newByteStringCLit)
import GHC.StgToCmm.Monad
+import GHC.StgToCmm.Utils
import GHC.Data.ShortText (ShortText)
import qualified GHC.Data.ShortText as ST
+import qualified Data.Map.Strict as M
import Control.Monad.Trans.State.Strict
-
import qualified Data.ByteString as BS
import qualified Data.ByteString.Builder as BSB
import qualified Data.ByteString.Lazy as BSL
-import qualified Data.Map.Strict as M
-
-{-
-Note [Compression and Decompression of IPE data]
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Compiling with `-finfo-table-map` causes build results to include a map from
-info tables to source positions called the info table provenance entry (IPE)
-map. See Note [Mapping Info Tables to Source Positions]. The IPE information
-can grow the size of build results significantly. At the time of writing, a
-default build of GHC results in a total of 109M of libHSghc-*.so build results.
-A default+ipe build of GHC (see ./hadrian/doc/flavours.md) results in 262M of
-libHSghc-*.so build results without compression.
-
-We reduce the impact of IPE data on the size of build results by compressing
-the data before it is emitted using the zstd compression library. See
-Note [The Info Table Provenance Entry (IPE) Map] for information on the layout
-of IPE data on disk and in the RTS. We cannot simply compress all data held in
-the IPE entry buffer, as the pointers to info tables must be converted to
-memory addresses during linking. Therefore, we can only compress the strings
-table and the IPE entries themselves (which essentially only consist of indices
-into the strings table).
-With compression, a default+ipe build of GHC results in a total of 205M of
-libHSghc-*.so build results. This is over a 20% reduction from the uncompressed
-case.
-
-Decompression happens lazily, as it only occurs when the IPE map is
-constructed (which is also done lazily on first lookup or traversal). During
-construction, the 'compressed' field of each IPE buffer list node is examined.
-If the field indicates that the data has been compressed, the entry data and
-strings table are decompressed before continuing with the normal IPE map
-construction.
--}
-
-emitIpeBufferListNode ::
- Module
- -> [InfoProvEnt]
- -> FCode ()
+emitIpeBufferListNode :: Module
+ -> [InfoProvEnt]
+ -> FCode ()
emitIpeBufferListNode _ [] = return ()
emitIpeBufferListNode this_mod ents = do
cfg <- getStgToCmmConfig
-
- tables_lbl <- mkStringLitLabel <$> newUnique
- strings_lbl <- mkStringLitLabel <$> newUnique
- entries_lbl <- mkStringLitLabel <$> newUnique
-
- let ctx = stgToCmmContext cfg
+ let ctx = stgToCmmContext cfg
platform = stgToCmmPlatform cfg
- int n = mkIntCLit platform n
-
- (cg_ipes, strtab) = flip runState emptyStringTable $ do
- module_name <- lookupStringTable $ ST.pack $ renderWithContext ctx (ppr this_mod)
- mapM (toCgIPE platform ctx module_name) ents
-
- tables :: [CmmStatic]
- tables = map (CmmStaticLit . CmmLabel . ipeInfoTablePtr) cg_ipes
-
- uncompressed_strings :: BS.ByteString
- uncompressed_strings = getStringTableStrings strtab
-
- strings_bytes :: BS.ByteString
- strings_bytes = compress defaultCompressionLevel uncompressed_strings
-
- strings :: [CmmStatic]
- strings = [CmmString strings_bytes]
-
- uncompressed_entries :: BS.ByteString
- uncompressed_entries = toIpeBufferEntries (platformByteOrder platform) cg_ipes
-
- entries_bytes :: BS.ByteString
- entries_bytes = compress defaultCompressionLevel uncompressed_entries
- entries :: [CmmStatic]
- entries = [CmmString entries_bytes]
-
- ipe_buffer_lbl :: CLabel
- ipe_buffer_lbl = mkIPELabel this_mod
-
- ipe_buffer_node :: [CmmStatic]
- ipe_buffer_node = map CmmStaticLit
- [ -- 'next' field
- zeroCLit platform
-
- -- 'compressed' field
- , int do_compress
-
- -- 'count' field
- , int $ length cg_ipes
-
- -- 'tables' field
- , CmmLabel tables_lbl
-
- -- 'entries' field
- , CmmLabel entries_lbl
-
- -- 'entries_size' field (decompressed size)
- , int $ BS.length uncompressed_entries
-
- -- 'string_table' field
- , CmmLabel strings_lbl
-
- -- 'string_table_size' field (decompressed size)
- , int $ BS.length uncompressed_strings
- ]
-
- -- Emit the list of info table pointers
- emitDecl $ CmmData
- (Section Data tables_lbl)
- (CmmStaticsRaw tables_lbl tables)
-
- -- Emit the strings table
- emitDecl $ CmmData
- (Section Data strings_lbl)
- (CmmStaticsRaw strings_lbl strings)
-
- -- Emit the list of IPE buffer entries
- emitDecl $ CmmData
- (Section Data entries_lbl)
- (CmmStaticsRaw entries_lbl entries)
-
- -- Emit the IPE buffer list node
- emitDecl $ CmmData
- (Section Data ipe_buffer_lbl)
- (CmmStaticsRaw ipe_buffer_lbl ipe_buffer_node)
-
--- | Emit the fields of an IpeBufferEntry struct for each entry in a given list.
-toIpeBufferEntries ::
- ByteOrder -- ^ Byte order to write the data in
- -> [CgInfoProvEnt] -- ^ List of IPE buffer entries
- -> BS.ByteString
-toIpeBufferEntries byte_order cg_ipes =
- BSL.toStrict . BSB.toLazyByteString . mconcat
- $ map (mconcat . map word32Builder . to_ipe_buf_ent) cg_ipes
- where
- to_ipe_buf_ent :: CgInfoProvEnt -> [Word32]
- to_ipe_buf_ent cg_ipe =
- [ ipeTableName cg_ipe
- , ipeClosureDesc cg_ipe
- , ipeTypeDesc cg_ipe
- , ipeLabel cg_ipe
- , ipeModuleName cg_ipe
- , ipeSrcFile cg_ipe
- , ipeSrcSpan cg_ipe
- , 0 -- padding
- ]
-
- word32Builder :: Word32 -> BSB.Builder
- word32Builder = case byte_order of
- BigEndian -> BSB.word32BE
- LittleEndian -> BSB.word32LE
+ let (cg_ipes, strtab) = flip runState emptyStringTable $ do
+ module_name <- lookupStringTable $ ST.pack $ renderWithContext ctx (ppr this_mod)
+ mapM (toCgIPE platform ctx module_name) ents
+
+ let -- Emit the fields of an IpeBufferEntry struct.
+ toIpeBufferEntry :: CgInfoProvEnt -> [CmmLit]
+ toIpeBufferEntry cg_ipe =
+ [ CmmLabel (ipeInfoTablePtr cg_ipe)
+ , strtab_offset (ipeTableName cg_ipe)
+ , strtab_offset (ipeClosureDesc cg_ipe)
+ , strtab_offset (ipeTypeDesc cg_ipe)
+ , strtab_offset (ipeLabel cg_ipe)
+ , strtab_offset (ipeModuleName cg_ipe)
+ , strtab_offset (ipeSrcFile cg_ipe)
+ , strtab_offset (ipeSrcSpan cg_ipe)
+ , int32 0
+ ]
+
+ int n = mkIntCLit platform n
+ int32 n = CmmInt n W32
+ strtab_offset (StrTabOffset n) = int32 (fromIntegral n)
+
+ strings <- newByteStringCLit (getStringTableStrings strtab)
+ let lits = [ zeroCLit platform -- 'next' field
+ , strings -- 'strings' field
+ , int $ length cg_ipes -- 'count' field
+ ] ++ concatMap toIpeBufferEntry cg_ipes
+ emitDataLits (mkIPELabel this_mod) lits
toCgIPE :: Platform -> SDocContext -> StrTabOffset -> InfoProvEnt -> State StringTable CgInfoProvEnt
toCgIPE platform ctx module_name ipe = do
@@ -198,7 +77,7 @@ toCgIPE platform ctx module_name ipe = do
coords = renderWithContext ctx (pprUserRealSpan False span)
in (file, coords)
label <- lookupStringTable $ ST.pack label_str
- src_file <- lookupStringTable src_loc_file
+ src_file <- lookupStringTable $ src_loc_file
src_span <- lookupStringTable $ ST.pack src_loc_span
return $ CgInfoProvEnt { ipeInfoTablePtr = infoTablePtr ipe
, ipeTableName = table_name
@@ -226,7 +105,7 @@ data StringTable = StringTable { stStrings :: DList ShortText
, stLookup :: !(M.Map ShortText StrTabOffset)
}
-type StrTabOffset = Word32
+newtype StrTabOffset = StrTabOffset Int
emptyStringTable :: StringTable
emptyStringTable =
@@ -251,50 +130,9 @@ lookupStringTable str = state $ \st ->
, stLength = stLength st + ST.byteLength str + 1
, stLookup = M.insert str res (stLookup st)
}
- res = fromIntegral (stLength st)
+ res = StrTabOffset (stLength st)
in (res, st')
-do_compress :: Int
-compress :: Int -> BS.ByteString -> BS.ByteString
-#if !defined(HAVE_LIBZSTD)
-do_compress = 0
-compress _ bs = bs
-#else
-do_compress = 1
-
-compress clvl (BSI.PS srcForeignPtr off len) = unsafePerformIO $
- withForeignPtr srcForeignPtr $ \srcPtr -> do
- maxCompressedSize <- zstd_compress_bound $ fromIntegral len
- dstForeignPtr <- BSI.mallocByteString (fromIntegral maxCompressedSize)
- withForeignPtr dstForeignPtr $ \dstPtr -> do
- compressedSize <- fromIntegral <$>
- zstd_compress
- dstPtr
- maxCompressedSize
- (srcPtr `plusPtr` off)
- (fromIntegral len)
- (fromIntegral clvl)
- BSI.create compressedSize $ \p -> BSI.memcpy p dstPtr compressedSize
-
-foreign import ccall unsafe "ZSTD_compress"
- zstd_compress ::
- Ptr dst -- ^ Destination buffer
- -> CSize -- ^ Capacity of destination buffer
- -> Ptr src -- ^ Source buffer
- -> CSize -- ^ Size of source buffer
- -> CInt -- ^ Compression level
- -> IO CSize
-
--- | Compute the maximum compressed size for a given source buffer size
-foreign import ccall unsafe "ZSTD_compressBound"
- zstd_compress_bound ::
- CSize -- ^ Size of source buffer
- -> IO CSize
-#endif
-
-defaultCompressionLevel :: Int
-defaultCompressionLevel = 3
-
newtype DList a = DList ([a] -> [a])
emptyDList :: DList a
=====================================
compiler/ghc.cabal.in
=====================================
@@ -57,10 +57,6 @@ Flag build-tool-depends
Description: Use build-tool-depends
Default: True
-Flag with-libzstd
- Default: False
- Manual: True
-
-- While the boot compiler fixes ghc's unit-id to `ghc`, the stage0 compiler must still be compiled with `-this-unit-id ghc`
Flag hadrian-stage0
Description: Enable if compiling the stage0 compiler with hadrian
@@ -81,10 +77,6 @@ Library
if flag(build-tool-depends)
build-tool-depends: alex:alex >= 3.2.6, happy:happy >= 1.20.0, genprimopcode:genprimopcode, deriveConstants:deriveConstants
- if flag(with-libzstd)
- extra-libraries: zstd
- CPP-Options: -DHAVE_LIBZSTD
-
Build-Depends: base >= 4.11 && < 4.19,
deepseq >= 1.4 && < 1.5,
directory >= 1 && < 1.4,
=====================================
configure.ac
=====================================
@@ -1105,10 +1105,6 @@ AC_DEFINE_UNQUOTED([RTS_LINKER_USE_MMAP], [$RtsLinkerUseMmap],
GHC_ADJUSTORS_METHOD([Target])
AC_SUBST([UseLibffiForAdjustors])
-dnl ** IPE data compression
-dnl --------------------------------------------------------------
-FP_FIND_LIBZSTD
-
dnl ** Other RTS features
dnl --------------------------------------------------------------
FP_FIND_LIBDW
@@ -1254,17 +1250,6 @@ echo "\
makeinfo : $MAKEINFO
git : $GIT
cabal-install : $CABAL
-"
-
-USING_LIBNUMA=$(if [ "$HaveLibNuma" = "1" ]; then echo "YES"; else echo "NO"; fi;)
-USING_LIBZSTD=$(if [ "$HaveLibZstd" = "1" ]; then echo "YES"; else echo "NO"; fi;)
-USING_LIBDW=$(if [ "$USE_LIBDW" = "1" ]; then echo "YES"; else echo "NO"; fi;)
-
-echo "\
- Using optional dependencies:
- libnuma : $USING_LIBNUMA
- libzstd : $USING_LIBZSTD
- libdw : $USING_LIBDW
Using LLVM tools
clang : $ClangCmd
=====================================
docs/users_guide/9.8.1-notes.rst
=====================================
@@ -128,17 +128,6 @@ Compiler
GHC used to accept the contradictory ``Int~Bool`` in the type signature, but reject the ``Int~Bool`` constraint that arises from typechecking the definition itself. Now it accepts both. More details in `GHC ticket #23413 <https://gitlab.haskell.org/ghc/ghc/-/issues/23413>`_, which gives examples of the previous inconsistency. GHC now implements the "PermissivePlan" described in that ticket.
-- The compiler may now be configured to compress the debugging information
- included in :ghc-flag:`-finfo-table-map` enabled binaries. To do so, one must
- build GHC from source (see
- `here<https://gitlab.haskell.org/ghc/ghc/-/wikis/building>` for directions)
- and supply the ``--enable-ipe-data-compression`` flag to the ``configure``
- script. **Note**: This feature requires that the machine building GHC has
- `libzstd <https://github.com/facebook/zstd/>`_ installed.
-
- In a test compiling GHC itself, the size of the :ghc-flag:`-finfo-table-map`
- enabled build results was reduced by over 20% when compression was enabled.
-
GHCi
~~~~
=====================================
docs/users_guide/debug-info.rst
=====================================
@@ -370,23 +370,9 @@ to a source location. This lookup table is generated by using the ``-finfo-table
also want more precise information about constructor info tables then you
should also use :ghc-flag:`-fdistinct-constructor-tables`.
- The :ghc-flag:`-finfo-table-map` flag will increase the binary size by quite
- a lot, depending on how big your project is. For compiling a project the
- size of GHC the overhead was about 200 megabytes.
-
- :since: 9.8
-
- If you wish to reduce the size of :ghc-flag:`-finfo-table-map` enabled
- binaries, consider building GHC from source and supplying the
- ``--enable-ipe-data-compression`` flag to the ``configure`` script. This
- will cause GHC to compress the :ghc-flag:`-finfo-table-map` related
- debugging information included in binaries using the `libzstd
- <https://github.com/facebook/zstd/>`_ compression library. **Note**: This
- feature requires that the machine building GHC has
- `libzstd <https://github.com/facebook/zstd/>`_ installed.
-
- In a test compiling GHC itself, the size of the :ghc-flag:`-finfo-table-map`
- enabled build results was reduced by over 20% when compression was enabled.
+ This flag will increase the binary size by quite a lot, depending on how
+ big your project is. For compiling a project the size of GHC the overhead was
+ about 200 megabytes.
.. ghc-flag:: -fdistinct-constructor-tables
:shortdesc: Generate a fresh info table for each usage
=====================================
hadrian/cfg/system.config.in
=====================================
@@ -199,14 +199,10 @@ libdw-lib-dir = @LibdwLibDir@
libnuma-include-dir = @LibNumaIncludeDir@
libnuma-lib-dir = @LibNumaLibDir@
-libzstd-include-dir = @LibZstdIncludeDir@
-libzstd-lib-dir = @LibZstdLibDir@
-
# Optional Dependencies:
#=======================
use-lib-dw = @UseLibdw@
-use-lib-zstd = @UseLibZstd@
use-lib-numa = @UseLibNuma@
use-lib-m = @UseLibm@
use-lib-rt = @UseLibrt@
=====================================
hadrian/src/Oracles/Flag.hs
=====================================
@@ -35,7 +35,6 @@ data Flag = ArSupportsAtFile
| UseLibffiForAdjustors
| UseLibdw
| UseLibnuma
- | UseLibzstd
| UseLibm
| UseLibrt
| UseLibdl
@@ -66,7 +65,6 @@ flag f = do
UseLibffiForAdjustors -> "use-libffi-for-adjustors"
UseLibdw -> "use-lib-dw"
UseLibnuma -> "use-lib-numa"
- UseLibzstd -> "use-lib-zstd"
UseLibm -> "use-lib-m"
UseLibrt -> "use-lib-rt"
UseLibdl -> "use-lib-dl"
=====================================
hadrian/src/Oracles/Setting.hs
=====================================
@@ -60,8 +60,6 @@ data Setting = BuildArch
| LibdwLibDir
| LibnumaIncludeDir
| LibnumaLibDir
- | LibZstdIncludeDir
- | LibZstdLibDir
| LlvmTarget
| ProjectGitCommitId
| ProjectName
@@ -163,8 +161,6 @@ setting key = lookupSystemConfig $ case key of
LibdwLibDir -> "libdw-lib-dir"
LibnumaIncludeDir -> "libnuma-include-dir"
LibnumaLibDir -> "libnuma-lib-dir"
- LibZstdIncludeDir -> "libzstd-include-dir"
- LibZstdLibDir -> "libzstd-lib-dir"
LlvmTarget -> "llvm-target"
ProjectGitCommitId -> "project-git-commit-id"
ProjectName -> "project-name"
=====================================
hadrian/src/Rules/Generate.hs
=====================================
@@ -316,7 +316,6 @@ rtsCabalFlags = mconcat
, flag "CabalNeedLibpthread" UseLibpthread
, flag "CabalHaveLibbfd" UseLibbfd
, flag "CabalHaveLibNuma" UseLibnuma
- , flag "CabalHaveLibZstd" UseLibzstd
, flag "CabalNeedLibatomic" NeedLibatomic
, flag "CabalUseSystemLibFFI" UseSystemFfi
, flag "CabalLibffiAdjustors" UseLibffiForAdjustors
=====================================
hadrian/src/Settings/Packages.hs
=====================================
@@ -74,7 +74,6 @@ packageArgs = do
[ andM [expr ghcWithInterpreter, notStage0] `cabalFlag` "internal-interpreter"
, notM cross `cabalFlag` "terminfo"
, arg "-build-tool-depends"
- , flag UseLibzstd `cabalFlag` "with-libzstd"
-- ROMES: While the boot compiler is not updated wrt -this-unit-id
-- not being fixed to `ghc`, when building stage0, we must set
-- -this-unit-id to `ghc` because the boot compiler expects that.
@@ -289,8 +288,6 @@ rtsPackageArgs = package rts ? do
libdwLibraryDir <- getSetting LibdwLibDir
libnumaIncludeDir <- getSetting LibnumaIncludeDir
libnumaLibraryDir <- getSetting LibnumaLibDir
- libzstdIncludeDir <- getSetting LibZstdIncludeDir
- libzstdLibraryDir <- getSetting LibZstdLibDir
-- Arguments passed to GHC when compiling C and .cmm sources.
let ghcArgs = mconcat
@@ -397,7 +394,6 @@ rtsPackageArgs = package rts ? do
, builder (Cabal Setup) ? mconcat
[ cabalExtraDirs libdwIncludeDir libdwLibraryDir
, cabalExtraDirs libnumaIncludeDir libnumaLibraryDir
- , cabalExtraDirs libzstdIncludeDir libzstdLibraryDir
, useSystemFfi ? cabalExtraDirs ffiIncludeDir ffiLibraryDir
]
, builder (Cc (FindCDependencies CDep)) ? cArgs
=====================================
libraries/base/System/Posix/Internals.hs
=====================================
@@ -499,71 +499,71 @@ foreign import ccall unsafe "HsBase.h __hscore_lstat"
#if defined(javascript_HOST_ARCH)
foreign import javascript unsafe "(() => { return rts_isThreaded; })" rtsIsThreaded_ :: Int
-foreign import javascript interruptible "(($1_1, $2_2, $2, $c) => { return h$base_access($1_1,$2_2,$2,$c); })"
+foreign import javascript interruptible "h$base_access"
c_access :: CString -> CInt -> IO CInt
-foreign import javascript interruptible "(($1_1, $2_2, $2, $c) => { return h$base_chmod($1_1,$2_2,$2,$c); })"
+foreign import javascript interruptible "h$base_chmod"
c_chmod :: CString -> CMode -> IO CInt
-foreign import javascript interruptible "(($1,$c) => { return h$base_close($1,$c); })"
+foreign import javascript interruptible "h$base_close"
c_close :: CInt -> IO CInt
-foreign import javascript interruptible "(($1, $c) => { return h$base_creat($1,$c); })"
+foreign import javascript interruptible "h$base_creat"
c_creat :: CString -> CMode -> IO CInt
-foreign import javascript interruptible "(($1, $c) => { return h$base_dup($1, $c); })"
+foreign import javascript interruptible "h$base_dup"
c_dup :: CInt -> IO CInt
-foreign import javascript interruptible "(($1, $2, $c) => { return h$base_dup2($1,$2,$c); })"
+foreign import javascript interruptible "h$base_dup2"
c_dup2 :: CInt -> CInt -> IO CInt
-foreign import javascript interruptible "(($1,$2_1,$2_2,$c) => { return h$base_fstat($1,$2_1,$2_2,$c); })" -- fixme wrong type
+foreign import javascript interruptible "h$base_fstat" -- fixme wrong type
c_fstat :: CInt -> Ptr CStat -> IO CInt
-foreign import javascript unsafe "(($1) => { return h$base_isatty($1); })"
+foreign import javascript unsafe "h$base_isatty"
c_isatty :: CInt -> IO CInt
-foreign import javascript interruptible "(($1,$2_1,$2_2,$3,$c) => { return h$base_lseek($1,$2_1,$2_2,$3,$c); })"
+foreign import javascript interruptible "h$base_lseek"
c_lseek :: CInt -> COff -> CInt -> IO COff
-foreign import javascript interruptible "(($1_1,$1_2,$2_1,$2_2,$c) => { return h$base_lstat($1_1,$1_2,$2_1,$2_2,$c); })" -- fixme wrong type
+foreign import javascript interruptible "h$base_lstat" -- fixme wrong type
lstat :: CFilePath -> Ptr CStat -> IO CInt
-foreign import javascript interruptible "(($1_1,$1_2,$2,$3,$c) => { return h$base_open($1_1,$1_2,$2,$3,$c); })"
+foreign import javascript interruptible "h$base_open"
c_open :: CFilePath -> CInt -> CMode -> IO CInt
-foreign import javascript interruptible "(($1_1,$1_2,$2,$3,$c) => { return h$base_open($1_1,$1_2,$2,$3,$c); })"
+foreign import javascript interruptible "h$base_open"
c_interruptible_open_ :: CFilePath -> CInt -> CMode -> IO CInt
-foreign import javascript interruptible "(($1_1,$1_2,$2,$3,$c) => { return h$base_open($1_1,$1_2,$2,$3,$c); })"
+foreign import javascript interruptible "h$base_open"
c_safe_open_ :: CFilePath -> CInt -> CMode -> IO CInt
-foreign import javascript interruptible "(($1,$2_1,$2_2,$3,$c) => { return h$base_read($1,$2_1,$2_2,$3,$c); })"
+foreign import javascript interruptible "h$base_read"
c_read :: CInt -> Ptr Word8 -> CSize -> IO CSsize
-foreign import javascript interruptible "(($1,$2_1,$2_2,$3,$c) => { return h$base_read($1,$2_1,$2_2,$3,$c); })"
+foreign import javascript interruptible "h$base_read"
c_safe_read :: CInt -> Ptr Word8 -> CSize -> IO CSsize
-foreign import javascript interruptible "(($1_1,$1_2,$2_1,$2_2,$c) => { return h$base_stat($1_1,$1_2,$2_1,$2_2,$c); })" -- fixme wrong type
+foreign import javascript interruptible "h$base_stat" -- fixme wrong type
c_stat :: CFilePath -> Ptr CStat -> IO CInt
-foreign import javascript unsafe "(($1) => { return h$base_umask($1); })"
+foreign import javascript unsafe "h$base_umask"
c_umask :: CMode -> IO CMode
-foreign import javascript interruptible "(($1,$2_1,$2_2,$3,$c) => { return h$base_write($1,$2_1,$2_2,$3,$c); })"
+foreign import javascript interruptible "h$base_write"
c_write :: CInt -> Ptr Word8 -> CSize -> IO CSsize
-foreign import javascript interruptible "(($1,$2_1,$2_2,$3,$c) => { return h$base_write($1,$2_1,$2_2,$3,$c); })"
+foreign import javascript interruptible "h$base_write"
c_safe_write :: CInt -> Ptr Word8 -> CSize -> IO CSsize
-foreign import javascript interruptible "(($1,$2_1,$2_2,$c) => { return h$base_ftruncate($1,$2_1,$2_2,$c); })" -- fixme COff
+foreign import javascript interruptible "h$base_ftruncate" -- fixme COff
c_ftruncate :: CInt -> FileOffset -> IO CInt
-foreign import javascript interruptible "(($1_1,$1_2,$c) => { return h$base_unlink($1_1,$1_2,$c); })"
+foreign import javascript interruptible "h$base_unlink"
c_unlink :: CString -> IO CInt
foreign import javascript unsafe "h$base_getpid"
c_getpid :: IO CPid
-- foreign import ccall unsafe "HsBase.h fork"
-- c_fork :: IO CPid
-foreign import javascript interruptible "($1_1,$1_2,$2_1,$2_2,$c) => { return h$base_link($1_1,$1_2,$2_1,$2_2,$c); })"
+foreign import javascript interruptible "h$base_link"
c_link :: CString -> CString -> IO CInt
-foreign import javascript interruptible "(($1_1,$1_2,$2,$c) => { return h$base_mkfifo($1_1,$1_2,$2,$c); })"
+foreign import javascript interruptible "h$base_mkfifo"
c_mkfifo :: CString -> CMode -> IO CInt
-foreign import javascript interruptible "(($1_1,$1_2,$c) => { return h$base_pipe($1_1,$1_2,$c); })"
+foreign import javascript interruptible "h$base_pipe"
c_pipe :: Ptr CInt -> IO CInt
-foreign import javascript unsafe "(($1_1,$1_2) => { return h$base_sigemptyset($1_1,$1_2); })"
+foreign import javascript unsafe "h$base_sigemptyset"
c_sigemptyset :: Ptr CSigset -> IO CInt
-foreign import javascript unsafe "(($1_1,$1_2,$2) => { return h$base_sigaddset($1_1,$1_2,$2); })"
+foreign import javascript unsafe "h$base_sigaddset"
c_sigaddset :: Ptr CSigset -> CInt -> IO CInt
-foreign import javascript unsafe "(($1,$2_1,$2_2,$3_1,$3_2) => { return h$base_sigprocmask($1,$2_1,$2_2,$3_1,$3_2); })"
+foreign import javascript unsafe "h$base_sigprocmask"
c_sigprocmask :: CInt -> Ptr CSigset -> Ptr CSigset -> IO CInt
-foreign import javascript unsafe "(($1,$2_1,$2_2) => { return h$base_tcgetattr($1,$2_1,$2_2); })"
+foreign import javascript unsafe "h$base_tcgetattr"
c_tcgetattr :: CInt -> Ptr CTermios -> IO CInt
-foreign import javascript unsafe "(($1,$2,$3_1,$3_2) => { return h$base_tcsetattr($1,$2,$3_1,$3_2); })"
+foreign import javascript unsafe "h$base_tcsetattr"
c_tcsetattr :: CInt -> CInt -> Ptr CTermios -> IO CInt
-foreign import javascript unsafe "(($1_1,$1_2,$2_1,$2_2) => { return h$base_utime($1_1,$1_2,$2_1,$2_2); })" -- should this be async?
+foreign import javascript unsafe "h$base_utime" -- should this be async?
c_utime :: CString -> Ptr CUtimbuf -> IO CInt
-foreign import javascript interruptible "(($1,$2_1,$2_2,$3,$c) => { return h$base_waitpid($1,$2_1,$2_2,$3,$c); })"
+foreign import javascript interruptible "h$base_waitpid"
c_waitpid :: CPid -> Ptr CInt -> CInt -> IO CPid
foreign import javascript unsafe "(() => { return h$base_o_rdonly; })" o_RDONLY :: CInt
@@ -577,11 +577,11 @@ foreign import javascript unsafe "(() => { return h$base_o_noctty; })" o_NOCTT
foreign import javascript unsafe "(() => { return h$base_o_nonblock; })" o_NONBLOCK :: CInt
foreign import javascript unsafe "(() => { return h$base_o_binary; })" o_BINARY :: CInt
-foreign import javascript unsafe "(($1) => { return h$base_c_s_isreg($1); })" c_s_isreg :: CMode -> CInt
-foreign import javascript unsafe "(($1) => { return h$base_c_s_ischr($1); })" c_s_ischr :: CMode -> CInt
-foreign import javascript unsafe "(($1) => { return h$base_c_s_isblk($1); })" c_s_isblk :: CMode -> CInt
-foreign import javascript unsafe "(($1) => { return h$base_c_s_isdir($1); })" c_s_isdir :: CMode -> CInt
-foreign import javascript unsafe "(($1) => { return h$base_c_s_isfifo($1); })" c_s_isfifo :: CMode -> CInt
+foreign import javascript unsafe "h$base_c_s_isreg" c_s_isreg :: CMode -> CInt
+foreign import javascript unsafe "h$base_c_s_ischr" c_s_ischr :: CMode -> CInt
+foreign import javascript unsafe "h$base_c_s_isblk" c_s_isblk :: CMode -> CInt
+foreign import javascript unsafe "h$base_c_s_isdir" c_s_isdir :: CMode -> CInt
+foreign import javascript unsafe "h$base_c_s_isfifo" c_s_isfifo :: CMode -> CInt
s_isreg :: CMode -> Bool
s_isreg cm = c_s_isreg cm /= 0
@@ -595,11 +595,11 @@ s_isfifo :: CMode -> Bool
s_isfifo cm = c_s_isfifo cm /= 0
foreign import javascript unsafe "(() => { return h$base_sizeof_stat; })" sizeof_stat :: Int
-foreign import javascript unsafe "(($1_1,$1_2) => { return h$base_st_mtime($1_1,$1_2); })" st_mtime :: Ptr CStat -> IO CTime
-foreign import javascript unsafe "(($1_1,$1_2) => { return h$base_st_size($1_1,$1_2); })" st_size :: Ptr CStat -> IO Int64
-foreign import javascript unsafe "(($1_1,$1_2) => { return h$base_st_mode($1_1,$1_2); })" st_mode :: Ptr CStat -> IO CMode
-foreign import javascript unsafe "(($1_1,$1_2) => { return h$base_st_dev($1_1,$1_2); })" st_dev :: Ptr CStat -> IO CDev
-foreign import javascript unsafe "(($1_1,$1_2) => { return h$base_st_ino($1_1,$1_2); })" st_ino :: Ptr CStat -> IO CIno
+foreign import javascript unsafe "h$base_st_mtime" st_mtime :: Ptr CStat -> IO CTime
+foreign import javascript unsafe "h$base_st_size" st_size :: Ptr CStat -> IO Int64
+foreign import javascript unsafe "h$base_st_mode" st_mode :: Ptr CStat -> IO CMode
+foreign import javascript unsafe "h$base_st_dev" st_dev :: Ptr CStat -> IO CDev
+foreign import javascript unsafe "h$base_st_ino" st_ino :: Ptr CStat -> IO CIno
foreign import javascript unsafe "(() => { return h$base_echo; })" const_echo :: CInt
foreign import javascript unsafe "(() => { return h$base_tcsanow; })" const_tcsanow :: CInt
@@ -615,21 +615,21 @@ foreign import javascript unsafe "(() => { return h$base_f_setfd; })" co
foreign import javascript unsafe "(() => { return h$base_fd_cloexec; })" const_fd_cloexec :: CLong
foreign import javascript unsafe "(() => { return h$base_sizeof_termios; })" sizeof_termios :: Int
foreign import javascript unsafe "(() => { return h$base_sizeof_sigset_t; })" sizeof_sigset_t :: Int
-foreign import javascript unsafe "(($1_1,$1_2) => { return h$base_lflag($1_1,$1_2); })" c_lflag :: Ptr CTermios -> IO CTcflag
-foreign import javascript unsafe "(($1_1,$1_2,$2) => { return h$base_poke_lflag($1_1,$1_2,$2); })" poke_c_lflag :: Ptr CTermios -> CTcflag -> IO ()
-foreign import javascript unsafe "(($1_1,$1_2) => { return h$base_ptr_c_cc($1_1,$1_2); })" ptr_c_cc :: Ptr CTermios -> IO (Ptr Word8)
+foreign import javascript unsafe "h$base_lflag" c_lflag :: Ptr CTermios -> IO CTcflag
+foreign import javascript unsafe "h$base_poke_lflag" poke_c_lflag :: Ptr CTermios -> CTcflag -> IO ()
+foreign import javascript unsafe "h$base_ptr_c_cc" ptr_c_cc :: Ptr CTermios -> IO (Ptr Word8)
s_issock :: CMode -> Bool
s_issock cmode = c_s_issock cmode /= 0
-foreign import javascript unsafe "(($1) => { return h$base_c_s_issock($1); })" c_s_issock :: CMode -> CInt
+foreign import javascript unsafe "h$base_c_s_issock" c_s_issock :: CMode -> CInt
foreign import javascript unsafe "(() => { return h$base_default_buffer_size; })" dEFAULT_BUFFER_SIZE :: Int
foreign import javascript unsafe "(() => { return h$base_SEEK_CUR; })" sEEK_CUR :: CInt
foreign import javascript unsafe "(() => { return h$base_SEEK_SET; })" sEEK_SET :: CInt
foreign import javascript unsafe "(() => { return h$base_SEEK_END; })" sEEK_END :: CInt
-- fixme, unclear if these can be supported, remove?
-foreign import javascript unsafe "(($1, $2) => { return h$base_c_fcntl_read($1,$2); })" c_fcntl_read :: CInt -> CInt -> IO CInt
-foreign import javascript unsafe "(($1, $2, $3) => { return h$base_c_fcntl_write($1,$2,$3); })" c_fcntl_write :: CInt -> CInt -> CLong -> IO CInt
-foreign import javascript unsafe "(($1,$2,$3_1,$3_2) => { return h$base_c_fcntl_lock($1,$2,$3_1,$3_2); })" c_fcntl_lock :: CInt -> CInt -> Ptr CFLock -> IO CInt
+foreign import javascript unsafe "h$base_c_fcntl_read" c_fcntl_read :: CInt -> CInt -> IO CInt
+foreign import javascript unsafe "h$base_c_fcntl_write" c_fcntl_write :: CInt -> CInt -> CLong -> IO CInt
+foreign import javascript unsafe "h$base_c_fcntl_lock" c_fcntl_lock :: CInt -> CInt -> Ptr CFLock -> IO CInt
#else
=====================================
m4/fp_find_libnuma.m4
=====================================
@@ -30,7 +30,7 @@ AC_DEFUN([FP_FIND_LIBNUMA],
[Enable NUMA memory policy and thread affinity support in the
runtime system via numactl's libnuma [default=auto]])])
- if test "$enable_numa" = "yes" ; then
+ if test "$enable_numa" != "no" ; then
CFLAGS2="$CFLAGS"
CFLAGS="$LIBNUMA_CFLAGS $CFLAGS"
LDFLAGS2="$LDFLAGS"
@@ -41,7 +41,7 @@ AC_DEFUN([FP_FIND_LIBNUMA],
if test "$ac_cv_header_numa_h$ac_cv_header_numaif_h" = "yesyes" ; then
AC_CHECK_LIB(numa, numa_available,HaveLibNuma=1)
fi
- if test "$HaveLibNuma" = "0" ; then
+ if test "$enable_numa:$HaveLibNuma" = "yes:0" ; then
AC_MSG_ERROR([Cannot find system libnuma (required by --enable-numa)])
fi
=====================================
m4/fp_find_libzstd.m4 deleted
=====================================
@@ -1,79 +0,0 @@
-AC_DEFUN([FP_FIND_LIBZSTD],
-[
- dnl ** Is IPE data compression enabled?
- dnl --------------------------------------------------------------
- AC_ARG_ENABLE(
- ipe-data-compression,
- [AS_HELP_STRING(
- [--enable-ipe-data-compression],
- [Enable compression of info table provenance entries using the
- zstd compression library [default=no]]
- )],
- [FP_CAPITALIZE_YES_NO(["$enableval"], [EnableIpeDataCompression])],
- [EnableIpeDataCompression=NO]
- )
-
- HaveLibZstd=0
- if test "$EnableIpeDataCompression" = "YES"; then
- dnl ** Have zstd?
- dnl --------------------------------------------------------------
- AC_ARG_WITH(
- libzstd-libraries,
- [AS_HELP_STRING(
- [--with-libzstd-libraries=ARG],
- [Find libraries for libzstd in ARG [default=system default]]
- )],
- [
- LibZstdLibDir="$withval"
- LIBZSTD_LDFLAGS="-L$withval"
- ]
- )
-
- AC_SUBST(LibZstdLibDir)
-
- AC_ARG_WITH(
- libzstd-includes,
- [AS_HELP_STRING(
- [--with-libzstd-includes=ARG],
- [Find includes for libzstd in ARG [default=system default]]
- )],
- [
- LibZstdIncludeDir="$withval"
- LIBZSTD_CFLAGS="-I$withval"
- ]
- )
-
- AC_SUBST(LibZstdIncludeDir)
-
- CFLAGS2="$CFLAGS"
- CFLAGS="$LIBZSTD_CFLAGS $CFLAGS"
- LDFLAGS2="$LDFLAGS"
- LDFLAGS="$LIBZSTD_LDFLAGS $LDFLAGS"
-
- AC_CHECK_HEADERS([zstd.h])
-
- if test "$ac_cv_header_zstd_h" = "yes" ; then
- AC_CHECK_LIB(zstd,ZSTD_versionString,HaveLibZstd=1)
- fi
- if test "$HaveLibZstd" = "0" ; then
- AC_MSG_ERROR(
- [Cannot find system libzstd (required by
- --enable-ipe-data-compression)]
- )
- fi
-
- CFLAGS="$CFLAGS2"
- LDFLAGS="$LDFLAGS2"
- fi
-
- AC_DEFINE_UNQUOTED([HAVE_LIBZSTD], [$HaveLibZstd], [Define to 1 if you
- wish to compress IPE data in compiler results (requires libzstd)])
-
- if test $HaveLibZstd = "1" ; then
- AC_SUBST([UseLibZstd],[YES])
- AC_SUBST([CabalHaveLibZstd],[True])
- else
- AC_SUBST([UseLibZstd],[NO])
- AC_SUBST([CabalHaveLibZstd],[False])
- fi
-])
=====================================
rts/IPE.c
=====================================
@@ -20,10 +20,6 @@
#include <fs_rts.h>
#include <string.h>
-#if HAVE_LIBZSTD == 1
-#include <zstd.h>
-#endif
-
#if defined(TRACING)
#include "Trace.h"
#endif
@@ -40,9 +36,8 @@ collecting IPE lists on registration.
It's a singly linked list of IPE list buffers (IpeBufferListNode). These are
emitted by the code generator, with generally one produced per module. Each
-contains a pointer to a list of IPE entries, a pointer to a list of info
-table pointers, and a link field (which is used to link buffers onto the
-pending list.
+contains an array of IPE entries and a link field (which is used to link
+buffers onto the pending list.
For reasons of space efficiency, IPE entries are represented slightly
differently in the object file than the InfoProvEnt which we ultimately expose
@@ -82,23 +77,23 @@ void exitIpe(void) { }
#endif // THREADED_RTS
-static InfoProvEnt ipeBufferEntryToIpe(const char *strings, const StgInfoTable *tbl, const IpeBufferEntry ent)
+static InfoProvEnt ipeBufferEntryToIpe(const IpeBufferListNode *node, const IpeBufferEntry *ent)
{
+ const char *strings = node->string_table;
return (InfoProvEnt) {
- .info = tbl,
+ .info = ent->info,
.prov = {
- .table_name = &strings[ent.table_name],
- .closure_desc = &strings[ent.closure_desc],
- .ty_desc = &strings[ent.ty_desc],
- .label = &strings[ent.label],
- .module = &strings[ent.module_name],
- .src_file = &strings[ent.src_file],
- .src_span = &strings[ent.src_span]
+ .table_name = &strings[ent->table_name],
+ .closure_desc = &strings[ent->closure_desc],
+ .ty_desc = &strings[ent->ty_desc],
+ .label = &strings[ent->label],
+ .module = &strings[ent->module_name],
+ .src_file = &strings[ent->src_file],
+ .src_span = &strings[ent->src_span]
}
};
}
-
#if defined(TRACING)
static void traceIPEFromHashTable(void *data STG_UNUSED, StgWord key STG_UNUSED,
const void *value) {
@@ -110,18 +105,8 @@ void dumpIPEToEventLog(void) {
// Dump pending entries
IpeBufferListNode *cursor = RELAXED_LOAD(&ipeBufferList);
while (cursor != NULL) {
- IpeBufferEntry *entries;
- char *strings;
-
- // Decompress if compressed
- decompressIPEBufferListNodeIfCompressed(cursor, &entries, &strings);
-
for (uint32_t i = 0; i < cursor->count; i++) {
- const InfoProvEnt ent = ipeBufferEntryToIpe(
- strings,
- cursor->tables[i],
- entries[i]
- );
+ const InfoProvEnt ent = ipeBufferEntryToIpe(cursor, &cursor->entries[i]);
traceIPE(&ent);
}
cursor = cursor->next;
@@ -135,7 +120,6 @@ void dumpIPEToEventLog(void) {
RELEASE_LOCK(&ipeMapLock);
}
-
#else
void dumpIPEToEventLog(void) { }
@@ -185,84 +169,16 @@ void updateIpeMap() {
}
while (pending != NULL) {
- IpeBufferListNode *current_node = pending;
- const IpeBufferEntry *entries;
- const char *strings;
-
- // Decompress if compressed
- decompressIPEBufferListNodeIfCompressed(current_node, &entries, &strings);
-
- // Convert the on-disk IPE buffer entry representation (IpeBufferEntry)
- // into the runtime representation (InfoProvEnt)
- InfoProvEnt *ip_ents = stgMallocBytes(
- sizeof(InfoProvEnt) * current_node->count,
- "updateIpeMap: ip_ents"
- );
- for (uint32_t i = 0; i < current_node->count; i++) {
- const IpeBufferEntry ent = entries[i];
- const StgInfoTable *tbl = current_node->tables[i];
- ip_ents[i] = ipeBufferEntryToIpe(strings, tbl, ent);
- insertHashTable(ipeMap, (StgWord) tbl, &ip_ents[i]);
+ IpeBufferListNode *currentNode = pending;
+ InfoProvEnt *ip_ents = stgMallocBytes(sizeof(InfoProvEnt) * currentNode->count, "updateIpeMap");
+ for (uint32_t i = 0; i < currentNode->count; i++) {
+ const IpeBufferEntry *ent = ¤tNode->entries[i];
+ ip_ents[i] = ipeBufferEntryToIpe(currentNode, ent);
+ insertHashTable(ipeMap, (StgWord) ent->info, &ip_ents[i]);
}
- pending = current_node->next;
+ pending = currentNode->next;
}
RELEASE_LOCK(&ipeMapLock);
}
-
-/* Decompress the IPE data and strings table referenced by an IPE buffer list
-node if it is compressed. No matter whether the data is compressed, the pointers
-referenced by the 'entries_dst' and 'string_table_dst' parameters will point at
-the decompressed IPE data and string table for the given node, respectively,
-upon return from this function.
-*/
-void decompressIPEBufferListNodeIfCompressed(IpeBufferListNode *node, IpeBufferEntry **entries_dst, char **string_table_dst) {
- if (node->compressed == 1) {
- // The IPE list buffer node indicates that the strings table and
- // entries list has been compressed. If zstd is not available, fail.
- // If zstd is available, decompress.
-#if HAVE_LIBZSTD == 0
- barf("An IPE buffer list node has been compressed, but the \
- decompression library (zstd) is not available.");
-#else
- size_t compressed_sz = ZSTD_findFrameCompressedSize(
- node->string_table,
- node->string_table_size
- );
- char *decompressed_strings = stgMallocBytes(
- node->string_table_size,
- "updateIpeMap: decompressed_strings"
- );
- ZSTD_decompress(
- decompressed_strings,
- node->string_table_size,
- node->string_table,
- compressed_sz
- );
- *string_table_dst = decompressed_strings;
-
- // Decompress the IPE data
- compressed_sz = ZSTD_findFrameCompressedSize(
- node->entries,
- node->entries_size
- );
- void *decompressed_entries = stgMallocBytes(
- node->entries_size,
- "updateIpeMap: decompressed_entries"
- );
- ZSTD_decompress(
- decompressed_entries,
- node->entries_size,
- node->entries,
- compressed_sz
- );
- *entries_dst = decompressed_entries;
-#endif // HAVE_LIBZSTD == 0
-
- } else {
- // Not compressed, no need to decompress
- *entries_dst = node->entries;
- *string_table_dst = node->string_table;
- }
-}
=====================================
rts/IPE.h
=====================================
@@ -17,6 +17,5 @@ void dumpIPEToEventLog(void);
void updateIpeMap(void);
void initIpe(void);
void exitIpe(void);
-void decompressIPEBufferListNodeIfCompressed(IpeBufferListNode*, IpeBufferEntry**, char**);
#include "EndPrivate.h"
=====================================
rts/include/rts/IPE.h
=====================================
@@ -52,6 +52,9 @@ typedef uint32_t StringIdx;
// The size of this must be a multiple of the word size
// to ensure correct packing.
typedef struct {
+ // When TNTC is enabled this will point to the entry code
+ // not the info table itself.
+ const StgInfoTable *info;
StringIdx table_name;
StringIdx closure_desc;
StringIdx ty_desc;
@@ -66,23 +69,10 @@ GHC_STATIC_ASSERT(sizeof(IpeBufferEntry) % (WORD_SIZE_IN_BITS / 8) == 0, "sizeof
typedef struct IpeBufferListNode_ {
struct IpeBufferListNode_ *next;
-
// Everything below is read-only and generated by the codegen
-
- // This flag should be treated as a boolean
- StgWord compressed;
-
+ const char *string_table;
StgWord count;
-
- // When TNTC is enabled, these will point to the entry code
- // not the info table itself.
- StgInfoTable **tables;
-
- IpeBufferEntry *entries;
- StgWord entries_size; // decompressed size
-
- char *string_table;
- StgWord string_table_size; // decompressed size
+ IpeBufferEntry entries[];
} IpeBufferListNode;
void registerInfoProvList(IpeBufferListNode *node);
=====================================
rts/rts.cabal.in
=====================================
@@ -45,8 +45,6 @@ flag libdw
default: @CabalHaveLibdw@
flag libnuma
default: @CabalHaveLibNuma@
-flag libzstd
- default: @CabalHaveLibZstd@
flag leading-underscore
default: @CabalLeadingUnderscore@
flag smp
@@ -213,8 +211,6 @@ library
extra-libraries: elf dw
if flag(libnuma)
extra-libraries: numa
- if flag(libzstd)
- extra-libraries: zstd
if !flag(smp)
cpp-options: -DNOSMP
=====================================
testsuite/tests/rts/ipe/ipeEventLog_fromMap.c
=====================================
@@ -19,7 +19,7 @@ int main(int argc, char *argv[]) {
registerInfoProvList(list2);
// Query an IPE to initialize the underlying hash map.
- lookupIPE(list1->tables[0]);
+ lookupIPE(list1->entries[0].info);
// Trace all IPE events.
dumpIPEToEventLog();
=====================================
testsuite/tests/rts/ipe/ipeMap.c
=====================================
@@ -40,23 +40,15 @@ void shouldFindNothingInAnEmptyIPEMap(Capability *cap) {
}
HaskellObj shouldFindOneIfItHasBeenRegistered(Capability *cap) {
- // Allocate buffers for IPE buffer list node
- IpeBufferListNode *node = malloc(sizeof(IpeBufferListNode));
- node->tables = malloc(sizeof(StgInfoTable *));
- node->entries = malloc(sizeof(IpeBufferEntry));
-
+ IpeBufferListNode *node = malloc(sizeof(IpeBufferListNode) + sizeof(IpeBufferEntry));
StringTable st;
init_string_table(&st);
HaskellObj fortyTwo = UNTAG_CLOSURE(rts_mkInt(cap, 42));
- node->next = NULL;
- node->compressed = 0;
+ node->entries[0] = makeAnyProvEntry(cap, &st, fortyTwo, 42);
node->count = 1;
- node->tables[0] = get_itbl(fortyTwo);
- node->entries[0] = makeAnyProvEntry(cap, &st, 42);
- node->entries_size = sizeof(IpeBufferEntry);
+ node->next = NULL;
node->string_table = st.buffer;
- node->string_table_size = st.size;
registerInfoProvList(node);
@@ -80,23 +72,15 @@ HaskellObj shouldFindOneIfItHasBeenRegistered(Capability *cap) {
void shouldFindTwoIfTwoHaveBeenRegistered(Capability *cap,
HaskellObj fortyTwo) {
- // Allocate buffers for IPE buffer list node
- IpeBufferListNode *node = malloc(sizeof(IpeBufferListNode));
- node->tables = malloc(sizeof(StgInfoTable *));
- node->entries = malloc(sizeof(IpeBufferEntry));
-
+ IpeBufferListNode *node = malloc(sizeof(IpeBufferListNode) + sizeof(IpeBufferEntry));
StringTable st;
init_string_table(&st);
HaskellObj twentyThree = UNTAG_CLOSURE(rts_mkInt8(cap, 23));
- node->next = NULL;
- node->compressed = 0;
+ node->entries[0] = makeAnyProvEntry(cap, &st, twentyThree, 23);
node->count = 1;
- node->tables[0] = get_itbl(twentyThree);
- node->entries[0] = makeAnyProvEntry(cap, &st, 23);
- node->entries_size = sizeof(IpeBufferEntry);
+ node->next = NULL;
node->string_table = st.buffer;
- node->string_table_size = st.size;
registerInfoProvList(node);
@@ -119,26 +103,17 @@ void shouldFindTwoIfTwoHaveBeenRegistered(Capability *cap,
}
void shouldFindTwoFromTheSameList(Capability *cap) {
- // Allocate buffers for IPE buffer list node
- IpeBufferListNode *node = malloc(sizeof(IpeBufferListNode));
- node->tables = malloc(sizeof(StgInfoTable *) * 2);
- node->entries = malloc(sizeof(IpeBufferEntry) * 2);
-
+ IpeBufferListNode *node = malloc(sizeof(IpeBufferListNode) + 2 * sizeof(IpeBufferEntry));
StringTable st;
init_string_table(&st);
HaskellObj one = UNTAG_CLOSURE(rts_mkInt16(cap, 1));
HaskellObj two = UNTAG_CLOSURE(rts_mkInt32(cap, 2));
- node->next = NULL;
- node->compressed = 0;
+ node->entries[0] = makeAnyProvEntry(cap, &st, one, 1);
+ node->entries[1] = makeAnyProvEntry(cap, &st, two, 2);
node->count = 2;
- node->tables[0] = get_itbl(one);
- node->tables[1] = get_itbl(two);
- node->entries[0] = makeAnyProvEntry(cap, &st, 1);
- node->entries[1] = makeAnyProvEntry(cap, &st, 2);
- node->entries_size = sizeof(IpeBufferEntry) * 2;
+ node->next = NULL;
node->string_table = st.buffer;
- node->string_table_size = st.size;
registerInfoProvList(node);
=====================================
testsuite/tests/rts/ipe/ipe_lib.c
=====================================
@@ -25,8 +25,9 @@ uint32_t add_string(StringTable *st, const char *s) {
return n;
}
-IpeBufferEntry makeAnyProvEntry(Capability *cap, StringTable *st, int i) {
+IpeBufferEntry makeAnyProvEntry(Capability *cap, StringTable *st, HaskellObj closure, int i) {
IpeBufferEntry provEnt;
+ provEnt.info = get_itbl(closure);
unsigned int tableNameLength = strlen("table_name_") + 3 /* digits */ + 1 /* null character */;
char *tableName = malloc(sizeof(char) * tableNameLength);
@@ -68,27 +69,15 @@ IpeBufferEntry makeAnyProvEntry(Capability *cap, StringTable *st, int i) {
IpeBufferListNode *makeAnyProvEntries(Capability *cap, int start, int end) {
const int n = end - start;
-
- // Allocate buffers for IpeBufferListNode
- IpeBufferListNode *node = malloc(sizeof(IpeBufferListNode));
- node->tables = malloc(sizeof(StgInfoTable *) * n);
- node->entries = malloc(sizeof(IpeBufferEntry) * n);
-
+ IpeBufferListNode *node = malloc(sizeof(IpeBufferListNode) + n * sizeof(IpeBufferEntry));
StringTable st;
init_string_table(&st);
-
- // Make the entries and fill the buffers
for (int i=start; i < end; i++) {
HaskellObj closure = rts_mkInt(cap, 42);
- node->tables[i] = get_itbl(closure);
- node->entries[i] = makeAnyProvEntry(cap, &st, i);
+ node->entries[i] = makeAnyProvEntry(cap, &st, closure, i);
}
-
- // Set the rest of the fields
node->next = NULL;
- node->compressed = 0;
node->count = n;
node->string_table = st.buffer;
-
return node;
}
=====================================
testsuite/tests/rts/ipe/ipe_lib.h
=====================================
@@ -12,6 +12,6 @@ void init_string_table(StringTable *st);
uint32_t add_string(StringTable *st, const char *s);
IpeBufferListNode *makeAnyProvEntries(Capability *cap, int start, int end);
-IpeBufferEntry makeAnyProvEntry(Capability *cap, StringTable *st, int i);
+IpeBufferEntry makeAnyProvEntry(Capability *cap, StringTable *st, HaskellObj closure, int i);
void dumpIPEToEventLog(void);
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/79bd0e011088837b561c19005ce1388bc4bb1c6c...06112cd19dafdd9b68b1bb28fb93a823883b6456
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/79bd0e011088837b561c19005ce1388bc4bb1c6c...06112cd19dafdd9b68b1bb28fb93a823883b6456
You're receiving this email because of your account on gitlab.haskell.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20230607/94810ad4/attachment-0001.html>
More information about the ghc-commits
mailing list