[svn:parrot] r43958 - in branches/tt362: src/pmc t/pmc

plobsing at svn.parrot.org plobsing at svn.parrot.org
Mon Feb 15 01:54:43 UTC 2010


Author: plobsing
Date: Mon Feb 15 01:54:42 2010
New Revision: 43958
URL: https://trac.parrot.org/parrot/changeset/43958

Log:
eliminate ImageIO.visit_pmc_now

also add svn properties on t/pmc/imageio.t

Modified:
   branches/tt362/src/pmc/imageio.pmc
   branches/tt362/t/pmc/imageio.t   (contents, props changed)

Modified: branches/tt362/src/pmc/imageio.pmc
==============================================================================
--- branches/tt362/src/pmc/imageio.pmc	Sun Feb 14 22:54:05 2010	(r43957)
+++ branches/tt362/src/pmc/imageio.pmc	Mon Feb 15 01:54:42 2010	(r43958)
@@ -128,7 +128,7 @@
 
 PARROT_INLINE
 static void
-visit_todo_list_thaw(PARROT_INTERP, SHIM(PMC* pmc_not_used), ARGIN(PMC* info))
+visit_todo_list_thaw(PARROT_INTERP, ARGIN(PMC* info))
 {
     UINTVAL  n            = VTABLE_shift_integer(interp, info);
     UINTVAL  id           = PackID_get_PMCID(n);
@@ -208,16 +208,14 @@
 }
 
 static void
