[svn:parrot] r48490 - in trunk/src: . pmc
plobsing at svn.parrot.org
plobsing at svn.parrot.org
Sat Aug 14 19:14:37 UTC 2010
Author: plobsing
Date: Sat Aug 14 19:14:36 2010
New Revision: 48490
URL: https://trac.parrot.org/parrot/changeset/48490
Log:
use PObj_custom_destroy_FLAG as marker for destroying pf in ImageIO
also eliminate use of ImageIO.init_pmc
Modified:
trunk/src/pmc/imageio.pmc
trunk/src/pmc_freeze.c
Modified: trunk/src/pmc/imageio.pmc
==============================================================================
--- trunk/src/pmc/imageio.pmc Sat Aug 14 09:13:56 2010 (r48489)
+++ trunk/src/pmc/imageio.pmc Sat Aug 14 19:14:36 2010 (r48490)
@@ -384,32 +384,8 @@
Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
PObj_flag_CLEAR(private1, SELF);
- PObj_flag_CLEAR(private2, SELF);
- PObj_custom_mark_destroy_SETALL(SELF);
- }
-
-
-/*
-
-=item C<void init_pmc(PMC *pmc)>
-
-Initializes the PMC with a pre-existing C<PackFile_ConstTable>.
-
-=cut
-
-*/
- VTABLE void init_pmc(PMC *pmc) {
- PARROT_IMAGEIO(SELF)->seen = PMCNULL;
- PARROT_IMAGEIO(SELF)->pf = PackFile_new(INTERP, 0);
- PARROT_IMAGEIO(SELF)->pf_ct =
- (PackFile_ConstTable *)VTABLE_get_pointer(INTERP, pmc);
- PARROT_IMAGEIO(SELF)->todo =
- Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
-
- PObj_flag_SET(private1, SELF);
-
- PObj_custom_mark_destroy_SETALL(SELF);
+ PObj_custom_mark_SET(SELF);
}
@@ -423,8 +399,7 @@
*/
VTABLE void destroy() {
- if (!PObj_flag_TEST(private2, SELF) && PARROT_IMAGEIO(SELF)->pf)
- PackFile_destroy(INTERP, PARROT_IMAGEIO(SELF)->pf);
+ PackFile_destroy(INTERP, PARROT_IMAGEIO(SELF)->pf);
PARROT_IMAGEIO(SELF)->pf = NULL;
}
@@ -718,18 +693,18 @@
VTABLE void set_pmc(PMC *p)
{
- const UINTVAL header_length =
- GROW_TO_16_BYTE_BOUNDARY(PACKFILE_HEADER_BYTES);
-
PARROT_IMAGEIO(SELF)->what = VISIT_FREEZE_NORMAL;
create_buffer(INTERP, p, SELF);
if (PObj_flag_TEST(private1, SELF)) {
- PObj_flag_SET(private2, SELF);
PARROT_IMAGEIO(SELF)->pf = PARROT_IMAGEIO(SELF)->pf_ct->base.pf;
}
else {
- PARROT_IMAGEIO(SELF)->pf = PackFile_new(INTERP, 0);
+ const UINTVAL header_length =
+ GROW_TO_16_BYTE_BOUNDARY(PACKFILE_HEADER_BYTES);
+
+ PARROT_IMAGEIO(SELF)->pf = PackFile_new(INTERP, 0);
+ PObj_custom_destroy_SET(SELF);
ensure_buffer_size(INTERP, SELF, header_length);
mem_sys_memcopy(GET_VISIT_CURSOR(SELF),
@@ -747,9 +722,6 @@
VTABLE void set_string_native(STRING *image) {
PMC *unused;
- const UINTVAL header_length =
- GROW_TO_16_BYTE_BOUNDARY(PACKFILE_HEADER_BYTES);
-
PARROT_IMAGEIO(SELF)->what = VISIT_THAW_NORMAL;
PARROT_IMAGEIO(SELF)->buffer = (Buffer *)image;
@@ -760,13 +732,15 @@
PARROT_IMAGEIO(SELF)->input_length = image->strlen;
if (PObj_flag_TEST(private1, SELF)) {
- PObj_flag_SET(private2, SELF);
PARROT_IMAGEIO(SELF)->pf = PARROT_IMAGEIO(SELF)->pf_ct->base.pf;
}
else {
+ const UINTVAL header_length =
+ GROW_TO_16_BYTE_BOUNDARY(PACKFILE_HEADER_BYTES);
int unpacked_length;
PARROT_IMAGEIO(SELF)->pf = PackFile_new(INTERP, 0);
+ PObj_custom_destroy_SET(SELF);
PARROT_IMAGEIO(SELF)->pf->options |= PFOPT_PMC_FREEZE_ONLY;
unpacked_length = PackFile_unpack(INTERP, PARROT_IMAGEIO(SELF)->pf,
Modified: trunk/src/pmc_freeze.c
==============================================================================
--- trunk/src/pmc_freeze.c Sat Aug 14 09:13:56 2010 (r48489)
+++ trunk/src/pmc_freeze.c Sat Aug 14 19:14:36 2010 (r48490)
@@ -79,13 +79,11 @@
{
ASSERT_ARGS(Parrot_freeze_pbc)
PMC *visitor;
- PMC * const pf_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
DECL_CONST_CAST;
- VTABLE_set_pointer(interp, pf_pmc,
+ visitor = Parrot_pmc_new(interp, enum_class_ImageIO);
+ VTABLE_set_pointer(interp, visitor,
PARROT_const_cast(void *, (const void *)pf));
-
- visitor = Parrot_pmc_new_init(interp, enum_class_ImageIO, pf_pmc);
VTABLE_set_pmc(interp, visitor, pmc);
return VTABLE_get_string(interp, visitor);
More information about the parrot-commits
mailing list