Re: open issue review (easy stuff)

2004-03-02 Thread Will Coleda
On Tuesday, January 20, 2004, at 06:03  PM, Robert Spier wrote:
If you respond to this message, with the ticket id and brief reason
why it can be closed, i.e. "patch applied", "patch rejected", "bad
idea".. I'll do the labor of updating the ticketing system.

-R

18044: Assembler doesn't return a useful exit status
assemble.pl is dead - original issue resolved, followup sent, though we 
still don't return on bad usage as the follow up poster requested.
19670: [PASM] bug in i/o (read on stdin)
Sent followup via RT - still can't get unbuffered STDIN, though the 
main issue is resolved.

20666: Assemble.pl Reports Incorrect Line Numbers after Removal of  
Macros
assemble.pl is dead.

21729: IMCC doesn't handle scientific notation constants
The thrust was "assemble.pl" supports them, imcc doesn't, but they 
should agree.

Since assemble.pl is dead, the question is moot, IMCC notation wins. 
(no followup sent.)

22183: imcc doesn't support \e
Yes it does. (patch was applied but never closed) (no followup sent)

22521: IMCC causes seegfault with many perlarrays and perlhashes
22617: IMCC duplicate labels in different subs cause wrong branch
Leo fixed these, but they were never closed



22718: core function index() returns -1 when search string contains  
spaces
This appears to be fixed.
22922: Parrot threading!
This wasn't really a bug. More of a question that Dan seems to have 
answered.

22995: [PATCH] op cmp INT STR STR

Dan applied this, never closed.

23299: Dynamic type handling in IMCC
There is a very long discussion which appears to be rendered academic 
by the fact that the poster's original code now works (presuming you 
add the missing "end" as the last opcode.)

... and then I got bored.

--
Will "Coke" Coledawill at coleda 
dot com



Re: [perl #27336] [PATCH] Typo in library/dumper.imc

2004-03-02 Thread chromatic
On Tue, 2004-03-02 at 21:54, Will Coleda wrote:

> Minor typo in library/dumper.imc for unknown pmcs

Thanks, applied.

-- c



Re: www.parrotcode.org/ points to 0.0.10

2004-03-02 Thread Robert Spier

As promised.  

The "new" site is now live.

-R

> 
> This is on my list for tonight.  I've got something all ready to go
> but have been busy with a $NEW_JOB.
> 
> -R
> 
> At Tue, 2 Mar 2004 00:44:02 -0500,
> Mitchell N Charity wrote:
> > 
> > The parrot homepage
> >   http://www.parrotcode.org/
> > currently says
> >   Periodic releases will appear on CPAN; the current release is
> >   version 0.0.10, and can be found in the CPAN source directory.
> > And "source directory" is a link to parrot-0.0.10.tar.gz


[perl #27336] [PATCH] Typo in library/dumper.imc

2004-03-02 Thread via RT
# New Ticket Created by  Will Coleda 
# Please include the string:  [perl #27336]
# in the subject line of all future correspondence about this issue. 
# http://rt.perl.org:80/rt3/Ticket/Display.html?id=27336 >


Minor typo in library/dumper.imc for unknown pmcs



dumper.diff
Description: Binary data


--
Will "Coke" Coledawill at coleda 
dot com

Re: [perl #27301] [PATCH] \t\pmc\exec.t Tests spawnw opcode

2004-03-02 Thread Brent \"Dax\" Royal-Gordon
Nigel Sandever wrote:
> If my lack of experience with OSS/unix makes my willingness to
> contribute to the project unviable, then a simple statement; "stop
> bothering us" will stop me wasting your time and mine.
If I may, most of the US East Coast is settling down for bed right now, 
and most of the West Coast is having dinner.  I would guess that people 
just haven't noticed your post yet.

The patch looks okay to me, but I've been out of the loop so long that 
I'm as likely to be wrong as right.  :^)

In my experience, these guys don't discriminate based on either Unix 
experience or open-source experience--when I submitted my first patches, 
I'd never sat at a Unix workstation or server, submitted code to another 
Open Source project, or even written C.  (C++, yes, but not C.)

--
Brent "Dax" Royal-Gordon <[EMAIL PROTECTED]>
Perl and Parrot hacker
Oceania has always been at war with Eastasia.


[PATCH] native exec support on win32

2004-03-02 Thread Goplat
Attached patch adds native exec support for win32's COFF format .o files. I
had to change some code that assumed the bytecode being used was from the
interpreter->code->src block, which wasn't the case when it's not being mmaped.

__
Do you Yahoo!?
Yahoo! Search - Find what you’re looking for faster
http://search.yahoo.com--- build_tools/jit2h.pl~   Tue Feb 10 01:38:56 2004
+++ build_tools/jit2h.plTue Mar  2 16:08:04 2004
@@ -177,7 +177,7 @@
 # The ->u.(string|float) is unnecessary.
 $asm =~ s/\)->u\.(\w+)/)/g;
 $asm =~ 
s/CONST\((\d)\)\s*([><=!]=?)\s*CONST\((\d)\)/RCONST($1)->u.number $2 
RCONST($3)->u.number/ if ($asm =~ /CONST.*CONST/);
-$asm =~ 
s/(jit_emit_mov_([mr]i_ni).*)&jit_info->cur_op\[(\d)\]\);/$1(int)&jit_info->cur_op[$3] 
- (int)interpreter->code->src);\n\tParrot_exec_add_text_rellocation(jit_info->objfile, 
NULL, RTYPE_DATA, "program_code", 0);/g;
+$asm =~ 
s/(jit_emit_mov_([mr]i_ni).*)&jit_info->cur_op\[(\d)\]\);/$1(int)&jit_info->cur_op[$3] 
- (int)interpreter->code->cur_cs->base.data + 
jit_info->objfile->bytecode_header_size);\n\tParrot_exec_add_text_rellocation(jit_info->objfile,
 NULL, RTYPE_DATA, "program_code", 0);/g;
 $asm =~ 
