[svn:parrot] r37665 - in trunk: include/parrot src src/ops src/pmc

cotto at svn.parrot.org cotto at svn.parrot.org
Tue Mar 24 04:38:25 UTC 2009


Author: cotto
Date: Tue Mar 24 04:38:25 2009
New Revision: 37665
URL: https://trac.parrot.org/parrot/changeset/37665

Log:
[PMC] remove PMC_num_val and PMC_int_val2, switch some other macros to VTABLE function calls

Modified:
   trunk/include/parrot/oo.h
   trunk/include/parrot/pobj.h
   trunk/src/key.c
   trunk/src/ops/pic.ops
   trunk/src/pmc/callsignature.pmc
   trunk/src/pmc/default.pmc
   trunk/src/trace.c

Modified: trunk/include/parrot/oo.h
==============================================================================
--- trunk/include/parrot/oo.h	Tue Mar 24 02:57:59 2009	(r37664)
+++ trunk/include/parrot/oo.h	Tue Mar 24 04:38:25 2009	(r37665)
@@ -50,7 +50,6 @@
  * class macros
  */
 
-#define CLASS_ATTRIB_COUNT(cl)  PMC_int_val2(cl)
 #define GET_CLASS(obj)          (obj)->vtable->pmc_class
 
 /* HEADERIZER BEGIN: src/oo.c */

Modified: trunk/include/parrot/pobj.h
==============================================================================
--- trunk/include/parrot/pobj.h	Tue Mar 24 02:57:59 2009	(r37664)
+++ trunk/include/parrot/pobj.h	Tue Mar 24 04:38:25 2009	(r37665)
@@ -58,8 +58,6 @@
 #define PMC_struct_val(pmc)   (pmc)->cache._ptrs._struct_val
 #define PMC_pmc_val(pmc)      (pmc)->cache._ptrs._pmc_val
 #define PMC_int_val(pmc)      (pmc)->cache._i._int_val
-#define PMC_int_val2(pmc)     (pmc)->cache._i._int_val2
-#define PMC_num_val(pmc)      (pmc)->cache._num_val
 #define PMC_str_val(pmc)      (pmc)->cache._string_val
 
 /* See src/gc/resources.c. the basic idea is that buffer memory is

Modified: trunk/src/key.c
==============================================================================
--- trunk/src/key.c	Tue Mar 24 02:57:59 2009	(r37664)
+++ trunk/src/key.c	Tue Mar 24 04:38:25 2009	(r37665)
@@ -92,7 +92,7 @@
     PMC * const key = pmc_new(interp, enum_class_Key);
 
     PObj_get_FLAGS(key) |= KEY_number_FLAG;
-    PMC_num_val(key) = value;
+    SETATTR_Key_num_key(interp, key, value);
 
     return key;
 }
@@ -233,7 +233,7 @@
     ASSERT_ARGS(key_set_number)
     PObj_get_FLAGS(key) &= ~KEY_type_FLAGS;
     PObj_get_FLAGS(key) |=  KEY_number_FLAG;
-    PMC_num_val(key)     = value;
+    SETATTR_Key_num_key(interp, key, value);
 
     return;
 }
@@ -326,8 +326,9 @@
 key_integer(PARROT_INTERP, ARGIN(PMC *key))
 {
     ASSERT_ARGS(key_integer)
-    INTVAL  int_key;
-    STRING *str_key;
+    INTVAL   int_key;
+    STRING  *str_key;
+    FLOATVAL num_key;
 
     if (VTABLE_isa(interp, key, CONST_STRING(interp, "Key"))) {
         switch (PObj_get_FLAGS(key) & KEY_type_FLAGS) {
@@ -341,7 +342,8 @@
             return REG_INT(interp, int_key);
 
         case KEY_number_FLAG:
-            return (INTVAL)PMC_num_val(key);
+            GETATTR_Key_num_key(interp, key, num_key);
+            return (INTVAL)num_key;
         case KEY_number_FLAG | KEY_register_FLAG:
             GETATTR_Key_int_key(interp, key, int_key);
             return (INTVAL)REG_NUM(interp, int_key);
@@ -401,11 +403,13 @@
 key_number(PARROT_INTERP, ARGIN(PMC *key))
 {
     ASSERT_ARGS(key_number)
-    INTVAL int_key;
+    INTVAL   int_key;
+    FLOATVAL num_key;
 
     switch (PObj_get_FLAGS(key) & KEY_type_FLAGS) {
     case KEY_number_FLAG:
-        return PMC_num_val(key);
+        GETATTR_Key_num_key(interp, key, num_key);
+        return num_key;
     case KEY_number_FLAG | KEY_register_FLAG:
         GETATTR_Key_int_key(interp, key, int_key);
         return REG_NUM(interp, int_key);
@@ -443,7 +447,8 @@
 key_string(PARROT_INTERP, ARGIN(PMC *key))
 {
     ASSERT_ARGS(key_string)
-    INTVAL int_key;
+    INTVAL   int_key;
+    FLOATVAL num_key;
 
     switch (PObj_get_FLAGS(key) & KEY_type_FLAGS) {
         /* remember to COW strings instead of returning them directly */
@@ -480,7 +485,8 @@
             return Parrot_str_from_int(interp, REG_INT(interp, int_key));
 
         case KEY_number_FLAG:
-            return Parrot_str_from_num(interp, PMC_num_val(key));
+            GETATTR_Key_num_key(interp, key, num_key);
+            return Parrot_str_from_num(interp, num_key);
         case KEY_number_FLAG | KEY_register_FLAG:
             GETATTR_Key_int_key(interp, key, int_key);
             return Parrot_str_from_num(interp, REG_NUM(interp, int_key));

