[svn:parrot] r46814 - in branches/ops_massacre: src/dynoplibs src/ops t/compilers/imcc/imcpasm t/dynoplibs t/op

plobsing at svn.parrot.org plobsing at svn.parrot.org
Thu May 20 07:42:18 UTC 2010


Author: plobsing
Date: Thu May 20 07:42:17 2010
New Revision: 46814
URL: https://trac.parrot.org/parrot/changeset/46814

Log:
move cmod to dynop

Modified:
   branches/ops_massacre/src/dynoplibs/math.ops
   branches/ops_massacre/src/ops/math.ops
   branches/ops_massacre/src/ops/ops.num
   branches/ops_massacre/t/compilers/imcc/imcpasm/opt1.t
   branches/ops_massacre/t/dynoplibs/math.t
   branches/ops_massacre/t/op/inf_nan.t
   branches/ops_massacre/t/op/integer.t
   branches/ops_massacre/t/op/number.t

Modified: branches/ops_massacre/src/dynoplibs/math.ops
==============================================================================
--- branches/ops_massacre/src/dynoplibs/math.ops	Thu May 20 07:12:16 2010	(r46813)
+++ branches/ops_massacre/src/dynoplibs/math.ops	Thu May 20 07:42:17 2010	(r46814)
@@ -25,6 +25,162 @@
 
 =cut
 
+=head2 General Math
+
+=over 4
+
+=cut
+
+########################################
+
+=item B<cmod>(out INT, in INT, in INT)
+
+=item B<cmod>(invar PMC, invar PMC, in INT)
+
+=item B<cmod>(invar PMC, invar PMC, invar PMC)
+
+NOTE: This "uncorrected mod" algorithm uses the C language's built-in
+mod operator (x % y), which is
+
+    ... the remainder when x is divided by y, and thus is zero
+    when y divides x exactly.
+    ...
+    The direction of truncation for / and the sign of the result
+    for % are machine-dependent for negative operands, as is the
+    action taken on overflow or underflow.
+                                                     -- [1], page 41
+
+Also:
+
+    ... if the second operand is 0, the result is undefined.
+    Otherwise, it is always true that (a/b)*b + a%b is equal to z. If
+    both operands are non-negative, then the remainder is non-
+    negative and smaller than the divisor; if not, it is guaranteed
+    only that the absolute value of the remainder is smaller than
+    the absolute value of the divisor.
+                                                     -- [1], page 205
+
+This op is provided for those who need it (such as speed-sensitive
+applications with heavy use of mod, but using it only with positive
+arguments), but a more mathematically useful mod based on ** floor(x/y)
+and defined with y == 0 is provided by the mod op.
+
+  [1] Brian W. Kernighan and Dennis M. Ritchie, *The C Programming
+      Language*, Second Edition. Prentice Hall, 1988.
+
+If the denominator is zero, a 'Divide by zero' exception is thrown.
+
+=cut
+
+inline op cmod(out INT, in INT, in INT) :base_core {
+    INTVAL den = $3;
+    if ($3 == 0) {
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
+            EXCEPTION_DIV_BY_ZERO,
+            "Divide by zero");
+        goto ADDRESS(handler);
+    }
+    $1 = $2 % den;
+}
+
+inline op cmod(invar PMC, invar PMC, in INT) :base_core {
+    INTVAL result;
+
+    if ($3 == 0) {
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
+            EXCEPTION_DIV_BY_ZERO,
+            "Divide by zero");
+        goto ADDRESS(handler);
+    }
+
+    result = VTABLE_get_integer(interp, $2) % $3;
+
+    $1 = Parrot_pmc_new(interp, VTABLE_type(interp, $2));
+    VTABLE_set_integer_native(interp, $1, result);
+}
+
+inline op cmod(invar PMC, invar PMC, invar PMC) :base_core {
+    INTVAL result;
+    INTVAL value = VTABLE_get_integer(interp, $3);
+
+    if (value == 0) {
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
+            EXCEPTION_DIV_BY_ZERO,
+            "Divide by zero");
+        goto ADDRESS(handler);
+    }
+
+    result = VTABLE_get_integer(interp, $2) % value;
+
+    $1 = Parrot_pmc_new(interp, VTABLE_type(interp, $2));
+    VTABLE_set_integer_native(interp, $1, result);
+}
+
+########################################
+
+=item B<cmod>(out NUM, in NUM, in NUM)
+
+=item B<cmod>(invar PMC, invar PMC, in NUM)
+
+NOTE: This "uncorrected mod" algorithm uses the built-in C math library's
+fmod() function, which computes
+
+    ... the remainder of dividing x by y. The return value is
+    x - n * y, where n is the quotient of x / y, rounded towards
+    zero to an integer.
+                                -- fmod() manpage on RedHat Linux 7.0
+
+In addition, fmod() returns
+
+    the remainder, unless y is zero, when the function fails and
+    errno is set.
+
+According to page 251 of [1], the result when y is zero is implementation-
+defined.
+
+This op is provided for those who need it, but a more mathematically
+useful numeric mod based on floor(x/y) instead of truncate(x/y) and
+defined with y == 0 is provided by the mod op.
+
+  [1] Brian W. Kernighan and Dennis M. Ritchie, *The C Programming
+      Language*, Second Edition. Prentice Hall, 1988.
+
+If the denominator is zero, a 'Divide by zero' exception is thrown.
+
+=cut
+
+inline op cmod(out NUM, in NUM, in NUM) :base_core {
+    FLOATVAL den = $3;
+    if (FLOAT_IS_ZERO($3)) {
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
+            EXCEPTION_DIV_BY_ZERO,
+            "Divide by zero");
+        goto ADDRESS(handler);
+    }
+    $1 = fmod($2, den);
+}
+
+inline op cmod(invar PMC, invar PMC, in NUM) :base_core {
+    FLOATVAL result;
+    FLOATVAL value = $3;
+
+    if (FLOAT_IS_ZERO(value)) {
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
+            EXCEPTION_DIV_BY_ZERO,
+            "Divide by zero");
+        goto ADDRESS(handler);
+    }
+
+    result = fmod(VTABLE_get_integer(interp, $2), value);
+
+    $1 = Parrot_pmc_new(interp, VTABLE_type(interp, $2));
+    VTABLE_set_integer_native(interp, $1, (INTVAL) result);
+}
+
+=back
+
+=cut
+
 ###############################################################################
 
 =head2 Pseudorandom number operations

Modified: branches/ops_massacre/src/ops/math.ops
==============================================================================
--- branches/ops_massacre/src/ops/math.ops	Thu May 20 07:12:16 2010	(r46813)
+++ branches/ops_massacre/src/ops/math.ops	Thu May 20 07:42:17 2010	(r46814)
@@ -137,152 +137,6 @@
 
 ########################################
 
