[svn:parrot] r48969 - in trunk: config/gen/makefiles src/packfile

chromatic at svn.parrot.org chromatic at svn.parrot.org
Mon Sep 13 00:03:04 UTC 2010


Author: chromatic
Date: Mon Sep 13 00:03:03 2010
New Revision: 48969
URL: https://trac.parrot.org/parrot/changeset/48969

Log:
[pf] Coalesced empty STRINGs during thawing.

Make reconfigure required.

Modified:
   trunk/config/gen/makefiles/root.in
   trunk/src/packfile/pf_items.c

Modified: trunk/config/gen/makefiles/root.in
==============================================================================
--- trunk/config/gen/makefiles/root.in	Sun Sep 12 21:44:22 2010	(r48968)
+++ trunk/config/gen/makefiles/root.in	Mon Sep 13 00:03:03 2010	(r48969)
@@ -690,6 +690,7 @@
     src/nci/core_thunks.str \
 #IF(has_extra_nci_thunks): src/nci/extra_thunks.str \
     src/packfile.str \
+    src/packfile/pf_items.str \
     src/pmc.str \
     src/pmc_freeze.str \
     src/oo.str \
@@ -1450,7 +1451,8 @@
 	$(INC_DIR)/embed.h $(INC_DIR)/extend.h $(INC_DIR)/extend_vtable.h \
 	$(PARROT_H_HEADERS) $(INC_DIR)/runcore_api.h
 
-src/packfile/pf_items$(O) : $(PARROT_H_HEADERS) src/packfile/pf_items.c
+src/packfile/pf_items$(O) : $(PARROT_H_HEADERS) src/packfile/pf_items.str \
+	src/packfile/pf_items.c
 
 src/packout$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_key.h src/packout.c
 

Modified: trunk/src/packfile/pf_items.c
==============================================================================
--- trunk/src/packfile/pf_items.c	Sun Sep 12 21:44:22 2010	(r48968)
+++ trunk/src/packfile/pf_items.c	Mon Sep 13 00:03:03 2010	(r48969)
@@ -34,6 +34,7 @@
 
 #include "parrot/parrot.h"
 #include "byteorder.h"
+#include "pf_items.str"
 
 /* HEADERIZER HFILE: include/parrot/packfile.h */
 
@@ -1329,7 +1330,6 @@
                   (flag_charset_word & 0x2 ? PObj_private7_FLAG : 0) ;
     encoding_nr = (flag_charset_word >> 8) & 0xFF;
 
-
     size = (size_t)PF_fetch_opcode(pf, cursor);
 
     TRACE_PRINTF(("PF_fetch_string(): flags=0x%04x, ", flags));
@@ -1341,8 +1341,11 @@
             Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
                     "Invalid encoding number '%d' specified", encoding_nr);
 
-    s = Parrot_str_new_init(interp, (const char *)*cursor, size,
-            encoding, flags);
+    if (size)
+        s = Parrot_str_new_init(interp, (const char *)*cursor, size,
+                encoding, flags);
+    else
+        s = CONST_STRING(interp, "");
 
     /* print only printable characters */
     TRACE_PRINTF_VAL(("PF_fetch_string(): string is '%s' at 0x%x\n",


More information about the parrot-commits mailing list