| 1 | = Parrot HACK List = |
| 2 | |
| 3 | * [https://github.com/parrot/parrot/blob/master/compilers/pge/PGE/P5Regex.pir#L115 compilers/pge/PGE/P5Regex.pir:115][[br]] |
| 4 | {{{ |
| 5 | optable.'newtok'('close:}', 'looser'=>'infix:|', 'nows'=>1) # XXX: hack |
| 6 | }}} |
| 7 | |
| 8 | * [https://github.com/parrot/parrot/blob/master/compilers/imcc/imcc.l#L43 compilers/imcc/imcc.l:43][[br]] |
| 9 | {{{ |
| 10 | /* parser state structure |
| 11 | * the first few items are common to struct parser_state, but |
| 12 | * we AFAIK need this hack as flex doesn't export YY_BUFFER_STATE */ |
| 13 | }}} |
| 14 | |
| 15 | * [https://github.com/parrot/parrot/blob/master/compilers/imcc/imclexer.c#L2416 compilers/imcc/imclexer.c:2416][[br]] |
| 16 | {{{ |
| 17 | /* parser state structure |
| 18 | * the first few items are common to struct parser_state, but |
| 19 | * we AFAIK need this hack as flex doesn't export YY_BUFFER_STATE */ |
| 20 | }}} |
| 21 | |
| 22 | * [https://github.com/parrot/parrot/blob/master/compilers/pct/src/PCT/Grammar.pir#L187 compilers/pct/src/PCT/Grammar.pir:187][[br]] |
| 23 | {{{ |
| 24 | ## the 'o', 'd', or 'x' into 8, 10, or 16 (yes, it's hack |
| 25 | }}} |
| 26 | |
| 27 | * [https://github.com/parrot/parrot/blob/master/src/embed/api.c#L708 src/embed/api.c:708][[br]] |
| 28 | {{{ |
| 29 | =item C<Parrot_Int Parrot_api_wrap_imcc_hack(Parrot_PMC interp_pmc, const char * |
| 30 | }}} |
| 31 | |
| 32 | * [https://github.com/parrot/parrot/blob/master/src/embed/api.c#L710 src/embed/api.c:710][[br]] |
| 33 | {{{ |
| 34 | imcc_hack_func_t func)> |
| 35 | }}} |
| 36 | |
| 37 | * [https://github.com/parrot/parrot/blob/master/src/embed/api.c#L712 src/embed/api.c:712][[br]] |
| 38 | {{{ |
| 39 | WARNING: This is an evil hack to provide a wrapper around IMCC to catch unhandled |
| 40 | }}} |
| 41 | |
| 42 | * [https://github.com/parrot/parrot/blob/master/src/embed/api.c#L725 src/embed/api.c:725][[br]] |
| 43 | {{{ |
| 44 | Parrot_api_wrap_imcc_hack(Parrot_PMC interp_pmc, const char * sourcefile, |
| 45 | }}} |
| 46 | |
| 47 | * [https://github.com/parrot/parrot/blob/master/src/embed/api.c#L727 src/embed/api.c:727][[br]] |
| 48 | {{{ |
| 49 | imcc_hack_func_t func) |
| 50 | }}} |
| 51 | |
| 52 | * [https://github.com/parrot/parrot/blob/master/src/embed/api.c#L729 src/embed/api.c:729][[br]] |
| 53 | {{{ |
| 54 | ASSERT_ARGS(Parrot_api_wrap_imcc_hack) |
| 55 | }}} |
| 56 | |
| 57 | * [https://github.com/parrot/parrot/blob/master/src/nci/extra_thunks.c#L37 src/nci/extra_thunks.c:37][[br]] |
| 58 | {{{ |
| 59 | /* All our static functions that call in various ways. Yes, terribly |
| 60 | hackish, but that is just fine */ |
| 61 | }}} |
| 62 | |
| 63 | * [https://github.com/parrot/parrot/blob/master/src/nci/core_thunks.c#L37 src/nci/core_thunks.c:37][[br]] |
| 64 | {{{ |
| 65 | /* All our static functions that call in various ways. Yes, terribly |
| 66 | hackish, but that is just fine */ |
| 67 | }}} |
| 68 | |
| 69 | * [https://github.com/parrot/parrot/blob/master/src/packfile/api.c#L2237 src/packfile/api.c:2237][[br]] |
| 70 | {{{ |
| 71 | * Temporary? hack to put ConstantTable in front of other segments. |
| 72 | }}} |
| 73 | |
| 74 | * [https://github.com/parrot/parrot/blob/master/src/oo.c#L253 src/oo.c:253][[br]] |
| 75 | {{{ |
| 76 | /* This is a hack! All PMCs should be able to be handled through |
| 77 | a single codepath, and all of them should be able to avoid |
| 78 | stringification because it's so imprecise. */ |
| 79 | }}} |
| 80 | |
| 81 | * [https://github.com/parrot/parrot/blob/master/src/pmc/parrotinterpreter.c#L447 src/pmc/parrotinterpreter.c:447][[br]] |
| 82 | {{{ |
| 83 | /* quick hack to get the global stash */ |
| 84 | }}} |
| 85 | |
| 86 | * [https://github.com/parrot/parrot/blob/master/src/pmc/namespace.c#L710 src/pmc/namespace.c:710][[br]] |
| 87 | {{{ |
| 88 | /* TODO - this hack needs to go */ |
| 89 | }}} |
| 90 | |
| 91 | * [https://github.com/parrot/parrot/blob/master/src/pmc/null.c#L547 src/pmc/null.c:547][[br]] |
| 92 | {{{ |
| 93 | /* XXX maybe a hack to get TGE running again */ |
| 94 | }}} |
| 95 | |
| 96 | * [https://github.com/parrot/parrot/blob/master/src/pmc/class.pmc#L1719 src/pmc/class.pmc:1719][[br]] |
| 97 | {{{ |
| 98 | This is just a temporary hack. Type ID numbers shouldn't be externally |
| 99 | }}} |
| 100 | |
| 101 | * [https://github.com/parrot/parrot/blob/master/src/pmc/scheduler.c#L93 src/pmc/scheduler.c:93][[br]] |
| 102 | {{{ |
| 103 | /* TT #946: this line is causing an order-of-destruction error |
| 104 | because the scheduler is being freed before its tasks. |
| 105 | Commenting this out till we get a real fix (although it's a hack) */ |
| 106 | }}} |
| 107 | |
| 108 | * [https://github.com/parrot/parrot/blob/master/src/pmc/fixedintegerarray.c#L96 src/pmc/fixedintegerarray.c:96][[br]] |
| 109 | {{{ |
| 110 | /* a quick hack to create a clone in the constant PMC arena |
| 111 | * this is needed for the call signatures |
| 112 | * |
| 113 | * a better way would be probably to supply a flag to the clone |
| 114 | * vtable |
| 115 | */ |
| 116 | }}} |
| 117 | |
| 118 | * [https://github.com/parrot/parrot/blob/master/src/pmc/null.pmc#L63 src/pmc/null.pmc:63][[br]] |
| 119 | {{{ |
| 120 | /* XXX maybe a hack to get TGE running again */ |
| 121 | }}} |
| 122 | |
| 123 | * [https://github.com/parrot/parrot/blob/master/src/pmc/threadinterpreter.pmc#L44 src/pmc/threadinterpreter.pmc:44][[br]] |
| 124 | {{{ |
| 125 | * XXX a quick hack to pass the few tests |
| 126 | }}} |
| 127 | |
| 128 | * [https://github.com/parrot/parrot/blob/master/src/pmc/parrotinterpreter.pmc#L429 src/pmc/parrotinterpreter.pmc:429][[br]] |
| 129 | {{{ |
| 130 | /* quick hack to get the global stash */ |
| 131 | }}} |
| 132 | |
| 133 | * [https://github.com/parrot/parrot/blob/master/src/pmc/scheduler.pmc#L256 src/pmc/scheduler.pmc:256][[br]] |
| 134 | {{{ |
| 135 | /* TT #946: this line is causing an order-of-destruction error |
| 136 | because the scheduler is being freed before its tasks. |
| 137 | Commenting this out till we get a real fix (although it's a hack) */ |
| 138 | }}} |
| 139 | |
| 140 | * [https://github.com/parrot/parrot/blob/master/src/pmc/complex.pmc#L554 src/pmc/complex.pmc:554][[br]] |
| 141 | {{{ |
| 142 | Quick hack to emulate get_real() and get_imag(): |
| 143 | }}} |
| 144 | |
| 145 | * [https://github.com/parrot/parrot/blob/master/src/pmc/namespace.pmc#L468 src/pmc/namespace.pmc:468][[br]] |
| 146 | {{{ |
| 147 | /* TODO - this hack needs to go */ |
| 148 | }}} |
| 149 | |
| 150 | * [https://github.com/parrot/parrot/blob/master/src/pmc/fixedintegerarray.pmc#L102 src/pmc/fixedintegerarray.pmc:102][[br]] |
| 151 | {{{ |
| 152 | /* a quick hack to create a clone in the constant PMC arena |
| 153 | * this is needed for the call signatures |
| 154 | * |
| 155 | * a better way would be probably to supply a flag to the clone |
| 156 | * vtable |
| 157 | */ |
| 158 | }}} |
| 159 | |
| 160 | * [https://github.com/parrot/parrot/blob/master/src/pmc/threadinterpreter.c#L67 src/pmc/threadinterpreter.c:67][[br]] |
| 161 | {{{ |
| 162 | * XXX a quick hack to pass the few tests |
| 163 | }}} |
| 164 | |
| 165 | * [https://github.com/parrot/parrot/blob/master/src/call/args.c#L1161 src/call/args.c:1161][[br]] |
| 166 | {{{ |
| 167 | /* The 'return' above is a temporary hack to duplicate an old |
| 168 | * bug, and will be replaced by the exception below at the next |
| 169 | * deprecation point, see TT #1103 |
| 170 | |
| 171 | Parrot_ex_throw_from_c_args(interp, NULL, |
| 172 | EXCEPTION_INVALID_OPERATION, |
| 173 | "too many named arguments: %d passed, 0 used", |
| 174 | named_arg_count); |
| 175 | */ |
| 176 | }}} |
| 177 | |
| 178 | * [https://github.com/parrot/parrot/blob/master/src/extra_nci_thunks.c#L37 src/extra_nci_thunks.c:37][[br]] |
| 179 | {{{ |
| 180 | /* All our static functions that call in various ways. Yes, terribly |
| 181 | hackish, but that is just fine */ |
| 182 | }}} |
| 183 | |
| 184 | * [https://github.com/parrot/parrot/blob/master/src/thread.c#L757 src/thread.c:757][[br]] |
| 185 | {{{ |
| 186 | * XXX a quick hack to pass the few tests |
| 187 | }}} |
| 188 | |
| 189 | * [https://github.com/parrot/parrot/blob/master/src/gc/string_gc.c#L1015 src/gc/string_gc.c:1015][[br]] |
| 190 | {{{ |
| 191 | /* Somewhat of a hack, but if we get per-pool |
| 192 | * collections, it should help ease the pain */ |
| 193 | }}} |
| 194 | |
| 195 | * [https://github.com/parrot/parrot/blob/master/src/gc/malloc.c#L2738 src/gc/malloc.c:2738][[br]] |
| 196 | {{{ |
| 197 | probably figure out how to hack this routine to print out or |
| 198 | }}} |
| 199 | |
| 200 | * [https://github.com/parrot/parrot/blob/master/src/gc/system.c#L125 src/gc/system.c:125][[br]] |
| 201 | {{{ |
| 202 | double align_hack[2]; |
| 203 | }}} |
| 204 | |
| 205 | * [https://github.com/parrot/parrot/blob/master/src/gc/system.c#L138 src/gc/system.c:138][[br]] |
| 206 | {{{ |
| 207 | static void (*fn_ptr)(void) = (void (*)(void))&u.align_hack[0]; |
| 208 | }}} |
| 209 | |
| 210 | * [https://github.com/parrot/parrot/blob/master/src/debug.c#L3520 src/debug.c:3520][[br]] |
| 211 | {{{ |
| 212 | /* This hack is needed because we occasionally are told |
| 213 | that we have string registers when we actually don't */ |
| 214 | }}} |
| 215 | |
| 216 | * [https://github.com/parrot/parrot/blob/master/lib/Pod/Simple/HTML.pm#L283 lib/Pod/Simple/HTML.pm:283][[br]] |
| 217 | {{{ |
| 218 | unless($$text_r and $$text_r =~ m/name=['"]___top['"]/) { # a hack |
| 219 | }}} |
| 220 | |
| 221 | * [https://github.com/parrot/parrot/blob/master/lib/Pod/Simple/HTML.pm#L331 lib/Pod/Simple/HTML.pm:331][[br]] |
| 222 | {{{ |
| 223 | # An efficiency hack |
| 224 | }}} |
| 225 | |
| 226 | * [https://github.com/parrot/parrot/blob/master/lib/Pod/Simple/HTML.pm#L456 lib/Pod/Simple/HTML.pm:456][[br]] |
| 227 | {{{ |
| 228 | # TODO: support for X<...>'s found in here? (maybe hack into linearize_tokens) |
| 229 | }}} |
| 230 | |
| 231 | * [https://github.com/parrot/parrot/blob/master/lib/Pod/Simple/HTML.pm#L579 lib/Pod/Simple/HTML.pm:579][[br]] |
| 232 | {{{ |
| 233 | # An early hack: |
| 234 | }}} |
| 235 | |
| 236 | * [https://github.com/parrot/parrot/blob/master/lib/Pod/Simple/HTML.pm#L592 lib/Pod/Simple/HTML.pm:592][[br]] |
| 237 | {{{ |
| 238 | # Give this routine first hack again |
| 239 | }}} |
| 240 | |
| 241 | * [https://github.com/parrot/parrot/blob/master/lib/Pod/Simple/HTML.pm#L725 lib/Pod/Simple/HTML.pm:725][[br]] |
| 242 | {{{ |
| 243 | # A crazy hack to allow specifying custom L<foo> => URL mappings |
| 244 | }}} |
| 245 | |
| 246 | * [https://github.com/parrot/parrot/blob/master/lib/Pod/Simple/RTF.pm#L57 lib/Pod/Simple/RTF.pm:57][[br]] |
| 247 | {{{ |
| 248 | # Bit of a hack here: |
| 249 | }}} |
| 250 | |
| 251 | * [https://github.com/parrot/parrot/blob/master/lib/Pod/Simple/BlackBox.pm#L711 lib/Pod/Simple/BlackBox.pm:711][[br]] |
| 252 | {{{ |
| 253 | if( $para->[1]{'~_freaky_para_hack'} ) { |
| 254 | }}} |
| 255 | |
| 256 | * [https://github.com/parrot/parrot/blob/master/lib/Pod/Simple/BlackBox.pm#L712 lib/Pod/Simple/BlackBox.pm:712][[br]] |
| 257 | {{{ |
| 258 | DEBUG and print "Accomodating '=item * Foo' tolerance hack.\n"; |
| 259 | }}} |
| 260 | |
| 261 | * [https://github.com/parrot/parrot/blob/master/lib/Pod/Simple/BlackBox.pm#L713 lib/Pod/Simple/BlackBox.pm:713][[br]] |
| 262 | {{{ |
| 263 | push @$para, delete $para->[1]{'~_freaky_para_hack'}; |
| 264 | }}} |
| 265 | |
| 266 | * [https://github.com/parrot/parrot/blob/master/lib/Pod/Simple/BlackBox.pm#L1304 lib/Pod/Simple/BlackBox.pm:1304][[br]] |
| 267 | {{{ |
| 268 | if( $para->[1]{'~_freaky_para_hack'} ) { |
| 269 | }}} |
| 270 | |
| 271 | * [https://github.com/parrot/parrot/blob/master/lib/Pod/Simple/BlackBox.pm#L1305 lib/Pod/Simple/BlackBox.pm:1305][[br]] |
| 272 | {{{ |
| 273 | DEBUG and print "Accomodating '=item * Foo' tolerance hack.\n"; |
| 274 | }}} |
| 275 | |
| 276 | * [https://github.com/parrot/parrot/blob/master/lib/Pod/Simple/BlackBox.pm#L1306 lib/Pod/Simple/BlackBox.pm:1306][[br]] |
| 277 | {{{ |
| 278 | push @$para, delete $para->[1]{'~_freaky_para_hack'}; |
| 279 | }}} |
| 280 | |
| 281 | * [https://github.com/parrot/parrot/blob/master/lib/Pod/Simple.pm#L507 lib/Pod/Simple.pm:507][[br]] |
| 282 | {{{ |
| 283 | # A hack-wrapper here for when you have like "=over\n\n=item 456\n\n" |
| 284 | }}} |
| 285 | |
| 286 | * [https://github.com/parrot/parrot/blob/master/lib/Pod/Simple.pm#L538 lib/Pod/Simple.pm:538][[br]] |
| 287 | {{{ |
| 288 | $para->[1]{'~_freaky_para_hack'} = $1; |
| 289 | }}} |
| 290 | |
| 291 | * [https://github.com/parrot/parrot/blob/master/lib/Pod/Simple.pm#L571 lib/Pod/Simple.pm:571][[br]] |
| 292 | {{{ |
| 293 | DEBUG and print "Applying precooked treelet hack to $_[0][0]\n"; |
| 294 | }}} |
| 295 | |
| 296 | * [https://github.com/parrot/parrot/blob/master/lib/Pod/Simple.pm#L1413 lib/Pod/Simple.pm:1413][[br]] |
| 297 | {{{ |
| 298 | next if $attrname =~ m/::/; # a hack |
| 299 | }}} |
| 300 | |
| 301 | * [https://github.com/parrot/parrot/blob/master/lib/Parrot/Docs/File.pm#L70 lib/Parrot/Docs/File.pm:70][[br]] |
| 302 | {{{ |
| 303 | 'hacking' => 'README file', |
| 304 | }}} |
| 305 | |
| 306 | * [https://github.com/parrot/parrot/blob/master/lib/Parrot/Docs/POD2HTML.pm#L249 lib/Parrot/Docs/POD2HTML.pm:249][[br]] |
| 307 | {{{ |
| 308 | # A little bit of a hack to avoid config template files. |
| 309 | }}} |
| 310 | |
| 311 | * [https://github.com/parrot/parrot/blob/master/lib/Parrot/Configure/Options/Conf.pm#L84 lib/Parrot/Configure/Options/Conf.pm:84][[br]] |
| 312 | {{{ |
| 313 | --define=inet_aton Quick hack to use inet_aton instead of inet_pton |
| 314 | }}} |
| 315 | |
| 316 | * [https://github.com/parrot/parrot/blob/master/ports/fedora/2.11.0/parrot.spec#L137 ports/fedora/2.11.0/parrot.spec:137][[br]] |
| 317 | {{{ |
| 318 | # The LD_LIBRARY_PATH hack is needed for "miniparrot" |
| 319 | }}} |
| 320 | |
| 321 | * [https://github.com/parrot/parrot/blob/master/ports/fedora/2.11.0/parrot.spec#L149 ports/fedora/2.11.0/parrot.spec:149][[br]] |
| 322 | {{{ |
| 323 | # The LD_LIBRARY_PATH hack is needed for the command "pbc_to_exe parrot-nqp.pbc" |
| 324 | }}} |
| 325 | |
| 326 | * [https://github.com/parrot/parrot/blob/master/ports/cygwin/README#L1711 ports/cygwin/README:1711][[br]] |
| 327 | {{{ |
| 328 | /usr/share/doc/parrot/1.0.0/html/t/op/hacks.t.html |
| 329 | }}} |
| 330 | |
| 331 | * [https://github.com/parrot/parrot/blob/master/ports/cygwin/README#L1895 ports/cygwin/README:1895][[br]] |
| 332 | {{{ |
| 333 | * removed the postinstall and preremove hacks |
| 334 | }}} |
| 335 | |
| 336 | * [https://github.com/parrot/parrot/blob/master/include/parrot/api.h#L18 include/parrot/api.h:18][[br]] |
| 337 | {{{ |
| 338 | typedef int (*imcc_hack_func_t)(Parrot_PMC, const char *, int, const char **, Parrot_PMC*); |
| 339 | }}} |
| 340 | |
| 341 | * [https://github.com/parrot/parrot/blob/master/include/parrot/api.h#L232 include/parrot/api.h:232][[br]] |
| 342 | {{{ |
| 343 | Parrot_Int Parrot_api_wrap_imcc_hack( |
| 344 | }}} |
| 345 | |
| 346 | * [https://github.com/parrot/parrot/blob/master/include/parrot/api.h#L239 include/parrot/api.h:239][[br]] |
| 347 | {{{ |
| 348 | imcc_hack_func_t func); |
| 349 | }}} |
| 350 | |
| 351 | * [https://github.com/parrot/parrot/blob/master/include/parrot/api.h#L292 include/parrot/api.h:292][[br]] |
| 352 | {{{ |
| 353 | #define ASSERT_ARGS_Parrot_api_wrap_imcc_hack __attribute__unused__ int _ASSERT_ARGS_CHECK = (0) |
| 354 | }}} |
| 355 | |
| 356 | * [https://github.com/parrot/parrot/blob/master/include/parrot/caches.h#L16 include/parrot/caches.h:16][[br]] |
| 357 | {{{ |
| 358 | /* turn off this hack, we need something better */ |
| 359 | }}} |
| 360 | |
| 361 | * [https://github.com/parrot/parrot/blob/master/config/gen/opengl.pm#L373 config/gen/opengl.pm:373][[br]] |
| 362 | {{{ |
| 363 | # Ignore internal GLUT Win32 compatibility hackage |
| 364 | }}} |
| 365 | |
| 366 | * [https://github.com/parrot/parrot/blob/master/config/gen/makefiles/root.in#L643 config/gen/makefiles/root.in:643][[br]] |
| 367 | {{{ |
| 368 | # We build DYNPMC_TARGET in corevm. It's kinda hack to test t/pmc/threads.t CLONE_LIBRARIES |
| 369 | }}} |
| 370 | |
| 371 | * [https://github.com/parrot/parrot/blob/master/config/inter/make.pm#L122 config/inter/make.pm:122][[br]] |
| 372 | {{{ |
| 373 | # TT #1049: this is an ugly hack |
| 374 | }}} |
| 375 | |
| 376 | * [https://github.com/parrot/parrot/blob/master/config/auto/headers.pm#L41 config/auto/headers.pm:41][[br]] |
| 377 | {{{ |
| 378 | # headers we found so far. This is somewhat a hack, but makes probing |
| 379 | }}} |
| 380 | |
| 381 | * [https://github.com/parrot/parrot/blob/master/t/pmc/class.t#L83 t/pmc/class.t:83][[br]] |
| 382 | {{{ |
| 383 | $I0 = 1 # hack for testing exceptions |
| 384 | }}} |
| 385 | |
| 386 | * [https://github.com/parrot/parrot/blob/master/t/pmc/signal.t#L46 t/pmc/signal.t:46][[br]] |
| 387 | {{{ |
| 388 | # This is a non-portable hack. |
| 389 | }}} |
| 390 | |
| 391 | * [https://github.com/parrot/parrot/blob/master/t/pmc/fixedpmcarray.t#L566 t/pmc/fixedpmcarray.t:566][[br]] |
| 392 | {{{ |
| 393 | arr[3] = 'hacker' |
| 394 | }}} |
| 395 | |
| 396 | * [https://github.com/parrot/parrot/blob/master/t/pmc/fixedpmcarray.t#L572 t/pmc/fixedpmcarray.t:572][[br]] |
| 397 | {{{ |
| 398 | sorted_arr[1] = 'hacker' |
| 399 | }}} |
| 400 | |
| 401 | * [https://github.com/parrot/parrot/blob/master/t/op/sprintf_tests#L201 t/op/sprintf_tests:201][[br]] |
| 402 | {{{ |
| 403 | %d $p=sprintf('%p',$p);$p=~/^[0-9a-f]+$/ 1 Coarse hack: hex from %p? |
| 404 | }}} |
| 405 | |
| 406 | * [https://github.com/parrot/parrot/blob/master/t/op/sprintf_tests#L202 t/op/sprintf_tests:202][[br]] |
| 407 | {{{ |
| 408 | %d $p=sprintf('%-8p',$p);$p=~/^[0-9a-f]+\s*$/ 1 Coarse hack: hex from %p? |
| 409 | }}} |
| 410 | |
| 411 | * [https://github.com/parrot/parrot/blob/master/t/benchmark/benchmarks.t#L194 t/benchmark/benchmarks.t:194][[br]] |
| 412 | {{{ |
| 413 | q{vpm.pir} => qq(100000;\nl hackerjust another per\n) |
| 414 | }}} |
| 415 | |
| 416 | * [https://github.com/parrot/parrot/blob/master/t/configure/034-step.t#L143 t/configure/034-step.t:143][[br]] |
| 417 | {{{ |
| 418 | my $line = q{$(basename morgan/lefay/abra.ca.dabra src/foo.c hacks)}; |
| 419 | }}} |
| 420 | |
| 421 | * [https://github.com/parrot/parrot/blob/master/t/configure/034-step.t#L162 t/configure/034-step.t:162][[br]] |
| 422 | {{{ |
| 423 | my $line = q{$(notdir morgan/lefay/abra.ca.dabra src/foo.c hacks)}; |
| 424 | }}} |
| 425 | |
| 426 | * [https://github.com/parrot/parrot/blob/master/t/codingstd/c_returns.t#L30 t/codingstd/c_returns.t:30][[br]] |
| 427 | {{{ |
| 428 | This test was hacked from the C<check_returns> sub in |
| 429 | }}} |
| 430 | |
| 431 | * [https://github.com/parrot/parrot/blob/master/CREDITS#L273 CREDITS:273][[br]] |
| 432 | {{{ |
| 433 | D: nqp hackery |
| 434 | }}} |
| 435 | |
| 436 | * [https://github.com/parrot/parrot/blob/master/tools/release/templates.json#L32 tools/release/templates.json:32][[br]] |
| 437 | {{{ |
| 438 | instructions</a>. For those who want to hack on Parrot or languages that run on top of Parrot, |
| 439 | }}} |
| 440 | |
| 441 | * [https://github.com/parrot/parrot/blob/master/tools/dev/nci_thunk_gen.pir#L351 tools/dev/nci_thunk_gen.pir:351][[br]] |
| 442 | {{{ |
| 443 | /* All our static functions that call in various ways. Yes, terribly |
| 444 | hackish, but that is just fine */ |
| 445 | }}} |
| 446 | |
| 447 | * [https://github.com/parrot/parrot/blob/master/tools/dev/parrot-fuzzer#L468 tools/dev/parrot-fuzzer:468][[br]] |
| 448 | {{{ |
| 449 | #This is a moderately fragile hack that relies on the specific |
| 450 | }}} |
| 451 | |
| 452 | * [https://github.com/parrot/parrot/blob/master/tools/dev/findhacks.pl#L8 tools/dev/findhacks.pl:8][[br]] |
| 453 | {{{ |
| 454 | tools/dev/findhacks.pl - Generates a TracWiki formatted list of 'hack' |
| 455 | }}} |
| 456 | |
| 457 | * [https://github.com/parrot/parrot/blob/master/tools/dev/findhacks.pl#L13 tools/dev/findhacks.pl:13][[br]] |
| 458 | {{{ |
| 459 | $ perl tools/dev/findhacks.pl |
| 460 | }}} |
| 461 | |
| 462 | * [https://github.com/parrot/parrot/blob/master/tools/dev/findhacks.pl#L18 tools/dev/findhacks.pl:18][[br]] |
| 463 | {{{ |
| 464 | looks for all instances of the word 'hack' in the source. It then outputs a |
| 465 | }}} |
| 466 | |
| 467 | * [https://github.com/parrot/parrot/blob/master/tools/dev/findhacks.pl#L25 tools/dev/findhacks.pl:25][[br]] |
| 468 | {{{ |
| 469 | open(HACKS, '-|', 'grep -rIn hack .') || die "Could not grep! $!\n"; |
| 470 | }}} |
| 471 | |
| 472 | * [https://github.com/parrot/parrot/blob/master/tools/dev/findhacks.pl#L29 tools/dev/findhacks.pl:29][[br]] |
| 473 | {{{ |
| 474 | if(/^.\/(.+?):([0-9]+):(.*hack.*)$/i) { |
| 475 | }}} |
| 476 | |
| 477 | * [https://github.com/parrot/parrot/blob/master/tools/dev/findhacks.pl#L84 tools/dev/findhacks.pl:84][[br]] |
| 478 | {{{ |
| 479 | Automatically generated by tools/dev/findhacks.pl |
| 480 | }}} |
| 481 | |
| 482 | * [https://github.com/parrot/parrot/blob/master/docs/pdds/pdd21_namespaces.pod#L328 docs/pdds/pdd21_namespaces.pod:328][[br]] |
| 483 | {{{ |
| 484 | Note that this method is basically a convenience and/or performance hack, as |
| 485 | }}} |
| 486 | |
| 487 | * [https://github.com/parrot/parrot/blob/master/docs/pdds/pdd03_calling_conventions.pod#L54 docs/pdds/pdd03_calling_conventions.pod:54][[br]] |
| 488 | {{{ |
| 489 | opcodes. But for now, certain efficiency hacks are easier with four opcodes. |
| 490 | }}} |
| 491 | |
| 492 | * [https://github.com/parrot/parrot/blob/master/docs/book/draft/chXX_library.pod#L22 docs/book/draft/chXX_library.pod:22][[br]] |
| 493 | {{{ |
| 494 | that can be used by Parrot hackers and HLL-implementers alike, if needed. |
| 495 | }}} |
| 496 | |
| 497 | * [https://github.com/parrot/parrot/blob/master/docs/book/draft/chXX_library.pod#L46 docs/book/draft/chXX_library.pod:46][[br]] |
| 498 | {{{ |
| 499 | project, and since a number of Perl hackers are very active in Parrot, |
| 500 | }}} |
| 501 | |
| 502 | * [https://github.com/parrot/parrot/blob/master/docs/book/draft/appd_build_options.pod#L37 docs/book/draft/appd_build_options.pod:37][[br]] |
| 503 | {{{ |
| 504 | unless you are planning to hack on IMCC directly. |
| 505 | }}} |
| 506 | |
| 507 | * [https://github.com/parrot/parrot/blob/master/docs/dev/pmc_obj_design_meeting_notes.pod#L7 docs/dev/pmc_obj_design_meeting_notes.pod:7][[br]] |
| 508 | {{{ |
| 509 | be found at L<http://rakudo.org/hackathon-chicago/index.cgi?object> and |
| 510 | }}} |
| 511 | |
| 512 | * [https://github.com/parrot/parrot/blob/master/docs/dev/pmc_obj_design_meeting_notes.pod#L8 docs/dev/pmc_obj_design_meeting_notes.pod:8][[br]] |
| 513 | {{{ |
| 514 | L<http://rakudo.org/hackathon-chicago/index.cgi?pmc>. A log of the discussion |
| 515 | }}} |
| 516 | |
| 517 | * [https://github.com/parrot/parrot/blob/master/docs/project/cage_cleaners_guide.pod#L303 docs/project/cage_cleaners_guide.pod:303][[br]] |
| 518 | {{{ |
| 519 | =head2 Help other contributors hack their patches into Parrot-style industrial-strength C code. |
| 520 | }}} |
| 521 | |
| 522 | * [https://github.com/parrot/parrot/blob/master/examples/tools/pgegrep#L145 examples/tools/pgegrep:145][[br]] |
| 523 | {{{ |
| 524 | stdindashhack: |
| 525 | }}} |
| 526 | |
| 527 | * [https://github.com/parrot/parrot/blob/master/examples/tools/pgegrep#L148 examples/tools/pgegrep:148][[br]] |
| 528 | {{{ |
| 529 | goto stdinhack |
| 530 | }}} |
| 531 | |
| 532 | * [https://github.com/parrot/parrot/blob/master/examples/tools/pgegrep#L153 examples/tools/pgegrep:153][[br]] |
| 533 | {{{ |
| 534 | goto stdindashhack |
| 535 | }}} |
| 536 | |
| 537 | * [https://github.com/parrot/parrot/blob/master/examples/tools/pgegrep#L185 examples/tools/pgegrep:185][[br]] |
| 538 | {{{ |
| 539 | stdinhack: |
| 540 | }}} |
| 541 | |
| 542 | * [https://github.com/parrot/parrot/blob/master/examples/io/httpd.pir#L82 examples/io/httpd.pir:82][[br]] |
| 543 | {{{ |
| 544 | The code was heavily hacked by bernhard and leo. |
| 545 | }}} |
| 546 | |
| 547 | * [https://github.com/parrot/parrot/blob/master/examples/benchmarks/vpm.pir#L11 examples/benchmarks/vpm.pir:11][[br]] |
| 548 | {{{ |
| 549 | _string = "just another perl hacker" |
| 550 | }}} |
| 551 | |
| 552 | * [https://github.com/parrot/parrot/blob/master/examples/benchmarks/vpm.rb#L4 examples/benchmarks/vpm.rb:4][[br]] |
| 553 | {{{ |
| 554 | string = "just another ruby hacker" |
| 555 | }}} |
| 556 | |
| 557 | * [https://github.com/parrot/parrot/blob/master/examples/benchmarks/mops.pasm#L32 examples/benchmarks/mops.pasm:32][[br]] |
| 558 | {{{ |
| 559 | # Eeevil hack. |
| 560 | }}} |
| 561 | |
| 562 | * [https://github.com/parrot/parrot/blob/master/examples/benchmarks/oo1.pir#L17 examples/benchmarks/oo1.pir:17][[br]] |
| 563 | {{{ |
| 564 | # find_global hack 2.16 1.6 |
| 565 | }}} |
| 566 | |
| 567 | * [https://github.com/parrot/parrot/blob/master/examples/benchmarks/oo1.pir#L24 examples/benchmarks/oo1.pir:24][[br]] |
| 568 | {{{ |
| 569 | # find_global hack 1.51 |
| 570 | }}} |
| 571 | |
| 572 | * [https://github.com/parrot/parrot/blob/master/examples/benchmarks/vpm.pl#L9 examples/benchmarks/vpm.pl:9][[br]] |
| 573 | {{{ |
| 574 | my $string = "just another perl hacker"; |
| 575 | }}} |
| 576 | |
| 577 | * [https://github.com/parrot/parrot/blob/master/examples/benchmarks/vpm.py#L6 examples/benchmarks/vpm.py:6][[br]] |
| 578 | {{{ |
| 579 | astring = "just another pyth hacker" |
| 580 | }}} |
| 581 | |
| 582 | * [https://github.com/parrot/parrot/blob/master/examples/shootout/revcomp.pir#L9 examples/shootout/revcomp.pir:9][[br]] |
| 583 | {{{ |
| 584 | # Original by Joshua Isom, heavily hacked by Leopold Toetsch |
| 585 | }}} |
| 586 | |
| 587 | * [https://github.com/parrot/parrot/blob/master/examples/pir/sudoku.pir#L2426 examples/pir/sudoku.pir:2426][[br]] |
| 588 | {{{ |
| 589 | NB: it seems to be simpler to just hack the code as to utter the |
| 590 | }}} |
| 591 | |
| 592 | * [https://github.com/parrot/parrot/blob/master/examples/pir/befunge/Changes#L52 examples/pir/befunge/Changes:52][[br]] |
| 593 | {{{ |
| 594 | PMC, and thanks go to Steve Fink for his hack to pop an |
| 595 | }}} |
| 596 | |
| 597 | * [https://github.com/parrot/parrot/blob/master/examples/pir/befunge/Changes#L57 examples/pir/befunge/Changes:57][[br]] |
| 598 | {{{ |
| 599 | of Clinton Pierce's hack. |
| 600 | }}} |
| 601 | |
| 602 | * [https://github.com/parrot/parrot/blob/master/examples/c/test_main.c#L170 examples/c/test_main.c:170][[br]] |
| 603 | {{{ |
| 604 | case '.': /* Give Windows Parrot hackers an opportunity to |
| 605 | * attach a debuggger. */ |
| 606 | }}} |
| 607 | |
| 608 | * [https://github.com/parrot/parrot/blob/master/examples/README#L14 examples/README:14][[br]] |
| 609 | {{{ |
| 610 | japh - Say 'Just another Parrot hacker' in various ways |
| 611 | }}} |
| 612 | |
| 613 | * [https://github.com/parrot/parrot/blob/master/ChangeLog#L951 ChangeLog:951][[br]] |
| 614 | {{{ |
| 615 | Also added small hack for .sub directive (which simply translates |
| 616 | }}} |
| 617 | |
| 618 | * [https://github.com/parrot/parrot/blob/master/ChangeLog#L4640 ChangeLog:4640][[br]] |
| 619 | {{{ |
| 620 | * core.ops, t/op/hacks.t: Added in the readline op, as well as |
| 621 | }}} |
| 622 | |
| 623 | * [https://github.com/parrot/parrot/blob/master/ChangeLog#L6994 ChangeLog:6994][[br]] |
| 624 | {{{ |
| 625 | Fixes to make Parrot compile without the temporary build hack |
| 626 | }}} |
| 627 | |
| 628 | * [https://github.com/parrot/parrot/blob/master/ChangeLog#L7843 ChangeLog:7843][[br]] |
| 629 | {{{ |
| 630 | Small hack to keep process_opfunc.pl from generating extra return() |
| 631 | }}} |
| 632 | |
| 633 | * [https://github.com/parrot/parrot/blob/master/ChangeLog#L9397 ChangeLog:9397][[br]] |
| 634 | {{{ |
| 635 | Temporary hack to store string constants in bytecode and recreate |
| 636 | }}} |
| 637 | |
| 638 | * [https://github.com/parrot/parrot/blob/master/frontend/parrot/main.c#L157 frontend/parrot/main.c:157][[br]] |
| 639 | {{{ |
| 640 | if (!Parrot_api_wrap_imcc_hack( |
| 641 | }}} |
| 642 | |
| 643 | * [https://github.com/parrot/parrot/blob/master/frontend/parrot/main.c#L642 frontend/parrot/main.c:642][[br]] |
| 644 | {{{ |
| 645 | case '.': /* Give Windows Parrot hackers an opportunity to |
| 646 | * attach a debuggger. */ |
| 647 | }}} |
| 648 | |
| 649 | * [https://github.com/parrot/parrot/blob/master/editor/mk_skeleton.pir#L4 editor/mk_skeleton.pir:4][[br]] |
| 650 | {{{ |
| 651 | # intended for people who hack on parrot itself, not users of parrot. |
| 652 | }}} |
| 653 | |
| 654 | * [https://github.com/parrot/parrot/blob/master/Makefile#L701 Makefile:701][[br]] |
| 655 | {{{ |
| 656 | # We build DYNPMC_TARGET in corevm. It's kinda hack to test t/pmc/threads.t CLONE_LIBRARIES |
| 657 | }}} |
| 658 | |
| 659 | {{{ |
| 660 | #!comment |
| 661 | Automatically generated by tools/dev/findhacks.pl |
| 662 | }}} |