-=item B<cmod>(out INT, in INT, in INT)
-
-=item B<cmod>(invar PMC, invar PMC, in INT)
-
-=item B<cmod>(invar PMC, invar PMC, invar PMC)
-
-NOTE: This "uncorrected mod" algorithm uses the C language's built-in
-mod operator (x % y), which is
-
-    ... the remainder when x is divided by y, and thus is zero
-    when y divides x exactly.
-    ...
-    The direction of truncation for / and the sign of the result
-    for % are machine-dependent for negative operands, as is the
-    action taken on overflow or underflow.
-                                                     -- [1], page 41
-
-Also:
-
-    ... if the second operand is 0, the result is undefined.
-    Otherwise, it is always true that (a/b)*b + a%b is equal to z. If
-    both operands are non-negative, then the remainder is non-
-    negative and smaller than the divisor; if not, it is guaranteed
-    only that the absolute value of the remainder is smaller than
-    the absolute value of the divisor.
-                                                     -- [1], page 205
-
-This op is provided for those who need it (such as speed-sensitive
-applications with heavy use of mod, but using it only with positive
-arguments), but a more mathematically useful mod based on ** floor(x/y)
-and defined with y == 0 is provided by the mod op.
-
-  [1] Brian W. Kernighan and Dennis M. Ritchie, *The C Programming
-      Language*, Second Edition. Prentice Hall, 1988.
-
-If the denominator is zero, a 'Divide by zero' exception is thrown.
-
-=cut
-
-inline op cmod(out INT, in INT, in INT) :base_core {
-    INTVAL den = $3;
-    if ($3 == 0) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
-            EXCEPTION_DIV_BY_ZERO,
-            "Divide by zero");
-        goto ADDRESS(handler);
-    }
-    $1 = $2 % den;
-}
-
-inline op cmod(invar PMC, invar PMC, in INT) :base_core {
-    INTVAL result;
-
-    if ($3 == 0) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
-            EXCEPTION_DIV_BY_ZERO,
-            "Divide by zero");
-        goto ADDRESS(handler);
-    }
-
-    result = VTABLE_get_integer(interp, $2) % $3;
-
-    $1 = Parrot_pmc_new(interp, VTABLE_type(interp, $2));
-    VTABLE_set_integer_native(interp, $1, result);
-}
-
-inline op cmod(invar PMC, invar PMC, invar PMC) :base_core {
-    INTVAL result;
-    INTVAL value = VTABLE_get_integer(interp, $3);
-
-    if (value == 0) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
-            EXCEPTION_DIV_BY_ZERO,
-            "Divide by zero");
-        goto ADDRESS(handler);
-    }
-
-    result = VTABLE_get_integer(interp, $2) % value;
-
-    $1 = Parrot_pmc_new(interp, VTABLE_type(interp, $2));
-    VTABLE_set_integer_native(interp, $1, result);
-}
-
-########################################
-
-=item B<cmod>(out NUM, in NUM, in NUM)
-
-=item B<cmod>(invar PMC, invar PMC, in NUM)
-
-NOTE: This "uncorrected mod" algorithm uses the built-in C math library's
-fmod() function, which computes
-
-    ... the remainder of dividing x by y. The return value is
-    x - n * y, where n is the quotient of x / y, rounded towards
-    zero to an integer.
-                                -- fmod() manpage on RedHat Linux 7.0
-
-In addition, fmod() returns
-
-    the remainder, unless y is zero, when the function fails and
-    errno is set.
-
-According to page 251 of [1], the result when y is zero is implementation-
-defined.
-
-This op is provided for those who need it, but a more mathematically
-useful numeric mod based on floor(x/y) instead of truncate(x/y) and
-defined with y == 0 is provided by the mod op.
-
-  [1] Brian W. Kernighan and Dennis M. Ritchie, *The C Programming
-      Language*, Second Edition. Prentice Hall, 1988.
-
-If the denominator is zero, a 'Divide by zero' exception is thrown.
-
-=cut
-
-inline op cmod(out NUM, in NUM, in NUM) :base_core {
-    FLOATVAL den = $3;
-    if (FLOAT_IS_ZERO($3)) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
-            EXCEPTION_DIV_BY_ZERO,
-            "Divide by zero");
-        goto ADDRESS(handler);
-    }
-    $1 = fmod($2, den);
-}
-
-inline op cmod(invar PMC, invar PMC, in NUM) :base_core {
-    FLOATVAL result;
-    FLOATVAL value = $3;
-
-    if (FLOAT_IS_ZERO(value)) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
-            EXCEPTION_DIV_BY_ZERO,
-            "Divide by zero");
-        goto ADDRESS(handler);
-    }
-
-    result = fmod(VTABLE_get_integer(interp, $2), value);
-
-    $1 = Parrot_pmc_new(interp, VTABLE_type(interp, $2));
-    VTABLE_set_integer_native(interp, $1, (INTVAL) result);
-}
-
-########################################
-
 =item B<dec>(inout INT)
 
 =item B<dec>(inout NUM)

Modified: branches/ops_massacre/src/ops/ops.num
==============================================================================
--- branches/ops_massacre/src/ops/ops.num	Thu May 20 07:12:16 2010	(r46813)
+++ branches/ops_massacre/src/ops/ops.num	Thu May 20 07:42:17 2010	(r46814)
@@ -546,648 +546,637 @@
 add_p_p_ic                      522
 add_p_p_n                       523
 add_p_p_nc                      524
