On Sun, May 19, 2002 at 10:43:20PM -0400, Mike Lambert wrote: [...] > But if you'll notice down below in the body, it uses > string_compare. Due to transcoding issues, that can trigger a full GC, > which means you need to restore_invariants inside that loop. And that > invalidates your 'chain' which you've already placed on the local C stack, > and restore_invariants can't fix that.
In my opinion, there should be a low level string_compare which does not allocate anything. Instead, it should fail if its arguments do not have the same encoding. Of course, the string_compare opcode can be smarter and perform some transcoding. Then, the hashtable code should explicitely transcode the key before using it. -- Jerome