#552: Evaluate all hack-identifying comments in source code
---------------------+------------------------------------------------------
Reporter: jkeenan | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: none | Version:
Severity: medium | Keywords: hack
Lang: | Patch:
Platform: all |
---------------------+------------------------------------------------------
A couple of years back, Paul T Cochrane grepped our repository for 'TODO',
'FIXME' and 'XXX' and created RT tickets for all comments containing these
strings. We've incorporated some of that in our test suite.
Tonight I realized that we have many comments in our source code which
identify adjacent code as hacks. Some of these are already being tracked
in RT or TT; others are not yet tracked.
Before creating a raft of new TTs, I'd like to post an edited list of what
I got from grep-ing trunk for 'hack'. If you can respond to any of these
''this-is-a-hack'' comments, please do so.
Thank you very much.[[BR]]
kid51
{{{
$ cat ~/learn/parrot/hacks.edited.txt
./src/gc/resources.c:495: /* Somewhat of a hack,
but if we get per-pool
./src/gc/mark_sweep.c:621: /* XXX FIXME hack */
./src/gc/mark_sweep.c:736: /* yes, this cast is a hack for now, but a
pointer is a pointer */
./src/gc/mark_sweep.c:992: /* short-term hack to color objects
black */
./src/gc/system.c:78: double align_hack[2];
./src/gc/system.c:91: static void (*fn_ptr)(void) = (void
(*)(void))&u.align_hack[0];
./src/string/api.c:147: /* XXX FIXME hack to avoid cross-
interpreter issue until it
./src/pmc/class.pmc:1586:This is just a temporary hack. Type ID numbers
shouldn't be externally
./src/pmc/complex.pmc:537:Quick hack to emulate get_real() and get_imag():
./src/pmc/null.pmc:49: /* XXX maybe a hack to get TGE running again
*/
./src/pmc/parrotinterpreter.pmc:390: /* quick hack to get the
global stash */
./src/pmc/parrotthread.pmc:46: * XXX a quick hack to pass the few tests
./src/pmc/fixedintegerarray.pmc:173: /* a quick hack to create a
clone in the constant PMC arena
./src/pmc/namespace.pmc:324: /* TODO - this hack needs to go */
./src/pmc/nci.pmc:327: /* Parrot_eprintf(interp, "HACKED
%S\n", nci_info->signature); */
./src/pmc/default.pmc:88: /* the quick hack below cannot be used
because the string could
./src/pmc/default.pmc:92: * a quick hack, to prevent freeing that
string during GC
./src/jit/arm/jit_emit.h:490: are on (ie MOV followed by anything,
including hacks with setting the carry
./src/jit/ppc/jit_emit.h:1223: * sets condition codes, so the speed
hack in Parrot_ifunless_i_ic
./src/jit/sun4/jit_emit.h:19: XXX Hack [perl #37819] below.
./src/jit/sun4/jit_emit.h:797:/* XXX Hack to fix the following bug as of
05 Dec 2005:
./src/jit/sun4/jit_emit.h:798: Hack [perl #37819] Sun4 builds fail
linking against jit.o
./src/jit/sun4/jit_emit.h:802: See also the "Hack [perl #37819]"
section near the bottom of this
./src/jit/sun4/jit_emit.h:824:/* XXX end blind hack for [perl #37819]
--but see
./src/jit/sun4/jit_emit.h:825: additional hack section at bottom.
./src/jit/sun4/jit_emit.h:1180:/* XXX Hack [perl #37819] Unlike the
functions above, this one apparently
./src/jit/amd64/jit_emit.h:808: * to track down, the hackish things to
do(movhlpd and movlhpd were used, but I
./src/io/unix.c:698: /* XXX ugly hack to be able to pass some
arguments
./src/oo.c:228: /* This is a hack! All PMCs should be able to be
handled through
./src/global.c:888: /* TEMPORARY HACK - cache invalidation should
be a namespace function */
./src/pic.c:99: * hack to turn on inlining - just sub_p_p for mops done
./src/list.c:854: * Jr's book "Hacker's Delight". */
./src/malloc.c:2191: S. Warren Jr's book "Hacker's Delight".
./src/malloc.c:2738: probably figure out how to hack this routine to
print out or
./src/thread.c:1128: /* XXX: maybe a little hack; see RT #49532 */
./ext/SQLite3/DBDI/Driver/SQLite3.pm:12: # This bit of hackery is to
get around the fact that you can't use
./tools/build/nativecall.pl:332: hackish, but that is just fine */
./tools/build/nativecall.pl:524: "here there be hacks" */
./tools/util/pgegrep:140: stdindashhack:
./tools/util/pgegrep:143: goto stdinhack
./tools/util/pgegrep:148: goto stdindashhack
./tools/util/pgegrep:180: stdinhack:
./tools/dev/parrot-fuzzer:470: #This is a moderately fragile hack
that relies on the specific
./lib/Parrot/Configure/Options/Conf.pm:83: --define=inet_aton Quick
hack to use inet_aton instead of inet_pton
./lib/Parrot/Docs/POD2HTML.pm:248: # A little bit of a hack to
avoid config template files.
./lib/Parrot/Docs/File.pm:71: 'hacking' => 'README file',
./include/parrot/caches.h:18:/* turn off this hack, we need something
better */
./compilers/pct/src/PCT/Grammar.pir:188: ## the 'o', 'd', or 'x' into
8, 10, or 16 (yes, it's hack
./compilers/imcc/imclexer.c:2408: * we AFAIK need this hack as flex
doesn't export YY_BUFFER_STATE */
./compilers/imcc/main.c:440: case '.': /* Give Windows Parrot
hackers an opportunity to
./compilers/imcc/imcc.l:49: * we AFAIK need this hack as flex doesn't
export YY_BUFFER_STATE */
./compilers/pge/PGE/P5Regex.pir:115: optable.'newtok'('close:}',
'looser'=>'infix:|', 'nows'=>1) # XXX: hack
./compilers/pirc/src/pir.l:405:{DQ_STRING} { /* XXX this is a bit
hacky. First the string is unescaped, but that
./compilers/pirc/src/pirlexer.c:2586:{ /* XXX this is a bit hacky. First
the string is unescaped, but that
./t/pmc/signal.t:48:# This is a non-portable hack.
./t/pmc/class.t:89: $I0 = 1 # hack for testing exceptions
./t/steps/auto_arch-01.t:44: # Darwin because of a hack in
config/auto/arch.pm. We capture the warning
./t/op/sprintf_tests:201:%d $p=sprintf('%p',$p);$p=~/^[0-9a-f]+$/ 1
Coarse hack: hex from %p?
./t/op/sprintf_tests:202:%d $p=sprintf('%-8p',$p);$p=~/^[0-9a-f]+\s*$/
1 Coarse hack: hex from %p?
./config/inter/make.pm:123: # RT#43171 this is an ugly hack
./config/auto/alignptrs/test_c.in:43: printf("Soft failure hack for
systems that simulate unaligned access\n");
./config/auto/headers.pm:42: # headers we found so far. This is
somewhat a hack, but makes probing
./config/gen/opengl.pm:320: # Ignore internal GLUT Win32 compatibility
hackage
./config/gen/opengl.pm:649: $ignore{$file}++, next if $name
=~ /_ATEXIT_HACK$/;
}}}
--
Ticket URL: <https://trac.parrot.org/parrot/ticket/552>
Parrot <https://trac.parrot.org/parrot/>
Parrot Development
_______________________________________________
parrot-tickets mailing list
[email protected]
http://lists.parrot.org/mailman/listinfo/parrot-tickets