[svn:parrot] r44195 - branches/tt362/src/pmc
plobsing at svn.parrot.org
plobsing at svn.parrot.org
Fri Feb 19 20:10:18 UTC 2010
Author: plobsing
Date: Fri Feb 19 20:10:18 2010
New Revision: 44195
URL: https://trac.parrot.org/parrot/changeset/44195
Log:
remove unnecessary freeze id logic from imageiosize
Modified:
branches/tt362/src/pmc/imageiosize.pmc
Modified: branches/tt362/src/pmc/imageiosize.pmc
==============================================================================
--- branches/tt362/src/pmc/imageiosize.pmc Fri Feb 19 20:08:19 2010 (r44194)
+++ branches/tt362/src/pmc/imageiosize.pmc Fri Feb 19 20:10:18 2010 (r44195)
@@ -16,48 +16,22 @@
#define GROW_TO_16_BYTE_BOUNDARY(size) ((size) + ((size) % 16 ? 16 - (size) % 16 : 0))
-/* macros/constants to handle packing/unpacking of PMC IDs and flags
- * the 2 LSBs are used for flags, all other bits are used for PMC ID
- */
-#define PackID_new(id, flags) (((UINTVAL)(id) * 4) | ((UINTVAL)(flags) & 3))
-
-enum {
- enum_PackID_normal = 0,
- enum_PackID_seen = 1,
-};
-
static void
-visit_todo_list_freeze(PARROT_INTERP, PMC* pmc, PMC* info)
-{
- UINTVAL id;
- int packid_type;
-
- if (PMC_IS_NULL(pmc)) {
- id = 0;
- packid_type = enum_PackID_seen;
- }
- else {
+visit_todo_list_freeze(PARROT_INTERP, PMC* pmc, PMC* info) {
+ int new = 0;
+
+ if (!PMC_IS_NULL(pmc)) {
Hash *hash = (Hash *)VTABLE_get_pointer(interp, PARROT_IMAGEIOSIZE(info)->seen);
HashBucket * const b = parrot_hash_get_bucket(interp, hash, pmc);
- if (b) {
- id = (UINTVAL) b->value;
- packid_type = enum_PackID_seen;
- }
- else {
- PARROT_IMAGEIOSIZE(info)->id++; /* next id to freeze */
- id = PARROT_IMAGEIOSIZE(info)->id;
- packid_type = enum_PackID_normal;
- }
+ seen = !b;
}
- VTABLE_push_integer(interp, info, PackID_new(id, packid_type));
+ VTABLE_push_integer(interp, info, 0);
- if (packid_type == enum_PackID_normal) {
+ if (new) {
Hash *hash = (Hash *)VTABLE_get_pointer(interp, PARROT_IMAGEIOSIZE(info)->seen);
- PARROT_ASSERT(pmc);
- VTABLE_push_integer(interp, info,
- PObj_is_object_TEST(pmc) ? enum_class_Object : pmc->vtable->base_type);
- parrot_hash_put(interp, hash, pmc, (void *)id);
+ parrot_hash_put(interp, hash, pmc, 1);
+ VTABLE_push_integer(interp, info, pmc->vtable->base_type);
VTABLE_push_pmc(interp, PARROT_IMAGEIOSIZE(info)->todo, pmc);
VTABLE_freeze(interp, pmc, info);
}
@@ -66,7 +40,6 @@
pmclass ImageIOSize auto_attrs {
ATTR PMC *seen; /* seen hash */
ATTR PMC *todo; /* todo list */
- ATTR UINTVAL id; /* freze ID of PMC */
ATTR struct PackFile *pf;
ATTR INTVAL size;
@@ -91,7 +64,6 @@
*/
VTABLE void init() {
PARROT_IMAGEIOSIZE(SELF)->todo = pmc_new(INTERP, enum_class_ResizablePMCArray);
- PARROT_IMAGEIOSIZE(SELF)->id = 0;
PARROT_IMAGEIOSIZE(SELF)->pf = PackFile_new(INTERP, 0);
PARROT_IMAGEIOSIZE(SELF)->size = 0;
More information about the parrot-commits
mailing list