s/(\n(\s*)[^\n]*((rm|mr|mi|ri)_(ni|n|i))[^\n]*[INSP]REG[^\n]*)/$1\n$2Parrot_exec_add_text_rellocation(jit_info->objfile,
 NULL, RTYPE_COM, "interpre", 0);/g;
 $asm =~ 
s/(\n(\s*)[^\n]*((rm|mr|mi|ri)_(ni|n|i))[^\n]*CONST[^\n]*)/$1\n$2Parrot_exec_add_text_rellocation(jit_info->objfile,
 NULL, RTYPE_DATA, "const_table", 0);/g;
 $asm =~ s/(\\\n\s*Parrot_exec_add_text_rellocation[^\n]*)/$1\\/g;
@@ -291,7 +291,7 @@
 #define NREG(i) EXR(num_reg.registers, jit_info->cur_op[i] * sizeof(FLOATVAL))
 #define PREG(i) EXR(pmc_reg.registers, jit_info->cur_op[i] * sizeof(PMC *))
 #define SREG(i) EXR(string_reg.registers, jit_info->cur_op[i] * sizeof(STRING *))
-#define CONST(i) (int *)(jit_info->cur_op[i] * sizeof(struct PackFile_Constant) + 4)
+#define CONST(i) (int *)(jit_info->cur_op[i] * sizeof(struct PackFile_Constant) + 
offsetof(struct PackFile_Constant, u))
 #define RCONST(i) interpreter->code->const_table->constants[jit_info->cur_op[i]]
 #define CALL(f) Parrot_exec_add_text_rellocation_func(jit_info->objfile, 
jit_info->native_ptr, f); \\
 emitm_calll(jit_info->native_ptr, EXEC_CALLDISP);
--- config/auto/jit.pl~ Wed Feb 25 21:15:50 2004
+++ config/auto/jit.pl  Sat Feb 28 10:14:02 2004
@@ -124,14 +124,15 @@
   jit_o   => '$(SRC)/jit$(O) $(SRC)/jit_cpu$(O) $(SRC)/jit_debug$(O) 
$(SRC)/jit_debug_xcoff$(O)'
 );
 
-if (($jitcpuarch eq 'i386' && ($osname =~ /bsd$/i || $osname =~ /linux/i))
+if (($jitcpuarch eq 'i386')
  || ($jitcpuarch eq 'ppc') || ($jitcpuarch eq 'arm')) {
   $execcapable = 1;
   unless (($osname eq 'openbsd') ||
   ($osname eq 'freebsd') ||
   ($osname eq 'netbsd')  ||
   ($osname eq 'linux')   ||
-  ($osname eq 'darwin'))
+  ($osname eq 'darwin')  ||
+  ($osname eq 'MSWin32'))
   {
 $execcapable = 0;
   }
--- include/parrot/exec.h~  Mon Dec  1 13:22:22 2003
+++ include/parrot/exec.h   Wed Feb 29 17:13:42 2004
@@ -28,9 +28,14 @@
 #   if (PARROT_EXEC_OS_FREEBSD) || (PARROT_EXEC_OS_NETBSD) || (PARROT_EXEC_OS_LINUX)
 # define EXEC_ELF
 #   endif
+#   if PARROT_EXEC_OS_MSWIN32
+# define EXEC_COFF
+#   endif
 
 #   ifdef EXEC_A_OUT
 #define EXEC_CALLDISP jit_info->arena.start - jit_info->native_ptr - 4
+#   elif defined(EXEC_COFF)
+#define EXEC_CALLDISP 0
 #   else
 #define EXEC_CALLDISP 0xfffc
 #   endif
--- jit/i386/jit_emit.h~Thu Jan  8 08:20:40 2004
+++ jit/i386/jit_emit.h Tue Mar  2 16:09:24 2004
@@ -1897,7 +1897,8 @@
 #define PREG(i) EXR(pmc_reg.registers, i * sizeof(PMC *))
 #define SREG(i) EXR(string_reg.registers, i * sizeof(STRING *))
 #define CONST(i) (int *)(jit_info->cur_op[i] * \
-   sizeof(struct PackFile_Constant) + 4)
+   sizeof(struct PackFile_Constant) + \
+   offsetof(struct PackFile_Constant, u))
 
 #define CALL(f) Parrot_exec_add_text_rellocation_func(jit_info->objfile, \
jit_info->native_ptr, f); \
--- src/exec_save.c~Mon Jan 26 15:16:06 2004
+++ src/exec_save.c Tue Mar  2 17:23:14 2004
@@ -572,6 +572,133 @@
 
 #endif /* EXEC_MACH_O */
 
