Author: leo
Date: Thu Apr 28 08:41:47 2005
New Revision: 7937

Modified:
   trunk/build_tools/jit2h.pl
   trunk/classes/bigint.pmc
   trunk/classes/complex.pmc
   trunk/classes/float.pmc
   trunk/classes/integer.pmc
   trunk/classes/perlundef.pmc
   trunk/classes/scalar.pmc
   trunk/classes/string.pmc
   trunk/dynclasses/pyboolean.pmc
   trunk/dynclasses/pyint.pmc
   trunk/dynclasses/pyobject.pmc
   trunk/ops/bit.ops
   trunk/ops/cmp.ops
   trunk/ops/math.ops
   trunk/ops/ops.num
   trunk/vtable.tbl
Log:
unary operations

see note on p6i



Modified: trunk/build_tools/jit2h.pl
==============================================================================
--- trunk/build_tools/jit2h.pl  (original)
+++ trunk/build_tools/jit2h.pl  Thu Apr 28 08:41:47 2005
@@ -258,6 +258,7 @@
 #define Parrot_jit_vtable_2231_op Parrot_jit_normal_op
 #define Parrot_jit_vtable_1r223_op Parrot_jit_normal_op
 #define Parrot_jit_vtable_1r332_op Parrot_jit_normal_op
+#define Parrot_jit_vtable_1r221_op Parrot_jit_normal_op
 
 #define Parrot_jit_vtable_ifp_op Parrot_jit_cpcf_op
 #define Parrot_jit_vtable_unlessp_op Parrot_jit_cpcf_op

Modified: trunk/classes/bigint.pmc
==============================================================================
--- trunk/classes/bigint.pmc    (original)
+++ trunk/classes/bigint.pmc    Thu Apr 28 08:41:47 2005
@@ -918,7 +918,9 @@
 
 /*
 
-=item C<void absolute()>
+=item C<PMC* absolute(PMC* dest)>
+
+=item C<void i_absolute()>
 
 Sets C<dest> to the absolute value of SELF.
 
@@ -926,13 +928,23 @@
 
 */
 
