[perl #42155] [PATCH] move members from Parrot_Interp to Parrot_Context
# New Ticket Created by Alek Storm # Please include the string: [perl #42155] # in the subject line of all future correspondence about this issue. # URL: http://rt.perl.org/rt3/Ticket/Display.html?id=42155 This patch moves args_signature, params_signature, returns_signature, current_args, current_params, and current_returns from Parrot_Interp to Parrot_Context. This makes the interpreter more reentrant, which is always a good thing. Since these variables are no longer global, we need to keep track of who belongs to whom. In a sub call, current_args and current_results are set for the caller, while current_params and current_returns are set for the callee. The same goes for *_signature, mutatis mutandis (an excuse to use Latin! yes!). This patch seems to break some tests in t/dynoplibs, and I have no idea why. It also *looks* like it breaks t/examples/shootout.t, but if the examples are run manually, they work fine. I am completely baffled. If anyone can solve these, they get a hug. Thanks, Alek Storm Index: src/ops/core.ops === --- src/ops/core.ops (revision 17785) +++ src/ops/core.ops (working copy) @@ -503,7 +503,7 @@ INTVAL argc; /* for now just point to the opcode */ -interp-current_args = this; +CONTEXT(interp-ctx)-current_args = this; argc = SIG_ELEMS(signature); goto OFFSET(argc + 2); } @@ -526,17 +526,16 @@ INTVAL argc; opcode_t *src_indexes, *dst_indexes; -interp-current_params = this; ctx = CONTEXT(interp-ctx); +ctx-current_params = this; ccont = ctx-current_cont; caller_ctx = ctx-caller_ctx; -src_indexes = interp-current_args; -dst_indexes = interp-current_params; -/* the args and params are now 'used.' */ -interp-current_args = NULL; -interp-current_params = NULL; +src_indexes = caller_ctx-current_args; +dst_indexes = ctx-current_params; +caller_ctx-current_args = NULL; +ctx-current_params = NULL; parrot_pass_args(interp, caller_ctx, ctx, src_indexes, dst_indexes, PARROT_PASS_PARAMS); if (PObj_get_FLAGS(ccont) SUB_FLAG_TAILCALL) { @@ -546,7 +545,6 @@ /* ordinarily, this will free the context immediately, but not if the sub created a closure (or continuation, or . . .). */ Parrot_free_context(interp, caller_ctx, 0); -interp-current_args = NULL; } argc = SIG_ELEMS(signature); goto OFFSET(argc + 2); @@ -560,8 +558,8 @@ INTVAL argc; opcode_t *src_indexes, *dest_indexes; -interp-current_returns = this; ctx = CONTEXT(interp-ctx); +ctx-current_returns = this; ccont = ctx-current_cont; if (PMC_cont(ccont)-address) { @@ -573,11 +571,10 @@ internal_exception(1, No caller_ctx for continuation %p., ccont); } -src_indexes = interp-current_returns; +src_indexes = ctx-current_returns; dest_indexes = caller_ctx-current_results; -interp-current_returns = NULL; -/* does this need to be here */ -interp-current_args = NULL; +ctx-current_returns = NULL; +caller_ctx-current_results = NULL; parrot_pass_args(interp, ctx, caller_ctx, src_indexes, dest_indexes, PARROT_PASS_RESULTS); } Index: src/ops/experimental.ops === --- src/ops/experimental.ops (revision 17785) +++ src/ops/experimental.ops (working copy) @@ -394,13 +394,14 @@ opcode_t* arg_op; PMC *sig, *class; int typ; + parrot_context_t *ctx = CONTEXT(interp-ctx); - arg_op = interp-current_args; + arg_op = ctx-current_args; if (!arg_op) { real_exception(interp, NULL, NULL_REG_ACCESS, No set_args with instantiate); } - sig = CONTEXT(interp-ctx)-constants[arg_op[1]]-u.key; + sig = ctx-constants[arg_op[1]]-u.key; ASSERT_SIG_PMC(sig); if (!SIG_ELEMS(sig)) { real_exception(interp, NULL, E_ValueError, @@ -425,7 +426,7 @@ break; } $1 = VTABLE_instantiate(interp, class, sig); - interp-current_args = NULL; + ctx-current_args = NULL; goto NEXT(); } Index: src/ops/pic.ops === --- src/ops/pic.ops (revision 17785) +++ src/ops/pic.ops (working copy) @@ -147,7 +147,7 @@ * - yes, confusing but faster */ ctx = CONTEXT(interp-ctx); -src_pc = interp-current_args; +src_pc = ctx-current_args; mic = (Parrot_MIC *) cur_opcode[1]; caller_ctx = ctx-caller_ctx; if (src_pc) { @@ -173,7 +173,7 @@ --ctx-recursion_depth; ctx-caller_ctx = caller_ctx-caller_ctx; Parrot_free_context(interp, caller_ctx, 0); -interp-current_args = NULL; +ctx-current_args = NULL; } goto OFFSET(n); @@ -200,12 +200,12 @@ ccont = ctx-current_cont; cc = PMC_cont(ccont); if (!cc-address) {
Testing PIRC
hi, Currently, compilers/pircdoes not have a test suite. I'd like to change that, but am not sure how to handle this. My idea was to have the PIR scripts parsed by pirc, which outputs *exactly* the same source (on success), which then should be compiled by IMCC. I'm not sure how to achieve this using the standard test tools/libs, as pirc is different than just another language. If anybody has any suggestions, I'd be very happy to hear those! Thanks, klaas-jan
Re: [perl #37997] r10604 build failure on Cygwin
I use Cygwin and am willing to occasionally test the build on it. Alas I have no clue how to actually -develop- for Cygwin, so I doubt I'd be much help fixing any problems that I find. But I'd be happy to svn up; perl Configure.pl make all test and summarize or post the results. -- I'd like to see Rush Limbaugh tell Omar he can't get married. --Alex Kotlowitz. You hadda be there
Re: [perl #42155] [PATCH] move members from Parrot_Interp to Parrot_Context
Am Mittwoch, 28. März 2007 03:14 schrieb Alek Storm: This patch moves args_signature, params_signature, returns_signature, current_args, current_params, and current_returns from Parrot_Interp to Parrot_Context. This makes the interpreter more reentrant, which is always a good thing. Nope. The current_ ptrs and friends are deliberately not in the Context structure. Rational: 1) This ism't needed, these pointers are only valid and needed up to the next sub call/return. 2) The Context struct should be as small as possible because each sub call needs one. 3) Reentrancy isn't a problem as new threads get new interpreter structs anyway. leo
Re: [perl #37997] r10604 build failure on Cygwin
Hi All! On 28/03/07, Ron Blaschke [EMAIL PROTECTED] wrote: Joshua Gatcomb wrote: On 3/26/07, Ron Blaschke [EMAIL PROTECTED] wrote: Not sure about the details of this issue, but r17772 seems to build fine on Cygwin. Really? No one on #parrot has been able to get parrot to work on Cygwin for months. It's been a while since I've posted here! I contributed a few tweaks for Cygwin some time back to help it build a bit smoother, but haven't tried in the last 12 months due to work commitments. However, one thing I note is that footnote *1 in Platforms has become orphaned in r16662, which is ironically when it was changed to Broken. Nick
[perl #42156] [PATCH] Make invoke() return opcode_t*
# New Ticket Created by Steve Peters # Please include the string: [perl #42156] # in the subject line of all future correspondence about this issue. # URL: http://rt.perl.org/rt3/Ticket/Display.html?id=42156 In this next round of cleanups, I switched over the invoke() methods to return opcode_t* as Andy Dougherty suggested. Also, I added a change to the NEED_CONTINUATION based on Kevin Tewks suggestions. Finally, I also included a couple of additional changes to back out some of my changes yesterday that are now irrelevant due to the first two changes. Steve Peters [EMAIL PROTECTED] Index: src/ops/object.ops === --- src/ops/object.ops (revision 17813) +++ src/ops/object.ops (working copy) @@ -60,8 +60,8 @@ Method '%Ss' not found, meth); } interp-current_object = object; - interp-current_cont = (PMC *)NEED_CONTINUATION; - dest = (opcode_t *)VTABLE_invoke(interp, method_pmc, next); + interp-current_cont = NEED_CONTINUATION; + dest = VTABLE_invoke(interp, method_pmc, next); goto ADDRESS(dest); } @@ -76,8 +76,8 @@ next = expr NEXT(); interp-current_object = object; - interp-current_cont = (PMC *)NEED_CONTINUATION; - dest = (opcode_t *)VTABLE_invoke(interp, method_pmc, next); + interp-current_cont = NEED_CONTINUATION; + dest = VTABLE_invoke(interp, method_pmc, next); goto ADDRESS(dest); } Index: src/pmc/complex.pmc === --- src/pmc/complex.pmc (revision 17813) +++ src/pmc/complex.pmc (working copy) @@ -279,7 +279,7 @@ /* -=item Cvoid* invoke(void* next) +=item Copcode_t* invoke(void* next) Pythonic object constructor. SELF is a Complex Class object. Return a new Ccomplex object according to 2.1. Built-in Functions. @@ -287,7 +287,7 @@ =cut */ -void* invoke(void* next) { +opcode_t* invoke(void* next) { int argcP = REG_INT(3); PMC *res = pmc_new(INTERP, enum_class_Complex); if (argcP == 1) { Index: src/pmc/retcontinuation.pmc === --- src/pmc/retcontinuation.pmc (revision 17813) +++ src/pmc/retcontinuation.pmc (working copy) @@ -74,7 +74,7 @@ } /* -=item Cvoid *invoke(void *next) +=item Copcode_t *invoke(void *next) Transfers control to the calling context, and frees the current context. @@ -82,7 +82,7 @@ */ -void* invoke(void* next) { +opcode_t* invoke(void* next) { struct Parrot_cont * cc = PMC_cont(SELF); parrot_context_t *from_ctx = cc-from_ctx; struct PackFile_ByteCode * const seg = cc-seg; Index: src/pmc/parrotinterpreter.pmc === --- src/pmc/parrotinterpreter.pmc (revision 17813) +++ src/pmc/parrotinterpreter.pmc (working copy) @@ -284,7 +284,7 @@ /* -=item Cvoid *invoke(void *next) +=item Copcode_t *invoke(void *next) Runs the interpreter's byte code. @@ -292,7 +292,7 @@ */ -void* invoke(void* next) { +opcode_t* invoke(void* next) { Interp * new_interp = (Interp *)PMC_data(SELF); /* Index: src/pmc/bound_nci.pmc === --- src/pmc/bound_nci.pmc (revision 17813) +++ src/pmc/bound_nci.pmc (working copy) @@ -33,7 +33,7 @@ Return the bound object. -=item Cvoid *invoke(void *next) +=item Copcode_t *invoke(void *next) Calls the associated C method, returning C*next. @@ -55,7 +55,7 @@ return PMC_pmc_val(SELF); } -void* invoke(void * next) { +opcode_t* invoke(void * next) { if (PObj_get_FLAGS(SELF) PObj_private0_FLAG) { /* bound multi sub * XXX maybe create separate PMC class Index: src/pmc/multisub.pmc === --- src/pmc/multisub.pmc(revision 17813) +++ src/pmc/multisub.pmc(working copy) @@ -57,7 +57,7 @@ attempt to set non Sub PMC); } -void* invoke(void *next) { +opcode_t* invoke(void *next) { PMC *list = Parrot_mmd_sort_candidate_list(interp, SELF); PMC *func = PMCNULL; if (!PMC_IS_NULL(list)) Index: src/pmc/coroutine.pmc === --- src/pmc/coroutine.pmc (revision 17813) +++ src/pmc/coroutine.pmc (working copy) @@ -120,7 +120,7 @@ /* -=item Cvoid *invoke(void *next) +=item Copcode_t *invoke(void *next) Swaps the context. @@ -128,7 +128,7 @@ */ -void* invoke(void* next) { +opcode_t* invoke(void* next) { struct Parrot_coro * co = PMC_coro(SELF); parrot_context_t *caller_ctx; struct PackFile_ByteCode *wanted_seg; Index: src/pmc/delegate.pmc === --- src/pmc/delegate.pmc(revision
Re: [perl #37997] r10604 build failure on Cygwin
Eric Hanchrow schrieb: I use Cygwin and am willing to occasionally test the build on it. Alas I have no clue how to actually -develop- for Cygwin, so I doubt I'd be much help fixing any problems that I find. But I'd be happy to svn up; perl Configure.pl make all test and summarize or post the results. You can also use make smoke', as documented in docs/tests.pod. The results of smoke testing should show up in http://smoke.parrotcode.org/smoke/. Regards, Bernhard
Re: [svn:parrot] r17814 - in trunk: . compilers/pirc
Is it me, or did this also change all the paths in MANIFEST.SKIP from win style with backslashes to unix style with slashes? (someone should double check the manifest.skip generator and have it only output slashes.) [EMAIL PROTECTED] writes: Author: bernhard Date: Wed Mar 28 10:22:00 2007 New Revision: 17814 Modified: trunk/MANIFEST trunk/MANIFEST.SKIP trunk/compilers/pirc/ (props changed) Log: Tell SVN about generated file compilers/pirc/Makefile
Re: [perl #42110] [PATCH] Returning values from void functions
On Tue, Mar 27, 2007 at 05:42:12AM -0700, Steve Peters via RT wrote: Anyway, it's worth noting that although one of functions actually doesn't return anything, it is documented as returning a PMC *. So either the documentation or the function is wrong in parrotobject.pmc and should be fixed. Unfortunately, I can't find a gcc warning flag that would seem to catch this sort of situation either. $ gcc -ansi -pedantic -Wall -o void void.c void.c: In function `uggh': void.c:9: warning: `return' with a value, in function returning void where my test program is #include stdio.h void thwape() { puts(here!); } void uggh() { puts(no, here!); return thwape(); } int main () { uggh(); return 0; } I don't think that it's possible to make this non-conformity a fatal heresy :-( (gcc --spanish-inquisition) Getting parrot to build under -ansi -pedantic is left as an exercise to the reader. Likely to a reader on *BSD who wants to apply for a microgrant. (Even Solaris doesn't have headers that are clean with -ansi -pedantic. Which surprises me. Solaris is usually very clean and well engineered throughout) Can Intel or Sun's compilers be coaxed into being suitably grumpy about this? If so, do we have a machine capable of smoking them? And is it viable (or good) for parrot smoke failures to reach this list, much like most people configure their Perl 5 smokers to send the black smoke to p5p? Nicholas Clark
Re: [perl #37997] r10604 build failure on Cygwin
Joshua == Joshua Gatcomb [EMAIL PROTECTED] writes: Joshua Really? No one on #parrot has been able to get parrot to Joshua work on Cygwin for months. The reason has changed since Joshua this specific ticket but if you have a working cygwin Joshua build can you please share more details such as: I doubt this is terribly useful, but I cannot get the cygwin build working, and here's the output that I see. This is with r17772, which someone claimed worked for them. URL: https://svn.perl.org/parrot/trunk Revision: 17772 perl Configure.pl make all smoke Parrot Version 0.4.10 Configure 2.0 Copyright (C) 2001-2007, The Perl Foundation. Hello, I'm Configure. My job is to poke and prod your system to figure out how to build Parrot. The process is completely automated, unless you passed in the `--ask' flag on the command line, in which case it'll prompt you for a few pieces of info. Since you're running this program, you obviously have Perl 5--I'll be pulling some defaults from its configuration. Checking MANIFEST.done. Setting up Configure's default values.done. Setting up installation paths.done. Tweaking settings for miniparrot...skipped. Loading platform and local hints filesdone. Determining nongenerated header files.done. Determining what C compiler and linker to use.done. Determining whether make is installed..yes. Determining whether lex is installed...skipped. Determining whether yacc is installed..skipped. Determining if your C compiler is actually gcc.yes. Determining if your C compiler is actually Visual C++...no. Enabling optimization...no. Determining flags for building shared libraries...done. Determine if parrot should be linked against a shared library..yes. Determining what charset files should be compiled in..done. Determining what encoding files should be compiled in.done. Determining what types Parrot should use..done. Determining what opcode files should be compiled in...done. Determining what pmc files should be compiled in..done. Determining your minimum pointer alignment. 1 byte. Probing for C headers.done. Determining some sizesdone. Computing native byteorder for Parrot's wordsize.little-endian. Test the type of va_ptr (this test is likely to segfault)..x86. Figuring out how to pack() Parrot's types.done. Figuring out what formats should be used for sprintf..done. Determining if your C library has a working S_ISREGyes. Determining architecture, OS and JIT capability...done. Generating CPU specific stuff.done. Verifying that the compiler supports function pointer castsyes. Determining whether your compiler supports computed goto...yes. Determining if your compiler supports inline...yes. Determining what allocator to use.done. Determining if your C library supports memalignyes. Determining some signal stuff.done. Determining whether there is socklen_t.yes. Determining if your C library has setenv / unsetenv...both. Determining if your platform supports AIO...no. Determining if your platform supports GMP...no. Determining if your platform supports readline..no. Determining if your platform supports gdbm.yes. Testing snprintf..done. Determining whether perldoc is installed...yes. Determining whether python is installed.yes, 2.5.0. Determining whether GNU bc is installed.no. Determining whether GNU m4 is installed.no. Running CPU specific stuffdone. Determining whether ICU is installedno. Determining Parrot's revision.done. Generating C headers..done. Generating core pmc list..done. Generating
Re: [svn:parrot] r17814 - in trunk: . compilers/pirc
Will Coleda schrieb: Is it me, or did this also change all the paths in MANIFEST.SKIP from win style with backslashes to unix style with slashes? I've seen the same effect. I suppose if stems from the changeset 17760, where tools/dev/mk_manifest_and_skip.pl got a fix for Windows. Under Linux 'perl Configure.pl' and 'make manitest' are not complaining, so I suppose the the patch is OK. Regards, Bernhard
Re: [svn:parrot] r17814 - in trunk: . compilers/pirc
I don't think there's a problem with the MANIFEST.SKIP either way, but I'd like to avoid unnecessarily large diffs which obscure what was added to the .SKIP file. Bernhard Schmalhofer writes: Will Coleda schrieb: Is it me, or did this also change all the paths in MANIFEST.SKIP from win style with backslashes to unix style with slashes? I've seen the same effect. I suppose if stems from the changeset 17760, where tools/dev/mk_manifest_and_skip.pl got a fix for Windows. Under Linux 'perl Configure.pl' and 'make manitest' are not complaining, so I suppose the the patch is OK. Regards, Bernhard
[svn:parrot-pdd] r17817 - trunk/docs/pdds/draft
Author: jonathan Date: Wed Mar 28 14:57:56 2007 New Revision: 17817 Modified: trunk/docs/pdds/draft/pdd15_objects.pod Log: [PDD15]: Some extra details to explain the result of one role being composed into another; these mostly mirror what happens when a role is composed into a class. Modified: trunk/docs/pdds/draft/pdd15_objects.pod == --- trunk/docs/pdds/draft/pdd15_objects.pod (original) +++ trunk/docs/pdds/draft/pdd15_objects.pod Wed Mar 28 14:57:56 2007 @@ -470,12 +470,17 @@ =item roles -An accessor for the roles composed into the role. It returns an Array of -all roles as PMC objects. The accessor is read-only. +An accessor for the roles composed into the role. It returns an Array of all +roles as PMC objects. If any roles that were composed into this one were +themselves made up of a composition of other roles, the roles they were made +up of will also be included in the value returned by this accesor. However, +no role will be mentioned more than once. The accessor is read-only. =item add_role -Adds a single role to the role. It takes a simple string name. +Adds a single role to the role. It takes an instance of the Role PMC as a +required positional parameter, and the optional named parameters Cwithout +and Calias; see LRole Conflict Resolution for more details. =item add_method @@ -490,7 +495,9 @@ =item methods An accessor for the methods of the role. It returns a Hash of all methods, -with a key of the method name and a value of an invokable PMC. +with a key of the method name and a value of an invokable PMC. The list will +include methods added through composing other roles into this role. The +accessor is read-only. =back
Re: [perl #42155] [PATCH] move members from Parrot_Interp to Parrot_Context
On 3/28/07, Leopold Toetsch [EMAIL PROTECTED] wrote: 1) This ism't needed, these pointers are only valid and needed up to the next sub call/return. The current_results member already lives in Parrot_Context; this patch just moves the rest of them there as well. Variables can't be global simply because of when they're valid. It's a hack. 2) The Context struct should be as small as possible because each sub call needs one. Compactness does not supersede good design. 3) Reentrancy isn't a problem as new threads get new interpreter structs anyway. Reentrancy isn't only a threading issue. From src/inter_run.c, in Parrot_runops_fromc_args_event (line 318): /* running code from event handlers isn't fully reentrant due to * these interpreter variables - mainly related to calls */ The code then has to manually save these variables, then restore them after the PIR sub is called. Thus, reentrancy *is* a problem. With this patch, the number of variables we have to do this with is reduced to one. Thanks, Alek
[perl #42161] [BUG] Parrot::Test throws Can't spawn warning on windows if a system call returns a negative value
# New Ticket Created by Jerry Gay # Please include the string: [perl #42161] # in the subject line of all future correspondence about this issue. # URL: http://rt.perl.org/rt3/Ticket/Display.html?id=42161 Parrot::Test throws a Can't spawn warning on windows if a system call returns a negative value. i have a small patch which implements no warnings 'exec' around the system call in 'run_command', which fixes this. i'll commit it as soon as i have a ticket number to refer to in a source comment. ~jerry
Re: [perl #37997] r10604 build failure on Cygwin
On 3/28/07, Ron Blaschke [EMAIL PROTECTED] wrote: Joshua Gatcomb wrote: Really? No one on #parrot has been able to get parrot to work on Cygwin for months. Interesting, didn't know about this. The issue for the longest time was that miniparrot.exe would silently die and not even gdb could figure out why. It appeared to be a linking issue but as static linking also didn't work and there were no cygwin experts around, it went unresolved. The problem I am experiencing now is happening earlier. Could you, or someone else, please add the error message to the ticket, or create a new one? Maybe I can help with that. If you could hang out on #parrot (irc.perl.org) when myself, Jonathan, particle, etc are around - it would go a long way towards getting a reproduceable test case that can be correctly articulated as to the nature of the problem. A few years ago I used to build parrot on cygwin daily and opened several tickets that years later I was asked if were still applicable. I am not interested in repeating the past. It's a fairly standard Windows XP SP2 box with Cygwin, everything up to date. I have tried to install everything optional (like ICU), too. My configuration is identical to yours with the following exceptions: Despite having GMP and bc installed Configure.PL doesn't find them. I am interested in knowing why this is but I doubt it has anything to do with the problem. Here is the tail end of my make output: see attached Cheers, Joshua Gatcomb a.k.a. Limbic~Region src/pmc/stmlog.c src/pmc/stmref.c src/pmc/stmvar.c src/pmc/super.c src/pmc/undef.c src/encodings/fixed_8.c src/encodings/ucs2.c src/encodings/utf16.c src/encodings/utf16.c: In function `to_encoding': src/encodings/utf16.c:104: warning: passing arg 3 of `u_strFromUTF8_3_6' from incompatible pointer type src/encodings/utf16.c:118: warning: passing arg 3 of `u_strFromUTF8_3_6' from incompatible pointer type src/encodings/utf8.c compilers/imcc/imcparser.c compilers/imcc/imclexer.c compilers/imcc/imclexer.c: In function `yy_get_next_buffer': compilers/imcc/imclexer.c:4356: warning: comparison between signed and unsigned compilers/imcc/imc.c compilers/imcc/symreg.c compilers/imcc/instructions.c compilers/imcc/cfg.c compilers/imcc/reg_alloc.c compilers/imcc/sets.c compilers/imcc/debug.c compilers/imcc/optimizer.c compilers/imcc/pbc.c compilers/imcc/parser_util.c compilers/imcc/pcc.c /usr/bin/perl.exe -MExtUtils::Command -e mkpath blib/lib gcc -shared -s -L/usr/local/lib -o blib/lib/libparrot.dll \ src/ops/core_ops.o src/ops/core_ops_switch.o src/ops/core_ops_cg.o src/ops/core_ops_cgp.o src/charset.o src/encoding.o sr c/exceptions.o src/global_setup.o src/interpreter.o src/inter_call.o src/inter_cb.o src/inter_create.o src/inter_misc.o src/i nter_run.o src/gc/register.o src/gc/memory.o src/objects.o src/packfile.o src/stacks.o src/stack_common.o src/string.o src/st ring_primitives.o src/sub.o src/runops_cores.o src/trace.o src/pmc.o src/pmc_freeze.o src/key.o src/hash.o src/core_pmcs.o sr c/platform.o src/jit.o src/jit_cpu.o src/jit_debug.o src/jit_debug_xcoff.o src/intlist.o src/list.o src/library.o src/global. o src/embed.o src/warnings.o src/packout.o src/byteorder.o src/debug.o src/headers.o src/hll.o src/gc/smallobject.o src/gc/do d.o src/gc/gc_ims.o src/gc/gc_gms.o src/exit.o src/misc.o src/spf_render.o src/spf_vtable.o src/datatypes.o src/fingerprint.o src/nci.o src/cpu_dep.o src/tsq.o src/longopt.o src/events.o src/thread.o src/dynext.o src/utils.o src/vtables.o src/pic.o s rc/pic_jit.o src/mmd.o src/builtin.o src/extend.o src/extend_vtable.o src/revision.o src/packfile/pf_items.o src/stm/backend. o src/stm/waitlist.o src/gc/resources.o src/charset/ascii.o src/charset/binary.o src/charset/iso-8859-1.o src/charset/tables. o src/charset/unicode.o src/io/io.o src/io/io_buf.o src/io/io_layers.o src/io/io_unix.o src/io/io_utf8.o src/io/io_mmap.o src /io/io_win32.o src/io/io_stdio.o src/io/io_string.o src/io/io_passdown.o src/pmc/default.o src/pmc/null.o src/pmc/env.o src/p mc/key.o src/pmc/random.o src/pmc/unmanagedstruct.o src/pmc/managedstruct.o src/pmc/delegate.o src/pmc/compiler.o src/pmc/exc eption.o src/pmc/version.o src/pmc/vtablecache.o src/pmc/parrotio.o src/pmc/parrotlibrary.o src/pmc/parrotinterpreter.o src/p mc/parrotthread.o src/pmc/lexpad.o src/pmc/timer.o src/pmc/pointer.o src/pmc/sub.o src/pmc/closure.o src/pmc/continuation.o s rc/pmc/retcontinuation.o src/pmc/exception_handler.o src/pmc/coroutine.o src/pmc/eval.o src/pmc/nci.o src/pmc/float.o src/pmc /integer.o src/pmc/bigint.o src/pmc/complex.o src/pmc/string.o src/pmc/boolean.o src/pmc/ref.o src/pmc/sharedref.o src/pmc/ar ray.o src/pmc/fixedintegerarray.o src/pmc/intlist.o src/pmc/iterator.o src/pmc/sarray.o src/pmc/fixedstringarray.o src/pmc/mu ltiarray.o src/pmc/hash.o src/pmc/orderedhash.o src/pmc/tqueue.o src/pmc/parrotclass.o src/pmc/parrotobject.o src/pmc/os.o sr c/pmc/file.o src/pmc/addrregistry.o
[perl #42073] [BUG]: compilers/pirc/Makefile not cleaned up by 'make realclean'
Patch applied in r17821.