-cmod_i_i_i                      525
-cmod_i_ic_i                     526
-cmod_i_i_ic                     527
-cmod_p_p_i                      528
-cmod_p_p_ic                     529
-cmod_p_p_p                      530
-cmod_n_n_n                      531
-cmod_n_nc_n                     532
-cmod_n_n_nc                     533
-cmod_p_p_n                      534
-cmod_p_p_nc                     535
-dec_i                           536
-dec_n                           537
-dec_p                           538
-div_i_i                         539
-div_i_ic                        540
-div_n_n                         541
-div_n_nc                        542
-div_p_p                         543
-div_p_i                         544
-div_p_ic                        545
-div_p_n                         546
-div_p_nc                        547
-div_i_i_i                       548
-div_i_ic_i                      549
-div_i_i_ic                      550
-div_i_ic_ic                     551
-div_n_n_n                       552
-div_n_nc_n                      553
-div_n_n_nc                      554
-div_n_nc_nc                     555
-div_p_p_p                       556
-div_p_p_i                       557
-div_p_p_ic                      558
-div_p_p_n                       559
-div_p_p_nc                      560
-fdiv_i_i                        561
-fdiv_i_ic                       562
-fdiv_n_n                        563
-fdiv_n_nc                       564
-fdiv_p_p                        565
-fdiv_p_i                        566
-fdiv_p_ic                       567
-fdiv_p_n                        568
-fdiv_p_nc                       569
-fdiv_i_i_i                      570
-fdiv_i_ic_i                     571
-fdiv_i_i_ic                     572
-fdiv_n_n_n                      573
-fdiv_n_nc_n                     574
-fdiv_n_n_nc                     575
-fdiv_p_p_p                      576
-fdiv_p_p_i                      577
-fdiv_p_p_ic                     578
-fdiv_p_p_n                      579
-fdiv_p_p_nc                     580
-ceil_n                          581
-ceil_i_n                        582
-ceil_n_n                        583
-floor_n                         584
-floor_i_n                       585
-floor_n_n                       586
-inc_i                           587
-inc_n                           588
-inc_p                           589
-mod_i_i                         590
-mod_i_ic                        591
-mod_n_n                         592
-mod_n_nc                        593
-mod_p_p                         594
-mod_p_i                         595
-mod_p_ic                        596
-mod_p_n                         597
-mod_p_nc                        598
-mod_i_i_i                       599
-mod_i_ic_i                      600
-mod_i_i_ic                      601
-mod_n_n_n                       602
-mod_n_nc_n                      603
-mod_n_n_nc                      604
-mod_p_p_p                       605
-mod_p_p_i                       606
-mod_p_p_ic                      607
-mod_p_p_n                       608
-mod_p_p_nc                      609
-mul_i_i                         610
-mul_i_ic                        611
-mul_n_n                         612
-mul_n_nc                        613
-mul_p_p                         614
-mul_p_i                         615
-mul_p_ic                        616
-mul_p_n                         617
-mul_p_nc                        618
-mul_i_i_i                       619
-mul_i_ic_i                      620
-mul_i_i_ic                      621
-mul_n_n_n                       622
-mul_n_nc_n                      623
-mul_n_n_nc                      624
-mul_p_p_p                       625
-mul_p_p_i                       626
-mul_p_p_ic                      627
-mul_p_p_n                       628
-mul_p_p_nc                      629
-neg_i                           630
-neg_n                           631
-neg_p                           632
-neg_i_i                         633
-neg_n_n                         634
-neg_p_p                         635
-sub_i_i                         636
-sub_i_ic                        637
-sub_n_n                         638
-sub_n_nc                        639
-sub_p_p                         640
-sub_p_i                         641
-sub_p_ic                        642
-sub_p_n                         643
-sub_p_nc                        644
-sub_i_i_i                       645
-sub_i_ic_i                      646
-sub_i_i_ic                      647
-sub_n_n_n                       648
-sub_n_nc_n                      649
-sub_n_n_nc                      650
-sub_p_p_p                       651
-sub_p_p_i                       652
-sub_p_p_ic                      653
-sub_p_p_n                       654
-sub_p_p_nc                      655
-sqrt_n_n                        656
-callmethodcc_p_s                657
-callmethodcc_p_sc               658
-callmethodcc_p_p                659
-callmethod_p_s_p                660
-callmethod_p_sc_p               661
-callmethod_p_p_p                662
-tailcallmethod_p_s              663
-tailcallmethod_p_sc             664
-tailcallmethod_p_p              665
-addmethod_p_s_p                 666
-addmethod_p_sc_p                667
-can_i_p_s                       668
-can_i_p_sc                      669
-does_i_p_s                      670
-does_i_p_sc                     671
-does_i_p_p                      672
-does_i_p_pc                     673
-isa_i_p_s                       674
-isa_i_p_sc                      675
-isa_i_p_p                       676
-isa_i_p_pc                      677
-newclass_p_s                    678
-newclass_p_sc                   679
-newclass_p_p                    680
-newclass_p_pc                   681
-subclass_p_p                    682
-subclass_p_pc                   683
-subclass_p_p_s                  684
-subclass_p_pc_s                 685
-subclass_p_p_sc                 686
-subclass_p_pc_sc                687
-subclass_p_p_p                  688
-subclass_p_pc_p                 689
-subclass_p_p_pc                 690
-subclass_p_pc_pc                691
-subclass_p_s                    692
-subclass_p_sc                   693
-subclass_p_s_s                  694
-subclass_p_sc_s                 695
-subclass_p_s_sc                 696
-subclass_p_sc_sc                697
-subclass_p_s_p                  698
-subclass_p_sc_p                 699
-subclass_p_s_pc                 700
-subclass_p_sc_pc                701
-get_class_p_s                   702
-get_class_p_sc                  703
-get_class_p_p                   704
-get_class_p_pc                  705
-class_p_p                       706
-addparent_p_p                   707
-removeparent_p_p                708
-addrole_p_p                     709
-addattribute_p_s                710
-addattribute_p_sc               711
-removeattribute_p_s             712
-removeattribute_p_sc            713
-getattribute_p_p_s              714
-getattribute_p_p_sc             715
-getattribute_p_p_p_s            716
-getattribute_p_p_pc_s           717
-getattribute_p_p_p_sc           718
-getattribute_p_p_pc_sc          719
-setattribute_p_s_p              720
-setattribute_p_sc_p             721
-setattribute_p_p_s_p            722
-setattribute_p_pc_s_p           723
-setattribute_p_p_sc_p           724
-setattribute_p_pc_sc_p          725
-inspect_p_p                     726
-inspect_p_pc                    727
-inspect_p_p_s                   728
-inspect_p_pc_s                  729
-inspect_p_p_sc                  730
-inspect_p_pc_sc                 731
-new_p_s                         732
-new_p_sc                        733
-new_p_s_p                       734
-new_p_sc_p                      735
-new_p_s_pc                      736
-new_p_sc_pc                     737
-new_p_p                         738
-new_p_pc                        739
-new_p_p_p                       740
-new_p_pc_p                      741
-new_p_p_pc                      742
-new_p_pc_pc                     743
-root_new_p_p                    744
-root_new_p_pc                   745
-root_new_p_p_p                  746
-root_new_p_pc_p                 747
-root_new_p_p_pc                 748
-root_new_p_pc_pc                749
-typeof_s_p                      750
-typeof_p_p                      751
-get_repr_s_p                    752
-find_method_p_p_s               753
-find_method_p_p_sc              754
-defined_i_p                     755
-defined_i_p_ki                  756
-defined_i_p_kic                 757
-defined_i_p_k                   758
-defined_i_p_kc                  759
-exists_i_p_ki                   760
-exists_i_p_kic                  761
-exists_i_p_k                    762
-exists_i_p_kc                   763
-delete_p_k                      764
-delete_p_kc                     765
-delete_p_ki                     766
-delete_p_kic                    767
-elements_i_p                    768
-push_p_i                        769
-push_p_ic                       770
-push_p_n                        771
-push_p_nc                       772
-push_p_s                        773
-push_p_sc                       774
-push_p_p                        775
-pop_i_p                         776
-pop_n_p                         777
-pop_s_p                         778
-pop_p_p                         779
-unshift_p_i                     780
-unshift_p_ic                    781
-unshift_p_n                     782
-unshift_p_nc                    783
-unshift_p_s                     784
-unshift_p_sc                    785
-unshift_p_p                     786
-shift_i_p                       787
-shift_n_p                       788
-shift_s_p                       789
-shift_p_p                       790
-splice_p_p_i_i                  791
-splice_p_p_ic_i                 792
-splice_p_p_i_ic                 793
-splice_p_p_ic_ic                794
-setprop_p_s_p                   795
-setprop_p_sc_p                  796
-getprop_p_s_p                   797
-getprop_p_sc_p                  798
-delprop_p_s                     799
-delprop_p_sc                    800
-prophash_p_p                    801
-freeze_s_p                      802
-thaw_p_s                        803
-thaw_p_sc                       804
-add_multi_s_s_p                 805
-add_multi_sc_s_p                806
-add_multi_s_sc_p                807
-add_multi_sc_sc_p               808
-find_multi_p_s_s                809
-find_multi_p_sc_s               810
-find_multi_p_s_sc               811
-find_multi_p_sc_sc              812
-register_p                      813
-unregister_p                    814
-box_p_i                         815
-box_p_ic                        816
-box_p_n                         817
-box_p_nc                        818
-box_p_s                         819
-box_p_sc                        820
-iter_p_p                        821
-morph_p_p                       822
-morph_p_pc                      823
-clone_s_s                       824
-clone_s_sc                      825
-set_i_i                         826
-set_i_ic                        827
-set_i_n                         828
-set_i_nc                        829
-set_i_s                         830
-set_i_sc                        831
-set_n_n                         832
-set_n_nc                        833
-set_n_i                         834
-set_n_ic                        835
-set_n_s                         836
-set_n_sc                        837
-set_n_p                         838
-set_s_p                         839
-set_s_s                         840
-set_s_sc                        841
-set_s_i                         842
-set_s_ic                        843
-set_s_n                         844
-set_s_nc                        845
-set_p_pc                        846
-set_p_p                         847
-set_p_i                         848
-set_p_ic                        849
-set_p_n                         850
-set_p_nc                        851
-set_p_s                         852
-set_p_sc                        853
-set_i_p                         854
-assign_p_p                      855
-assign_p_i                      856
-assign_p_ic                     857
-assign_p_n                      858
-assign_p_nc                     859
-assign_p_s                      860
-assign_p_sc                     861
-assign_s_s                      862
-assign_s_sc                     863
-setref_p_p                      864
-deref_p_p                       865
-set_p_ki_i                      866
-set_p_kic_i                     867
-set_p_ki_ic                     868
-set_p_kic_ic                    869
-set_p_ki_n                      870
-set_p_kic_n                     871
-set_p_ki_nc                     872
-set_p_kic_nc                    873
-set_p_ki_s                      874
-set_p_kic_s                     875
-set_p_ki_sc                     876
-set_p_kic_sc                    877
-set_p_ki_p                      878
-set_p_kic_p                     879
-set_i_p_ki                      880
-set_i_p_kic                     881
-set_n_p_ki                      882
-set_n_p_kic                     883
-set_s_p_ki                      884
-set_s_p_kic                     885
-set_p_p_ki                      886
-set_p_p_kic                     887
-set_p_k_i                       888
-set_p_kc_i                      889
-set_p_k_ic                      890
-set_p_kc_ic                     891
-set_p_k_n                       892
-set_p_kc_n                      893
-set_p_k_nc                      894
-set_p_kc_nc                     895
-set_p_k_s                       896
-set_p_kc_s                      897
-set_p_k_sc                      898
-set_p_kc_sc                     899
-set_p_k_p                       900
-set_p_kc_p                      901
-set_i_p_k                       902
-set_i_p_kc                      903
-set_n_p_k                       904
-set_n_p_kc                      905
-set_s_p_k                       906
-set_s_p_kc                      907
-set_p_p_k                       908
-set_p_p_kc                      909
-clone_p_p                       910
-clone_p_p_p                     911
-clone_p_p_pc                    912
-copy_p_p                        913
-null_s                          914
-null_i                          915
-null_p                          916
-null_n                          917
-ord_i_s                         918
-ord_i_sc                        919
-ord_i_s_i                       920
-ord_i_sc_i                      921
-ord_i_s_ic                      922
-ord_i_sc_ic                     923
-chr_s_i                         924
-chr_s_ic                        925
-chopn_s_s_i                     926
-chopn_s_sc_i                    927
-chopn_s_s_ic                    928
-chopn_s_sc_ic                   929
-concat_s_s                      930
-concat_s_sc                     931
-concat_p_p                      932
-concat_p_s                      933
-concat_p_sc                     934
-concat_s_s_s                    935
-concat_s_sc_s                   936
-concat_s_s_sc                   937
-concat_p_p_s                    938
-concat_p_p_sc                   939
-concat_p_p_p                    940
-repeat_s_s_i                    941
-repeat_s_sc_i                   942
-repeat_s_s_ic                   943
-repeat_s_sc_ic                  944
-repeat_p_p_i                    945
-repeat_p_p_ic                   946
-repeat_p_p_p                    947
-repeat_p_i                      948
-repeat_p_ic                     949
-repeat_p_p                      950
-length_i_s                      951
-length_i_sc                     952
-bytelength_i_s                  953
-bytelength_i_sc                 954
-pin_s                           955
-unpin_s                         956
-substr_s_s_i                    957
-substr_s_sc_i                   958
-substr_s_s_ic                   959
-substr_s_sc_ic                  960
-substr_s_s_i_i                  961
-substr_s_sc_i_i                 962
-substr_s_s_ic_i                 963
-substr_s_sc_ic_i                964
-substr_s_s_i_ic                 965
-substr_s_sc_i_ic                966
-substr_s_s_ic_ic                967
-substr_s_sc_ic_ic               968
-substr_s_p_i_i                  969
-substr_s_p_ic_i                 970
-substr_s_p_i_ic                 971
-substr_s_p_ic_ic                972
-replace_s_s_i_i_s               973
-replace_s_sc_i_i_s              974
-replace_s_s_ic_i_s              975
-replace_s_sc_ic_i_s             976
-replace_s_s_i_ic_s              977
-replace_s_sc_i_ic_s             978
-replace_s_s_ic_ic_s             979
-replace_s_sc_ic_ic_s            980
-replace_s_s_i_i_sc              981
-replace_s_sc_i_i_sc             982
-replace_s_s_ic_i_sc             983
-replace_s_sc_ic_i_sc            984
-replace_s_s_i_ic_sc             985
-replace_s_sc_i_ic_sc            986
-replace_s_s_ic_ic_sc            987
-replace_s_sc_ic_ic_sc           988
-index_i_s_s                     989
-index_i_sc_s                    990
-index_i_s_sc                    991
-index_i_sc_sc                   992
-index_i_s_s_i                   993
-index_i_sc_s_i                  994
-index_i_s_sc_i                  995
-index_i_sc_sc_i                 996
-index_i_s_s_ic                  997
-index_i_sc_s_ic                 998
-index_i_s_sc_ic                 999
-index_i_sc_sc_ic               1000
-sprintf_s_s_p                  1001
-sprintf_s_sc_p                 1002
-sprintf_p_p_p                  1003
-new_s                          1004
-new_s_i                        1005
-new_s_ic                       1006
-stringinfo_i_s_i               1007
-stringinfo_i_sc_i              1008
-stringinfo_i_s_ic              1009
-stringinfo_i_sc_ic             1010
-upcase_s_s                     1011
-upcase_s_sc                    1012
-downcase_s_s                   1013
-downcase_s_sc                  1014
-titlecase_s_s                  1015
-titlecase_s_sc                 1016
-join_s_s_p                     1017
-join_s_sc_p                    1018
-split_p_s_s                    1019
-split_p_sc_s                   1020
-split_p_s_sc                   1021
-split_p_sc_sc                  1022
-charset_i_s                    1023
-charset_i_sc                   1024
-charsetname_s_i                1025
-charsetname_s_ic               1026
-find_charset_i_s               1027
-find_charset_i_sc              1028
-trans_charset_s_s_i            1029
-trans_charset_s_sc_i           1030
-trans_charset_s_s_ic           1031
-trans_charset_s_sc_ic          1032
-encoding_i_s                   1033
-encoding_i_sc                  1034
-encodingname_s_i               1035
-encodingname_s_ic              1036
-find_encoding_i_s              1037
-find_encoding_i_sc             1038
-trans_encoding_s_s_i           1039
-trans_encoding_s_sc_i          1040
-trans_encoding_s_s_ic          1041
-trans_encoding_s_sc_ic         1042
-is_cclass_i_i_s_i              1043
-is_cclass_i_ic_s_i             1044
-is_cclass_i_i_sc_i             1045
-is_cclass_i_ic_sc_i            1046
-is_cclass_i_i_s_ic             1047
-is_cclass_i_ic_s_ic            1048
-is_cclass_i_i_sc_ic            1049
-is_cclass_i_ic_sc_ic           1050
-find_cclass_i_i_s_i_i          1051
-find_cclass_i_ic_s_i_i         1052
-find_cclass_i_i_sc_i_i         1053
-find_cclass_i_ic_sc_i_i        1054
-find_cclass_i_i_s_ic_i         1055
-find_cclass_i_ic_s_ic_i        1056
-find_cclass_i_i_sc_ic_i        1057
-find_cclass_i_ic_sc_ic_i       1058
-find_cclass_i_i_s_i_ic         1059
-find_cclass_i_ic_s_i_ic        1060
-find_cclass_i_i_sc_i_ic        1061
-find_cclass_i_ic_sc_i_ic       1062
-find_cclass_i_i_s_ic_ic        1063
-find_cclass_i_ic_s_ic_ic       1064
-find_cclass_i_i_sc_ic_ic       1065
-find_cclass_i_ic_sc_ic_ic      1066
-find_not_cclass_i_i_s_i_i      1067
-find_not_cclass_i_ic_s_i_i     1068
-find_not_cclass_i_i_sc_i_i     1069
-find_not_cclass_i_ic_sc_i_i    1070
-find_not_cclass_i_i_s_ic_i     1071
-find_not_cclass_i_ic_s_ic_i    1072
-find_not_cclass_i_i_sc_ic_i    1073
-find_not_cclass_i_ic_sc_ic_i   1074
-find_not_cclass_i_i_s_i_ic     1075
-find_not_cclass_i_ic_s_i_ic    1076
-find_not_cclass_i_i_sc_i_ic    1077
-find_not_cclass_i_ic_sc_i_ic   1078
-find_not_cclass_i_i_s_ic_ic    1079
-find_not_cclass_i_ic_s_ic_ic   1080
-find_not_cclass_i_i_sc_ic_ic   1081
-find_not_cclass_i_ic_sc_ic_ic  1082
-escape_s_s                     1083
-compose_s_s                    1084
-compose_s_sc                   1085
-spawnw_i_s                     1086
-spawnw_i_sc                    1087
-spawnw_i_p                     1088
-err_i                          1089
-err_s                          1090
-err_s_i                        1091
-err_s_ic                       1092
-time_i                         1093
-time_n                         1094
-gmtime_s_i                     1095
-gmtime_s_ic                    1096
-localtime_s_i                  1097
-localtime_s_ic                 1098
-decodetime_p_i                 1099
-decodetime_p_ic                1100
-decodelocaltime_p_i            1101
-decodelocaltime_p_ic           1102
-sysinfo_s_i                    1103
-sysinfo_s_ic                   1104
-sysinfo_i_i                    1105
-sysinfo_i_ic                   1106
-sleep_i                        1107
-sleep_ic                       1108
-sleep_n                        1109
-sleep_nc                       1110
-store_lex_s_p                  1111
-store_lex_sc_p                 1112
-store_dynamic_lex_s_p          1113
-store_dynamic_lex_sc_p         1114
-find_lex_p_s                   1115
-find_lex_p_sc                  1116
-find_dynamic_lex_p_s           1117
-find_dynamic_lex_p_sc          1118
-find_caller_lex_p_s            1119
-find_caller_lex_p_sc           1120
-get_namespace_p                1121
-get_namespace_p_p              1122
-get_namespace_p_pc             1123
-get_hll_namespace_p            1124
-get_hll_namespace_p_p          1125
-get_hll_namespace_p_pc         1126
-get_root_namespace_p           1127
-get_root_namespace_p_p         1128
-get_root_namespace_p_pc        1129
-get_global_p_s                 1130
-get_global_p_sc                1131
-get_global_p_p_s               1132
-get_global_p_pc_s              1133
-get_global_p_p_sc              1134
-get_global_p_pc_sc             1135
-get_hll_global_p_s             1136
-get_hll_global_p_sc            1137
-get_hll_global_p_p_s           1138
-get_hll_global_p_pc_s          1139
-get_hll_global_p_p_sc          1140
-get_hll_global_p_pc_sc         1141
-get_root_global_p_s            1142
-get_root_global_p_sc           1143
-get_root_global_p_p_s          1144
-get_root_global_p_pc_s         1145
-get_root_global_p_p_sc         1146
-get_root_global_p_pc_sc        1147
-set_global_s_p                 1148
-set_global_sc_p                1149
-set_global_p_s_p               1150
-set_global_pc_s_p              1151
-set_global_p_sc_p              1152
-set_global_pc_sc_p             1153
-set_hll_global_s_p             1154
-set_hll_global_sc_p            1155
-set_hll_global_p_s_p           1156
-set_hll_global_pc_s_p          1157
-set_hll_global_p_sc_p          1158
-set_hll_global_pc_sc_p         1159
-set_root_global_s_p            1160
-set_root_global_sc_p           1161
-set_root_global_p_s_p          1162
-set_root_global_pc_s_p         1163
-set_root_global_p_sc_p         1164
-set_root_global_pc_sc_p        1165
-find_name_p_s                  1166
-find_name_p_sc                 1167
-find_sub_not_null_p_s          1168
-find_sub_not_null_p_sc         1169
+dec_i                           525
+dec_n                           526
+dec_p                           527
+div_i_i                         528
+div_i_ic                        529
+div_n_n                         530
+div_n_nc                        531
+div_p_p                         532
+div_p_i                         533
+div_p_ic                        534
+div_p_n                         535
+div_p_nc                        536
+div_i_i_i                       537
+div_i_ic_i                      538
+div_i_i_ic                      539
+div_i_ic_ic                     540
+div_n_n_n                       541
+div_n_nc_n                      542
+div_n_n_nc                      543
+div_n_nc_nc                     544
+div_p_p_p                       545
+div_p_p_i                       546
+div_p_p_ic                      547
+div_p_p_n                       548
+div_p_p_nc                      549
+fdiv_i_i                        550
+fdiv_i_ic                       551
+fdiv_n_n                        552
+fdiv_n_nc                       553
+fdiv_p_p                        554
+fdiv_p_i                        555
+fdiv_p_ic                       556
+fdiv_p_n                        557
+fdiv_p_nc                       558
+fdiv_i_i_i                      559
+fdiv_i_ic_i                     560
+fdiv_i_i_ic                     561
+fdiv_n_n_n                      562
+fdiv_n_nc_n                     563
+fdiv_n_n_nc                     564
+fdiv_p_p_p                      565
+fdiv_p_p_i                      566
+fdiv_p_p_ic                     567
+fdiv_p_p_n                      568
+fdiv_p_p_nc                     569
+ceil_n                          570
+ceil_i_n                        571
+ceil_n_n                        572
+floor_n                         573
+floor_i_n                       574
+floor_n_n                       575
+inc_i                           576
+inc_n                           577
+inc_p                           578
+mod_i_i                         579
+mod_i_ic                        580
+mod_n_n                         581
+mod_n_nc                        582
+mod_p_p                         583
+mod_p_i                         584
+mod_p_ic                        585
+mod_p_n                         586
+mod_p_nc                        587
+mod_i_i_i                       588
+mod_i_ic_i                      589
+mod_i_i_ic                      590
+mod_n_n_n                       591
+mod_n_nc_n                      592
+mod_n_n_nc                      593
+mod_p_p_p                       594
+mod_p_p_i                       595
+mod_p_p_ic                      596
+mod_p_p_n                       597
+mod_p_p_nc                      598
+mul_i_i                         599
+mul_i_ic                        600
+mul_n_n                         601
+mul_n_nc                        602
+mul_p_p                         603
+mul_p_i                         604
+mul_p_ic                        605
+mul_p_n                         606
+mul_p_nc                        607
+mul_i_i_i                       608
+mul_i_ic_i                      609
+mul_i_i_ic                      610
+mul_n_n_n                       611
+mul_n_nc_n                      612
+mul_n_n_nc                      613
+mul_p_p_p                       614
+mul_p_p_i                       615
+mul_p_p_ic                      616
+mul_p_p_n                       617
+mul_p_p_nc                      618
+neg_i                           619
+neg_n                           620
+neg_p                           621
+neg_i_i                         622
+neg_n_n                         623
+neg_p_p                         624
+sub_i_i                         625
+sub_i_ic                        626
+sub_n_n                         627
+sub_n_nc                        628
+sub_p_p                         629
+sub_p_i                         630
+sub_p_ic                        631
+sub_p_n                         632
+sub_p_nc                        633
+sub_i_i_i                       634
+sub_i_ic_i                      635
+sub_i_i_ic                      636
+sub_n_n_n                       637
+sub_n_nc_n                      638
+sub_n_n_nc                      639
+sub_p_p_p                       640
+sub_p_p_i                       641
+sub_p_p_ic                      642
+sub_p_p_n                       643
+sub_p_p_nc                      644
+sqrt_n_n                        645
+callmethodcc_p_s                646
+callmethodcc_p_sc               647
+callmethodcc_p_p                648
+callmethod_p_s_p                649
+callmethod_p_sc_p               650
+callmethod_p_p_p                651
+tailcallmethod_p_s              652
+tailcallmethod_p_sc             653
+tailcallmethod_p_p              654
+addmethod_p_s_p                 655
+addmethod_p_sc_p                656
+can_i_p_s                       657
+can_i_p_sc                      658
+does_i_p_s                      659
+does_i_p_sc                     660
+does_i_p_p                      661
+does_i_p_pc                     662
+isa_i_p_s                       663
+isa_i_p_sc                      664
+isa_i_p_p                       665
+isa_i_p_pc                      666
+newclass_p_s                    667
+newclass_p_sc                   668
+newclass_p_p                    669
+newclass_p_pc                   670
+subclass_p_p                    671
+subclass_p_pc                   672
+subclass_p_p_s                  673
+subclass_p_pc_s                 674
+subclass_p_p_sc                 675
+subclass_p_pc_sc                676
+subclass_p_p_p                  677
+subclass_p_pc_p                 678
+subclass_p_p_pc                 679
+subclass_p_pc_pc                680
+subclass_p_s                    681
+subclass_p_sc                   682
+subclass_p_s_s                  683
+subclass_p_sc_s                 684
+subclass_p_s_sc                 685
+subclass_p_sc_sc                686
+subclass_p_s_p                  687
+subclass_p_sc_p                 688
+subclass_p_s_pc                 689
+subclass_p_sc_pc                690
+get_class_p_s                   691
+get_class_p_sc                  692
+get_class_p_p                   693
+get_class_p_pc                  694
+class_p_p                       695
+addparent_p_p                   696
+removeparent_p_p                697
+addrole_p_p                     698
+addattribute_p_s                699
+addattribute_p_sc               700
+removeattribute_p_s             701
+removeattribute_p_sc            702
+getattribute_p_p_s              703
+getattribute_p_p_sc             704
+getattribute_p_p_p_s            705
+getattribute_p_p_pc_s           706
+getattribute_p_p_p_sc           707
+getattribute_p_p_pc_sc          708
+setattribute_p_s_p              709
+setattribute_p_sc_p             710
+setattribute_p_p_s_p            711
+setattribute_p_pc_s_p           712
+setattribute_p_p_sc_p           713
+setattribute_p_pc_sc_p          714
+inspect_p_p                     715
+inspect_p_pc                    716
+inspect_p_p_s                   717
+inspect_p_pc_s                  718
+inspect_p_p_sc                  719
+inspect_p_pc_sc                 720
+new_p_s                         721
+new_p_sc                        722
+new_p_s_p                       723
+new_p_sc_p                      724
+new_p_s_pc                      725
+new_p_sc_pc                     726
+new_p_p                         727
+new_p_pc                        728
+new_p_p_p                       729
+new_p_pc_p                      730
+new_p_p_pc                      731
+new_p_pc_pc                     732
+root_new_p_p                    733
+root_new_p_pc                   734
+root_new_p_p_p                  735
+root_new_p_pc_p                 736
+root_new_p_p_pc                 737
+root_new_p_pc_pc                738
+typeof_s_p                      739
+typeof_p_p                      740
+get_repr_s_p                    741
+find_method_p_p_s               742
+find_method_p_p_sc              743
+defined_i_p                     744
+defined_i_p_ki                  745
+defined_i_p_kic                 746
+defined_i_p_k                   747
+defined_i_p_kc                  748
+exists_i_p_ki                   749
+exists_i_p_kic                  750
+exists_i_p_k                    751
+exists_i_p_kc                   752
+delete_p_k                      753
+delete_p_kc                     754
+delete_p_ki                     755
+delete_p_kic                    756
+elements_i_p                    757
+push_p_i                        758
+push_p_ic                       759
+push_p_n                        760
+push_p_nc                       761
+push_p_s                        762
+push_p_sc                       763
+push_p_p                        764
+pop_i_p                         765
+pop_n_p                         766
+pop_s_p                         767
+pop_p_p                         768
+unshift_p_i                     769
+unshift_p_ic                    770
+unshift_p_n                     771
+unshift_p_nc                    772
+unshift_p_s                     773
+unshift_p_sc                    774
+unshift_p_p                     775
+shift_i_p                       776
+shift_n_p                       777
+shift_s_p                       778
+shift_p_p                       779
+splice_p_p_i_i                  780
+splice_p_p_ic_i                 781
+splice_p_p_i_ic                 782
+splice_p_p_ic_ic                783
+setprop_p_s_p                   784
+setprop_p_sc_p                  785
+getprop_p_s_p                   786
+getprop_p_sc_p                  787
+delprop_p_s                     788
+delprop_p_sc                    789
+prophash_p_p                    790
+freeze_s_p                      791
+thaw_p_s                        792
+thaw_p_sc                       793
+add_multi_s_s_p                 794
+add_multi_sc_s_p                795
+add_multi_s_sc_p                796
+add_multi_sc_sc_p               797
+find_multi_p_s_s                798
+find_multi_p_sc_s               799
+find_multi_p_s_sc               800
+find_multi_p_sc_sc              801
+register_p                      802
+unregister_p                    803
+box_p_i                         804
+box_p_ic                        805
+box_p_n                         806
+box_p_nc                        807
+box_p_s                         808
+box_p_sc                        809
+iter_p_p                        810
+morph_p_p                       811
+morph_p_pc                      812
+clone_s_s                       813
+clone_s_sc                      814
+set_i_i                         815
+set_i_ic                        816
+set_i_n                         817
+set_i_nc                        818
+set_i_s                         819
+set_i_sc                        820
+set_n_n                         821
+set_n_nc                        822
+set_n_i                         823
+set_n_ic                        824
+set_n_s                         825
+set_n_sc                        826
+set_n_p                         827
+set_s_p                         828
+set_s_s                         829
+set_s_sc                        830
+set_s_i                         831
+set_s_ic                        832
+set_s_n                         833
+set_s_nc                        834
+set_p_pc                        835
+set_p_p                         836
+set_p_i                         837
+set_p_ic                        838
+set_p_n                         839
+set_p_nc                        840
+set_p_s                         841
+set_p_sc                        842
+set_i_p                         843
+assign_p_p                      844
+assign_p_i                      845
+assign_p_ic                     846
+assign_p_n                      847
+assign_p_nc                     848
+assign_p_s                      849
+assign_p_sc                     850
+assign_s_s                      851
+assign_s_sc                     852
+setref_p_p                      853
+deref_p_p                       854
+set_p_ki_i                      855
+set_p_kic_i                     856
+set_p_ki_ic                     857
+set_p_kic_ic                    858
+set_p_ki_n                      859
+set_p_kic_n                     860
+set_p_ki_nc                     861
+set_p_kic_nc                    862
+set_p_ki_s                      863
+set_p_kic_s                     864
+set_p_ki_sc                     865
+set_p_kic_sc                    866
+set_p_ki_p                      867
+set_p_kic_p                     868
+set_i_p_ki                      869
+set_i_p_kic                     870
+set_n_p_ki                      871
+set_n_p_kic                     872
+set_s_p_ki                      873
+set_s_p_kic                     874
+set_p_p_ki                      875
+set_p_p_kic                     876
+set_p_k_i                       877
+set_p_kc_i                      878
+set_p_k_ic                      879
+set_p_kc_ic                     880
+set_p_k_n                       881
+set_p_kc_n                      882
+set_p_k_nc                      883
+set_p_kc_nc                     884
+set_p_k_s                       885
+set_p_kc_s                      886
+set_p_k_sc                      887
+set_p_kc_sc                     888
+set_p_k_p                       889
+set_p_kc_p                      890
+set_i_p_k                       891
+set_i_p_kc                      892
+set_n_p_k                       893
+set_n_p_kc                      894
+set_s_p_k                       895
+set_s_p_kc                      896
+set_p_p_k                       897
+set_p_p_kc                      898
+clone_p_p                       899
+clone_p_p_p                     900
+clone_p_p_pc                    901
+copy_p_p                        902
+null_s                          903
+null_i                          904
+null_p                          905
+null_n                          906
+ord_i_s                         907
+ord_i_sc                        908
+ord_i_s_i                       909
+ord_i_sc_i                      910
+ord_i_s_ic                      911
+ord_i_sc_ic                     912
+chr_s_i                         913
+chr_s_ic                        914
+chopn_s_s_i                     915
+chopn_s_sc_i                    916
+chopn_s_s_ic                    917
+chopn_s_sc_ic                   918
+concat_s_s                      919
+concat_s_sc                     920
+concat_p_p                      921
+concat_p_s                      922
+concat_p_sc                     923
+concat_s_s_s                    924
+concat_s_sc_s                   925
+concat_s_s_sc                   926
+concat_p_p_s                    927
+concat_p_p_sc                   928
+concat_p_p_p                    929
+repeat_s_s_i                    930
+repeat_s_sc_i                   931
+repeat_s_s_ic                   932
+repeat_s_sc_ic                  933
+repeat_p_p_i                    934
+repeat_p_p_ic                   935
+repeat_p_p_p                    936
+repeat_p_i                      937
+repeat_p_ic                     938
+repeat_p_p                      939
+length_i_s                      940
+length_i_sc                     941
+bytelength_i_s                  942
+bytelength_i_sc                 943
+pin_s                           944
+unpin_s                         945
+substr_s_s_i                    946
+substr_s_sc_i                   947
+substr_s_s_ic                   948
+substr_s_sc_ic                  949
+substr_s_s_i_i                  950
+substr_s_sc_i_i                 951
+substr_s_s_ic_i                 952
+substr_s_sc_ic_i                953
+substr_s_s_i_ic                 954
+substr_s_sc_i_ic                955
+substr_s_s_ic_ic                956
+substr_s_sc_ic_ic               957
+substr_s_p_i_i                  958
+substr_s_p_ic_i                 959
+substr_s_p_i_ic                 960
+substr_s_p_ic_ic                961
+replace_s_s_i_i_s               962
+replace_s_sc_i_i_s              963
+replace_s_s_ic_i_s              964
+replace_s_sc_ic_i_s             965
+replace_s_s_i_ic_s              966
+replace_s_sc_i_ic_s             967
+replace_s_s_ic_ic_s             968
+replace_s_sc_ic_ic_s            969
+replace_s_s_i_i_sc              970
+replace_s_sc_i_i_sc             971
+replace_s_s_ic_i_sc             972
+replace_s_sc_ic_i_sc            973
+replace_s_s_i_ic_sc             974
+replace_s_sc_i_ic_sc            975
+replace_s_s_ic_ic_sc            976
+replace_s_sc_ic_ic_sc           977
+index_i_s_s                     978
+index_i_sc_s                    979
+index_i_s_sc                    980
+index_i_sc_sc                   981
+index_i_s_s_i                   982
+index_i_sc_s_i                  983
+index_i_s_sc_i                  984
+index_i_sc_sc_i                 985
+index_i_s_s_ic                  986
+index_i_sc_s_ic                 987
+index_i_s_sc_ic                 988
+index_i_sc_sc_ic                989
+sprintf_s_s_p                   990
+sprintf_s_sc_p                  991
+sprintf_p_p_p                   992
+new_s                           993
+new_s_i                         994
+new_s_ic                        995
+stringinfo_i_s_i                996
+stringinfo_i_sc_i               997
+stringinfo_i_s_ic               998
+stringinfo_i_sc_ic              999
+upcase_s_s                     1000
+upcase_s_sc                    1001
+downcase_s_s                   1002
+downcase_s_sc                  1003
+titlecase_s_s                  1004
+titlecase_s_sc                 1005
+join_s_s_p                     1006
+join_s_sc_p                    1007
+split_p_s_s                    1008
+split_p_sc_s                   1009
+split_p_s_sc                   1010
+split_p_sc_sc                  1011
+charset_i_s                    1012
+charset_i_sc                   1013
+charsetname_s_i                1014
+charsetname_s_ic               1015
+find_charset_i_s               1016
+find_charset_i_sc              1017
+trans_charset_s_s_i            1018
+trans_charset_s_sc_i           1019
+trans_charset_s_s_ic           1020
+trans_charset_s_sc_ic          1021
+encoding_i_s                   1022
+encoding_i_sc                  1023
+encodingname_s_i               1024
+encodingname_s_ic              1025
+find_encoding_i_s              1026
+find_encoding_i_sc             1027
+trans_encoding_s_s_i           1028
+trans_encoding_s_sc_i          1029
+trans_encoding_s_s_ic          1030
+trans_encoding_s_sc_ic         1031
+is_cclass_i_i_s_i              1032
+is_cclass_i_ic_s_i             1033
+is_cclass_i_i_sc_i             1034
+is_cclass_i_ic_sc_i            1035
+is_cclass_i_i_s_ic             1036
+is_cclass_i_ic_s_ic            1037
+is_cclass_i_i_sc_ic            1038
+is_cclass_i_ic_sc_ic           1039
+find_cclass_i_i_s_i_i          1040
+find_cclass_i_ic_s_i_i         1041
+find_cclass_i_i_sc_i_i         1042
+find_cclass_i_ic_sc_i_i        1043
+find_cclass_i_i_s_ic_i         1044
+find_cclass_i_ic_s_ic_i        1045
+find_cclass_i_i_sc_ic_i        1046
+find_cclass_i_ic_sc_ic_i       1047
+find_cclass_i_i_s_i_ic         1048
+find_cclass_i_ic_s_i_ic        1049
+find_cclass_i_i_sc_i_ic        1050
+find_cclass_i_ic_sc_i_ic       1051
+find_cclass_i_i_s_ic_ic        1052
+find_cclass_i_ic_s_ic_ic       1053
+find_cclass_i_i_sc_ic_ic       1054
+find_cclass_i_ic_sc_ic_ic      1055
+find_not_cclass_i_i_s_i_i      1056
+find_not_cclass_i_ic_s_i_i     1057
+find_not_cclass_i_i_sc_i_i     1058
+find_not_cclass_i_ic_sc_i_i    1059
+find_not_cclass_i_i_s_ic_i     1060
+find_not_cclass_i_ic_s_ic_i    1061
+find_not_cclass_i_i_sc_ic_i    1062
+find_not_cclass_i_ic_sc_ic_i   1063
+find_not_cclass_i_i_s_i_ic     1064
+find_not_cclass_i_ic_s_i_ic    1065
+find_not_cclass_i_i_sc_i_ic    1066
+find_not_cclass_i_ic_sc_i_ic   1067
+find_not_cclass_i_i_s_ic_ic    1068
+find_not_cclass_i_ic_s_ic_ic   1069
+find_not_cclass_i_i_sc_ic_ic   1070
+find_not_cclass_i_ic_sc_ic_ic  1071
+escape_s_s                     1072
+compose_s_s                    1073
+compose_s_sc                   1074
+spawnw_i_s                     1075
+spawnw_i_sc                    1076
+spawnw_i_p                     1077
+err_i                          1078
+err_s                          1079
+err_s_i                        1080
+err_s_ic                       1081
+time_i                         1082
+time_n                         1083
+gmtime_s_i                     1084
+gmtime_s_ic                    1085
+localtime_s_i                  1086
+localtime_s_ic                 1087
+decodetime_p_i                 1088
+decodetime_p_ic                1089
+decodelocaltime_p_i            1090
+decodelocaltime_p_ic           1091
+sysinfo_s_i                    1092
+sysinfo_s_ic                   1093
+sysinfo_i_i                    1094
+sysinfo_i_ic                   1095
+sleep_i                        1096
+sleep_ic                       1097
+sleep_n                        1098
+sleep_nc                       1099
+store_lex_s_p                  1100
+store_lex_sc_p                 1101
+store_dynamic_lex_s_p          1102
+store_dynamic_lex_sc_p         1103
+find_lex_p_s                   1104
+find_lex_p_sc                  1105
+find_dynamic_lex_p_s           1106
+find_dynamic_lex_p_sc          1107
+find_caller_lex_p_s            1108
+find_caller_lex_p_sc           1109
+get_namespace_p                1110
+get_namespace_p_p              1111
+get_namespace_p_pc             1112
+get_hll_namespace_p            1113
+get_hll_namespace_p_p          1114
+get_hll_namespace_p_pc         1115
+get_root_namespace_p           1116
+get_root_namespace_p_p         1117
+get_root_namespace_p_pc        1118
+get_global_p_s                 1119
+get_global_p_sc                1120
+get_global_p_p_s               1121
+get_global_p_pc_s              1122
+get_global_p_p_sc              1123
+get_global_p_pc_sc             1124
+get_hll_global_p_s             1125
+get_hll_global_p_sc            1126
+get_hll_global_p_p_s           1127
+get_hll_global_p_pc_s          1128
+get_hll_global_p_p_sc          1129
+get_hll_global_p_pc_sc         1130
+get_root_global_p_s            1131
+get_root_global_p_sc           1132
+get_root_global_p_p_s          1133
+get_root_global_p_pc_s         1134
+get_root_global_p_p_sc         1135
+get_root_global_p_pc_sc        1136
+set_global_s_p                 1137
+set_global_sc_p                1138
+set_global_p_s_p               1139
+set_global_pc_s_p              1140
+set_global_p_sc_p              1141
+set_global_pc_sc_p             1142
+set_hll_global_s_p             1143
+set_hll_global_sc_p            1144
+set_hll_global_p_s_p           1145
+set_hll_global_pc_s_p          1146
+set_hll_global_p_sc_p          1147
+set_hll_global_pc_sc_p         1148
+set_root_global_s_p            1149
+set_root_global_sc_p           1150
+set_root_global_p_s_p          1151
+set_root_global_pc_s_p         1152
+set_root_global_p_sc_p         1153
+set_root_global_pc_sc_p        1154
+find_name_p_s                  1155
+find_name_p_sc                 1156
+find_sub_not_null_p_s          1157
+find_sub_not_null_p_sc         1158

