[svn:parrot] r35666 - in trunk/src: . dynpmc pmc

[email protected]
Newsgroups perl.cvs.parrot
Message-ID <[email protected]>
Author: cotto
Date: Sat Jan 17 01:02:00 2009
New Revision: 35666

Modified:
   trunk/src/debug.c
   trunk/src/dynpmc/rational.pmc
   trunk/src/key.c
   trunk/src/packout.c
   trunk/src/pmc/float.pmc
   trunk/src/pmc/hash.pmc
   trunk/src/pmc/key.pmc
   trunk/src/trace.c

Log:
[pmc] make Float use ATTRs, remove most remaining uses of PMC_num_val


Modified: trunk/src/debug.c
==============================================================================
--- trunk/src/debug.c	(original)
+++ trunk/src/debug.c	Sat Jan 17 01:02:00 2009
@@ -2753,7 +2753,7 @@
                     break;
                 case KEY_number_FLAG:
                     Parrot_snprintf(interp, buf, sizeof (buf),
-                                    FLOATVAL_FMT, PMC_num_val(k));
+                                    FLOATVAL_FMT, VTABLE_get_number(interp, k));
                     strcpy(&dest[size], buf);
                     size += strlen(buf);
                     break;

Modified: trunk/src/dynpmc/rational.pmc
==============================================================================
--- trunk/src/dynpmc/rational.pmc	(original)
+++ trunk/src/dynpmc/rational.pmc	Sat Jan 17 01:02:00 2009
@@ -557,7 +557,7 @@
     }
 
     MULTI PMC *add(Float value, PMC* dest) {
-        rat_add_float(INTERP, SELF, PMC_num_val(value), dest);
+        rat_add_float(INTERP, SELF, VTABLE_get_number(INTERP, value), dest);
         return dest;
     }
 
@@ -592,7 +592,7 @@
     }
 
     MULTI void i_add(Float value) {
-        rat_add_float(INTERP, SELF, (double) PMC_num_val(value), SELF);
+        rat_add_float(INTERP, SELF, (double) VTABLE_get_number(INTERP, value), SELF);
     }
 
     MULTI void i_add(Rational value) {
@@ -667,7 +667,7 @@
     }
 
     MULTI PMC *subtract(Float value, PMC* dest) {
-        rat_add_float(INTERP, SELF, - ((double) PMC_num_val(value)), dest);
+        rat_add_float(INTERP, SELF, - ((double) VTABLE_get_number(INTERP, value)), dest);
         return dest;
     }
 
@@ -702,7 +702,7 @@
     }
 
     MULTI void i_subtract(Float value) {
-        rat_add_float(INTERP, SELF, - ((double) PMC_num_val(value)), SELF);
+        rat_add_float(INTERP, SELF, - ((double) VTABLE_get_number(INTERP, value)), SELF);
     }
 
     MULTI void i_subtract(Rational value) {
@@ -777,7 +777,7 @@
     }
 
     MULTI PMC *multiply(Float value, PMC* dest) {
-        rat_multiply_float(INTERP, SELF, (double) PMC_num_val(value), dest);
+        rat_multiply_float(INTERP, SELF, (double) VTABLE_get_number(INTERP, value), dest);
         return dest;
     }
 
@@ -812,7 +812,7 @@
     }
 
     MULTI void i_multiply(Float value) {
-        rat_multiply_float(INTERP, SELF, (double) PMC_num_val(value), SELF);
+        rat_multiply_float(INTERP, SELF, (double) VTABLE_get_number(INTERP, value), SELF);
     }
 
     MULTI void i_multiply(Rational value) {
@@ -887,7 +887,7 @@
     }
 
     MULTI PMC *divide(Float value, PMC* dest) {
-        rat_divide_float(INTERP, SELF, (double) PMC_num_val(value), dest);
+        rat_divide_float(INTERP, SELF, (double) VTABLE_get_number(INTERP, value), dest);
         return dest;
     }
 