-    void absolute(PMC *dest) {
+    PMC* absolute(PMC *dest) {
+        if (!dest)
+            dest = pmc_new(INTERP, SELF->vtable->base_type);
         bigint_abs(INTERP, SELF, dest);
+        return dest;
+    }
+
+    void i_absolute() {
+        bigint_abs(INTERP, SELF, SELF);
     }
 
+
 /*
 
-=item C<void neg(PMC *dest)>
+=item C<PMC* neg(PMC *dest)>
+
+=item C<void i_neg()>
 
 Set C<dest> to the negated value of C<SELF>.
 
@@ -940,8 +952,15 @@
 
 */
 
-    void neg (PMC* dest) {
+    PMC* neg (PMC* dest) {
+        if (!dest)
+            dest = pmc_new(INTERP, SELF->vtable->base_type);
         bigint_neg(INTERP, SELF, dest);
+        return dest;
+    }
+
+    void i_neg () {
+        bigint_neg(INTERP, SELF, SELF);
     }
 
 }

Modified: trunk/classes/complex.pmc
==============================================================================
--- trunk/classes/complex.pmc   (original)
+++ trunk/classes/complex.pmc   Thu Apr 28 08:41:47 2005
@@ -931,7 +931,9 @@
 
 /*
 
-=item C<void neg(PMC *dest)>
+=item C<PMC* neg(PMC *dest)>
+
+=item C<void neg()>
 
 Set C<dest> to the negated value of C<SELF>.
 
@@ -939,10 +941,19 @@
 
 */
 
-    void neg (PMC* dest) {
-        VTABLE_morph(INTERP, dest, SELF->vtable->base_type);
+    PMC* neg (PMC* dest) {
+        if (!dest)
+            dest = pmc_new(INTERP, SELF->vtable->base_type);
+        else
+            VTABLE_morph(INTERP, dest, SELF->vtable->base_type);
         RE(dest) = - RE(SELF);
         IM(dest) = - IM(SELF);
+        return dest;
+    }
+
+    void i_neg () {
+        RE(SELF) = - RE(SELF);
+        IM(SELF) = - IM(SELF);
     }
 
 /*
@@ -975,7 +986,9 @@
 
 /*
 
-=item C<void absolute()>
+=item C<PMC* absolute(PMC* dest)>
+
+=item C<void i_absolute()>
 
 Sets C<dest> to the absolute value of SELF that is the distance from (0.0).
 
@@ -995,9 +1008,18 @@
 
 */
 
-    void absolute(PMC *dest) {
+    PMC* absolute(PMC *dest) {
         FLOATVAL d = sqrt(RE(SELF)*RE(SELF) + IM(SELF)*IM(SELF));
+        if (!dest)
+            dest = pmc_new(INTERP, enum_class_Float);   /* XXX */
         VTABLE_set_number_native(INTERP, dest, d);
+        return dest;
+    }
+
+    void i_absolute() {
+        FLOATVAL d = sqrt(RE(SELF)*RE(SELF) + IM(SELF)*IM(SELF));
+        VTABLE_morph(INTERP, SELF, enum_class_Float);   /* XXX */
+        VTABLE_set_number_native(INTERP, SELF, d);
     }
 }
 

Modified: trunk/classes/float.pmc
==============================================================================
--- trunk/classes/float.pmc     (original)
+++ trunk/classes/float.pmc     Thu Apr 28 08:41:47 2005
@@ -220,7 +220,9 @@
 
 /*
 
-=item C<void neg(PMC *dest)>
+=item C<PMC* neg(PMC *dest)>
+
+=item C<void i_neg()>
 
 Set C<dest> to the negated value of C<SELF>.
 
@@ -228,11 +230,17 @@
 
 */
 
-    void neg (PMC * dest) {
-        if (dest == SELF)
-            PMC_num_val(SELF) = -PMC_num_val(SELF);
-        else
-            VTABLE_set_number_native(INTERP, dest, -PMC_num_val(SELF));
+    PMC* neg (PMC * dest) {
+        FLOATVAL a = - DYNSELF.get_number();
+        if (!dest)
+            dest = pmc_new(INTERP, SELF->vtable->base_type);
+        VTABLE_set_number_native(INTERP, dest, a);
+        return dest;
+    }
+
+    void i_neg() {
+        FLOATVAL a = - DYNSELF.get_number();
+        VTABLE_set_number_native(INTERP, SELF, a);
     }
 
 /*
@@ -338,7 +346,9 @@
     }
 /*
 
-=item C<void absolute()>
+=item C<PMC* absolute(PMC *dest)>
+
+=item C<void i_absolute()>
 
 Sets C<dest> to the absolute value of SELF.
 
@@ -346,8 +356,17 @@
 
 */
 
-    void absolute(PMC *dest) {
-        VTABLE_set_number_native(INTERP, dest, fabs(PMC_num_val(SELF)));
+    PMC* absolute(PMC *dest) {
+        FLOATVAL a = fabs(DYNSELF.get_number());
+        if (!dest)
+            dest = pmc_new(INTERP, SELF->vtable->base_type);
+        VTABLE_set_number_native(INTERP, dest, a);
+        return dest;
+    }
+
+    void i_absolute() {
+        FLOATVAL a = fabs(DYNSELF.get_number());
+        VTABLE_set_number_native(INTERP, SELF, a);
     }
 
 /*

Modified: trunk/classes/integer.pmc
==============================================================================
--- trunk/classes/integer.pmc   (original)
+++ trunk/classes/integer.pmc   Thu Apr 28 08:41:47 2005
@@ -1073,37 +1073,6 @@
 
 /*
 
-=item C<void neg(PMC *dest)>
-
-Set C<dest> to the negated value of C<SELF>.
-
-=cut
-
-*/
-    void neg (PMC* dest) {
-        if (dest == SELF)
-            PMC_int_val(SELF) = -PMC_int_val(SELF);
-        else
-            VTABLE_set_integer_native(INTERP, dest, -PMC_int_val(SELF));
-    }
-
-
-/*
-
-=item C<void bitwise_not(PMC *dest)>
-
-Calculates the bitwise C<NOT> of the integer and returns the result in
-C<*dest>.
-
-=cut
-
-*/
-    void bitwise_not (PMC* dest) {
-        VTABLE_set_integer_native(INTERP, dest, ~PMC_int_val(SELF));
-    }
-
-/*
-
 =item C<INTVAL is_equal (PMC* value)>
 
 The C<==> operation.
@@ -1222,6 +1191,8 @@
     }
 /*
 
+=item C<PMC* absolute(PMC* dest)>
+
 =item C<void absolute()>
 
 Sets C<dest> to the absolute value of SELF.
@@ -1230,8 +1201,19 @@
 
 */
 
-    void absolute(PMC *dest) {
-        VTABLE_set_integer_native(INTERP, dest, abs(PMC_int_val(SELF)));
+    PMC* absolute(PMC *dest) {
+        INTVAL a = abs(DYNSELF.get_integer());
+        /* XXX overlflow for -maxint */
+        if (!dest)
+            dest = pmc_new(INTERP, SELF->vtable->base_type);
+        VTABLE_set_integer_native(INTERP, dest, a);
+        return dest;
+
+    }
+
+    void i_absolute() {
+        INTVAL a = abs(DYNSELF.get_integer());
+        VTABLE_set_integer_native(INTERP, SELF, a);
     }
 
 /*

Modified: trunk/classes/perlundef.pmc
==============================================================================
--- trunk/classes/perlundef.pmc (original)
+++ trunk/classes/perlundef.pmc Thu Apr 28 08:41:47 2005
@@ -494,7 +494,9 @@
     }
 /*
 
-=item C<void logical_not(PMC *dest)>
+=item C<PMC logical_not(PMC *dest)>
+
+=item C<void i_logical_not()>
 
 Since we know that we're false, the logical ops are particularly
 simple, and there's no need to use the versions in C<PerlScalar>.
@@ -505,8 +507,14 @@
 
 */
 
-    void logical_not (PMC* dest) {
+    PMC* logical_not (PMC* dest) {
+        if (!dest)
+            dest = pmc_new(INTERP, enum_class_PerlInt);
         VTABLE_set_integer_native(INTERP, dest, 1);
+        return dest;
+    }
+    void i_logical_not () {
+        VTABLE_set_integer_native(INTERP, SELF, 1);
     }
 
 /*

Modified: trunk/classes/scalar.pmc
==============================================================================
--- trunk/classes/scalar.pmc    (original)
+++ trunk/classes/scalar.pmc    Thu Apr 28 08:41:47 2005
@@ -748,7 +748,9 @@
 
 /*
 
-=item C<void neg(PMC *dest)>
+=item C<PMC* neg(PMC *dest)>
+
+=item C<void i_neg()>
 
 Set C<dest> to the negated value of C<SELF>.
 
@@ -756,8 +758,16 @@
 
 */
 
-    void neg (PMC* dest) {
-        VTABLE_set_number_native(INTERP, dest, -DYNSELF.get_number());
+    PMC* neg (PMC* dest) {
+        INTVAL a = -DYNSELF.get_integer();
+        if (!dest)
+            dest = pmc_new(INTERP, SELF->vtable->base_type);
+        VTABLE_set_integer_native(INTERP, dest, a);
+        return dest;
+    }
+
+    void i_neg () {
+        VTABLE_set_integer_native(INTERP, SELF, -DYNSELF.get_integer());
     }
 
 /*
@@ -927,7 +937,9 @@
 
 /*
 
-=item C<void bitwise_not(PMC *dest)>
+=item C<PMC* bitwise_not(PMC *dest)>
+
+=item C<void i_bitwise_not()>
 
 Returns in C<*dest> the bitwise negation of the scalar and C<value>.
 
@@ -935,8 +947,16 @@
 
 */
 
-    void bitwise_not (PMC* dest) {
-        VTABLE_set_integer_native(INTERP, dest, ~DYNSELF.get_integer());
+    PMC* bitwise_not (PMC* dest) {
+        INTVAL a = ~DYNSELF.get_integer();
+        if (!dest)
+            dest = pmc_new(INTERP, SELF->vtable->base_type);
+        VTABLE_set_integer_native(INTERP, dest, a);
+        return dest;
+    }
+
+    void i_bitwise_not () {
+        VTABLE_set_integer_native(INTERP, SELF, ~DYNSELF.get_integer());
     }
 
 
@@ -1379,7 +1399,9 @@
     }
 /*
 
-=item C<void logical_not(PMC *dest)>
+=item C<PMC* logical_not(PMC *dest)>
+
+=item C<void i_logical_not()>
 
 Returns in C<*dest> the result of the logical negation of the scalar and
 C<*value>.
@@ -1388,10 +1410,17 @@
 
 */
 
-    void logical_not (PMC* dest) {
-        VTABLE_set_bool(INTERP, dest, ! DYNSELF.get_bool());
+    PMC* logical_not (PMC* dest) {
+        INTVAL a = ! DYNSELF.get_bool();
+        if (!dest)
+            dest = pmc_new(INTERP, SELF->vtable->base_type);
+        VTABLE_set_bool(INTERP, dest, a);
+        return dest;
     }
 
+    void i_logical_not () {
+        VTABLE_set_bool(INTERP, SELF, ! DYNSELF.get_bool());
+    }
 
 /*
 

Modified: trunk/classes/string.pmc
==============================================================================
--- trunk/classes/string.pmc    (original)
+++ trunk/classes/string.pmc    Thu Apr 28 08:41:47 2005
@@ -292,7 +292,7 @@
 
 =item C<void i_bitwise_xors_str(PMC* value)>
 
-=item C<void bitwise_nots(PMC* value)>
+=item C<void i_bitwise_nots(PMC* value)>
 
 These functions perform bitwise operations on entire
 strings in place.
@@ -391,10 +391,19 @@
         DYNSELF.set_string_native(string_bitwise_xor(INTERP, s, value, &s));
     }
 
-    void bitwise_nots (PMC* dest) {
+    PMC* bitwise_nots (PMC* dest) {
         STRING *s = PMC_str_val(SELF);
+        if (!dest)
+            dest = pmc_new(INTERP, SELF->vtable->base_type);
         VTABLE_set_string_native(
             INTERP, dest, string_bitwise_not(INTERP, s, NULL));
+        return dest;
+    }
+
+    void i_bitwise_nots () {
+        STRING *s = PMC_str_val(SELF);
+        VTABLE_set_string_native(
+            INTERP, SELF, string_bitwise_not(INTERP, s, &s));
     }
 
 /*

Modified: trunk/dynclasses/pyboolean.pmc
==============================================================================
--- trunk/dynclasses/pyboolean.pmc      (original)
+++ trunk/dynclasses/pyboolean.pmc      Thu Apr 28 08:41:47 2005
@@ -133,6 +133,8 @@
 
 /*
 
+=item C<PMC* logical_not(PMC* dest)>
+
 =item C<void logical_not()>
 
 Returns the negated value of the boolean.
@@ -141,11 +143,20 @@
 
 */
 
-    void logical_not (PMC *dest) {
-        VTABLE_morph(INTERP, dest, PyBuiltin_PyBoolean);
+    PMC* logical_not (PMC *dest) {
+        if (!dest)
+            dest = pmc_new(INTERP, PyBuiltin_PyBoolean);
+        else
+            VTABLE_morph(INTERP, dest, PyBuiltin_PyBoolean);
         VTABLE_set_integer_native(INTERP, dest, PMC_int_val(SELF) == 0);
+        return dest;
+    }
+
+    void i_logical_not () {
+        VTABLE_set_integer_native(INTERP, SELF, PMC_int_val(SELF) == 0);
     }
 
+
 /*
 
 =item C<void set_integer_native (INTVAL value)>

Modified: trunk/dynclasses/pyint.pmc
==============================================================================
--- trunk/dynclasses/pyint.pmc  (original)
+++ trunk/dynclasses/pyint.pmc  Thu Apr 28 08:41:47 2005
@@ -180,19 +180,6 @@
         return ret;
     }
 
-/*
-
-=item C<void absolute(dest)>
-
-Sets C<dest> to the absolute value of SELF.
-
-=cut
-
-*/
-
-    void absolute(PMC *dest) {
-        VTABLE_set_integer_native(INTERP, dest, abs(PMC_int_val(SELF)));
-    }
 
 /*
 
@@ -397,40 +384,6 @@
     }
 
 /*
-
-=item C<void logical_not(PMC *value)>
-
-Calculates the logical negation of the integer and returns the result in
-C<*value>.
-
-=cut
-
-*/
-
-    void logical_not (PMC* value) {
-        VTABLE_set_integer_native(INTERP, value, !PMC_int_val(SELF));
-    }
-
-
-
-/*
-
-=item C<void neg(PMC *dest)>
-
-Set C<dest> to the negated value of C<SELF>.
-
-=cut
-
-*/
-
-    void neg (PMC* dest) {
-        if (dest == SELF)
-            PMC_int_val(SELF) = -PMC_int_val(SELF);
-        else
-            VTABLE_set_integer_native(INTERP, dest, -PMC_int_val(SELF));
-    }
-
-/*
 
 =item C<void set_integer_native(INTVAL value)>
 

Modified: trunk/dynclasses/pyobject.pmc
==============================================================================
--- trunk/dynclasses/pyobject.pmc       (original)
+++ trunk/dynclasses/pyobject.pmc       Thu Apr 28 08:41:47 2005
@@ -669,7 +669,10 @@
 
 /*
 
-=item C<void logical_not(PMC *dest)>
+=item C<PMC logical_not(PMC *dest)>
+
+=item C<void i_logical_not()>
+
 
 Returns in C<*dest> the result of the logical not of the scalar.
 
@@ -677,10 +680,19 @@
 
 */
 
-    void logical_not (PMC* dest) {
-        VTABLE_set_integer_native(INTERP, dest, !DYNSELF.get_bool());
+    PMC* logical_not (PMC* dest) {
+        INTVAL a = ! DYNSELF.get_bool();
+        if (!dest)
+            dest = pmc_new(INTERP, SELF->vtable->base_type);
+        VTABLE_set_bool(INTERP, dest, a);
+        return dest;
     }
 
+    void i_logical_not () {
+        VTABLE_set_bool(INTERP, SELF, ! DYNSELF.get_bool());
+    }
+
+
 /*
 
 =item C<PMC* logical_or(PMC *value, PMC *dest)>

Modified: trunk/ops/bit.ops
==============================================================================
--- trunk/ops/bit.ops   (original)
+++ trunk/ops/bit.ops   Thu Apr 28 08:41:47 2005
@@ -79,39 +79,83 @@
 
 ########################################
 
+=item B<bnot>(inout INT)
+
+=item B<bnot>(in PMC)
+
+Sets $1 to C<bitwise not> $1 inplace.
+
 =item B<bnot>(out INT, in INT)
 
-=item B<bnot>(in PMC, in PMC)
+=item B<bnot>(out PMC, in PMC)
+
+=item B<n_bnot>(out PMC, in PMC)
 
 Set the bits of $1 to the B<not> of the corresponding bits from $2.
 
 =cut
 
+inline op bnot(inout INT) :base_core {
+  $1 = ~ $1;
+  goto NEXT();
+}
+
 inline op bnot(out INT, in INT) :base_core {
   $1 = ~ $2;
   goto NEXT();
 }
 
-inline op bnot(in PMC, in PMC) :base_core {
-  $2->vtable->bitwise_not(interpreter, $2, $1);
+inline op bnot(in PMC) :base_core {
+  $1->vtable->i_bitwise_not(interpreter, $1);
+  goto NEXT();
+}
+
+inline op bnot(out PMC, in PMC) :base_core {
+  $1 = $2->vtable->bitwise_not(interpreter, $2, $1);
+  goto NEXT();
+}
+
+inline op n_bnot(out PMC, in PMC) :base_core {
+  $1 = $2->vtable->bitwise_not(interpreter, $2, NULL);
   goto NEXT();
 }
 
+=item B<bnots>(inout STR)
+
+=item B<bnots>(in PMC)
+
 =item B<bnots>(out STR, in STR)
 
-=item B<bnots>(in PMC, in PMC)
+=item B<bnots>(out PMC, in PMC)
+
+=item B<n_bnots>(out PMC, in PMC)
 
 Set the bits of $1 to the B<not> of the corresponding bits from $2.
 
 =cut
 
+inline op bnots(inout STR) :base_core {
+  string_bitwise_not(interpreter, $1, &$1);
+  goto NEXT();
+}
+
 inline op bnots(out STR, in STR) :base_core {
   string_bitwise_not(interpreter, $2, &$1);
   goto NEXT();
 }
 
+inline op bnots(in PMC) :base_core {
+  $1->vtable->i_bitwise_nots(interpreter, $1);
+  goto NEXT();
+}
+
 inline op bnots(in PMC, in PMC) :base_core {
-  $2->vtable->bitwise_nots(interpreter, $2, $1);
+  $1 = $2->vtable->bitwise_nots(interpreter, $2, $1);
+  goto NEXT();
+}
+
+inline op n_bnots(in PMC, in PMC) :base_core {
+  $1 = $2->vtable->bitwise_nots(interpreter, $2, NULL);
   goto NEXT();
 }
 

Modified: trunk/ops/cmp.ops
==============================================================================
--- trunk/ops/cmp.ops   (original)
+++ trunk/ops/cmp.ops   Thu Apr 28 08:41:47 2005
@@ -699,21 +699,44 @@
 
 ########################################
 
+=item B<not>(out INT)
+
+=item B<not>(in PMC)
+
+Set the boolean state of $1 to the opposite of the boolean state from $1.
+
 =item B<not>(out INT, in INT)
 
-=item B<not>(in PMC, in PMC)
+=item B<not>(out PMC, in PMC)
+
+=item B<n_not>(out PMC, in PMC)
 
 Set the boolean state of $1 to the opposite of the boolean state from $2.
 
 =cut
 
+inline op not(inout INT) :base_core {
+  $1 = ! $1;
+  goto NEXT();
+}
+
 inline op not(out INT, in INT) :base_core {
   $1 = ! $2;
   goto NEXT();
 }
 
-inline op not(in PMC, in PMC) :base_core {
-  $2->vtable->logical_not(interpreter, $2, $1);
+inline op not(in PMC) :base_core {
+  $2->vtable->i_logical_not(interpreter, $1);
+  goto NEXT();
+}
+
+inline op not(out PMC, in PMC) :base_core {
+  $1 = $2->vtable->logical_not(interpreter, $2, $1);
+  goto NEXT();
+}
+
+inline op n_not(out PMC, in PMC) :base_core {
+  $1 = $2->vtable->logical_not(interpreter, $2, NULL);
   goto NEXT();
 }
 

Modified: trunk/ops/math.ops
==============================================================================
--- trunk/ops/math.ops  (original)
+++ trunk/ops/math.ops  Thu Apr 28 08:41:47 2005
@@ -151,10 +151,14 @@
 
 =item B<abs>(out NUM, in NUM)
 
-=item B<abs>(in PMC, in PMC)
+=item B<abs>(out PMC, in PMC)
 
 Set $1 to absolute value of $2.
 
+=item B<n_abs>(out PMC, in PMC)
+
+Create new $1 as the absolute of $2.
+
 =cut
 
 inline op abs( inout INT) :base_core {
@@ -188,12 +192,17 @@
 }
 
 inline op abs(in PMC) :base_core {
-  $1->vtable->absolute(interpreter, $1, $1);
+  $1->vtable->i_absolute(interpreter, $1);
+  goto NEXT();
+}
+
+inline op abs(out PMC, in PMC) :base_core {
+  $1 = $2->vtable->absolute(interpreter, $2, $1);
   goto NEXT();
 }
 
-inline op abs(in PMC, in PMC) :base_core {
-  $2->vtable->absolute(interpreter, $2, $1);
+inline op n_abs(out PMC, in PMC) :base_core {
+  $1 = $2->vtable->absolute(interpreter, $2, NULL);
   goto NEXT();
 }
 
@@ -695,10 +704,14 @@
 
 =item B<neg>(out NUM, in NUM)
 
-=item B<neg>(in PMC, in PMC)
+=item B<neg>(out PMC, in PMC)
 
 Set $1 to the negative of $2.
 
+=item B<n_neg>(out PMC, in PMC)
+
+Create $1 as the negative of $2.
+
 =cut
 
 inline op neg(inout INT) :base_core {
@@ -712,7 +725,7 @@
 }
 
 inline op neg(in PMC) :base_core {
-  $1->vtable->neg(interpreter, $1, $1);
+  $1->vtable->i_neg(interpreter, $1);
   goto NEXT();
 }
 
@@ -726,8 +739,13 @@
   goto NEXT();
 }
 
-inline op neg(in PMC, in PMC) :base_core {
-  $2->vtable->neg(interpreter, $2, $1);
+inline op neg(out PMC, in PMC) :base_core {
+  $1 = $2->vtable->neg(interpreter, $2, $1);
+  goto NEXT();
+}
+
+inline op n_neg(out PMC, in PMC) :base_core {
+  $1 = $2->vtable->neg(interpreter, $2, NULL);
   goto NEXT();
 }
 

Modified: trunk/ops/ops.num
==============================================================================
--- trunk/ops/ops.num   (original)
+++ trunk/ops/ops.num   Thu Apr 28 08:41:47 2005
@@ -1330,3 +1330,14 @@
 backtrace                      1300
 pic_infix___ic_p_p             1301
 pic_inline_sub___ic_p_p        1302
+n_abs_p_p                      1303
+n_neg_p_p                      1304
+bnot_i                         1305
+bnot_p                         1306
+n_bnot_p_p                     1307
+bnots_s                        1308
+bnots_p                        1309
+n_bnots_p_p                    1310
+not_i                          1311
+not_p                          1312
+n_not_p_p                      1313

Modified: trunk/vtable.tbl
==============================================================================
--- trunk/vtable.tbl    (original)
+++ trunk/vtable.tbl    Thu Apr 28 08:41:47 2005
@@ -203,8 +203,12 @@
 
 void increment()
 void decrement()
-void absolute(PMC* dest)
-void neg(PMC* dest)
+
+PMC* absolute(PMC* dest)
+void i_absolute()
+
+PMC* neg(PMC* dest)
+void i_neg()
 
 [BITWISE]
 PMC* bitwise_or(PMC* value, PMC* dest)          MMD_BOR
@@ -243,9 +247,11 @@
 void i_bitwise_xors(PMC* value)                 MMD_I_SXOR
 void i_bitwise_xors_str(STRING* value)          MMD_I_SXOR_STR
 
-void bitwise_not(PMC* dest)
+PMC* bitwise_not(PMC* dest)
+void i_bitwise_not()
 
-void bitwise_nots(PMC* dest)
+PMC* bitwise_nots(PMC* dest)
+void i_bitwise_nots()
 
 PMC* bitwise_shl(PMC* value, PMC* dest)         MMD_BSL
 PMC* bitwise_shl_int(INTVAL value, PMC* dest)   MMD_BSL_INT
@@ -285,7 +291,9 @@
 PMC* logical_xor(PMC* value, PMC* dest)      MMD_LXOR
 void i_logical_xor(PMC* value)               MMD_I_LXOR
 
-void logical_not(PMC* dest)
+PMC* logical_not(PMC* dest)
+void i_logical_not()
+
 
 [STRING]
 PMC* concatenate(PMC* value, PMC* dest)        MMD_CONCAT

Reply via email to