[svn:parrot] r35666 - in trunk/src: . dynpmc pmc
[email protected] Sat, 17 Jan 2009 01:02:00 -0800 (PST)
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:
{