+#ifdef EXEC_COFF
+
+/* File offsets */
+#define TEXT_CODE  0x14 + (3 * 0x28)
+#define DATA_CODE  TEXT_CODE + obj->text.size
+#define TEXT_RELOC DATA_CODE + obj->data.size
+#define DATA_RELOC TEXT_RELOC + (obj->text_rellocation_count * 0xA)
+#define SYMTAB DATA_RELOC + (obj->data_rellocation_count * 0xA)
+
+void
+Parrot_exec_save(Parrot_exec_objfile_t *obj, const char *file)
+{
+FILE *fp;
+int i;
+
+fp = fopen(file, "wb");
+
+save_short(fp, 0x14C); /* i386 */
+save_short(fp, 3); /* Number of sections */

Re: Tetris example (was: Please no checkins)

2004-03-02 Thread Dan Sugalski
At 5:13 PM +0100 3/2/04, Leopold Toetsch wrote:
Parrot's object support is not yet good enough to be able to 
convert the game to use ParrotObjects.
What is missing?
Constructors and destructors are my two big guesses here. :-P
--
Dan
--"it's like this"---
Dan Sugalski  even samurai
[EMAIL PROTECTED] have teddy bears and even
  teddy bears get drunk


Re: [perl #27301] [PATCH] \t\pmc\exec.t Tests spawnw opcode

2004-03-02 Thread Nigel Sandever
On Tue, 02 Mar 2004 02:31:47 -0800, [EMAIL PROTECTED] 
(Nigelsandever @ Btconnect . Com) wrote:
> =_1078223508-4945-0
> Content-Type: text/plain; charset="utf-8"
> 
> # New Ticket Created by  [EMAIL PROTECTED] 
> # Please include the string:  [perl #27301]
> # in the subject line of all future correspondence about this issue. 
> # http://rt.perl.org:80/rt3/Ticket/Display.html?id=27301 >
> 
> 
> Does the naming and placement of this test fit convention?
> 
> The opcode is called 'spawnw'
> The function is 'Parrot_Run_OS_Command'
> The file 'config/gen/platform/*/exec.c'
> 
> A little guidance would help occasionally. 
> If it were forthcoming, I would try to write them up into a beginners FAQ.
> 
> 
> =_1078223508-4945-0--


If this patch is no good, would someone point out what is wrong with it, or 
where  in the documentation I should be looking for this guidance?

If my lack of experience with OSS/unix makes my willingness to contribute to the 
project unviable, then a simple statement; "stop bothering us" will stop me 
wasting your time and mine.







Re: [PATCH] parrotbug 0.0.1

2004-03-02 Thread Dan Sugalski
At 9:24 PM -0800 3/1/04, Robert Spier wrote:

  - I'm not sure about the reporting address (Robert, I need your advice
 on this one)
I suppose, it should be something like parrotbugparrotcode.org

Anyone else want to brainstorm bug addresses for parrot?
Since we need a new system to handle ok/nok/full bug reports, how 
'bout we add in:

  parrotstatus-ok
  parrotstatus-nok
  parrotbug
all @parrotcode.org. The first for automated OK reports, the second 
for automated nok reports, and the third for actual bug reports.
--
Dan

--"it's like this"---
Dan Sugalski  even samurai
[EMAIL PROTECTED] have teddy bears and even
  teddy bears get drunk


Re: [PATCH] parrotbug 0.0.1

2004-03-02 Thread Dan Sugalski
At 8:57 AM +0100 3/2/04, Leopold Toetsch wrote:
Jerome Quelin <[EMAIL PROTECTED]> wrote:

  - the copyright is missing (Dan, please insert correct copyright)
All in parrot root is subject to terms in LICENSES.
Copyright notices still should be in the individual files.
--
Dan
--"it's like this"---
Dan Sugalski  even samurai
[EMAIL PROTECTED] have teddy bears and even
  teddy bears get drunk


Re: Current PLATFORMS

2004-03-02 Thread Eirik Berg Hanssen
Index: PLATFORMS
===
RCS file: /cvs/public/parrot/PLATFORMS,v
retrieving revision 1.15
diff -u -t -u -r1.15 PLATFORMS
--- PLATFORMS	1 Mar 2004 08:48:13 -	1.15
+++ PLATFORMS	2 Mar 2004 01:08:49 -
@@ -18,6 +18,7 @@
 linux-sparc-gcc3.3.3BY-- Y   Y  Y   Y
 linux-sparc64-gcc3.3.3  B8   Y-- -   -  Y   -
 linux-x86-gcc2.95.2  YYY Y   Y  Y   Y
+linux-x86-gcc3.2.3   YYY Y   Y  Y   Y
 linux-x86-gcc3.3.3   YYY Y   Y  Y   Y
 linux-x86-gcc3.3.3 *3YYY Y   Y  Y   Y*3
 linux-x86-icc8   YYY Y   Y  Y   Y
Index: t/pmc/signal.t
===
RCS file: /cvs/public/parrot/t/pmc/signal.t,v
retrieving revision 1.4
diff -u -t -u -r1.4 signal.t
--- t/pmc/signal.t	28 Feb 2004 12:02:21 -	1.4
+++ t/pmc/signal.t	2 Mar 2004 01:08:56 -
@@ -41,7 +41,7 @@
 sub send_SIGINT {
 $SIG{ALRM} = sub {
 # get PID of parrot
-my @ps = `ps | grep [p]arrot`;
+my @ps = `ps -C parrot -o pid`;
 die 'no output from ps' unless @ps;
 # the IO thread parrot process
 # on 2.2.x there are 4 processes, last is the IO thread


NetBSD 1.6 - need to define _STRUCT_TIMESPEC

2004-03-02 Thread Nick Kostirya
If to define _STRUCT_TIMESPEC, then compilation is successfully.



% make test
perl t/harness --gc-debug --running-make-test  -b t/op/*.t t/pmc/*.t
t/native_pbc/*.t imcc/t/*/*.t t/src/*.t
t/op/00ff-dos...ok
t/op/00ff-unix..ok
t/op/arithmeticsok
t/op/basic..ok
t/op/bitwiseok
t/op/callingok
t/op/comp...ok
t/op/conv...ok
t/op/debuginfo..ok
3/3 skipped: getline/setline changes not finished
t/op/gc.ok
t/op/globalsok
t/op/hacks..ok
2/2 skipped: various reasons
t/op/ifunless...ok
t/op/info...ok
t/op/integerok
t/op/interp.ok
t/op/jitok
t/op/jitn...ok
t/op/lexicals...ok
t/op/macro..ok
1/16 skipped: various reasons
t/op/number.ok
t/op/rx.ok
1/23 skipped: various reasons
t/op/stacks.ok
t/op/string.ok
t/op/time...ok
t/op/trans..ok
t/op/types..ok
t/pmc/array.ok
t/pmc/boolean...ok
t/pmc/coroutine.ok
t/pmc/delegate..ok
t/pmc/dumperok
t/pmc/env...ok
t/pmc/eval..ok
t/pmc/exception.ok
t/pmc/float.ok
t/pmc/freezeok
t/pmc/intlist...ok
t/pmc/iook
1/21 skipped: various reasons
t/pmc/iter..ok
1/9 skipped: various reasons
t/pmc/key...ok
t/pmc/managedstruct.ok
t/pmc/mmd...ok
t/pmc/multiarrayok
t/pmc/nci...i386 JIT CPU
.so SO extension
t/pmc/nci...ok
29/29 skipped: various reasons
t/pmc/object-meths..ok
t/pmc/objects...ok
t/pmc/orderedhash...ok
t/pmc/perlarray.ok
t/pmc/perlhash..ok
t/pmc/perlint...ok
t/pmc/perlnum...ok
t/pmc/perlstringok
t/pmc/pmc...ok
t/pmc/prop..ok
t/pmc/ref...ok
t/pmc/sarrayok
t/pmc/scratchpadok
t/pmc/signalskipped
all skipped: No events yet
t/pmc/sort..ok
t/pmc/sub...ok
t/pmc/threads...skipped
all skipped: No threading yet or test not enabled for 'netbsd'
t/pmc/timer.ok
5/7 skipped: various reasons
t/pmc/tqueueok
t/native_pbc/integerok
t/native_pbc/number.ok
imcc/t/imcpasm/cfg..ok
imcc/t/imcpasm/opt0.ok
imcc/t/imcpasm/opt1.ok
1/49 skipped: various reasons
imcc/t/imcpasm/opt2.ok
5/5 skipped: various reasons
imcc/t/imcpasm/optc.ok
6/6 skipped: various reasons
imcc/t/imcpasm/pcc..ok
10/10 skipped: various reasons
imcc/t/imcpasm/sub..ok
imcc/t/reg/spillok
imcc/t/syn/bsr..ok
imcc/t/syn/clashok
imcc/t/syn/constok
imcc/t/syn/eval.ok
imcc/t/syn/file.ok
1/12 skipped: various reasons
imcc/t/syn/keyedok
imcc/t/syn/labels...ok
imcc/t/syn/macrook
imcc/t/syn/namespaceok
imcc/t/syn/pcc..ok
2/31 skipped: various reasons
imcc/t/syn/pod..ok
imcc/t/syn/scopeok
t/src/basic.ok
t/src/exit..ok
t/src/extendok
t/src/hash..ok
t/src/intlist...ok
t/src/iook
1/20 skipped: various reasons
t/src/list..ok
t/src/manifest..ok
t/src/sprintf...ok
All tests successful, 2 tests and 69 subtests skipped.
Files=95, Tests=1370, 293 wallclock secs (30.29 cusr + 15.31 csys = 45.60
CPU)
% make testexec
echo 'print "Hello World\n"' > hello.pasm
echo  'end' >> hello.pasm
./parrot -o hello.pbc hello.pasm
./parrot -o hello.o hello.pbc
make EXEC=hello exec
/house/kostirya/parrot/src/exec_start.c
cc -o
hello -Wl,-R/usr/pkg/lib  -Wl,-rpath,/usr/pkg/lib -Wl,-rpath,/usr/local/lib 
-L/usr/pkg/lib  -g hello.o src/exec_start.o blib/lib/libparrot.a -lm -lcrypt
./hello
Hello World
%






Re: www.parrotcode.org/ points to 0.0.10

2004-03-02 Thread Robert Spier

This is on my list for tonight.  I've got something all ready to go
but have been busy with a $NEW_JOB.

-R

At Tue, 2 Mar 2004 00:44:02 -0500,
Mitchell N Charity wrote:
> 
> The parrot homepage
>   http://www.parrotcode.org/
> currently says
>   Periodic releases will appear on CPAN; the current release is
>   version 0.0.10, and can be found in the CPAN source directory.
> And "source directory" is a link to parrot-0.0.10.tar.gz
> 
> The similarity in release numbers is particularly unfortunate.
> 
> Sorry I missed that when looking at the page.  (Saw "source directory",
> thought "ah, users will see the more recent releases in the directory").
> 
> Updating the homepage soon would seem desirable.
> 
> Mitchell


A good news/bad news sort of thing

2004-03-02 Thread Dan Sugalski
The good news is that the infrastructure's in place to do delegated 
method calls for vtable functions with objects. So you can actually 
do something like:

 .sub __MAIN prototyped
  .param pmc argv
  .local pmc foo
  .local pmc bar
  .local pmc asub
  newclass P1, "Foo"
  find_type I0, "Foo"
  newsub asub, .Sub, _foo
  store_global "Foo", "__get_string", asub
  print bar
  end
 .end
 .sub _foo prototyped
  print "In foo!\n"
  .pcc_begin_return
  .pcc_end_return
 .end
and expect it to print out "In foo!" like it ought. That is a cool 
thing, and we get to do it by subclassing delegate.pmc.

The bad news is that, since all the methods in delegate.pmc are 
generated by library code and don't appear in delegate.pmc, you can't 
actually subclass from it properly. (I had to hack parrotobject.c to 
make it work)

It would be a Good Thing if someone who knows what the heck's going 
on in pmc2c2.pl and/or lib/Parrot/Pmc2c.pm could thump this into 
working. I'm trying and, well, it's a twisty maze of undocumented 
methods, and generally a nasty mess. (I think. It might be terribly 
clean, but in that case the documentation is even more sorely lacking)
--
Dan

--"it's like this"---
Dan Sugalski  even samurai
[EMAIL PROTECTED] have teddy bears and even
  teddy bears get drunk


Valgrind shouting

2004-03-02 Thread Arthur Bergman
Hi,

So I am currently trying to find another segfault, valgrind is helping 
me but the only thing it really says is

==24093== Conditional jump or move depends on uninitialised value(s)
==24093==at 0x8273227: compact_pool (src/resources.c:301)
==24093==by 0x827300C: mem_allocate (src/resources.c:149)
==24093==by 0x82736C6: Parrot_reallocate (src/resources.c:500)
==24093==by 0x8182513: expand_hash (src/hash.c:509)
==24093==by 0x81826C5: new_bucket (src/hash.c:587)
==24093==by 0x8182B66: hash_put (src/hash.c:891)
==24093==by 0x81816B3: dod_register_pmc (src/pmc.c:1009)
==24093==by 0x81C0973: Parrot_register_pmc (src/extend.c:791)
==24093==by 0x80DA233: S_new_xpvav (sv.c:1084)
==24093==by 0x80DB0AE: Perl_sv_upgrade (sv.c:1568)
==24093==
and a couple of statements later on this, in something that shouldn't 
be able to segfault

==24093== Invalid write of size 4
==24093==at 0x80DB162: Perl_sv_upgrade (sv.c:1577)
==24093==by 0x80C8E0D: Perl_newAV (av.c:386)
==24093==by 0x809976E: Perl_pad_push (pad.c:1525)
==24093==by 0x80D76D8: Perl_pp_entersub (pp_hot.c:2640)
==24093==by 0x80AF5C2: Perl_runops_debug (dump.c:1439)
==24093==by 0x8064E15: S_run_body (perl.c:1713)
==24093==by 0x806481A: perl_run (perl.c:1632)
==24093==by 0x804C720: main (miniperlmain.c:86)
==24093==  Address 0x18 is not stack'd, malloc'd or free'd
So, it is increasing the registered hash, doing something weird, and 
then promptly corrupting memory, or am I just guessing wrong here?

Cheers
Arthur


Re: subclassing bug

2004-03-02 Thread Simon Glover

  A PASM version of the test case is:

   newclass P16, "A"
   subclass P16, P16, "B"
   subclass P16, P16, "C"
   end

 I think I've figured out what's happening here. Stepping through the
 code with gdb shows that the first subclassing works fine, but the second
 blows up in Parrot_single_subclass at line 233:

temp_pmc =
VTABLE_clone(interpreter,
VTABLE_get_pmc_keyed_int(interpreter,
(PMC *)PMC_data(base_class), PCD_ALL_PARENTS));

 This fetches the parent class's parent array, which is an Array PMC,
 and which at this point contains a single entry -- a ParrotClass PMC
 corresponding to class "A".

 We then call the clone method of this array, in order to copy it to
 temp_pmc.

 This in turn calls list_clone in order to copy its data, and since our
 list is comprised of a single PMC, list_clone calls its clone vtable
 method.

 BUT: this PMC is a ParrotClass, and there isn't currently a clone method
 implemented for ParrotClass, so we fall back on the default option, which
 is to throw an exception and die.

 The only reason that this works the first time that we create a subclass
 is that at that point the parent's parent list is empty.

 An obvious fix for this would be to implement a clone method for
 ParrotClass, but I'm not sure if this really makes sense, as we could
 then potentially end up with multiple PMCs representing the same class.
 (Also, implies that objects in deeply nested classes would have a
  considerable memory overhead, since they'd each have to drag around PMCs
  for each of their parent classes).

 Simon





[perl #27287] [PATCH] creates README's in several languages/ directories

2004-03-02 Thread via RT
# New Ticket Created by  [EMAIL PROTECTED] 
# Please include the string:  [perl #27287]
# in the subject line of all future correspondence about this issue. 
# http://rt.perl.org:80/rt3/Ticket/Display.html?id=27287 >


This patch creates a couple of new small README's, for several
languages/ directories which don't yet have them.

Specifically:
  languages/forth/README
  languages/python/README
  languages/scheme/README

They basically say, look in ../LANGUAGES.STATUS, and provide a one
line pointer to further documentation where it exists.

Looking for documentation in languages/ directories should be easy.
(Not "ok, where is the documentation in _this_ one?".-)

Mitchell


diff -r -N -u ./languages.crnt/forth/README ./languages/forth/README
--- ./languages.crnt/forth/README   Wed Dec 31 19:00:00 1969
+++ ./languages/forth/READMEMon Mar  1 19:26:56 2004
@@ -0,0 +1,6 @@
+
+Forth
+
+See  forth.pod
+
+Also see ../LANGUAGES.STATUS
diff -r -N -u ./languages.crnt/python/README ./languages/python/README
--- ./languages.crnt/python/README  Wed Dec 31 19:00:00 1969
+++ ./languages/python/README   Mon Mar  1 19:26:35 2004
@@ -0,0 +1,6 @@
+
+Python
+
+http://pirate.tangentcode.com/
+
+Also see ../LANGUAGES.STATUS
diff -r -N -u ./languages.crnt/scheme/README ./languages/scheme/README
--- ./languages.crnt/scheme/README  Wed Dec 31 19:00:00 1969
+++ ./languages/scheme/README   Mon Mar  1 19:26:40 2004
@@ -0,0 +1,6 @@
+
+Scheme
+
+No documentation available.
+
+Also see ../LANGUAGES.STATUS


Re: Tetris example

2004-03-02 Thread Dan Sugalski
At 5:58 PM +0100 3/2/04, Jens Rieks wrote:
Hi,

Am Dienstag, 2. März 2004 17:19 schrieb Dan Sugalski:
 At 5:13 PM +0100 3/2/04, Leopold Toetsch wrote:
 >>Parrot's object support is not yet good enough to be able to
 >>convert the game to use ParrotObjects.
 >
 >What is missing?
 Constructors and destructors are my two big guesses here. :-P
Mainly imcc support for method calling, but constructors too.
Hopefully in the next day or two.

Another nice-to-have is "hidden method calling" for array and
hash-like access to objects.
The Board "class" is currently just an array, but the element access
can of course be replaced with direct method calls.
As soon as I can abuse pmc2c2.pl sufficiently then this'll be doable.

from pdd 15:
:  instantiate Px, Py, Sz (Unimplemented)
:  Instantiate a brand new class, based on the metadata
:  in Py, named Sz.
I think I have missread this last time. What it is op supposed to do?
How can I create an object of class the "Block"?
find_type $I0, "Block"
new $P0, $I0
should do it.
--
Dan
--"it's like this"---
Dan Sugalski  even samurai
[EMAIL PROTECTED] have teddy bears and even
  teddy bears get drunk


Parrot_PMC_new vs Parrot_register_pmc

2004-03-02 Thread Arthur Bergman
Hi,

Just a quick check, why is Parrot_register_pmc not named as the other 
Parrot_PMC_* functions in the external interface?

Cheers
Arthur


[perl #27314] delegate pmc methods ignored in inheritance

2004-03-02 Thread via RT
# New Ticket Created by  Dan Sugalski 
# Please include the string:  [perl #27314]
# in the subject line of all future correspondence about this issue. 
# http://rt.perl.org:80/rt3/Ticket/Display.html?id=27314 >


If you have a pmc class that inherits from delegate you're out of 
luck. All of delegate's methods, save init, are autogenerated, and as 
such can't be inherited from.
-- 
 Dan

--"it's like this"---
Dan Sugalski  even samurai
[EMAIL PROTECTED] have teddy bears and even
   teddy bears get drunk


[perl #27301] [PATCH] \t\pmc\exec.t Tests spawnw opcode

2004-03-02 Thread via RT
# New Ticket Created by  [EMAIL PROTECTED] 
# Please include the string:  [perl #27301]
# in the subject line of all future correspondence about this issue. 
# http://rt.perl.org:80/rt3/Ticket/Display.html?id=27301 >


Does the naming and placement of this test fit convention?

The opcode is called 'spawnw'
The function is 'Parrot_Run_OS_Command'
The file 'config/gen/platform/*/exec.c'

A little guidance would help occasionally. 
If it were forthcoming, I would try to write them up into a beginners FAQ.



Re: Tetris example

2004-03-02 Thread Simon Glover

On Tue, 2 Mar 2004, Jens Rieks wrote:

> from pdd 15:
> :  instantiate Px, Py, Sz (Unimplemented)
> :  Instantiate a brand new class, based on the metadata
> :  in Py, named Sz.
> I think I have missread this last time. What it is op supposed to do?
>
> How can I create an object of class the "Block"?

newclass P1, "Block"# Creates a "Block" class
find_type I0, "Block"   # Gets Parrot's internal index no. for the
# "Block" class
new P2, I0  # Creates an object in that class

  This really needs to be spelled out better in the PDD -- it is mentioned
  in an example, but I don't think it's covered in the discussion of
  object-related opcodes.

  NB. The code above just creates the object -- you still need to init.
  the data by hand.

  Simon




Re: Current PLATFORMS

2004-03-02 Thread Joshua Hoblitt
On Tue, 2 Mar 2004, Leopold Toetsch wrote:

> x86_64 is nowadays amd64 I presume. Can you please provide the output of
> $ cat myconfig

Summary of my parrot 0.1.0 configuration:
  configdate='Tue Mar  2 11:51:06 2004'
  Platform:
osname=linux, archname=x86_64-linux
jitcapable=0, jitarchname=nojit,
jitosname=nojit, jitcpuarch=i386
execcapable=0
perl=/usr/bin/perl
  Compiler:
cc='gcc', ccflags=' -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 
-I/usr/include/gdbm',
  Linker and Libraries:
ld='gcc', ldflags=' -L/usr/local/lib',
cc_ldflags='',
libs='-lpthread -lnsl -ldl -lm -lcrypt -lutil'
  Dynamic Linking:
so='.so', ld_shared='-shared -L/usr/local/lib',
ld_shared_flags=''
  Types:
iv=long, intvalsize=8, intsize=4, opcode_t=long, opcode_t_size=8,
ptrsize=8, ptr_alignment=4 byteorder=12345678,
nv=double, numvalsize=8, doublesize=8

-J

--


Re: Current PLATFORMS

2004-03-02 Thread Joshua Hoblitt
On Tue, 2 Mar 2004, Leopold Toetsch wrote:

> x86_64 is nowadays amd64 I presume. Can you please provide the output of
> $ cat myconfig

AMD originally was calling it x86-64.  So it went into the Linux kernel as 
./arch/x86_64.  Then AMD renamed the instruction set to AMD64.  Just to keep it 
confusing, Prescott/Nocoma (ia32e) support is also part of ./arch/x86_64.

>
> > ... I can provide
> > the complete test run if anyone thinks it will be helpful.
>
> Doesn't help much. Did you get any warnings during compilation? Test
> results really don't look good. There seem to be some serious problems.

I've attached the results of:

perl Configure.pl
make > ./parrot_build-x86_64.txt 2>&1

-J

--

parrot_build-x86_64.txt
Description: Binary data


subclassing bug

2004-03-02 Thread Jens Rieks
The following code results in a
clone() not implemented in class 'ParrotClass'
error:

.sub _main
.local pmc a
.local pmc b
.local pmc c

newclass a, "A"
subclass b, a, "B"
subclass c, b, "C"
end
.end

jens



Re: Tetris example

2004-03-02 Thread Jens Rieks
Hi,

Am Dienstag, 2. März 2004 17:19 schrieb Dan Sugalski:
> At 5:13 PM +0100 3/2/04, Leopold Toetsch wrote:
> >>Parrot's object support is not yet good enough to be able to
> >>convert the game to use ParrotObjects.
> >
> >What is missing?
>
> Constructors and destructors are my two big guesses here. :-P
Mainly imcc support for method calling, but constructors too.
Another nice-to-have is "hidden method calling" for array and
hash-like access to objects.
The Board "class" is currently just an array, but the element access
can of course be replaced with direct method calls.

from pdd 15:
:  instantiate Px, Py, Sz (Unimplemented)
:  Instantiate a brand new class, based on the metadata
:  in Py, named Sz.
I think I have missread this last time. What it is op supposed to do?

How can I create an object of class the "Block"?

jens



Re: Tetris example (was: Please no checkins)

2004-03-02 Thread Jens Rieks
Hi,

Am Dienstag, 2. März 2004 10:48 schrieb Leopold Toetsch:
> Jens Rieks <[EMAIL PROTECTED]> wrote:
> > Hi leo,
> >
> > Here is the tetris example, include it if you want...
>
> I've now tested it a bit. Looks really good and works - mostly :)
> - it tries to load SDL_Image, albeit this seems to be unused
I will add support for textured blocks when the object orientated
SDL interface is working.

> - some blocks are dropping down invisibly
Which blocks?

> - it doesn't recognize a "game over" situation
Yep, to be done. A two player mode is also available,
F1 starts a single, F2 a two player game.
They are just two distinct boards with no interaction yet.

> - some uit key handling would be nice.
escape or alt-f4. A former version also supported Q, but
now W/S/A/D/LSHIFT is used as the second player's controls.
I will change this too, as the right controls are for the left board
at the moment, and wise versa.

> Despite that its a great application and a very good example:
>
> # create the tetris app
> app = _Tetris::App::new()
>
> # init the tetris app
> ret = _Tetris::App::init( app )
>
> This code looks darned good.
Thanks a lot :-)
Parrot's object support is not yet good enough to be able to convert the game 
to use ParrotObjects.

The documentation is also not finished yet, the i386 JIT set_i_n bug took a 
lot of time (no block with the highest id occured when running JIT)...
I acted on the assumption that the release will be one day later.

> > jens
>
> leo
jens



fleshing out extend.h

2004-03-02 Thread Mitchell N Charity
Pmc class headers providing parts of parrot's C extension api are not
being included in extend.h.  Such as the generated file
./classes/pmc_array.h, with its Parrot_Array_push_integer.  Such files
are not being included anywhere in include/parrot/ at all.

So it looks like a ./config/gen/ generator is needed.  Perhaps using
Configure::Data->get('pmc_names') to generate a bunch of #include's
for a new header file.

One might thus create a ./include/parrot/pmc_apis.h, say, to be
included by extend.h. [1]

Does this seem a plausible way to proceed?

Mitchell
[1] extend.h is already including several other parrot headers.


[DOCS] make html

2004-03-02 Thread Michael Scott
I've added two targets to the Makefile.

html: Generate HTML documentation from POD in the sources.
html-clean: Remove the HTML documentation.
Mike



Re: Tetris example (was: Please no checkins)

2004-03-02 Thread Leopold Toetsch
Jens Rieks wrote:

Hi,

Am Dienstag, 2. März 2004 10:48 schrieb Leopold Toetsch:
- some blocks are dropping down invisibly

Which blocks?
It was the red (color=4) one, which vanished on my notebook, especially 
when it got darkened after dropping down.


Parrot's object support is not yet good enough to be able to convert the game 
to use ParrotObjects.
What is missing?

leo




Re: Current PLATFORMS

2004-03-02 Thread Leopold Toetsch
Joshua Hoblitt <[EMAIL PROTECTED]> wrote:

> Parrot 0.1.0 builds on Linux/x86_64 w/gcc 3.3.3 (20040217) and
> glibc-2.3.3 (pre20040207) but a number of tests fail.

x86_64 is nowadays amd64 I presume. Can you please provide the output of
$ cat myconfig

> ... I can provide
> the complete test run if anyone thinks it will be helpful.

Doesn't help much. Did you get any warnings during compilation? Test
results really don't look good. There seem to be some serious problems.

> Failed 60/95 test scripts, 36.84% okay. 422/1386 subtests failed, 69.55% okay.

Thanks,
leo


Re: Current PLATFORMS

2004-03-02 Thread Joshua Hoblitt
Parrot 0.1.0 builds on Linux/x86_64 w/gcc 3.3.3 (20040217) and glibc-2.3.3 
(pre20040207) but a number of tests fail.  I can provide the complete test run if 
anyone thinks it will be helpful.

-J

--
Failed TestStat Wstat Total Fail  Failed  List of Failed
---
imcc/t/reg/spill.t3   768 33 100.00%  1-3
imcc/t/syn/bsr.t  9  2304139  69.23%  1-8 13
imcc/t/syn/clash.t3   768133  23.08%  5-7
imcc/t/syn/const.t3   768 43  75.00%  1-3
imcc/t/syn/eval.t 4  1024 74  57.14%  3-6
imcc/t/syn/file.t 4  1024124  33.33%  1-4
imcc/t/syn/macro.t9  2304239  39.13%  1-9
imcc/t/syn/namespace.t3   768 33 100.00%  1-3
imcc/t/syn/pcc.t 11  281631   11  35.48%  1-4 11 16 23-25 28 31
t/native_pbc/integer.t4  1024 44 100.00%  1-4
t/native_pbc/number.t 5  1280 55 100.00%  1-5
t/op/arithmetics.t   18  460820   18  90.00%  1-18
t/op/basic.t  4  1024214  19.05%  2 10-11 15
t/op/bitwise.t   20  512023   20  86.96%  1-5 9-23
t/op/comp.t   1   256 71  14.29%  7
t/op/conv.t  12  307212   12 100.00%  1-12
t/op/gc.t 7  1792 87  87.50%  1-7
t/op/globals.t1   256 31  33.33%  2
t/op/integer.t   27  691239   27  69.23%  1-9 22-39
t/op/interp.t 6  1536116  54.55%  2 6 8-11
t/op/jit.t   44 1126458   44  75.86%  1-40 44-47
t/op/jitn.t   9  2304 99 100.00%  1-9
t/op/lexicals.t   2   512 62  33.33%  3-4
t/op/macro.t 10  256016   10  62.50%  1-4 6-10 16
t/op/number.t22  563238   22  57.89%  1-11 25-27 29 31-35 37-38
t/op/stacks.t25  640056   25  44.64%  1-6 23-24 29-39 43-44 46-
  47 49-50
t/op/string.t26  6656   126   26  20.63%  3-4 65-71 74-77 85-95 105
  125
t/op/types.t  2   512 32  66.67%  2-3
t/pmc/array.t 5  1280125  41.67%  6-7 10-12
t/pmc/delegate.t  6  1536 96  66.67%  1-2 5-6 8-9
t/pmc/dumper.t6  1536116  54.55%  6-11
t/pmc/eval.t  4  1024 64  66.67%  1-3 6
t/pmc/exception.t 4  1024224  18.18%  16 18 20-21
t/pmc/float.t 1   256 91  11.11%  1
t/pmc/freeze.t7  1792117  63.64%  2 4-8 10
t/pmc/intlist.t   1   256 91  11.11%  1
t/pmc/io.t4  1024214  19.05%  2 4 9 18
t/pmc/iter.t  2   512 92  22.22%  7-8
t/pmc/managedstruct.t 3   768 53  60.00%  2-4
t/pmc/mmd.t   1   256 11 100.00%  1
t/pmc/object-meths.t  3   768 43  75.00%  1 3-4
t/pmc/objects.t   7  1792257  28.00%  1-2 5-7 9 13
t/pmc/orderedhash.t   3   768173  17.65%  6-7 17
t/pmc/perlarray.t 9  2304269  34.62%  1-3 20-24 26
t/pmc/perlhash.t 13  332832   13  40.62%  2-8 22-24 28 30-31
t/pmc/perlstring.t3   768293  10.34%  2 16-17
t/pmc/pmc.t   6  1536926   6.52%  21-22 62 76 78-79
t/pmc/prop.t  1   256 71  14.29%  7
t/pmc/scratchpad.t1   256 51  20.00%  5
t/pmc/signal.t2   512 62  33.33%  2 4
t/pmc/sort.t  1   256 91  11.11%  6
t/pmc/sub.t   6  1536666   9.09%  3-4 6 36-38
t/pmc/threads.t   5  1280115  45.45%  2-4 8-9
t/pmc/timer.t 2   512 72  28.57%  6-7
t/pmc/tqueue.t1   256 11 100.00%  1
t/src/extend.t4  1024134  30.77%  3-4 9 13
Failed TestStat Wstat Total Fail  Failed  List of Failed
---
t/src/hash.t  8  2048108  80.00%  3-10
t/src/io.t6  1536206  30.00%  4 7 14-15 17 20
t/src/list.t  1   256 21  50.00%  1
t/src/sprintf.t   2   512 32  66.67%  2-3
70 subtests skipped.
Failed 60/95 test scripts, 36.84% okay. 422/1386 subtests failed, 69.55% okay.


Tetris example (was: Please no checkins)

2004-03-02 Thread Leopold Toetsch
Jens Rieks <[EMAIL PROTECTED]> wrote:
> Hi leo,

> Here is the tetris example, include it if you want...

I've now tested it a bit. Looks really good and works - mostly :)
- it tries to load SDL_Image, albeit this seems to be unused
- some blocks are dropping down invisibly
- it doesn't recognize a "game over" situation
- some uit key handling would be nice.

Despite that its a great application and a very good example:

# create the tetris app
app = _Tetris::App::new()

# init the tetris app
ret = _Tetris::App::init( app )

This code looks darned good.

> jens

leo


Re: [perl #27272] [PATCH] fix typos in intro.pod

2004-03-02 Thread Leopold Toetsch
Neil Conway <[EMAIL PROTECTED]> wrote:

> This trivial patch fixes a few typos I noticed while reading through
> docs/intro.pod

Thanks, applied.
leo


[DEV] some vim notes

2004-03-02 Thread Leopold Toetsch
When writing PASM/PIR or digging in the Parrot source, you (as a vim 
user) might find it helpful to run:
1) make -C editors
  This installs a vim syntax file in ~/.vim/syntax/imc.vim
 (I have it sym-linked as pasm.vim too).
  And:
  $cat ~/.vim/ftplugin/imc.vim
augroup filetypedetect
au BufNewFile,BufRead *.imc setf imc
augroup END
  $cat ~/.vim/ftplugin/pasm.vim
augroup filetypedetect
au BufNewFile,BufRead *.pasmsetf pasm
augroup END
  $cat ~/.vim/ftplugin/pmc.vim
augroup filetypedetect
au BufNewFile,BufRead *.pmc setf c
augroup END

2) make tags
While hacking PASM press  or  with the cursor standing at 
an opcode (or some C syntax item of course). This might be helpful, if 
you don't know all 1384 opcode variants by hard :)

Have fun,
leo


Cygwin tests (was: Current PLATFORMS)

2004-03-02 Thread Leopold Toetsch
Tj Anthony <[EMAIL PROTECTED]> wrote:
> [silent lurker alert]

Not more ;)