Modified: branches/ops_massacre/t/compilers/imcc/imcpasm/opt1.t
==============================================================================
--- branches/ops_massacre/t/compilers/imcc/imcpasm/opt1.t	Thu May 20 07:12:16 2010	(r46813)
+++ branches/ops_massacre/t/compilers/imcc/imcpasm/opt1.t	Thu May 20 07:42:17 2010	(r46814)
@@ -5,7 +5,7 @@
 use strict;
 use warnings;
 use lib qw( . lib ../lib ../../lib );
-use Parrot::Test tests => 78;
+use Parrot::Test tests => 77;
 use Parrot::Config;
 
 my $output;
@@ -312,22 +312,6 @@
 OUT
 
 ##############################
-pir_2_pasm_is( <<'CODE', <<'OUT', "constant cmod" );
-.sub _main
-   cmod $I0, 33, 10
-   cmod $N0, 33.0, 10.0
-   end
-.end
-CODE
-# IMCC does produce b0rken PASM files
-# see http://guest@rt.perl.org/rt3/Ticket/Display.html?id=32392
-_main:
-   set I0, 3
-   set N0, 3
-   end
-OUT
-
-##############################
 pir_2_pasm_is( <<'CODE', <<'OUT', "constant mod" );
 .sub _main
    mod $I0, 33, 10