@@ -922,7 +922,7 @@
     }
 
     MULTI void i_divide(Float value) {
-        rat_divide_float(INTERP, SELF, (double) PMC_num_val(value), SELF);
+        rat_divide_float(INTERP, SELF, (double) VTABLE_get_number(INTERP, value), SELF);
     }
 
     MULTI void i_divide(Rational value) {

Modified: trunk/src/key.c
==============================================================================
--- trunk/src/key.c	(original)
+++ trunk/src/key.c	Sat Jan 17 01:02:00 2009
@@ -91,7 +91,7 @@
     PMC * const key = pmc_new(interp, enum_class_Key);
 
     PObj_get_FLAGS(key) |= KEY_number_FLAG;
-    PMC_num_val(key)     = value;
+    VTABLE_set_number_native(interp, key, value);
 
     return key;
 }
@@ -227,12 +227,12 @@
 
 PARROT_EXPORT
 void
-key_set_number(SHIM_INTERP, ARGMOD(PMC *key), FLOATVAL value)
+key_set_number(PARROT_INTERP, ARGMOD(PMC *key), FLOATVAL value)
 {
     ASSERT_ARGS(key_set_number)
     PObj_get_FLAGS(key) &= ~KEY_type_FLAGS;
     PObj_get_FLAGS(key) |=  KEY_number_FLAG;
-    PMC_num_val(key)     = value;
+    VTABLE_set_number_native(interp, key, value);
 
     return;
 }
@@ -382,7 +382,7 @@
     ASSERT_ARGS(key_number)
     switch (PObj_get_FLAGS(key) & KEY_type_FLAGS) {
     case KEY_number_FLAG:
-        return PMC_num_val(key);
+        return VTABLE_get_number(interp, key);
     case KEY_number_FLAG | KEY_register_FLAG:
         return REG_NUM(interp, PMC_int_val(key));
     case KEY_pmc_FLAG:

Modified: trunk/src/packout.c
==============================================================================
--- trunk/src/packout.c	(original)
+++ trunk/src/packout.c	Sat Jan 17 01:02:00 2009
@@ -221,7 +221,7 @@
             PMC_str_val(key))
             return i;
         else if (type == PFC_NUMBER && ct->constants[i]->u.number ==
-                 PMC_num_val(key))
+                 VTABLE_get_integer(interp, key))
             return i;
     Parrot_io_eprintf(NULL, "find_in_const: couldn't find const for key\n");
     Parrot_exit(interp, 1);