> Parrot will build on Cygwin, as long as you configure with:

> perl Configure.pl --define-inet_aton

Good.

> The tests, however, are a different story.  Notably, extend_12 runs away
> and starts hopelessly consuming memory until manually killed.

> Failed 23/95 test scripts, 75.79% okay. 49/1370 subtests failed, 96.42%
> okay.

Bad.

> If there's desire, I'll glady submit the whole output from the tests.

Doesn't help much. It would be great, if you can run failing tests
standalone and through the debugger, to figure out what is going on.

> TJ Anthony

Thanks - PLATFORMS adjusted,
leo


Re: [PATCH] parrotbug 0.0.1

2004-03-02 Thread Leopold Toetsch
Jerome Quelin <[EMAIL PROTECTED]> wrote:

> I did not checked it in parrot's repository because:
>  - I don't know where it should go in parrot tree

tools/dev invoked per "make bugreport"?

>  - the copyright is missing (Dan, please insert correct copyright)

All in parrot root is subject to terms in LICENSES.

leo


Re: This week's summary

2004-03-02 Thread Leopold Toetsch
The Perl 6 Summarizer <[EMAIL PROTECTED]> wrote:
> The Perl 6 Summary for the week ending 20040229

>   Native PBC issues
> It turns out that, just at the moment, Parrot bytecode isn't actually
> platform independent. This will, of course, get fixed, but it's not
> Leo's top priority at present.

Mostly fixed, thanks to Jarkko.

> ... He asked people who are running Parrot on
> 64 bit and Big endian architectures to submit native_pbc test files (if
> you're on such an architecture, take a look at t/native_pbc/*.t for
> instructions, and the Parrot community will thank you for it).

And we already have {little,big} endian {32,64} bit native tests.

Thanks for your summary,
leo