Modified: branches/ops_massacre/t/dynoplibs/math.t
==============================================================================
--- branches/ops_massacre/t/dynoplibs/math.t	Thu May 20 07:12:16 2010	(r46813)
+++ branches/ops_massacre/t/dynoplibs/math.t	Thu May 20 07:42:17 2010	(r46814)
@@ -16,11 +16,21 @@
 
 =cut
 
+.macro exception_is ( M )
+    .local pmc exception
+    .local string message
+    .get_results (exception)
+
+    message = exception['message']
+    is( message, .M, .M )
+.endm
+
 .loadlib 'math_ops'
+
 .sub main :main
     .include 'test_more.pir'
     .include 'fp_equality.pasm'
-    plan(20)
+    plan(34)
     ok(1, "load math_ops")
     rand $I0
     test_2_arg_int()
@@ -32,6 +42,15 @@
     test_local_nums()
     test_local_nums_2_arg()
     test_local_ints()
+    test_cmod_n()
+    test_exception_cmod_n_n_n_by_zero()
+    test_exception_cmod_n_nc_n_by_zero()
+    test_exception_cmod_n_n_nc_by_zero()
+    test_cmod()
+    test_cmod_i_i_i_by_zero()
+    test_cmod_i_ic_i_by_zero()
+    test_cmod_i_i_ic_by_zero()
+    test_cmod_float_integer_pmc_nan()
 .end
 
 .sub test_2_arg_int