-visit_loop_todo_list(PARROT_INTERP, PMC *current, PMC *info)
+visit_loop_todo_list(PARROT_INTERP, PMC *info)
 {
     PMC * const todo     = PARROT_IMAGEIO(info)->todo;
     const int    thawing = PARROT_IMAGEIO(info)->what == VISIT_THAW_NORMAL;
 
-    (PARROT_IMAGEIO(info)->visit_pmc_now)(interp, current, info);
-
     /* can't cache upper limit, visit may append items */
     while (VTABLE_get_bool(interp, todo)) {
-        current = VTABLE_pop_pmc(interp, todo);
+        PMC *current = VTABLE_pop_pmc(interp, todo);
         if (!current)
             Parrot_ex_throw_from_c_args(interp, NULL, 1,
                     "NULL current PMC in visit_loop_todo_list");
@@ -247,7 +245,7 @@
          *      order here is likely broken.
          */
         for (i = n-1; i >= 0; --i) {
-            current = VTABLE_get_pmc_keyed_int(interp, PARROT_IMAGEIO(info)->id_list, i);
+            PMC *current = VTABLE_get_pmc_keyed_int(interp, PARROT_IMAGEIO(info)->id_list, i);
             if (!PMC_IS_NULL(current))
                 VTABLE_thawfinish(interp, current, info);
         }
@@ -255,7 +253,6 @@
 }
 
 pmclass ImageIO auto_attrs {
-    ATTR visit_f          visit_pmc_now;
     ATTR Buffer          *buffer;         /* buffer to store the image */
     ATTR size_t           pos;            /* current read/write position in buffer */
     ATTR size_t           input_length;
@@ -440,7 +437,7 @@
 */
 
     VTABLE void push_pmc(PMC *v) {
-        (PARROT_IMAGEIO(SELF)->visit_pmc_now)(INTERP, v, SELF);
+        visit_todo_list_freeze(INTERP, v, SELF);
     }
 
 /*
@@ -514,58 +511,58 @@
 
     VTABLE PMC *shift_pmc() {
         PMC *result;
-        (PARROT_IMAGEIO(SELF)->visit_pmc_now)(interp, NULL, SELF);
+        visit_todo_list_thaw(INTERP, SELF);
         result = PARROT_IMAGEIO(SELF)->pmc_result;
         return result;
     }
 
     VTABLE void set_pmc(PMC *p)
     {
-            UINTVAL header_length = GROW_TO_16_BYTE_BOUNDARY(PACKFILE_HEADER_BYTES);
-
-            PARROT_IMAGEIO(SELF)->what = VISIT_FREEZE_NORMAL;
-            PARROT_IMAGEIO(SELF)->visit_pmc_now  = visit_todo_list_freeze;
-            create_buffer(INTERP, p, SELF);
-            ensure_buffer_size(INTERP, SELF, header_length);
-            mem_sys_memcopy(GET_VISIT_CURSOR(SELF),
-                PARROT_IMAGEIO(SELF)->pf->header, PACKFILE_HEADER_BYTES);
-            INC_VISIT_CURSOR(SELF, header_length);
+        UINTVAL header_length = GROW_TO_16_BYTE_BOUNDARY(PACKFILE_HEADER_BYTES);
 
-            PARROT_IMAGEIO(SELF)->seen = pmc_new(INTERP, enum_class_Hash);
-            VTABLE_set_pointer(INTERP, PARROT_IMAGEIO(SELF)->seen,
-                parrot_new_intval_hash(INTERP));
+        PARROT_IMAGEIO(SELF)->what = VISIT_FREEZE_NORMAL;
+        create_buffer(INTERP, p, SELF);
+        ensure_buffer_size(INTERP, SELF, header_length);
+        mem_sys_memcopy(GET_VISIT_CURSOR(SELF),
+            PARROT_IMAGEIO(SELF)->pf->header, PACKFILE_HEADER_BYTES);
+        INC_VISIT_CURSOR(SELF, header_length);
+
+        PARROT_IMAGEIO(SELF)->seen = pmc_new(INTERP, enum_class_Hash);
+        VTABLE_set_pointer(INTERP, PARROT_IMAGEIO(SELF)->seen,
+            parrot_new_intval_hash(INTERP));
 
-            visit_loop_todo_list(INTERP, p, SELF);
+        visit_todo_list_freeze(INTERP, p, SELF);
+        visit_loop_todo_list(INTERP, SELF);
     }
 
     VTABLE void set_string_native(STRING *image) {
-            UINTVAL header_length = GROW_TO_16_BYTE_BOUNDARY(PACKFILE_HEADER_BYTES);
-            int unpacked_length;
+        UINTVAL header_length = GROW_TO_16_BYTE_BOUNDARY(PACKFILE_HEADER_BYTES);
+        int unpacked_length;
 
-            PARROT_IMAGEIO(SELF)->what          = VISIT_THAW_NORMAL;
-            PARROT_IMAGEIO(SELF)->visit_pmc_now = visit_todo_list_thaw;
-            PARROT_IMAGEIO(SELF)->buffer        = (Buffer *)image;
-            PARROT_IMAGEIO(SELF)->id_list       = pmc_new(INTERP, enum_class_ResizablePMCArray);
-
-            PARROT_ASSERT(image->_bufstart == image->strstart);
-
-            SET_VISIT_CURSOR(SELF, (char *)Buffer_bufstart(PARROT_IMAGEIO(SELF)->buffer));
-            PARROT_IMAGEIO(SELF)->input_length = image->strlen;
-
-            PARROT_IMAGEIO(SELF)->pf->options |= PFOPT_PMC_FREEZE_ONLY;
-            unpacked_length = PackFile_unpack(interp, PARROT_IMAGEIO(SELF)->pf,
-                GET_VISIT_CURSOR(SELF), PARROT_IMAGEIO(SELF)->input_length);
-
-            if (!unpacked_length) {
-                Parrot_ex_throw_from_c_args(interp, NULL,
-                        EXCEPTION_INVALID_STRING_REPRESENTATION,
-                        "PackFile header failed during unpack");
-            }
-            else {
-                INC_VISIT_CURSOR(SELF, header_length);
-            }
+        PARROT_IMAGEIO(SELF)->what          = VISIT_THAW_NORMAL;
+        PARROT_IMAGEIO(SELF)->buffer        = (Buffer *)image;
+        PARROT_IMAGEIO(SELF)->id_list       = pmc_new(INTERP, enum_class_ResizablePMCArray);
+
+        PARROT_ASSERT(image->_bufstart == image->strstart);
+
+        SET_VISIT_CURSOR(SELF, (char *)Buffer_bufstart(PARROT_IMAGEIO(SELF)->buffer));
+        PARROT_IMAGEIO(SELF)->input_length = image->strlen;
+
+        PARROT_IMAGEIO(SELF)->pf->options |= PFOPT_PMC_FREEZE_ONLY;
+        unpacked_length = PackFile_unpack(interp, PARROT_IMAGEIO(SELF)->pf,
+            GET_VISIT_CURSOR(SELF), PARROT_IMAGEIO(SELF)->input_length);
+
+        if (!unpacked_length) {
+            Parrot_ex_throw_from_c_args(interp, NULL,
+                    EXCEPTION_INVALID_STRING_REPRESENTATION,
+                    "PackFile header failed during unpack");
+        }
+        else {
+            INC_VISIT_CURSOR(SELF, header_length);
+        }
 
-            visit_loop_todo_list(interp, pmc, SELF);
+        visit_todo_list_thaw(INTERP, SELF);
+        visit_loop_todo_list(INTERP, SELF);
     }
 
 /*

Modified: branches/tt362/t/pmc/imageio.t
==============================================================================
--- branches/tt362/t/pmc/imageio.t	Sun Feb 14 22:54:05 2010	(r43957)
+++ branches/tt362/t/pmc/imageio.t	Mon Feb 15 01:54:42 2010	(r43958)
@@ -1,6 +1,6 @@
 #! parrot
 # Copyright (C) 2010, Parrot Foundation.
-# $Id: $
+# $Id$
 
 =head1 NAME
 


More information about the parrot-commits mailing list