[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