@@ -178,6 +197,114 @@
 finish:
 .end
 
+.sub test_cmod_n
+    set     $N0, 5.000
+    set     $N1, 3.000
+    cmod    $N2, $N0, $N1
+    is( $N2, "2", 'cmod_n' )
+.end
+
+.sub test_exception_cmod_n_n_n_by_zero
+    push_eh handler
+    set $N0, 0
+    set $N1, 10
+    cmod $N2, $N1, $N0
+  handler:
+    .exception_is( 'Divide by zero' )
+.end
+
+.sub test_exception_cmod_n_nc_n_by_zero
+    push_eh handler
+    set $N0, 0
+    cmod $N2, 10, $N0
+  handler:
+    .exception_is( 'Divide by zero' )
+.end
+
+.sub test_exception_cmod_n_n_nc_by_zero
+    push_eh handler
+    set $N1, 10
+    cmod $N2, $N1, 0
+  handler:
+    .exception_is( 'Divide by zero' )
+.end
+
+.sub 'test_cmod'
+    $I0 = 5
+    $I1 = 3
+    $I2 = cmod $I0, $I1
+    is($I2, 2, 'cmod_i_i_i')
+    is($I0, 5, 'cmod_i_i_i - dividend unchanged')
+    is($I1, 3, 'cmod_i_i_i - divisor unchanged')
+
+    $I0 = 12
+
+    $I1 = cmod $I0, 10
+    is($I1, 2, 'cmod_i_i_ic')
+
+    $I1 = cmod 14, $I0
+    is($I1, 2, 'cmod_i_ic_i')
+
+    $I1 = cmod 13, 11
+    is($I1, 2, 'cmod_i_ic_ic')
+.end
+
+.sub 'test_cmod_i_i_i_by_zero'
+    $I0 = 0
+    $I1 = 10
+    push_eh test_cmod_i_i_i_by_zero_catch
+    $I2 = cmod $I1, $I0
+    pop_eh
+    $I3 = 0
+    goto test_cmod_i_i_i_by_zero_end
+
+  test_cmod_i_i_i_by_zero_catch:
+    $I3 = 1
+
+  test_cmod_i_i_i_by_zero_end:
+    ok($I3, 'cmod_i_i_i by zero')
+.end
+
+.sub 'test_cmod_i_ic_i_by_zero'
+    $I0 = 0
+    push_eh test_cmod_i_ic_i_by_zero_catch
+    $I2 = cmod 10, $I0
+    pop_eh
+    $I3 = 0
+    goto test_cmod_i_ic_i_by_zero_end
+
+  test_cmod_i_ic_i_by_zero_catch:
+    $I3 = 1
+
+  test_cmod_i_ic_i_by_zero_end:
+    ok($I3, 'cmod_i_ic_i by zero')
+.end
+
+.sub 'test_cmod_i_i_ic_by_zero'
+    $I1 = 10
+    push_eh test_cmod_i_i_ic_by_zero_catch
+    $I2 = cmod $I1, 0
+    pop_eh
+    $I3 = 0
+    goto test_cmod_i_i_ic_by_zero_end
+
+  test_cmod_i_i_ic_by_zero_catch:
+    $I3 = 1
+
+  test_cmod_i_i_ic_by_zero_end:
+    ok($I3, 'cmod_i_i_ic by zero')
+.end
+
+.sub test_cmod_float_integer_pmc_nan
+    $P1 = new 'Float'
+    $P2 = new 'Integer'
+    $P2 = 1
+    $N0 = 'NaN'
+    cmod $P1, $P2, $N0
+    #is($P1, 'NaN', 'cmod with Float and Integer PMCs and NaN')
+    todo(0, 'cmod with Float and Integer PMCs and NaN', 'cmod does not play nicely with PMCs and NaN')
+.end
+
 # Local Variables:
 #   mode: pir
 #   fill-column: 100

