Ben Gamari pushed to branch wip/T26166-1 at Glasgow Haskell Compiler / GHC

Commits:

7 changed files:

Changes:

  • rts/BuiltinClosures.c
    1
    +#include "Rts.h"
    
    2
    +#include "Prelude.h"
    
    3
    +#include "BuiltinClosures.h"
    
    4
    +
    
    5
    +/*
    
    6
    + * Note [CHARLIKE and INTLIKE closures]
    
    7
    + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    8
    + * These are static representations of Chars and small Ints, so that
    
    9
    + * we can remove dynamic Chars and Ints during garbage collection and
    
    10
    + * replace them with references to the static objects.
    
    11
    + */
    
    12
    +
    
    13
    +StgIntCharlikeClosure stg_INTLIKE_closure[MAX_INTLIKE - MIN_INTLIKE + 1];
    
    14
    +StgIntCharlikeClosure stg_CHARLIKE_closure[MAX_CHARLIKE - MIN_CHARLIKE + 1];
    
    15
    +
    
    16
    +void initBuiltinClosures(void) {
    
    17
    +    // INTLIKE closures
    
    18
    +    for (int i = MIN_INTLIKE; i <= MAX_INTLIKE; i++) {
    
    19
    +        StgIntCharlikeClosure *c = &stg_INTLIKE_closure[i - MIN_INTLIKE];
    
    20
    +        SET_HDR((StgClosure* ) c, Izh_con_info, CCS_SYSTEM_OR_NULL);
    
    21
    +        c->data = i;
    
    22
    +    }
    
    23
    +
    
    24
    +    // CHARLIKE closures
    
    25
    +    for (int i = MIN_CHARLIKE; i <= MAX_CHARLIKE; i++) {
    
    26
    +        StgIntCharlikeClosure *c = &stg_CHARLIKE_closure[i - MIN_CHARLIKE];
    
    27
    +        SET_HDR((StgClosure* ) c, Czh_con_info, CCS_SYSTEM_OR_NULL);
    
    28
    +        c->data = i;
    
    29
    +    }
    
    30
    +}

  • rts/BuiltinClosures.h
    1
    +/*
    
    2
    + * (c) The GHC Team, 2025-2026
    
    3
    + *
    
    4
    + * RTS/ghc-internal interface
    
    5
    + *
    
    6
    + */
    
    7
    +
    
    8
    +#pragma once
    
    9
    +
    
    10
    +#include "BeginPrivate.h"
    
    11
    +
    
    12
    +void initBuiltinClosures(void);
    
    13
    +
    
    14
    +#include "EndPrivate.h"

  • rts/RtsStartup.c
    ... ... @@ -14,6 +14,7 @@
    14 14
     #include "linker/MMap.h"
    
    15 15
     #include "RtsFlags.h"
    
    16 16
     #include "RtsUtils.h"
    
    17
    +#include "BuiltinClosures.h"
    
    17 18
     #include "Prelude.h"
    
    18 19
     #include "Printer.h"    /* DEBUG_LoadSymbols */
    
    19 20
     #include "Schedule.h"   /* initScheduler */
    
    ... ... @@ -373,6 +374,9 @@ hs_init_ghc(int *argc, char **argv[], RtsConfig rts_config)
    373 374
         traceInitEvent(traceOSProcessInfo);
    
    374 375
         flushTrace();
    
    375 376
     
    
    377
    +    /* initialize INTLIKE and CHARLIKE closures */
    
    378
    +    initBuiltinClosures();
    
    379
    +
    
    376 380
         /* initialize the storage manager */
    
    377 381
         initStorage();
    
    378 382
     
    

  • rts/StgMiscClosures.cmm
    ... ... @@ -13,8 +13,6 @@
    13 13
     #include "Cmm.h"
    
    14 14
     
    
    15 15
     import pthread_mutex_lock;
    
    16
    -import ghczminternal_GHCziInternalziTypes_Czh_info;
    
    17
    -import ghczminternal_GHCziInternalziTypes_Izh_info;
    
    18 16
     import AcquireSRWLockExclusive;
    
    19 17
     import ReleaseSRWLockExclusive;
    
    20 18
     
    
    ... ... @@ -23,7 +21,6 @@ import whitehole_lockClosure_spin;
    23 21
     import whitehole_lockClosure_yield;
    
    24 22
     #endif
    
    25 23
     
    
    26
    -
    
    27 24
     #if !defined(UnregisterisedCompiler)
    
    28 25
     import CLOSURE CCS_SYSTEM;
    
    29 26
     import CLOSURE ENT_DYN_IND_ctr;
    
    ... ... @@ -1031,554 +1028,3 @@ INFO_TABLE_CONSTR(stg_ASYNCIO_LIVE0,0,0,0,CONSTR_NOCAF,"ASYNCIO_LIVE0","ASYNCIO_
    1031 1028
     { foreign "C" barf("ASYNCIO_LIVE0 object (%p) entered!", R1) never returns; }
    
    1032 1029
     
    
    1033 1030
     CLOSURE(stg_ASYNCIO_LIVE0_closure,stg_ASYNCIO_LIVE0);
    1034
    -
    
    1035
    -/* ----------------------------------------------------------------------------
    
    1036
    -   Note [CHARLIKE and INTLIKE closures]
    
    1037
    -   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    1038
    -   These are static representations of Chars and small Ints, so that
    
    1039
    -   we can remove dynamic Chars and Ints during garbage collection and
    
    1040
    -   replace them with references to the static objects.
    
    1041
    -   ------------------------------------------------------------------------- */
    
    1042
    -
    
    1043
    -#define Char_hash_con_info ghczminternal_GHCziInternalziTypes_Czh_con_info
    
    1044
    -#define Int_hash_con_info ghczminternal_GHCziInternalziTypes_Izh_con_info
    
    1045
    -
    
    1046
    -#define CHARLIKE_HDR(n)  CLOSURE(Char_hash_con_info, n)
    
    1047
    -#define INTLIKE_HDR(n)   CLOSURE(Int_hash_con_info, n)
    
    1048
    -
    
    1049
    -section "data" {
    
    1050
    - stg_CHARLIKE_closure:
    
    1051
    -    CHARLIKE_HDR(0)
    
    1052
    -    CHARLIKE_HDR(1)
    
    1053
    -    CHARLIKE_HDR(2)
    
    1054
    -    CHARLIKE_HDR(3)
    
    1055
    -    CHARLIKE_HDR(4)
    
    1056
    -    CHARLIKE_HDR(5)
    
    1057
    -    CHARLIKE_HDR(6)
    
    1058
    -    CHARLIKE_HDR(7)
    
    1059
    -    CHARLIKE_HDR(8)
    
    1060
    -    CHARLIKE_HDR(9)
    
    1061
    -    CHARLIKE_HDR(10)
    
    1062
    -    CHARLIKE_HDR(11)
    
    1063
    -    CHARLIKE_HDR(12)
    
    1064
    -    CHARLIKE_HDR(13)
    
    1065
    -    CHARLIKE_HDR(14)
    
    1066
    -    CHARLIKE_HDR(15)
    
    1067
    -    CHARLIKE_HDR(16)
    
    1068
    -    CHARLIKE_HDR(17)
    
    1069
    -    CHARLIKE_HDR(18)
    
    1070
    -    CHARLIKE_HDR(19)
    
    1071
    -    CHARLIKE_HDR(20)
    
    1072
    -    CHARLIKE_HDR(21)
    
    1073
    -    CHARLIKE_HDR(22)
    
    1074
    -    CHARLIKE_HDR(23)
    
    1075
    -    CHARLIKE_HDR(24)
    
    1076
    -    CHARLIKE_HDR(25)
    
    1077
    -    CHARLIKE_HDR(26)
    
    1078
    -    CHARLIKE_HDR(27)
    
    1079
    -    CHARLIKE_HDR(28)
    
    1080
    -    CHARLIKE_HDR(29)
    
    1081
    -    CHARLIKE_HDR(30)
    
    1082
    -    CHARLIKE_HDR(31)
    
    1083
    -    CHARLIKE_HDR(32)
    
    1084
    -    CHARLIKE_HDR(33)
    
    1085
    -    CHARLIKE_HDR(34)
    
    1086
    -    CHARLIKE_HDR(35)
    
    1087
    -    CHARLIKE_HDR(36)
    
    1088
    -    CHARLIKE_HDR(37)
    
    1089
    -    CHARLIKE_HDR(38)
    
    1090
    -    CHARLIKE_HDR(39)
    
    1091
    -    CHARLIKE_HDR(40)
    
    1092
    -    CHARLIKE_HDR(41)
    
    1093
    -    CHARLIKE_HDR(42)
    
    1094
    -    CHARLIKE_HDR(43)
    
    1095
    -    CHARLIKE_HDR(44)
    
    1096
    -    CHARLIKE_HDR(45)
    
    1097
    -    CHARLIKE_HDR(46)
    
    1098
    -    CHARLIKE_HDR(47)
    
    1099
    -    CHARLIKE_HDR(48)
    
    1100
    -    CHARLIKE_HDR(49)
    
    1101
    -    CHARLIKE_HDR(50)
    
    1102
    -    CHARLIKE_HDR(51)
    
    1103
    -    CHARLIKE_HDR(52)
    
    1104
    -    CHARLIKE_HDR(53)
    
    1105
    -    CHARLIKE_HDR(54)
    
    1106
    -    CHARLIKE_HDR(55)
    
    1107
    -    CHARLIKE_HDR(56)
    
    1108
    -    CHARLIKE_HDR(57)
    
    1109
    -    CHARLIKE_HDR(58)
    
    1110
    -    CHARLIKE_HDR(59)
    
    1111
    -    CHARLIKE_HDR(60)
    
    1112
    -    CHARLIKE_HDR(61)
    
    1113
    -    CHARLIKE_HDR(62)
    
    1114
    -    CHARLIKE_HDR(63)
    
    1115
    -    CHARLIKE_HDR(64)
    
    1116
    -    CHARLIKE_HDR(65)
    
    1117
    -    CHARLIKE_HDR(66)
    
    1118
    -    CHARLIKE_HDR(67)
    
    1119
    -    CHARLIKE_HDR(68)
    
    1120
    -    CHARLIKE_HDR(69)
    
    1121
    -    CHARLIKE_HDR(70)
    
    1122
    -    CHARLIKE_HDR(71)
    
    1123
    -    CHARLIKE_HDR(72)
    
    1124
    -    CHARLIKE_HDR(73)
    
    1125
    -    CHARLIKE_HDR(74)
    
    1126
    -    CHARLIKE_HDR(75)
    
    1127
    -    CHARLIKE_HDR(76)
    
    1128
    -    CHARLIKE_HDR(77)
    
    1129
    -    CHARLIKE_HDR(78)
    
    1130
    -    CHARLIKE_HDR(79)
    
    1131
    -    CHARLIKE_HDR(80)
    
    1132
    -    CHARLIKE_HDR(81)
    
    1133
    -    CHARLIKE_HDR(82)
    
    1134
    -    CHARLIKE_HDR(83)
    
    1135
    -    CHARLIKE_HDR(84)
    
    1136
    -    CHARLIKE_HDR(85)
    
    1137
    -    CHARLIKE_HDR(86)
    
    1138
    -    CHARLIKE_HDR(87)
    
    1139
    -    CHARLIKE_HDR(88)
    
    1140
    -    CHARLIKE_HDR(89)
    
    1141
    -    CHARLIKE_HDR(90)
    
    1142
    -    CHARLIKE_HDR(91)
    
    1143
    -    CHARLIKE_HDR(92)
    
    1144
    -    CHARLIKE_HDR(93)
    
    1145
    -    CHARLIKE_HDR(94)
    
    1146
    -    CHARLIKE_HDR(95)
    
    1147
    -    CHARLIKE_HDR(96)
    
    1148
    -    CHARLIKE_HDR(97)
    
    1149
    -    CHARLIKE_HDR(98)
    
    1150
    -    CHARLIKE_HDR(99)
    
    1151
    -    CHARLIKE_HDR(100)
    
    1152
    -    CHARLIKE_HDR(101)
    
    1153
    -    CHARLIKE_HDR(102)
    
    1154
    -    CHARLIKE_HDR(103)
    
    1155
    -    CHARLIKE_HDR(104)
    
    1156
    -    CHARLIKE_HDR(105)
    
    1157
    -    CHARLIKE_HDR(106)
    
    1158
    -    CHARLIKE_HDR(107)
    
    1159
    -    CHARLIKE_HDR(108)
    
    1160
    -    CHARLIKE_HDR(109)
    
    1161
    -    CHARLIKE_HDR(110)
    
    1162
    -    CHARLIKE_HDR(111)
    
    1163
    -    CHARLIKE_HDR(112)
    
    1164
    -    CHARLIKE_HDR(113)
    
    1165
    -    CHARLIKE_HDR(114)
    
    1166
    -    CHARLIKE_HDR(115)
    
    1167
    -    CHARLIKE_HDR(116)
    
    1168
    -    CHARLIKE_HDR(117)
    
    1169
    -    CHARLIKE_HDR(118)
    
    1170
    -    CHARLIKE_HDR(119)
    
    1171
    -    CHARLIKE_HDR(120)
    
    1172
    -    CHARLIKE_HDR(121)
    
    1173
    -    CHARLIKE_HDR(122)
    
    1174
    -    CHARLIKE_HDR(123)
    
    1175
    -    CHARLIKE_HDR(124)
    
    1176
    -    CHARLIKE_HDR(125)
    
    1177
    -    CHARLIKE_HDR(126)
    
    1178
    -    CHARLIKE_HDR(127)
    
    1179
    -    CHARLIKE_HDR(128)
    
    1180
    -    CHARLIKE_HDR(129)
    
    1181
    -    CHARLIKE_HDR(130)
    
    1182
    -    CHARLIKE_HDR(131)
    
    1183
    -    CHARLIKE_HDR(132)
    
    1184
    -    CHARLIKE_HDR(133)
    
    1185
    -    CHARLIKE_HDR(134)
    
    1186
    -    CHARLIKE_HDR(135)
    
    1187
    -    CHARLIKE_HDR(136)
    
    1188
    -    CHARLIKE_HDR(137)
    
    1189
    -    CHARLIKE_HDR(138)
    
    1190
    -    CHARLIKE_HDR(139)
    
    1191
    -    CHARLIKE_HDR(140)
    
    1192
    -    CHARLIKE_HDR(141)
    
    1193
    -    CHARLIKE_HDR(142)
    
    1194
    -    CHARLIKE_HDR(143)
    
    1195
    -    CHARLIKE_HDR(144)
    
    1196
    -    CHARLIKE_HDR(145)
    
    1197
    -    CHARLIKE_HDR(146)
    
    1198
    -    CHARLIKE_HDR(147)
    
    1199
    -    CHARLIKE_HDR(148)
    
    1200
    -    CHARLIKE_HDR(149)
    
    1201
    -    CHARLIKE_HDR(150)
    
    1202
    -    CHARLIKE_HDR(151)
    
    1203
    -    CHARLIKE_HDR(152)
    
    1204
    -    CHARLIKE_HDR(153)
    
    1205
    -    CHARLIKE_HDR(154)
    
    1206
    -    CHARLIKE_HDR(155)
    
    1207
    -    CHARLIKE_HDR(156)
    
    1208
    -    CHARLIKE_HDR(157)
    
    1209
    -    CHARLIKE_HDR(158)
    
    1210
    -    CHARLIKE_HDR(159)
    
    1211
    -    CHARLIKE_HDR(160)
    
    1212
    -    CHARLIKE_HDR(161)
    
    1213
    -    CHARLIKE_HDR(162)
    
    1214
    -    CHARLIKE_HDR(163)
    
    1215
    -    CHARLIKE_HDR(164)
    
    1216
    -    CHARLIKE_HDR(165)
    
    1217
    -    CHARLIKE_HDR(166)
    
    1218
    -    CHARLIKE_HDR(167)
    
    1219
    -    CHARLIKE_HDR(168)
    
    1220
    -    CHARLIKE_HDR(169)
    
    1221
    -    CHARLIKE_HDR(170)
    
    1222
    -    CHARLIKE_HDR(171)
    
    1223
    -    CHARLIKE_HDR(172)
    
    1224
    -    CHARLIKE_HDR(173)
    
    1225
    -    CHARLIKE_HDR(174)
    
    1226
    -    CHARLIKE_HDR(175)
    
    1227
    -    CHARLIKE_HDR(176)
    
    1228
    -    CHARLIKE_HDR(177)
    
    1229
    -    CHARLIKE_HDR(178)
    
    1230
    -    CHARLIKE_HDR(179)
    
    1231
    -    CHARLIKE_HDR(180)
    
    1232
    -    CHARLIKE_HDR(181)
    
    1233
    -    CHARLIKE_HDR(182)
    
    1234
    -    CHARLIKE_HDR(183)
    
    1235
    -    CHARLIKE_HDR(184)
    
    1236
    -    CHARLIKE_HDR(185)
    
    1237
    -    CHARLIKE_HDR(186)
    
    1238
    -    CHARLIKE_HDR(187)
    
    1239
    -    CHARLIKE_HDR(188)
    
    1240
    -    CHARLIKE_HDR(189)
    
    1241
    -    CHARLIKE_HDR(190)
    
    1242
    -    CHARLIKE_HDR(191)
    
    1243
    -    CHARLIKE_HDR(192)
    
    1244
    -    CHARLIKE_HDR(193)
    
    1245
    -    CHARLIKE_HDR(194)
    
    1246
    -    CHARLIKE_HDR(195)
    
    1247
    -    CHARLIKE_HDR(196)
    
    1248
    -    CHARLIKE_HDR(197)
    
    1249
    -    CHARLIKE_HDR(198)
    
    1250
    -    CHARLIKE_HDR(199)
    
    1251
    -    CHARLIKE_HDR(200)
    
    1252
    -    CHARLIKE_HDR(201)
    
    1253
    -    CHARLIKE_HDR(202)
    
    1254
    -    CHARLIKE_HDR(203)
    
    1255
    -    CHARLIKE_HDR(204)
    
    1256
    -    CHARLIKE_HDR(205)
    
    1257
    -    CHARLIKE_HDR(206)
    
    1258
    -    CHARLIKE_HDR(207)
    
    1259
    -    CHARLIKE_HDR(208)
    
    1260
    -    CHARLIKE_HDR(209)
    
    1261
    -    CHARLIKE_HDR(210)
    
    1262
    -    CHARLIKE_HDR(211)
    
    1263
    -    CHARLIKE_HDR(212)
    
    1264
    -    CHARLIKE_HDR(213)
    
    1265
    -    CHARLIKE_HDR(214)
    
    1266
    -    CHARLIKE_HDR(215)
    
    1267
    -    CHARLIKE_HDR(216)
    
    1268
    -    CHARLIKE_HDR(217)
    
    1269
    -    CHARLIKE_HDR(218)
    
    1270
    -    CHARLIKE_HDR(219)
    
    1271
    -    CHARLIKE_HDR(220)
    
    1272
    -    CHARLIKE_HDR(221)
    
    1273
    -    CHARLIKE_HDR(222)
    
    1274
    -    CHARLIKE_HDR(223)
    
    1275
    -    CHARLIKE_HDR(224)
    
    1276
    -    CHARLIKE_HDR(225)
    
    1277
    -    CHARLIKE_HDR(226)
    
    1278
    -    CHARLIKE_HDR(227)
    
    1279
    -    CHARLIKE_HDR(228)
    
    1280
    -    CHARLIKE_HDR(229)
    
    1281
    -    CHARLIKE_HDR(230)
    
    1282
    -    CHARLIKE_HDR(231)
    
    1283
    -    CHARLIKE_HDR(232)
    
    1284
    -    CHARLIKE_HDR(233)
    
    1285
    -    CHARLIKE_HDR(234)
    
    1286
    -    CHARLIKE_HDR(235)
    
    1287
    -    CHARLIKE_HDR(236)
    
    1288
    -    CHARLIKE_HDR(237)
    
    1289
    -    CHARLIKE_HDR(238)
    
    1290
    -    CHARLIKE_HDR(239)
    
    1291
    -    CHARLIKE_HDR(240)
    
    1292
    -    CHARLIKE_HDR(241)
    
    1293
    -    CHARLIKE_HDR(242)
    
    1294
    -    CHARLIKE_HDR(243)
    
    1295
    -    CHARLIKE_HDR(244)
    
    1296
    -    CHARLIKE_HDR(245)
    
    1297
    -    CHARLIKE_HDR(246)
    
    1298
    -    CHARLIKE_HDR(247)
    
    1299
    -    CHARLIKE_HDR(248)
    
    1300
    -    CHARLIKE_HDR(249)
    
    1301
    -    CHARLIKE_HDR(250)
    
    1302
    -    CHARLIKE_HDR(251)
    
    1303
    -    CHARLIKE_HDR(252)
    
    1304
    -    CHARLIKE_HDR(253)
    
    1305
    -    CHARLIKE_HDR(254)
    
    1306
    -    CHARLIKE_HDR(255)
    
    1307
    -}
    
    1308
    -
    
    1309
    -section "data" {
    
    1310
    - stg_INTLIKE_closure:
    
    1311
    -    INTLIKE_HDR(-16) /* MIN_INTLIKE == -16 */
    
    1312
    -    INTLIKE_HDR(-15)
    
    1313
    -    INTLIKE_HDR(-14)
    
    1314
    -    INTLIKE_HDR(-13)
    
    1315
    -    INTLIKE_HDR(-12)
    
    1316
    -    INTLIKE_HDR(-11)
    
    1317
    -    INTLIKE_HDR(-10)
    
    1318
    -    INTLIKE_HDR(-9)
    
    1319
    -    INTLIKE_HDR(-8)
    
    1320
    -    INTLIKE_HDR(-7)
    
    1321
    -    INTLIKE_HDR(-6)
    
    1322
    -    INTLIKE_HDR(-5)
    
    1323
    -    INTLIKE_HDR(-4)
    
    1324
    -    INTLIKE_HDR(-3)
    
    1325
    -    INTLIKE_HDR(-2)
    
    1326
    -    INTLIKE_HDR(-1)
    
    1327
    -    INTLIKE_HDR(0)
    
    1328
    -    INTLIKE_HDR(1)
    
    1329
    -    INTLIKE_HDR(2)
    
    1330
    -    INTLIKE_HDR(3)
    
    1331
    -    INTLIKE_HDR(4)
    
    1332
    -    INTLIKE_HDR(5)
    
    1333
    -    INTLIKE_HDR(6)
    
    1334
    -    INTLIKE_HDR(7)
    
    1335
    -    INTLIKE_HDR(8)
    
    1336
    -    INTLIKE_HDR(9)
    
    1337
    -    INTLIKE_HDR(10)
    
    1338
    -    INTLIKE_HDR(11)
    
    1339
    -    INTLIKE_HDR(12)
    
    1340
    -    INTLIKE_HDR(13)
    
    1341
    -    INTLIKE_HDR(14)
    
    1342
    -    INTLIKE_HDR(15)
    
    1343
    -    INTLIKE_HDR(16)
    
    1344
    -    INTLIKE_HDR(17)
    
    1345
    -    INTLIKE_HDR(18)
    
    1346
    -    INTLIKE_HDR(19)
    
    1347
    -    INTLIKE_HDR(20)
    
    1348
    -    INTLIKE_HDR(21)
    
    1349
    -    INTLIKE_HDR(22)
    
    1350
    -    INTLIKE_HDR(23)
    
    1351
    -    INTLIKE_HDR(24)
    
    1352
    -    INTLIKE_HDR(25)
    
    1353
    -    INTLIKE_HDR(26)
    
    1354
    -    INTLIKE_HDR(27)
    
    1355
    -    INTLIKE_HDR(28)
    
    1356
    -    INTLIKE_HDR(29)
    
    1357
    -    INTLIKE_HDR(30)
    
    1358
    -    INTLIKE_HDR(31)
    
    1359
    -    INTLIKE_HDR(32)
    
    1360
    -    INTLIKE_HDR(33)
    
    1361
    -    INTLIKE_HDR(34)
    
    1362
    -    INTLIKE_HDR(35)
    
    1363
    -    INTLIKE_HDR(36)
    
    1364
    -    INTLIKE_HDR(37)
    
    1365
    -    INTLIKE_HDR(38)
    
    1366
    -    INTLIKE_HDR(39)
    
    1367
    -    INTLIKE_HDR(40)
    
    1368
    -    INTLIKE_HDR(41)
    
    1369
    -    INTLIKE_HDR(42)
    
    1370
    -    INTLIKE_HDR(43)
    
    1371
    -    INTLIKE_HDR(44)
    
    1372
    -    INTLIKE_HDR(45)
    
    1373
    -    INTLIKE_HDR(46)
    
    1374
    -    INTLIKE_HDR(47)
    
    1375
    -    INTLIKE_HDR(48)
    
    1376
    -    INTLIKE_HDR(49)
    
    1377
    -    INTLIKE_HDR(50)
    
    1378
    -    INTLIKE_HDR(51)
    
    1379
    -    INTLIKE_HDR(52)
    
    1380
    -    INTLIKE_HDR(53)
    
    1381
    -    INTLIKE_HDR(54)
    
    1382
    -    INTLIKE_HDR(55)
    
    1383
    -    INTLIKE_HDR(56)
    
    1384
    -    INTLIKE_HDR(57)
    
    1385
    -    INTLIKE_HDR(58)
    
    1386
    -    INTLIKE_HDR(59)
    
    1387
    -    INTLIKE_HDR(60)
    
    1388
    -    INTLIKE_HDR(61)
    
    1389
    -    INTLIKE_HDR(62)
    
    1390
    -    INTLIKE_HDR(63)
    
    1391
    -    INTLIKE_HDR(64)
    
    1392
    -    INTLIKE_HDR(65)
    
    1393
    -    INTLIKE_HDR(66)
    
    1394
    -    INTLIKE_HDR(67)
    
    1395
    -    INTLIKE_HDR(68)
    
    1396
    -    INTLIKE_HDR(69)
    
    1397
    -    INTLIKE_HDR(70)
    
    1398
    -    INTLIKE_HDR(71)
    
    1399
    -    INTLIKE_HDR(72)
    
    1400
    -    INTLIKE_HDR(73)
    
    1401
    -    INTLIKE_HDR(74)
    
    1402
    -    INTLIKE_HDR(75)
    
    1403
    -    INTLIKE_HDR(76)
    
    1404
    -    INTLIKE_HDR(77)
    
    1405
    -    INTLIKE_HDR(78)
    
    1406
    -    INTLIKE_HDR(79)
    
    1407
    -    INTLIKE_HDR(80)
    
    1408
    -    INTLIKE_HDR(81)
    
    1409
    -    INTLIKE_HDR(82)
    
    1410
    -    INTLIKE_HDR(83)
    
    1411
    -    INTLIKE_HDR(84)
    
    1412
    -    INTLIKE_HDR(85)
    
    1413
    -    INTLIKE_HDR(86)
    
    1414
    -    INTLIKE_HDR(87)
    
    1415
    -    INTLIKE_HDR(88)
    
    1416
    -    INTLIKE_HDR(89)
    
    1417
    -    INTLIKE_HDR(90)
    
    1418
    -    INTLIKE_HDR(91)
    
    1419
    -    INTLIKE_HDR(92)
    
    1420
    -    INTLIKE_HDR(93)
    
    1421
    -    INTLIKE_HDR(94)
    
    1422
    -    INTLIKE_HDR(95)
    
    1423
    -    INTLIKE_HDR(96)
    
    1424
    -    INTLIKE_HDR(97)
    
    1425
    -    INTLIKE_HDR(98)
    
    1426
    -    INTLIKE_HDR(99)
    
    1427
    -    INTLIKE_HDR(100)
    
    1428
    -    INTLIKE_HDR(101)
    
    1429
    -    INTLIKE_HDR(102)
    
    1430
    -    INTLIKE_HDR(103)
    
    1431
    -    INTLIKE_HDR(104)
    
    1432
    -    INTLIKE_HDR(105)
    
    1433
    -    INTLIKE_HDR(106)
    
    1434
    -    INTLIKE_HDR(107)
    
    1435
    -    INTLIKE_HDR(108)
    
    1436
    -    INTLIKE_HDR(109)
    
    1437
    -    INTLIKE_HDR(110)
    
    1438
    -    INTLIKE_HDR(111)
    
    1439
    -    INTLIKE_HDR(112)
    
    1440
    -    INTLIKE_HDR(113)
    
    1441
    -    INTLIKE_HDR(114)
    
    1442
    -    INTLIKE_HDR(115)
    
    1443
    -    INTLIKE_HDR(116)
    
    1444
    -    INTLIKE_HDR(117)
    
    1445
    -    INTLIKE_HDR(118)
    
    1446
    -    INTLIKE_HDR(119)
    
    1447
    -    INTLIKE_HDR(120)
    
    1448
    -    INTLIKE_HDR(121)
    
    1449
    -    INTLIKE_HDR(122)
    
    1450
    -    INTLIKE_HDR(123)
    
    1451
    -    INTLIKE_HDR(124)
    
    1452
    -    INTLIKE_HDR(125)
    
    1453
    -    INTLIKE_HDR(126)
    
    1454
    -    INTLIKE_HDR(127)
    
    1455
    -    INTLIKE_HDR(128)
    
    1456
    -    INTLIKE_HDR(129)
    
    1457
    -    INTLIKE_HDR(130)
    
    1458
    -    INTLIKE_HDR(131)
    
    1459
    -    INTLIKE_HDR(132)
    
    1460
    -    INTLIKE_HDR(133)
    
    1461
    -    INTLIKE_HDR(134)
    
    1462
    -    INTLIKE_HDR(135)
    
    1463
    -    INTLIKE_HDR(136)
    
    1464
    -    INTLIKE_HDR(137)
    
    1465
    -    INTLIKE_HDR(138)
    
    1466
    -    INTLIKE_HDR(139)
    
    1467
    -    INTLIKE_HDR(140)
    
    1468
    -    INTLIKE_HDR(141)
    
    1469
    -    INTLIKE_HDR(142)
    
    1470
    -    INTLIKE_HDR(143)
    
    1471
    -    INTLIKE_HDR(144)
    
    1472
    -    INTLIKE_HDR(145)
    
    1473
    -    INTLIKE_HDR(146)
    
    1474
    -    INTLIKE_HDR(147)
    
    1475
    -    INTLIKE_HDR(148)
    
    1476
    -    INTLIKE_HDR(149)
    
    1477
    -    INTLIKE_HDR(150)
    
    1478
    -    INTLIKE_HDR(151)
    
    1479
    -    INTLIKE_HDR(152)
    
    1480
    -    INTLIKE_HDR(153)
    
    1481
    -    INTLIKE_HDR(154)
    
    1482
    -    INTLIKE_HDR(155)
    
    1483
    -    INTLIKE_HDR(156)
    
    1484
    -    INTLIKE_HDR(157)
    
    1485
    -    INTLIKE_HDR(158)
    
    1486
    -    INTLIKE_HDR(159)
    
    1487
    -    INTLIKE_HDR(160)
    
    1488
    -    INTLIKE_HDR(161)
    
    1489
    -    INTLIKE_HDR(162)
    
    1490
    -    INTLIKE_HDR(163)
    
    1491
    -    INTLIKE_HDR(164)
    
    1492
    -    INTLIKE_HDR(165)
    
    1493
    -    INTLIKE_HDR(166)
    
    1494
    -    INTLIKE_HDR(167)
    
    1495
    -    INTLIKE_HDR(168)
    
    1496
    -    INTLIKE_HDR(169)
    
    1497
    -    INTLIKE_HDR(170)
    
    1498
    -    INTLIKE_HDR(171)
    
    1499
    -    INTLIKE_HDR(172)
    
    1500
    -    INTLIKE_HDR(173)
    
    1501
    -    INTLIKE_HDR(174)
    
    1502
    -    INTLIKE_HDR(175)
    
    1503
    -    INTLIKE_HDR(176)
    
    1504
    -    INTLIKE_HDR(177)
    
    1505
    -    INTLIKE_HDR(178)
    
    1506
    -    INTLIKE_HDR(179)
    
    1507
    -    INTLIKE_HDR(180)
    
    1508
    -    INTLIKE_HDR(181)
    
    1509
    -    INTLIKE_HDR(182)
    
    1510
    -    INTLIKE_HDR(183)
    
    1511
    -    INTLIKE_HDR(184)
    
    1512
    -    INTLIKE_HDR(185)
    
    1513
    -    INTLIKE_HDR(186)
    
    1514
    -    INTLIKE_HDR(187)
    
    1515
    -    INTLIKE_HDR(188)
    
    1516
    -    INTLIKE_HDR(189)
    
    1517
    -    INTLIKE_HDR(190)
    
    1518
    -    INTLIKE_HDR(191)
    
    1519
    -    INTLIKE_HDR(192)
    
    1520
    -    INTLIKE_HDR(193)
    
    1521
    -    INTLIKE_HDR(194)
    
    1522
    -    INTLIKE_HDR(195)
    
    1523
    -    INTLIKE_HDR(196)
    
    1524
    -    INTLIKE_HDR(197)
    
    1525
    -    INTLIKE_HDR(198)
    
    1526
    -    INTLIKE_HDR(199)
    
    1527
    -    INTLIKE_HDR(200)
    
    1528
    -    INTLIKE_HDR(201)
    
    1529
    -    INTLIKE_HDR(202)
    
    1530
    -    INTLIKE_HDR(203)
    
    1531
    -    INTLIKE_HDR(204)
    
    1532
    -    INTLIKE_HDR(205)
    
    1533
    -    INTLIKE_HDR(206)
    
    1534
    -    INTLIKE_HDR(207)
    
    1535
    -    INTLIKE_HDR(208)
    
    1536
    -    INTLIKE_HDR(209)
    
    1537
    -    INTLIKE_HDR(210)
    
    1538
    -    INTLIKE_HDR(211)
    
    1539
    -    INTLIKE_HDR(212)
    
    1540
    -    INTLIKE_HDR(213)
    
    1541
    -    INTLIKE_HDR(214)
    
    1542
    -    INTLIKE_HDR(215)
    
    1543
    -    INTLIKE_HDR(216)
    
    1544
    -    INTLIKE_HDR(217)
    
    1545
    -    INTLIKE_HDR(218)
    
    1546
    -    INTLIKE_HDR(219)
    
    1547
    -    INTLIKE_HDR(220)
    
    1548
    -    INTLIKE_HDR(221)
    
    1549
    -    INTLIKE_HDR(222)
    
    1550
    -    INTLIKE_HDR(223)
    
    1551
    -    INTLIKE_HDR(224)
    
    1552
    -    INTLIKE_HDR(225)
    
    1553
    -    INTLIKE_HDR(226)
    
    1554
    -    INTLIKE_HDR(227)
    
    1555
    -    INTLIKE_HDR(228)
    
    1556
    -    INTLIKE_HDR(229)
    
    1557
    -    INTLIKE_HDR(230)
    
    1558
    -    INTLIKE_HDR(231)
    
    1559
    -    INTLIKE_HDR(232)
    
    1560
    -    INTLIKE_HDR(233)
    
    1561
    -    INTLIKE_HDR(234)
    
    1562
    -    INTLIKE_HDR(235)
    
    1563
    -    INTLIKE_HDR(236)
    
    1564
    -    INTLIKE_HDR(237)
    
    1565
    -    INTLIKE_HDR(238)
    
    1566
    -    INTLIKE_HDR(239)
    
    1567
    -    INTLIKE_HDR(240)
    
    1568
    -    INTLIKE_HDR(241)
    
    1569
    -    INTLIKE_HDR(242)
    
    1570
    -    INTLIKE_HDR(243)
    
    1571
    -    INTLIKE_HDR(244)
    
    1572
    -    INTLIKE_HDR(245)
    
    1573
    -    INTLIKE_HDR(246)
    
    1574
    -    INTLIKE_HDR(247)
    
    1575
    -    INTLIKE_HDR(248)
    
    1576
    -    INTLIKE_HDR(249)
    
    1577
    -    INTLIKE_HDR(250)
    
    1578
    -    INTLIKE_HDR(251)
    
    1579
    -    INTLIKE_HDR(252)
    
    1580
    -    INTLIKE_HDR(253)
    
    1581
    -    INTLIKE_HDR(254)
    
    1582
    -    INTLIKE_HDR(255)    /* MAX_INTLIKE == 255
    
    1583
    -                         See #16961 for why 255 */
    
    1584
    -}

  • rts/include/rts/Constants.h
    ... ... @@ -57,11 +57,12 @@
    57 57
     #define MAX_SPEC_CONSTR_SIZE   2
    
    58 58
     
    
    59 59
     /* Range of built-in table of static small int-like and char-like closures.
    
    60
    + * Range is inclusive of both minimum and maximum.
    
    60 61
      *
    
    61 62
      *   NB. This corresponds with the number of actual INTLIKE/CHARLIKE
    
    62 63
      *   closures defined in rts/StgMiscClosures.cmm.
    
    63 64
      */
    
    64
    -#define MAX_INTLIKE             255
    
    65
    +#define MAX_INTLIKE             255 /* See #16961 for why 255 */
    
    65 66
     #define MIN_INTLIKE             (-16)
    
    66 67
     
    
    67 68
     #define MAX_CHARLIKE            255
    

  • rts/include/stg/MiscClosures.h
    ... ... @@ -277,8 +277,8 @@ RTS_ENTRY(stg_NO_FINALIZER);
    277 277
     extern StgWordArray stg_CHARLIKE_closure;
    
    278 278
     extern StgWordArray stg_INTLIKE_closure;
    
    279 279
     #else
    
    280
    -extern StgIntCharlikeClosure stg_CHARLIKE_closure[];
    
    281
    -extern StgIntCharlikeClosure stg_INTLIKE_closure[];
    
    280
    +extern StgIntCharlikeClosure stg_CHARLIKE_closure[MAX_CHARLIKE - MIN_CHARLIKE + 1];
    
    281
    +extern StgIntCharlikeClosure stg_INTLIKE_closure[MAX_INTLIKE - MIN_INTLIKE + 1];
    
    282 282
     #endif
    
    283 283
     
    
    284 284
     /* StgStartup */
    

  • rts/rts.cabal
    ... ... @@ -403,6 +403,7 @@ library
    403 403
                      adjustor/AdjustorPool.c
    
    404 404
                      ExecPage.c
    
    405 405
                      Arena.c
    
    406
    +                 BuiltinClosures.c
    
    406 407
                      Capability.c
    
    407 408
                      CheckUnload.c
    
    408 409
                      CheckVectorSupport.c