akr
db3b317ca7
* bignum.c (bigdivrem): Use nlz.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41275 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-13 09:35:05 +00:00
nobu
392d7a797a
bignum.c: suppress warnings
...
* bignum.c (integer_unpack_num_bdigits_generic): suppress "implicit
conversion shortens 64-bit value into a 32-bit value" warnings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41274 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-13 07:33:12 +00:00
akr
90026ab53f
Refine debug code.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41270 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-13 03:20:28 +00:00
akr
2b1c2b7223
* bignum.c (integer_unpack_num_bdigits_small): Fix a comple error on
...
clang -Werror,-Wshorten-64-to-32
Reported by Eric Hodel. [ruby-core:55467] [Bug #8522 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41267 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-12 21:13:56 +00:00
akr
aaa1461d7b
* bignum.c (rb_integer_unpack_2comp): New function.
...
(rb_integer_unpack_internal): Extracted from rb_integer_unpack and
nlp_bits_ret argument added.
(integer_unpack_num_bdigits_small): nlp_bits_ret argument added to
return number of leading padding bits.
(integer_unpack_num_bdigits_generic): Ditto.
* internal.h (rb_integer_unpack_2comp): Declared.
* pack.c (pack_unpack): Use rb_integer_unpack_2comp and
rb_integer_unpack.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41264 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-12 15:18:00 +00:00
akr
b53a183c00
* bignum.c (integer_unpack_num_bdigits_generic): Rewritten without
...
rb_funcall.
(integer_unpack_num_bdigits_bytes): Removed.
(rb_integer_unpack): integer_unpack_num_bdigits_bytes invocation
removed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41258 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-12 13:25:00 +00:00
akr
4e0685faea
* bignum.c (validate_integer_pack_format): supported_flags argument
...
added and validate given flags.
(rb_integer_pack_internal): Specify supported_flags.
(rb_integer_unpack): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41256 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-12 09:21:11 +00:00
akr
0c9a719d77
* internal.h (INTEGER_PACK_NEGATIVE): Defined.
...
(rb_integer_unpack): sign argument removed.
* bignum.c (rb_integer_unpack): sign argument removed.
Non-negative integers generated by default.
INTEGER_PACK_NEGATIVE flag is used to generate non-positive integers.
* pack.c (pack_unpack): Follow the above change.
* random.c (int_pair_to_real_inclusive): Ditto.
(make_seed_value): Ditto.
(mt_state): Ditto.
(limited_big_rand): Ditto.
* marshal.c (r_object0): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41239 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-11 21:39:55 +00:00
akr
b23d9a8a63
* bignum.c (validate_integer_pack_format): Don't require a word order
...
flag if numwords is 1 or less.
(absint_numwords_generic): Don't specify a word order for
rb_integer_pack.
* hash.c (rb_hash): Ditto.
* time.c (v2w_bignum): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41234 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-11 14:40:16 +00:00
akr
c4b12333f7
* bignum.c (validate_integer_pack_format): Refine error messages.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41233 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-11 14:02:46 +00:00
akr
06b1671107
* bignum.c (validate_integer_pack_format): numwords argument added.
...
Move a varidation from rb_integer_pack_internal and rb_integer_unpack.
(rb_integer_pack_internal): Follow above change.
(rb_integer_unpack): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41232 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-11 13:28:33 +00:00
akr
d5a3818f8e
* bignum.c (rb_integer_pack_internal): Renamed from rb_integer_pack
...
and overflow_2comp argument added.
(rb_integer_pack): Just call rb_integer_pack_internal.
(rb_integer_pack_2comp): New function.
* internal.h (rb_integer_pack_2comp): Declared.
* sprintf.c (rb_str_format): Use rb_integer_pack and
rb_integer_pack_2comp to format binary/octal/hexadecimal integers.
(ruby_digitmap): Declared.
(remove_sign_bits): Removed.
(BITSPERDIG): Ditto.
(EXTENDSIGN): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41230 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-11 12:06:40 +00:00
akr
46bb1a9f92
Update comment.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41220 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-10 13:51:20 +00:00
akr
780ab06a0e
Update a comment.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41218 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-10 13:10:11 +00:00
akr
6735633663
Update doc.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41214 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-10 10:55:08 +00:00
akr
0e8caa7d0f
* bignum.c (rb_integer_pack): Returns sign instead of words.
...
(absint_numwords_generic): Follow the above change.
(big2str_base_powerof2): Follow the above change.
* internal.h: Ditto.
* hash.c (rb_hash): Ditto.
* pack.c (pack_pack): Ditto.
* random.c (int_pair_to_real_inclusive): Ditto.
(rand_init): Ditto.
(random_load): Ditto.
(limited_big_rand): Ditto.
* time.c (v2w_bignum): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41213 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-10 10:37:39 +00:00
akr
8c239f35de
* bignum.c (integer_unpack_num_bdigits_small: Extracted from
...
rb_integer_unpack.
(integer_unpack_num_bdigits_generic): Ditto.
(integer_unpack_num_bdigits_bytes): New function.
(rb_integer_unpack): Use above functions.
Return a Bignum for INTEGER_PACK_FORCE_BIGNUM evenwhen the result
is zero.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41202 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-10 03:12:44 +00:00
akr
192085bad3
* bignum.c (absint_numwords_small): New function.
...
(absint_numwords_generic): Use absint_numwords_small if possible.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41201 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-09 20:39:05 +00:00
akr
f30d662c24
* bignum.c (absint_numwords_bytes): New function.
...
(absint_numwords_generic): Extracted from rb_absint_numwords.
(rb_absint_numwords): Use absint_numwords_bytes if possible.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41199 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-09 16:08:54 +00:00
akr
d395be138c
Update an error message.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41198 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-09 13:03:45 +00:00
akr
9cb1452318
* bignum.c (rb_absint_numwords): Return (size_t)-1 when overflow.
...
Refine variable names.
(rb_absint_size): Refine variable names.
* internal.h (rb_absint_size): Refine an argument name.
(rb_absint_numwords): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41197 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-09 12:37:38 +00:00
akr
f5ad120b97
* bignum.c (rb_absint_numwords): Renamed from rb_absint_size_in_word.
...
* internal.h (rb_absint_numwords): Follow the above change.
* pack.c (pack_pack): Ditto.
* random.c (rand_init): Ditto.
(limited_big_rand): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41196 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-09 07:53:20 +00:00
akr
837392b452
* bignum.c (rb_integer_pack): numwords_allocated argument removed.
...
* internal.h (rb_integer_pack): Follow the above change.
* hash.c (rb_hash): Ditto.
* time.c (v2w_bignum): Ditto.
* pack.c (pack_pack): Ditto.
* random.c (int_pair_to_real_inclusive): Ditto.
(rand_init): Ditto.
(random_load): Ditto.
(limited_big_rand): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41195 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-09 05:53:00 +00:00
akr
f6757f080c
* bignum.c (big2str_base_powerof2): New function.
...
(rb_big2str0): Use big2str_base_powerof2 if base is 2, 4, 8, 16 or 32.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41194 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-09 00:36:58 +00:00
akr
747894a32d
* bignum.c (rb_absint_singlebit_p): New function.
...
* internal.h (rb_absint_singlebit_p): Declared.
* time.c (v2w_bignum): Use rb_absint_singlebit_p instead of
rb_big_abs_find_minbit.
(rb_big_abs_find_minbit): Removed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41177 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-08 12:05:57 +00:00
akr
d35616e694
* bignum.c (rb_integer_unpack): Don't use rb_funcall if possible.
...
* random.c: Use uint32_t for elements of seed.
(make_seed_value): Use rb_integer_unpack.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41169 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-08 07:40:03 +00:00
akr
0056591f50
* internal.h (INTEGER_PACK_FORCE_BIGNUM): New flag constant.
...
* bignum.c (rb_integer_unpack): Support INTEGER_PACK_FORCE_BIGNUM.
* random.c (int_pair_to_real_inclusive): Use
INTEGER_PACK_FORCE_BIGNUM to use rb_big_mul instead of rb_funcall.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41165 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-08 06:00:04 +00:00
akr
97b5a9c102
Refine error messages.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41158 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-07 22:16:15 +00:00
akr
8ce912bdb3
* bignum.c (integer_pack_loop_setup): word_num_nailbytes_ret argument
...
removed.
(rb_integer_pack): Follow the above change.
(rb_integer_unpack): Follow the above change.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41155 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-07 15:56:59 +00:00
akr
3dcea601c7
* bignum.c (validate_integer_pack_format): Renamed from
...
validate_integer_format.
(integer_pack_loop_setup): Renamed from integer_format_loop_setup.
(integer_pack_fill_dd): Renamed from int_export_fill_dd.
(integer_pack_take_lowbits): Renamed from int_export_take_lowbits.
(integer_unpack_push_bits): Renamed from int_import_push_bits.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41154 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-07 15:39:07 +00:00
akr
f31aed6255
* bignum.c (rb_integer_pack): Arguments changed. Use flags to
...
specify word order and byte order.
(rb_integer_unpack): Ditto.
(validate_integer_format): Follow the above change.
(integer_format_loop_setup): Ditto.
* pack.c: Ditto.
* internal.h: Ditto.
(INTEGER_PACK_MSWORD_FIRST): Defined.
(INTEGER_PACK_LSWORD_FIRST): Ditto.
(INTEGER_PACK_MSBYTE_FIRST): Ditto.
(INTEGER_PACK_LSBYTE_FIRST): Ditto.
(INTEGER_PACK_NATIVE_BYTE_ORDER): Ditto.
(INTEGER_PACK_LITTLE_ENDIAN): Ditto.
(INTEGER_PACK_BIG_ENDIAN): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41151 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-07 15:02:39 +00:00
akr
a08b001100
* bignum.c (rb_integer_pack): Renamed from rb_int_export.
...
(rb_integer_unpack): Renamed from rb_int_import.
* internal.h, pack.c: Follow the above change.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41147 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-07 12:41:02 +00:00
akr
07b72b8c85
Update comment.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41146 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-07 12:16:32 +00:00
akr
8f7a307588
* bignum.c (integer_format_loop_setup): Extracted from rb_int_export
...
and rb_int_import.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41145 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-07 12:06:09 +00:00
akr
de1b0c96f0
* bignum.c (validate_integer_format): Extracted from rb_int_export and
...
rb_int_import.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41144 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-07 10:49:12 +00:00
akr
84d8e58249
* bignum.c (rb_absint_size): Use numberof.
...
(rb_int_export): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41143 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-07 10:24:07 +00:00
akr
e54d70882c
* bignum.oc (rb_absint_size): Declare a variable, i, just before used
...
to suppress a warning.
(rb_int_export): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41140 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-07 09:25:47 +00:00
charliesome
f8cf43706a
* bignum.c (rb_absint_size): explicit cast to BDIGIT to avoid implicit
...
64 bit to 32 bit shortening warning
* bignum.c (rb_int_export): ditto
* bignum.c (int_import_push_bits): ditto
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41139 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-07 08:41:48 +00:00
nobu
147775ac2b
use NUM2SIZET and SIZET2NUM
...
* configure.in: revert r41106. size_t may not be unsigned
* bignum.c (rb_absint_size_in_word, rb_int_export, rb_int_import): use
NUM2SIZET() and SIZET2NUM() already defined in ruby/ruby.h.
* ext/-test-/bignum/export.c (rb_int_export_m): ditto.
* ext/-test-/bignum/import.c (rb_int_import_m): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41130 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-07 02:41:45 +00:00
mrkn
3ebd1ff022
* bignum.c (rb_int_import): explicitly casting BDIGIT_DBL to BDIGIT
...
to prevent warning.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41120 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-07 00:29:43 +00:00
akr
a8c4a95276
Arguments renamed.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41119 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-06 23:05:59 +00:00
akr
d1f3d41f11
* internal.h (rb_int_export): countp argument is split into
...
wordcount_allocated and wordcount.
* bignum.c (rb_int_export): Follow the above change.
* pack.c (pack_pack): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41117 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-06 22:31:23 +00:00
akr
c9c67d2fe0
* bignum.c (rb_int_import): New function.
...
(int_import_push_bits): Ditto.
* internal.h (rb_int_import): Declared.
* pack.c (pack_unpack): Use rb_int_import for BER compressed integer.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41111 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-06 21:20:04 +00:00
akr
9fea8758e9
* configure.in: Invoke RUBY_REPLACE_TYPE for size_t.
...
Don't invoke RUBY_CHECK_PRINTF_PREFIX for size_t to avoid conflict
with RUBY_REPLACE_TYPE.
* internal.h (rb_absint_size): Declared.
(rb_absint_size_in_word): Ditto.
(rb_int_export): Ditto.
* bignum.c (rb_absint_size): New function.
(rb_absint_size_in_word): Ditto.
(int_export_fill_dd): Ditto.
(int_export_take_lowbits): Ditto.
(rb_int_export): Ditto.
* pack.c (pack_pack): Use rb_int_export for BER compressed integer.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41106 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-06 11:57:35 +00:00
akr
13bba43d64
* bignum.c (big_fdiv): Use nlz() instead of bdigbitsize().
...
(bdigbitsize): Removed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41090 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-05 12:17:30 +00:00
akr
14ec81b0a2
* bignum.c (rb_big_pow): Don't need to multiply SIZEOF_BDIGITS.
...
Use nlz instead of bitlength_bdigit.
(bitlength_bdigit): Removed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41079 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-04 23:15:30 +00:00
akr
d893082841
* bignum.c (bitlength_bdigit): Fix an off-by-one error.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41060 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-04 09:42:25 +00:00
akr
935d39a5b8
* bignum.c (bitlength_bdigit): New function.
...
(rb_big_pow): Use bitlength_bdigit instead of ffs.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41050 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-03 14:49:33 +00:00
akr
ce20b98b14
* bignum.c: Use BDIGIT type for hbase.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41012 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-31 22:32:55 +00:00
akr
25e5a75863
* bignum.c (calc_hbase): Make hbase the maximum power of base
...
representable in BDIGIT.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41006 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-31 15:24:47 +00:00