Author: petdance
Date: Wed May 30 07:15:01 2007
New Revision: 18686

Modified:
   trunk/src/pmc/scalar.pmc

Log:
big consting, and delayed creation of two intermediate values that may never 
get used

Modified: trunk/src/pmc/scalar.pmc
==============================================================================
--- trunk/src/pmc/scalar.pmc    (original)
+++ trunk/src/pmc/scalar.pmc    Wed May 30 07:15:01 2007
@@ -20,6 +20,7 @@
 
 #include "parrot/parrot.h"
 
+/* XXX This should be declared in a .h file somewhere */
 extern PMC *
 Parrot_BigInt_bitwise_shl_int(Interp *interp, PMC* pmc, INTVAL value, PMC* 
dest);
 
@@ -33,7 +34,7 @@
        PARROT_ERRORS_OVERFLOW_FLAG is set, then we throw an error, else the
        destination is promoted to a BigInt before shifting.  If dest == self,
        then the shift is done in place.  */
-    INTVAL base = VTABLE_get_integer(interp, self);
+    const INTVAL base = VTABLE_get_integer(interp, self);
     INTVAL result;
     int overflow_p = 0;
 
@@ -111,9 +112,9 @@
 */
 
     void assign_pmc(PMC* value) {
-        STRING *s_int = CONST_STRING(INTERP, "Integer");
-        STRING *s_num = CONST_STRING(INTERP, "Float");
-        STRING *s_str = CONST_STRING(INTERP, "String");
+        STRING * const s_int = CONST_STRING(INTERP, "Integer");
+        STRING *s_num;
+        STRING *s_str;
         if (SELF->vtable->base_type == enum_class_Boolean) {
             /* doesn't morph */
             DYNSELF.morph(value->vtable->base_type);
@@ -124,17 +125,21 @@
             return;
         }
         if (VTABLE_isa(INTERP, value, s_int)) {
-            INTVAL v = VTABLE_get_integer(INTERP, value);
+            const INTVAL v = VTABLE_get_integer(INTERP, value);
             DYNSELF.set_integer_native(v);
             return;
         }
+
+        s_num = CONST_STRING(INTERP, "Float");
         if (VTABLE_isa(INTERP, value, s_num)) {
-            FLOATVAL v = VTABLE_get_number(INTERP, value);
+            const FLOATVAL v = VTABLE_get_number(INTERP, value);
             DYNSELF.set_number_native(v);
             return;
         }
+
+        s_str = CONST_STRING(INTERP, "String");
         if (VTABLE_isa(INTERP, value, s_str)) {
-            STRING* v = VTABLE_get_string(INTERP, value);
+            STRING* const v = VTABLE_get_string(INTERP, value);
             DYNSELF.set_string_native(v);
             return;
         }
@@ -153,7 +158,7 @@
 */
 
     PMC* clone() {
-        PMC* dest = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC* const dest = pmc_new(INTERP, SELF->vtable->base_type);
         memcpy(&PMC_union(dest), &PMC_union(SELF), sizeof (UnionVal));
         return dest;
     }
@@ -198,7 +203,7 @@
 
     PMC* add(PMC* value, PMC* dest) {
 MMD_Complex: {
-            FLOATVAL a = DYNSELF.get_number();
+            const FLOATVAL a = DYNSELF.get_number();
             if (dest)
                 VTABLE_morph(INTERP, dest, value->vtable->base_type);
             else
@@ -236,7 +241,7 @@
 
     void i_add(PMC* value) {
 MMD_Complex: {
-            FLOATVAL a = DYNSELF.get_number();
+            const FLOATVAL a = DYNSELF.get_number();
             VTABLE_morph(INTERP, SELF, value->vtable->base_type);
             VTABLE_set_number_native(INTERP, SELF,
                     a + VTABLE_get_number_keyed_int(INTERP, value, 0));
@@ -284,7 +289,7 @@
 
     PMC* subtract(PMC* value, PMC* dest) {
 MMD_Complex: {
-            FLOATVAL a = DYNSELF.get_number();
+            const FLOATVAL a = DYNSELF.get_number();
             if (dest)
                 VTABLE_morph(INTERP, dest, value->vtable->base_type);
             else
@@ -322,7 +327,7 @@
 
     void i_subtract(PMC* value) {
 MMD_Complex: {
-            FLOATVAL a = DYNSELF.get_number();
+            const FLOATVAL a = DYNSELF.get_number();
             VTABLE_morph(INTERP, SELF, value->vtable->base_type);
             VTABLE_set_number_native(INTERP, SELF,
                     a - VTABLE_get_number_keyed_int(INTERP, value, 0));
@@ -435,7 +440,7 @@
 */
 
     PMC* divide(PMC* value, PMC* dest) {
-        FLOATVAL d = VTABLE_get_number(INTERP, value);
+        const FLOATVAL d = VTABLE_get_number(INTERP, value);
 
         if (d == 0.0)
             real_exception(INTERP, NULL, E_ZeroDivisionError,
@@ -467,7 +472,7 @@
     }
 
     void i_divide(PMC* value) {
-        FLOATVAL d = VTABLE_get_number(INTERP, value);
+        const FLOATVAL d = VTABLE_get_number(INTERP, value);
 
         if (d == 0.0)
             real_exception(INTERP, NULL, E_ZeroDivisionError,
@@ -512,7 +517,7 @@
 */
 
     PMC* floor_divide(PMC* value, PMC* dest) {
-        FLOATVAL d = VTABLE_get_number(INTERP, value);
+        const FLOATVAL d = VTABLE_get_number(INTERP, value);
 
         if (d == 0.0)
             real_exception(INTERP, NULL, E_ZeroDivisionError,
@@ -547,7 +552,7 @@
     }
 
     void i_floor_divide(PMC* value) {
-        FLOATVAL d = VTABLE_get_number(INTERP, value);
+        const FLOATVAL d = VTABLE_get_number(INTERP, value);
 
         if (d == 0.0)
             real_exception(INTERP, NULL, E_ZeroDivisionError,
@@ -598,7 +603,7 @@
 */
 
     PMC* cmodulus(PMC* value, PMC* dest) {
-        FLOATVAL d = VTABLE_get_number(INTERP, value);
+        const FLOATVAL d = VTABLE_get_number(INTERP, value);
 
         if (d == 0.0)
             real_exception(INTERP, NULL, E_ZeroDivisionError,
@@ -632,7 +637,7 @@
         return dest;
     }
     void i_cmodulus(PMC* value) {
-        FLOATVAL d = VTABLE_get_number(INTERP, value);
+        const FLOATVAL d = VTABLE_get_number(INTERP, value);
 
         if (d == 0.0)
             real_exception(INTERP, NULL, E_ZeroDivisionError,
@@ -681,7 +686,7 @@
 */
 
     PMC* modulus(PMC* value, PMC* dest) {
-        FLOATVAL d = VTABLE_get_number(INTERP, value);
+        const FLOATVAL d = VTABLE_get_number(INTERP, value);
 
         if (d == 0.0)
             real_exception(INTERP, NULL, E_ZeroDivisionError,
@@ -716,7 +721,7 @@
     }
 
     void i_modulus(PMC* value) {
-        FLOATVAL d = VTABLE_get_number(INTERP, value);
+        const FLOATVAL d = VTABLE_get_number(INTERP, value);
 
         if (d == 0.0)
             real_exception(INTERP, NULL, E_ZeroDivisionError,
@@ -765,7 +770,7 @@
 */
 
     PMC* pow(PMC* value, PMC* dest) {
-        FLOATVAL d = VTABLE_get_number(INTERP, value);
+        const FLOATVAL d = VTABLE_get_number(INTERP, value);
 
         if (!dest)
             dest = pmc_new(INTERP, SELF->vtable->base_type);
@@ -791,7 +796,7 @@
     }
 
     void i_pow(PMC* value) {
-        FLOATVAL d = VTABLE_get_number(INTERP, value);
+        const FLOATVAL d = VTABLE_get_number(INTERP, value);
 
         VTABLE_set_number_native(INTERP, SELF,
                 pow(DYNSELF.get_number(), d));
@@ -820,7 +825,7 @@
 */
 
     PMC* neg(PMC* dest) {
-        INTVAL a = -DYNSELF.get_integer();
+        const INTVAL a = -DYNSELF.get_integer();
         if (!dest)
             dest = pmc_new(INTERP, SELF->vtable->base_type);
         VTABLE_set_integer_native(INTERP, dest, a);
@@ -856,9 +861,8 @@
 */
 
     PMC* bitwise_or(PMC* value, PMC* dest) {
-        INTVAL result;
+        const INTVAL result = DYNSELF.get_integer() | 
VTABLE_get_integer(INTERP, value);
 
-        result = DYNSELF.get_integer() | VTABLE_get_integer(INTERP, value);
         if (!dest)
             dest = pmc_new(INTERP, SELF->vtable->base_type);
         VTABLE_set_integer_native(INTERP, dest, result);
@@ -867,9 +871,7 @@
 
 
     PMC* bitwise_or_int(INTVAL value, PMC* dest) {
-        INTVAL result;
-
-        result = DYNSELF.get_integer() | value;
+        const INTVAL result = DYNSELF.get_integer() | value;
         if (!dest)
             dest = pmc_new(INTERP, SELF->vtable->base_type);
         VTABLE_set_integer_native(INTERP, dest, result);
@@ -877,17 +879,13 @@
     }
 
     void i_bitwise_or(PMC* value) {
-        INTVAL result;
-
-        result = DYNSELF.get_integer() | VTABLE_get_integer(INTERP, value);
+        const INTVAL result = DYNSELF.get_integer() | 
VTABLE_get_integer(INTERP, value);
         DYNSELF.set_integer_native(result);
     }
 
 
     void i_bitwise_or_int(INTVAL value) {
-        INTVAL result;
-
-        result = DYNSELF.get_integer() | value;
+        const INTVAL result = DYNSELF.get_integer() | value;
         DYNSELF.set_integer_native(result);
     }
 
@@ -910,9 +908,7 @@
 */
 
     PMC* bitwise_and(PMC* value, PMC* dest) {
-        INTVAL result;
-
-        result = DYNSELF.get_integer() & VTABLE_get_integer(INTERP, value);
+        const INTVAL result = DYNSELF.get_integer() & 
VTABLE_get_integer(INTERP, value);
         if (!dest)
             dest = pmc_new(INTERP, SELF->vtable->base_type);
         VTABLE_set_integer_native(INTERP, dest, result);
@@ -920,9 +916,7 @@
     }
 
     PMC* bitwise_and_int(INTVAL value, PMC* dest) {
-        INTVAL result;
-
-        result = DYNSELF.get_integer() & value;
+        const INTVAL result = DYNSELF.get_integer() & value;
         if (!dest)
             dest = pmc_new(INTERP, SELF->vtable->base_type);
         VTABLE_set_integer_native(INTERP, dest, result);
@@ -930,17 +924,13 @@
     }
 
     void i_bitwise_and(PMC* value) {
-        INTVAL result;
-
-        result = DYNSELF.get_integer() & VTABLE_get_integer(INTERP, value);
+        const INTVAL result = DYNSELF.get_integer() & 
VTABLE_get_integer(INTERP, value);
         DYNSELF.set_integer_native(result);
     }
 
 
     void i_bitwise_and_int(INTVAL value) {
-        INTVAL result;
-
-        result = DYNSELF.get_integer() & value;
+        const INTVAL result = DYNSELF.get_integer() & value;
         DYNSELF.set_integer_native(result);
     }
 
@@ -963,9 +953,7 @@
 */
 
     PMC* bitwise_xor(PMC* value, PMC* dest) {
-        INTVAL result;
-
-        result = DYNSELF.get_integer() ^ VTABLE_get_integer(INTERP, value);
+        const INTVAL result = DYNSELF.get_integer() ^ 
VTABLE_get_integer(INTERP, value);
         if (!dest)
             dest = pmc_new(INTERP, SELF->vtable->base_type);
         VTABLE_set_integer_native(INTERP, dest, result);
@@ -973,9 +961,7 @@
     }
 
     PMC* bitwise_xor_int(INTVAL value, PMC* dest) {
-        INTVAL result;
-
-        result = DYNSELF.get_integer() ^ value;
+        const INTVAL result = DYNSELF.get_integer() ^ value;
         if (!dest)
             dest = pmc_new(INTERP, SELF->vtable->base_type);
         VTABLE_set_integer_native(INTERP, dest, result);
@@ -983,16 +969,12 @@
     }
 
     void i_bitwise_xor(PMC* value) {
-        INTVAL result;
-
-        result = DYNSELF.get_integer() ^ VTABLE_get_integer(INTERP, value);
+        const INTVAL result = DYNSELF.get_integer() ^ 
VTABLE_get_integer(INTERP, value);
         DYNSELF.set_integer_native(result);
     }
 
     void i_bitwise_xor_int(INTVAL value) {
-        INTVAL result;
-
-        result = DYNSELF.get_integer() ^ value;
+        const INTVAL result = DYNSELF.get_integer() ^ value;
         DYNSELF.set_integer_native(result);
     }
 
@@ -1009,7 +991,7 @@
 */
 
     PMC* bitwise_not(PMC* dest) {
-        INTVAL a = ~DYNSELF.get_integer();
+        const INTVAL a = ~DYNSELF.get_integer();
         if (!dest)
             dest = pmc_new(INTERP, SELF->vtable->base_type);
         VTABLE_set_integer_native(INTERP, dest, a);
@@ -1081,9 +1063,7 @@
 */
 
     PMC* bitwise_lsr(PMC* value, PMC* dest) {
-        INTVAL result;
-
-        result = (UINTVAL)DYNSELF.get_integer() >>
+        const INTVAL result = (UINTVAL)DYNSELF.get_integer() >>
             VTABLE_get_integer(INTERP, value);
         if (!dest)
             dest = pmc_new(INTERP, SELF->vtable->base_type);
@@ -1092,9 +1072,7 @@
     }
 
     PMC* bitwise_lsr_int(INTVAL value, PMC* dest) {
-        INTVAL result;
-
-        result = (UINTVAL)DYNSELF.get_integer() >> value;
+        const INTVAL result = (UINTVAL)DYNSELF.get_integer() >> value;
         if (!dest)
             dest = pmc_new(INTERP, SELF->vtable->base_type);
         VTABLE_set_integer_native(INTERP, dest, result);
@@ -1102,17 +1080,13 @@
     }
 
     void i_bitwise_lsr(PMC* value) {
-        INTVAL result;
-
-        result = (UINTVAL)DYNSELF.get_integer() >>
+        const INTVAL result = (UINTVAL)DYNSELF.get_integer() >>
                 VTABLE_get_integer(INTERP, value);
         DYNSELF.set_integer_native(result);
     }
 
     void i_bitwise_lsr_int(INTVAL value) {
-        INTVAL result;
-
-        result = (UINTVAL)DYNSELF.get_integer() >> value;
+        const INTVAL result = (UINTVAL)DYNSELF.get_integer() >> value;
         DYNSELF.set_integer_native(result);
     }
 
@@ -1179,7 +1153,7 @@
 */
 
     PMC* concatenate(PMC* value,  PMC* dest) {
-        STRING* s = string_concat(INTERP,
+        STRING* const s = string_concat(INTERP,
             DYNSELF.get_string(),
             VTABLE_get_string(INTERP, value), 0);
         if (!dest)
@@ -1189,7 +1163,7 @@
     }
 
     PMC* concatenate_str(STRING* value,  PMC* dest) {
-        STRING* s = string_concat(INTERP,
+        STRING* const s = string_concat(INTERP,
             DYNSELF.get_string(), value, 0);
         if (!dest)
             dest = pmc_new(INTERP, SELF->vtable->base_type);
@@ -1198,13 +1172,13 @@
     }
 
     void i_concatenate(PMC* value) {
-        STRING* s = DYNSELF.get_string();
-        STRING* v = VTABLE_get_string(INTERP, value);
+        STRING* const s = DYNSELF.get_string();
+        STRING* const v = VTABLE_get_string(INTERP, value);
         DYNSELF.set_string_native(string_append(INTERP, s, v));
     }
 
     void i_concatenate_str(STRING* value) {
-        STRING* s = DYNSELF.get_string();
+        STRING* const s = DYNSELF.get_string();
         DYNSELF.set_string_native(string_append(INTERP, s, value));
     }
 
@@ -1227,8 +1201,8 @@
 */
 
     PMC* repeat(PMC* value,  PMC* dest) {
-        STRING* s = DYNSELF.get_string();
-        UINTVAL n = (UINTVAL)VTABLE_get_integer(INTERP, value);
+        STRING* const s = DYNSELF.get_string();
+        const UINTVAL n = (UINTVAL)VTABLE_get_integer(INTERP, value);
         if (!dest)
             dest = pmc_new(INTERP, SELF->vtable->base_type);
         VTABLE_set_string_native(INTERP, dest,
@@ -1237,8 +1211,8 @@
     }
 
     PMC* repeat_int(INTVAL value, PMC* dest) {
-        STRING* s = DYNSELF.get_string();
-        UINTVAL n = value;
+        STRING* const s = DYNSELF.get_string();
+        const UINTVAL n = value;
         if (!dest)
             dest = pmc_new(INTERP, SELF->vtable->base_type);
         VTABLE_set_string_native(INTERP, dest,
@@ -1248,14 +1222,14 @@
 
 
     void i_repeat(PMC* value) {
-        STRING* s = DYNSELF.get_string();
-        UINTVAL n = (UINTVAL)VTABLE_get_integer(INTERP, value);
+        STRING* const s = DYNSELF.get_string();
+        const UINTVAL n = (UINTVAL)VTABLE_get_integer(INTERP, value);
         DYNSELF.set_string_native(string_repeat(INTERP, s, n, NULL));
     }
 
     void i_repeat_int(INTVAL value) {
-        STRING* s = DYNSELF.get_string();
-        UINTVAL n = value;
+        STRING* const s = DYNSELF.get_string();
+        const UINTVAL n = value;
         DYNSELF.set_string_native(string_repeat(INTERP, s, n, NULL));
     }
 
@@ -1280,7 +1254,7 @@
 
     INTVAL cmp_num(PMC* value) {
         /* XXX - Floating-point precision errors possible? */
-        FLOATVAL diff = VTABLE_get_number(INTERP, value) -
+        const FLOATVAL diff = VTABLE_get_number(INTERP, value) -
                         DYNSELF.get_number();
 
         return diff == 0.0 ? 0 : diff < 0.0 ? -1 : 1;
@@ -1355,10 +1329,8 @@
 */
 
     PMC* logical_xor(PMC* value,  PMC* dest) {
-        INTVAL my_bool, value_bool;
-
-        my_bool = DYNSELF.get_bool();
-        value_bool = VTABLE_get_bool(INTERP, value);
+        const INTVAL my_bool = DYNSELF.get_bool();
+        const INTVAL value_bool = VTABLE_get_bool(INTERP, value);
 
         if (my_bool && ! value_bool) {
             return SELF;
@@ -1385,7 +1357,7 @@
 */
 
     PMC* logical_not(PMC* dest) {
-        INTVAL a = ! DYNSELF.get_bool();
+        const INTVAL a = ! DYNSELF.get_bool();
         if (!dest)
             dest = pmc_new(INTERP, SELF->vtable->base_type);
         VTABLE_set_bool(INTERP, dest, a);
@@ -1437,10 +1409,9 @@
 
 */
     PMC* share_ro() {
-        PMC *_true;
         PMC *ret;
 
-        _true = pmc_new(INTERP, enum_class_Integer);
+        PMC * const _true = pmc_new(INTERP, enum_class_Integer);
         VTABLE_set_integer_native(INTERP, _true, 1);
 
         ret = pt_shared_fixup(INTERP, SELF);

Reply via email to