While at the topic unbug, could you take a look at the multiset code in unbug? I rewrote it to handle the new multisets, but it isn't working flawlessly.
Example:
(unbug) run Pike v7.5 release 25 running Hilfe v3.5 (Incremental Pike Frontend)
multiset y = (< "foo", "bar", "gazonk" >); kill(getpid(),signum("SIGINT"));
Starting program: /home/nilsson/Pike/7.5/build/linux-2.4.20-28.8-i686/test-install/pike/7.5.25/bin/pike
Program received signal SIGINT, Interrupt. 0x42028811 in kill () from /lib/i686/libc.so.6
OBJECT->___HilfeWrapper() at HilfeInput:1 Could not load source file "HilfeInput" (unbug) globals ___hilfe = (["y":(< $ERRROR(type:57350)$, "bar", $ERRROR(type:57350)$>)]) (unbug)
The type 57350 binary is 1110000000000110, which is the string type with the upper three bits set. I assume that you use them for something internally.
/ Martin Nilsson (provokatör)
Previous text:
2004-04-08 14:13: Subject: unbug and opcodes
#if 0 /* This opcode needs mending if it is to work with machine code. */ OPCODE0_JUMP(F_BREAKPOINT, "breakpoint", 0, { extern void o_breakpoint(void); o_breakpoint(); DO_JUMP_TO(PROG_COUNTER-1); }); #endif
The comment there is true. #if 0 could perhaps be replaced with #ifndef PIKE_USE_MACHINE_CODE. A problem to work out if it's adapted for machine code is how to return from the opcode to a suitable position. That's why it was disabled.
/ Martin Stjernholm, Roxen IS