Modified: branches/ops_massacre/t/op/inf_nan.t
==============================================================================
--- branches/ops_massacre/t/op/inf_nan.t	Thu May 20 07:12:16 2010	(r46813)
+++ branches/ops_massacre/t/op/inf_nan.t	Thu May 20 07:42:17 2010	(r46814)
@@ -18,7 +18,7 @@
 
 .sub main :main
     .include 'test_more.pir'
-    plan(38)
+    plan(37)
 
     test_basic_arith()
     test_sqrt()
@@ -30,7 +30,6 @@
     test_fdiv_integer_pmc_nan()
     test_fdiv_float_pmc_nan()
     test_fdiv_float_integer_pmc_nan()
-    test_cmod_float_integer_pmc_nan()
     test_mod_float_integer_pmc_nan()
 
 .end
@@ -156,7 +155,7 @@
     $N0 = 'NaN'
     fdiv $P1, $P2, $N0
     #is($P1, 'NaN', 'fdiv with Integer PMCs and NaN')
-    todo(0, 'fdiv with Integer PMCs and NaN', 'fdiv/mod/cmod do not play nicely with PMCs and NaN')
+    todo(0, 'fdiv with Integer PMCs and NaN', 'fdiv/mod do not play nicely with PMCs and NaN')
 .end
 
 .sub test_fdiv_float_pmc_nan
