#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

Reply via email to