[svn:parrot] r43254 - in branches/pmc_freeze_cleanup: include/parrot src
plobsing at svn.parrot.org
plobsing at svn.parrot.org
Sat Dec 26 22:06:48 UTC 2009
Author: plobsing
Date: Sat Dec 26 22:06:47 2009
New Revision: 43254
URL: https://trac.parrot.org/parrot/changeset/43254
Log:
death to visit_info.thaw_result
Modified:
branches/pmc_freeze_cleanup/include/parrot/pmc_freeze.h
branches/pmc_freeze_cleanup/src/pmc_freeze.c
Modified: branches/pmc_freeze_cleanup/include/parrot/pmc_freeze.h
==============================================================================
--- branches/pmc_freeze_cleanup/include/parrot/pmc_freeze.h Sat Dec 26 21:41:28 2009 (r43253)
+++ branches/pmc_freeze_cleanup/include/parrot/pmc_freeze.h Sat Dec 26 22:06:47 2009 (r43254)
@@ -65,9 +65,8 @@
UINTVAL id; /* freze ID of PMC */
void *extra; /* PMC specific */
INTVAL extra_flags; /* concerning to extra */
- PMC *thaw_result; /* 1st thawed */
- struct PackFile *pf;
- const image_funcs *vtable;
+ struct PackFile *pf;
+ const image_funcs *vtable;
struct _visit_info *image_io; /* dummy backwards-compat pointer. */
} visit_info;
Modified: branches/pmc_freeze_cleanup/src/pmc_freeze.c
==============================================================================
--- branches/pmc_freeze_cleanup/src/pmc_freeze.c Sat Dec 26 21:41:28 2009 (r43253)
+++ branches/pmc_freeze_cleanup/src/pmc_freeze.c Sat Dec 26 22:06:47 2009 (r43254)
@@ -621,7 +621,6 @@
info->id_list = pmc_new(interp, enum_class_Array);
info->id = 0;
info->extra_flags = EXTRA_IS_NULL;
- info->thaw_result = NULL;
visit_loop_todo_list(interp, pmc, info);
PackFile_destroy(interp, info->pf);
@@ -767,11 +766,7 @@
if (!id) {
/* got a NULL PMC */
- pmc = PMCNULL;
- if (!info->thaw_result)
- info->thaw_result = pmc;
- else
- *info->thaw_ptr = pmc;
+ *info->thaw_ptr = PMCNULL;
return;
}
@@ -818,11 +813,7 @@
info->extra_flags = 0;
}
- if (!info->thaw_result)
- info->thaw_result = pmc;
- else
- *info->thaw_ptr = pmc;
-
+ *info->thaw_ptr = pmc;
Parrot_pmc_array_assign(interp, (List *)PMC_data(info->id_list), id, pmc, enum_type_PMC);
@@ -944,7 +935,6 @@
PMC **list_item;
List *finish_list = NULL;
List * const todo = (List *)PMC_data(info->todo);
- int finished_first = 0;
const int thawing = info->what == VISIT_THAW_CONSTANTS
|| info->what == VISIT_THAW_NORMAL;
int i;
@@ -975,8 +965,6 @@
VTABLE_visit(interp, current, info);
if (thawing) {
- if (current == info->thaw_result)
- finished_first = 1;
if (current->vtable->thawfinish != interp->vtables[enum_class_default]->thawfinish)
Parrot_pmc_array_unshift(interp, finish_list, current, enum_type_PMC);
}
@@ -991,11 +979,7 @@
}
/* on thawing call thawfinish for each processed PMC */
- if (!finished_first)
- Parrot_pmc_array_unshift(interp, finish_list, info->thaw_result, enum_type_PMC);
-
n = Parrot_pmc_array_length(interp, finish_list);
-
for (i = 0; i < n ; ++i) {
current = *(PMC**)Parrot_pmc_array_get(interp, finish_list, i, enum_type_PMC);
if (!PMC_IS_NULL(current))
@@ -1061,8 +1045,9 @@
run_thaw(PARROT_INTERP, ARGIN(STRING* input), visit_enum_type what)
{
ASSERT_ARGS(run_thaw)
- visit_info info;
- int gc_block = 0;
+ visit_info info;
+ int gc_block = 0;
+ PMC *result;
/*
* if we are thawing a lot of PMCs, it's cheaper to do
@@ -1081,6 +1066,7 @@
gc_block = 1;
}
+ info.thaw_ptr = &result;
visit_info_init(interp, &info, what, input, PMCNULL);
BYTECODE_SHIFT_OK(&info);
@@ -1089,7 +1075,7 @@
Parrot_unblock_GC_sweep(interp);
}
- return info.thaw_result;
+ return result;
}
More information about the parrot-commits
mailing list