@@ -166,7 +165,7 @@
     $N0 = 'NaN'
     fdiv $P1, $P2, $N0
     #is($P1, 'NaN','fdiv with Float PMCs and NaN')
-    todo(0,'fdiv with Float PMCs and NaN', 'fdiv/mod/cmod do not play nicely with PMCs and NaN')
+    todo(0,'fdiv with Float PMCs and NaN', 'fdiv/mod do not play nicely with PMCs and NaN')
 .end
 
 .sub test_fdiv_float_integer_pmc_nan
@@ -176,17 +175,7 @@
     $N0 = 'NaN'
     fdiv $P1, $P2, $N0
     #is($P1, 'NaN', 'fdiv with Float and Integer PMCs and NaN')
-    todo(0, 'fdiv with Float and Integer PMCs and NaN', 'fdiv/mod/cmod do not play nicely with PMCs and NaN')
-.end
-
-.sub test_cmod_float_integer_pmc_nan
-    $P1 = new 'Float'
-    $P2 = new 'Integer'
-    $P2 = 1
-    $N0 = 'NaN'
-    cmod $P1, $P2, $N0
-    #is($P1, 'NaN', 'cmod with Float and Integer PMCs and NaN')
-    todo(0, 'cmod with Float and Integer PMCs and NaN', 'fdiv/mod/cmod do not play nicely with PMCs and NaN')
+    todo(0, 'fdiv with Float and Integer PMCs and NaN', 'fdiv/mod do not play nicely with PMCs and NaN')
 .end
 
 .sub test_mod_float_integer_pmc_nan
@@ -196,7 +185,7 @@
     $N0 = 'NaN'
     mod $P1, $P2, $N0
     #is($P1, 'NaN', 'mod with Float and Integer PMCs and NaN')
-    todo(0, 'mod with Float and Integer PMCs and NaN', 'fdiv/mod/cmod do not play nicely with PMCs and NaN')
+    todo(0, 'mod with Float and Integer PMCs and NaN', 'fdiv/mod do not play nicely with PMCs and NaN')
 .end
 
 # Local Variables:

Modified: branches/ops_massacre/t/op/integer.t
==============================================================================
--- branches/ops_massacre/t/op/integer.t	Thu May 20 07:12:16 2010	(r46813)
+++ branches/ops_massacre/t/op/integer.t	Thu May 20 07:42:17 2010	(r46814)
@@ -16,7 +16,7 @@
 
 =cut
 
-.const int TESTS = 159
+.const int TESTS = 150
 
 .sub 'test' :main
     .include 'test_more.pir'
@@ -32,7 +32,6 @@
     test_div()
     test_mod()
     mod_negative_zero_rest()
-    test_cmod()
     test_eq()
     test_ne()
     test_lt()
@@ -60,9 +59,6 @@
     test_fdiv_i_i_i_by_zero()
     test_fdiv_i_ic_i_by_zero()
     test_fdiv_i_i_ic_by_zero()
-    test_cmod_i_i_i_by_zero()
-    test_cmod_i_ic_i_by_zero()
-    test_cmod_i_i_ic_by_zero()
     test_mod_i_i_i_by_zero()
     test_mod_i_ic_i_by_zero()
     test_mod_i_i_ic_by_zero()
@@ -337,26 +333,6 @@
     is($I1, 0, 'mod - negative, zero rest (#36003), -3 mod -3 = 0')
 .end
 
-.sub 'test_cmod'
-    $I0 = 5
-    $I1 = 3
-    $I2 = cmod $I0, $I1
-    is($I2, 2, 'cmod_i_i_i')
-    is($I0, 5, 'cmod_i_i_i - dividend unchanged')
-    is($I1, 3, 'cmod_i_i_i - divisor unchanged')
-
-    $I0 = 12
-
-    $I1 = cmod $I0, 10
-    is($I1, 2, 'cmod_i_i_ic')
-
-    $I1 = cmod 14, $I0
-    is($I1, 2, 'cmod_i_ic_i')
-
-    $I1 = cmod 13, 11
-    is($I1, 2, 'cmod_i_ic_ic')
-.end
-
 .sub 'test_eq'
     $I0 = 0x12345678
     $I1 = 0x12345678
@@ -925,52 +901,6 @@
     ok($I3, 'fdiv_i_i_ic by zero')
 .end
 
-.sub 'test_cmod_i_i_i_by_zero'
-    $I0 = 0
-    $I1 = 10
-    push_eh test_cmod_i_i_i_by_zero_catch
-    $I2 = cmod $I1, $I0
-    pop_eh
-    $I3 = 0
-    goto test_cmod_i_i_i_by_zero_end
-
-  test_cmod_i_i_i_by_zero_catch:
-    $I3 = 1
-
-  test_cmod_i_i_i_by_zero_end:
-    ok($I3, 'cmod_i_i_i by zero')
-.end
-
-.sub 'test_cmod_i_ic_i_by_zero'
-    $I0 = 0
-    push_eh test_cmod_i_ic_i_by_zero_catch
-    $I2 = cmod 10, $I0
-    pop_eh
-    $I3 = 0
-    goto test_cmod_i_ic_i_by_zero_end
-
-  test_cmod_i_ic_i_by_zero_catch:
-    $I3 = 1
-
-  test_cmod_i_ic_i_by_zero_end:
-    ok($I3, 'cmod_i_ic_i by zero')
-.end
-
-.sub 'test_cmod_i_i_ic_by_zero'
-    $I1 = 10
-    push_eh test_cmod_i_i_ic_by_zero_catch
-    $I2 = cmod $I1, 0
-    pop_eh
-    $I3 = 0
-    goto test_cmod_i_i_ic_by_zero_end
-
-  test_cmod_i_i_ic_by_zero_catch:
-    $I3 = 1
-
-  test_cmod_i_i_ic_by_zero_end:
-    ok($I3, 'cmod_i_i_ic by zero')
-.end
-
 .sub 'test_mod_i_i_i_by_zero'
     $I0 = 0
     $I1 = 10

Modified: branches/ops_massacre/t/op/number.t
==============================================================================
--- branches/ops_massacre/t/op/number.t	Thu May 20 07:12:16 2010	(r46813)
+++ branches/ops_massacre/t/op/number.t	Thu May 20 07:42:17 2010	(r46814)
@@ -19,7 +19,7 @@
 .sub main :main
     .include 'test_more.pir'
 
-    plan(130)
+    plan(126)
     test_set_n_nc()
     test_set_n()
     test_add_n_n_n()
@@ -30,7 +30,6 @@
     test_mul_i()
     test_div_i()
     test_mod_n()
-    test_cmod_n()
     test_eq_n_ic()
     test_eq_nc_ic()
     test_ne_n_ic()
@@ -66,9 +65,6 @@
     test_exception_fdiv_n_n_n_by_zero()
     test_exception_fdiv_n_nc_n_by_zero()
     test_exception_fdiv_n_n_nc_by_zero()
-    test_exception_cmod_n_n_n_by_zero()
-    test_exception_cmod_n_nc_n_by_zero()
-    test_exception_cmod_n_n_nc_by_zero()
     test_mod_n_n_n_by_zero()
     test_mod_n_nc_n_by_zero()
     test_mod_n_n_nc_by_zero()
@@ -259,13 +255,6 @@
     is( $N2, "-2", 'mod_n' )
 .end
 
-.sub test_cmod_n
-    set     $N0, 5.000
-    set     $N1, 3.000
-    cmod    $N2, $N0, $N1
-    is( $N2, "2", 'cmod_n' )
-.end
-
 .sub test_eq_n_ic
     set     $N0, 5.000001
     set     $N1, 5.000001
@@ -780,31 +769,6 @@
     .exception_is( 'Divide by zero' )
 .end
 
-.sub test_exception_cmod_n_n_n_by_zero
-    push_eh handler
-    set $N0, 0
-    set $N1, 10
-    cmod $N2, $N1, $N0
-  handler:
-    .exception_is( 'Divide by zero' )
-.end
-
-.sub test_exception_cmod_n_nc_n_by_zero
-    push_eh handler
-    set $N0, 0
-    cmod $N2, 10, $N0
-  handler:
-    .exception_is( 'Divide by zero' )
-.end
-
-.sub test_exception_cmod_n_n_nc_by_zero
-    push_eh handler
-    set $N1, 10
-    cmod $N2, $N1, 0
-  handler:
-    .exception_is( 'Divide by zero' )
-.end
-
 .sub test_mod_n_n_n_by_zero
     set $N0, 0
     set $N1, 10


More information about the parrot-commits mailing list