[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