Modified: trunk/src/ops/pic.ops
==============================================================================
--- trunk/src/ops/pic.ops	Tue Mar 24 02:57:59 2009	(r37664)
+++ trunk/src/ops/pic.ops	Tue Mar 24 04:38:25 2009	(r37665)
@@ -90,16 +90,11 @@
     rt = VTABLE_type(interp, right);
     lr_types = (lt << 16) | rt;
     if (lru->u.type == lr_types) {
-        INTVAL a = lt == enum_class_Integer ? PMC_int_val(left) :
-            VTABLE_get_integer(interp, left);
-        INTVAL b = rt == enum_class_Integer ? PMC_int_val(right) :
-            VTABLE_get_integer(interp, right);
+        INTVAL a = VTABLE_get_integer(interp, left);
+        INTVAL b = VTABLE_get_integer(interp, right);
         INTVAL c = a - b;
         if ((c^a) >= 0 || (c^~b) >= 0) {
-            if (lt == enum_class_Integer)
-                PMC_int_val(left) = c;
-            else
-                VTABLE_set_integer_native(interp, left, c);
+            VTABLE_set_integer_native(interp, left, c);
         }
         else {
             if (PARROT_ERRORS_test(interp, PARROT_ERRORS_OVERFLOW_FLAG)) {
@@ -198,7 +193,7 @@
     cc = PMC_cont(ccont);
     if (!cc->address) {
         interp->current_returns = CUR_OPCODE;
-        n = PMC_int_val(mic->m.sig);
+        n = VTABLE_get_integer(interp, mic->m.sig);
         goto OFFSET(n + 2);
     }
     caller_ctx = cc->to_ctx;

Modified: trunk/src/pmc/callsignature.pmc
==============================================================================
--- trunk/src/pmc/callsignature.pmc	Tue Mar 24 02:57:59 2009	(r37664)
+++ trunk/src/pmc/callsignature.pmc	Tue Mar 24 04:38:25 2009	(r37665)
@@ -33,6 +33,7 @@
     ATTR PMC    *returns;    /* Result PMCs, if they were passed with the call */
     ATTR PMC    *type_tuple; /* Cached argument types for multiple dispatch */
     ATTR STRING *short_sig;  /* Simple string signature args & returns */
+    ATTR INTVAL  data_size;  /* ? */
 
 /*
 
@@ -53,7 +54,7 @@
         sig_struct->returns    = PMCNULL;
         sig_struct->array      = NULL;
         sig_struct->hash       = NULL;
-        PMC_int_val(SELF)      = CAPTURE_DATA_SIZE;
+        sig_struct->data_size  = CAPTURE_DATA_SIZE;
         PObj_active_destroy_SET(SELF);
         PObj_custom_mark_SET(SELF);
     }
@@ -186,9 +187,9 @@
     VTABLE void mark() {
         PMC ** const data = PMC_data_typed(SELF, PMC **);
         INTVAL i;
+        Parrot_CallSignature_attributes * const attrs = PARROT_CALLSIGNATURE(SELF);
 
-        if (PARROT_CALLSIGNATURE(SELF)) {
-            Parrot_CallSignature_attributes * const attrs = PARROT_CALLSIGNATURE(SELF);
+        if (attrs) {
 
             if (attrs->array)
                 pobject_lives(interp, (PObj*)attrs->array);
@@ -205,7 +206,7 @@
         if (!data)
             return;
 
-        for (i = PMC_int_val(SELF) - 1; i >= 0; --i)
+        for (i = attrs->data_size - 1; i >= 0; --i)
             if (data[i])
                 pobject_lives(interp, (PObj *)data[i]);
     }

Modified: trunk/src/pmc/default.pmc
==============================================================================
--- trunk/src/pmc/default.pmc	Tue Mar 24 02:57:59 2009	(r37664)
+++ trunk/src/pmc/default.pmc	Tue Mar 24 04:38:25 2009	(r37665)
@@ -142,7 +142,7 @@
 propagate_std_props(PARROT_INTERP, PMC *self, PMC *prop_hash) {
     if (self->vtable->flags & (VTABLE_IS_CONST_FLAG | VTABLE_IS_READONLY_FLAG)){
         PMC * const pmc_true  = pmc_new(interp, enum_class_Integer);
-        PMC_int_val(pmc_true) = 1;
+        VTABLE_set_integer_native(interp, pmc_true, 1);
         VTABLE_set_pmc_keyed_str(interp, prop_hash, CONST_STRING(interp, "_ro"), pmc_true);
     }
 }
@@ -183,7 +183,7 @@
     if ((self->vtable->flags & (VTABLE_IS_CONST_FLAG | VTABLE_IS_READONLY_FLAG))
         &&!Parrot_str_compare(interp, key, CONST_STRING(interp, "_ro"))) {
         PMC * const ret_val  = pmc_new(interp, enum_class_Integer);
-        PMC_int_val(ret_val) = 1;
+        VTABLE_set_integer_native(interp, ret_val, 1);
         return ret_val;
     }
     else

Modified: trunk/src/trace.c
==============================================================================
--- trunk/src/trace.c	Tue Mar 24 02:57:59 2009	(r37664)
+++ trunk/src/trace.c	Tue Mar 24 04:38:25 2009	(r37665)
@@ -188,7 +188,7 @@
             break;
         case KEY_string_FLAG:
             {
-            const STRING * const s = PMC_str_val(key);
+            const STRING * const s = key_string(interp, key);
             STRING* const escaped = Parrot_str_escape_truncate(
                             interp, s, 20);
             if (escaped)


More information about the parrot-commits mailing list