Modified: trunk/src/pmc/float.pmc
==============================================================================
--- trunk/src/pmc/float.pmc	(original)
+++ trunk/src/pmc/float.pmc	Sat Jan 17 01:02:00 2009
@@ -21,6 +21,7 @@
 #include "parrot/parrot.h"
 
 pmclass Float extends scalar provides float provides scalar {
+    ATTR FLOATVAL fv;
 
 /*
 
@@ -33,7 +34,39 @@
 */
 
     VTABLE void init() {
-        PMC_num_val(SELF) = 0.0;
+        Parrot_Float_attributes *fattr = mem_allocate_zeroed_typed(Parrot_Float_attributes);
+        fattr->fv = 0.0;
+        PMC_data(SELF) = fattr;
+    }
+/*
+
+=item C<void destroy()>
+
+Destroy this PMC.
+
+=cut
+
+*/
+
+    VTABLE void destroy() {
+        mem_sys_free(PMC_data(SELF));
+    }
+/*
+
+=item C<PMC *clone()>
+
+Make an exact copy of this PMC.
+
+=cut
+
+*/
+
+    VTABLE PMC *clone() {
+        FLOATVAL fv;
+        PMC *dest = pmc_new(INTERP, SELF->vtable->base_type);
+        GET_ATTR_fv(INTERP, SELF, fv);
+        SET_ATTR_fv(INTERP, dest, fv);
+        return dest;
     }
 
 /*
@@ -52,7 +85,7 @@
                 ? constant_pmc_new(INTERP, type)
                 : pmc_new(INTERP, type);
 
-        PMC_num_val(res) = string_to_num(INTERP, rep);
+        SET_ATTR_fv(INTERP, res, string_to_num(INTERP, rep));
         return res;
     }
 
@@ -67,7 +100,9 @@
 */
 
     VTABLE FLOATVAL get_number() {
-        return PMC_num_val(SELF);
+        FLOATVAL fv;
+        GET_ATTR_fv(INTERP, SELF, fv);
+        return fv;
     }
 
 /*
@@ -155,7 +190,7 @@
 */
 
     VTABLE void set_number_native(FLOATVAL value) {
-        PMC_num_val(SELF) = value;
+        SET_ATTR_fv(INTERP, SELF, value);
     }
 
 /*
@@ -169,7 +204,9 @@
 */
 
     VTABLE void set_number_same(PMC *value) {
-        PMC_num_val(SELF) = PMC_num_val(value);
+        FLOATVAL fv;
+        GET_ATTR_fv(INTERP, value, fv);
+        SET_ATTR_fv(INTERP, SELF, fv);
     }
 
 /*
@@ -200,7 +237,7 @@
 */
 
     VTABLE void set_pmc(PMC *value) {
-        PMC_num_val(SELF) = VTABLE_get_number(INTERP, value);
+        SET_ATTR_fv(INTERP, SELF, VTABLE_get_number(INTERP, value));
     }
 
 
@@ -309,7 +346,10 @@
 */
 
     VTABLE void increment() {
-        PMC_num_val(SELF)++;
+        FLOATVAL fv;
+        GET_ATTR_fv(INTERP, SELF, fv);
+        fv++;
+        SET_ATTR_fv(INTERP, SELF, fv);
     }
 
 /*
@@ -323,7 +363,10 @@
 */
 
     VTABLE void decrement() {
-        PMC_num_val(SELF)--;
+        FLOATVAL fv;
+        GET_ATTR_fv(INTERP, SELF, fv);
+        fv--;
+        SET_ATTR_fv(INTERP, SELF, fv);
     }
 /*
 
@@ -379,7 +422,7 @@
         IMAGE_IO * const io = info->image_io;
         SUPER(info);
         if (info->extra_flags == EXTRA_IS_NULL)
-            PMC_num_val(SELF) = VTABLE_shift_float(INTERP, io);
+            SET_ATTR_fv(INTERP, SELF, VTABLE_shift_float(INTERP, io));
     }
 /*
 
@@ -429,110 +472,110 @@
 
     METHOD acos() {
         PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC_num_val(d) = acos(SELF.get_number());
+        SET_ATTR_fv(INTERP, SELF, acos(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD cos() {
         PMC * const d  = pmc_new(INTERP,
                 Parrot_get_ctx_HLL_type(INTERP, enum_class_Float));
-        PMC_num_val(d) = cos(SELF.get_number());
+        SET_ATTR_fv(INTERP, SELF, cos(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD asec() {
         PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC_num_val(d) = acos(1.0 / SELF.get_number());
+        SET_ATTR_fv(INTERP, SELF, acos(1.0 / SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD asin() {
         PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC_num_val(d) = asin(SELF.get_number());
+        SET_ATTR_fv(INTERP, SELF, asin(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD atan() {
         PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC_num_val(d) = atan(SELF.get_number());
+        SET_ATTR_fv(INTERP, SELF, atan(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD atan2(PMC *val) {
         PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC_num_val(d) = atan2(SELF.get_number(), VTABLE_get_number(INTERP, val));
+        SET_ATTR_fv(INTERP, SELF, atan2(SELF.get_number(), VTABLE_get_number(INTERP, val)));
         RETURN(PMC *d);
     }
 
     METHOD cosh() {
         PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC_num_val(d) = cosh(SELF.get_number());
+        SET_ATTR_fv(INTERP, SELF, cosh(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD exp() {
         PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC_num_val(d) = exp(SELF.get_number());
+        SET_ATTR_fv(INTERP, SELF, exp(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD ln() {
         PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC_num_val(d) = log(SELF.get_number());
+        SET_ATTR_fv(INTERP, SELF, log(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD log10() {
         PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC_num_val(d) = log10(SELF.get_number());
+        SET_ATTR_fv(INTERP, SELF, log10(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD log2() {
         PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC_num_val(d) = log(SELF.get_number()) / log(2.0);
+        SET_ATTR_fv(INTERP, SELF, log(SELF.get_number()) / log(2.0));
         RETURN(PMC *d);
     }
 
     METHOD sec() {
         PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC_num_val(d) = 1.0 / cos(SELF.get_number());
+        SET_ATTR_fv(INTERP, SELF, 1.0 / cos(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD sech() {
         PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC_num_val(d) = 1.0 / cosh(SELF.get_number());
+        SET_ATTR_fv(INTERP, SELF, 1.0 / cosh(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD sin() {
         PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC_num_val(d) = sin(SELF.get_number());
+        SET_ATTR_fv(INTERP, SELF, sin(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD sinh() {
         PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC_num_val(d) = sinh(SELF.get_number());
+        SET_ATTR_fv(INTERP, SELF, sinh(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD tan() {
         PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC_num_val(d) = tan(SELF.get_number());
+        SET_ATTR_fv(INTERP, SELF, tan(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD tanh() {
         PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC_num_val(d) = tanh(SELF.get_number());
+        SET_ATTR_fv(INTERP, SELF, tanh(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD sqrt() {
         PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC_num_val(d) = sqrt(SELF.get_number());
+        SET_ATTR_fv(INTERP, SELF, sqrt(SELF.get_number()));
         RETURN(PMC *d);
     }
 }

Modified: trunk/src/pmc/hash.pmc
==============================================================================
--- trunk/src/pmc/hash.pmc	(original)
+++ trunk/src/pmc/hash.pmc	Sat Jan 17 01:02:00 2009
@@ -691,7 +691,7 @@
 
         if (!nextkey) {
             PMC *val         = get_number_pmc(INTERP, SELF->vtable->base_type);
-            PMC_num_val(val) = value;
+            VTABLE_set_number_native(INTERP, val, value);
             parrot_hash_put(INTERP, (Hash *)PMC_struct_val(SELF), keystr, val);
             return;
         }
@@ -717,7 +717,7 @@
 
     VTABLE void set_number_keyed_str(STRING *key, FLOATVAL value) {
         PMC * const val  = get_number_pmc(INTERP, SELF->vtable->base_type);
-        PMC_num_val(val) = value;
+        VTABLE_set_number_native(INTERP, val, value);
 
         parrot_hash_put(INTERP, (Hash *)PMC_struct_val(SELF), key, val);
     }

Modified: trunk/src/pmc/key.pmc
==============================================================================
--- trunk/src/pmc/key.pmc	(original)
+++ trunk/src/pmc/key.pmc	Sat Jan 17 01:02:00 2009
@@ -431,7 +431,7 @@
                 PMC_int_val(SELF) = VTABLE_shift_integer(INTERP, io);
                 break;
             case KEY_number_FLAG:
-                PMC_num_val(SELF) = VTABLE_shift_float(INTERP, io);
+                VTABLE_set_number_native(INTERP, SELF, VTABLE_shift_float(INTERP, io));
                 break;
             case KEY_string_FLAG:
                 PMC_str_val(SELF) = VTABLE_shift_string(INTERP, io);

Modified: trunk/src/trace.c
==============================================================================
--- trunk/src/trace.c	(original)
+++ trunk/src/trace.c	Sat Jan 17 01:02:00 2009
@@ -183,7 +183,7 @@
             len += Parrot_io_eprintf(debugger, "%vi", PMC_int_val(key));
             break;
         case KEY_number_FLAG:
-            len += Parrot_io_eprintf(debugger, "%vg", PMC_num_val(key));
+            len += Parrot_io_eprintf(debugger, "%vg", VTABLE_get_number(interp, key));
             break;
         case KEY_string_FLAG:
             {
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.