During chasing the GC bugs one of my patches turned off DOD/GC in string_transcode (which is called from e.g string_compare).
There is no need to keep this as the GC issues seem to be solved now.

OTOH e.g. hash.c could profit from the current status, because, when string_compare->string_transcode doesn't run GC, various pointers in hash.c wouldn't be invalidated.

If we keep disabling DOD/GC in string_transcode some comments need updating.

leo
--- parrot/string.c     Tue Oct 22 11:44:47 2002
+++ parrot-leo/string.c Sat Oct 26 11:24:23 2002
@@ -363,8 +363,6 @@
          * encoding. So this seems to least bad compromise.
          */
     }
-    interpreter->GC_block_level++;
-    interpreter->DOD_block_level++;
 
     if (src->encoding == encoding && src->type == type) {
         dest = string_copy(interpreter, src);
@@ -372,15 +370,11 @@
         if (dest_ptr) {
             *dest_ptr = dest;
         }
-        interpreter->GC_block_level--;
-        interpreter->DOD_block_level--;
         return dest;
     }
 
     dest = string_make(interpreter, NULL, src->strlen * encoding->max_bytes,
                        encoding, 0, type);
-    interpreter->GC_block_level--;
-    interpreter->DOD_block_level--;
 
     if (src->type != dest->type) {
         transcoder1 = chartype_lookup_transcoder(src->type, dest->type);


Reply via email to