[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