On Friday 01 June 2007 16:51:18 Steve Peters wrote:
> The attached patch gets Parrot partially compiles with C++ (g++ actually).
> This work gets the compile going through the start of the imcc compiler.
Danger!
The patch to src/stm/waitlist.c causes segfaults in t/stm/runtime.t, test 3:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1230156912 (LWP 30260)]
0xb7e02645 in alloc_entry (interp=0x8231358) at src/stm/waitlist.c:57
57 assert(thr->entries[i]->head == NULL);
(gdb) x thr
0x8237700: 0x00000000
(gdb) p thr
$1 = (struct waitlist_thread_data *) 0x8237700
The patch to Parrot::Ops2c::Utils causes errors about multiple definitions of
`core_numops' in interpreter.o and core_ops.o.
This patch to the CGP core:
--- lib/Parrot/OpTrans/CGP.pm. (revision 3741)
+++ lib/Parrot/OpTrans/CGP.pm. (local)
@@ -68,7 +68,7 @@
return $pred_def . <<END;
/* defines - $0 -> $type */
# define opcode_to_prederef(i, op) \\
- (void**) (op - CONTEXT(i->ctx)->pred_offset)
+ (opcode_t*) (op - (opcode_t*)CONTEXT(i->ctx)->pred_offset)
... causes segfaults for me in the shootout tests (probably because they run
with -jC). If I remove the second cast from the line, the segfault goes
away.
I applied the rest as r18744. Thanks!
-- c