On Sat, Jun 21, 2008 at 1:40 PM, chromatic <[EMAIL PROTECTED]> wrote:
> On Saturday 21 June 2008 07:16:58 James Keenan via RT wrote:
>
>> On Sat May 10 20:22:53 2008, coke wrote:
>> > This make file isn't preprocessed like the standard root.in: it
>> > assumes perl is in your path, and redefines the list of OPSFILES.
>>
>> Let me pose some questions:
>>
>> 1.  Who actually uses this program?  Under what circumstances?
>
> Anyone who adds or removes a (non-experimental) Parrot op.
>
>> 2.  Must exist this program as a makefile?
>
> Not at all.  As far as I know, the only reason it's a makefile is history.

I would rather it existed as a build step in the regular makefile.
Perhaps something that was only triggered if you were running in
--maintainer mode, as I have suggested elsewhere.

>> So both tools/dev/ops_renum.mak and ops2pm.pl --renum seem to be Parrot
>> developers tools -- not intrinsic components of 'make'.  My
>> recommendation -- once we have answered question (1) above -- would be:
>>
>> (a) pull renum_op_map_file() out of Parrot::Ops2pm::Utils and into a
>> subclass -- the better to emphasize that it's not part of the regular
>> 'make' process;
>
> I'm not sure a subclass is strictly necessary, but that won't hurt.
>
>> (b) pull the '--renum' option out of tools/build/ops2pm.pl;
>>
>> (c) replace tools/dev/ops_renum.mak with a pure Perl program which does
>> what 'tools/build/ops2pm.pl --renum' does now; and
>>
>> (d) only at this point determine whether we need to gussy this up as a
>> 'make' target.
>
> It would be convenient to have a make target which renumbers ops.  Every time
> I've added or removed an op, I've had to go source diving to figure out where
> and how to invoke this makefile.
>
>> [1] 'make' invokes 'ops2pm.pl' once:
>>
>> /usr/local/bin/perl tools/build/ops2pm.pl src/ops/core.ops
>> src/ops/bit.ops src/ops/cmp.ops src/ops/debug.ops
>> src/ops/experimental.ops src/ops/io.ops src/ops/math.ops
>> src/ops/object.ops src/ops/pic.ops src/ops/pmc.ops src/ops/set.ops
>> src/ops/stm.ops src/ops/string.ops src/ops/sys.ops src/ops/var.ops
>>
>> core.ops is called first, then all the other .ops files in that
>> directory *except* 'obscure.ops' are called in alphabetical order.
>>
>> tools/dev/ops_renum.mak calls the same list *with the exception of*
>> 'experimental.ops.'  I am not clear on why 'make' and
>> 'tools/dev/ops_renum.mak' call different lists of '.ops' files -- and
>> I'm not sure why we retain a file called 'obscure.ops' in the same
>> directory as all our other essential '.ops' files.
>
> None of the ops in experimental.ops get formal op numbers, as far as I can
> tell.  Thus they don't need renumbering.

In ages past, I believe this was setup so that we would have a place
we could put ops that would allow us to add and subtract ops without
impacting our declared op list in between major releases.

> I don't know what, if anything, uses obscure ops.

While there is plenty of room for obscure ops in parrot's bytecode, I
would recommend that we move these particular ops over to methods on
the Float pmc and retire the obscure.ops file; unless nothing uses
them, in which case I suggest we just rip them out.

> -- c
>



-- 
Will "Coke" Coleda

Reply via email to