Граф коммитов

1047 Коммитов

Автор SHA1 Сообщение Дата
akr 15c8e4618b * include/ruby/st.h (struct st_table): make num_entries bitfield
instead of num_bins for speed.  num_entries has less access.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13339 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-09-02 14:40:47 +00:00
akr 2c8e7a50c1 * include/ruby/ruby.h (struct RBignum): embed digits in RBignum for
small bignums.

* bignum.c: RBignum embeded digits implemented.

* include/ruby/intern.h: declare rb_big_resize.

* gc.c: don't free embedded digits.

* numeric.c: replace direct bignum field accessor by abstract field
  accessor such as RBIGNUM(val)->sign to RBIGNUM_SIGN(val).

* sprintf.c: ditto.

* compar.c: ditto.

* marshal.c: ditto.

* random.c: ditto.

* .gdbinit: support embedded small bignums.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13330 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-09-01 12:02:36 +00:00
nobu ec2beed3b2 * include/ruby/st.h (rb_index_t): use st_data_t for the platforms it
is larger than int.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13327 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-09-01 05:24:25 +00:00
nobu d4cbf95002 * st.c (st_numcmp, st_numhash): use st_data_t instead of long, because
the former may be larger than the latter.

* include/ruby/st.h (CHAR_BIT): get rid of magic number.

* include/ruby/st.h (struct st_table): num_entries never exceed
  num_bins.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13326 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-09-01 02:14:40 +00:00
akr b39e00d39d fix comment.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13324 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-31 07:20:38 +00:00
akr c8b8b7438e add comment.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13314 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-30 01:54:51 +00:00
akr eee95e67b9 enclose RHASH_XXX macros by parenthesis.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13310 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-29 23:16:55 +00:00
akr 2a4c4f7b0c * include/ruby/intern.h: declare rb_hash_tbl.
* include/ruby/ruby.h (RHash): delay st_table allocation.
  rename tbl field to ntbl to detect direct reference to the st_table
  as a compile error.
  (RHASH_TBL): abstract accessor defined.
  (RHASH_ITER_LEV): ditto.
  (RHASH_IFNONE): ditto.
  (RHASH_SIZE): ditto.
  (RHASH_EMPTY_P): ditto.

* hash.c: delay st_table allocation.

* gc.c: replace tbl by ntbl.

* array.c: replace direct field accessor by abstract field accessor
  such as RHASH(hash)->tbl to RHASH_TBL(hash).

* marshal.c: ditto.

* insns.def: ditto.

* ext/iconv/iconv.c: ditto.

* ext/json/ext/generator/generator.c: ditto.

* ext/json/ext/parser/parser.c: ditto.

* ext/syck/rubyext.c: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13309 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-29 23:12:21 +00:00
matz 3d7f8c2320 * string.c (str_gsub): should not use mbclen2() which has broken API.
* re.c: remove rb_reg_mbclen2().

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13308 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-29 19:16:02 +00:00
akr 167358d000 * include/ruby/st.h (struct st_table): add entries_packed 1-bit
bitfield.  decrease num_bins 1-bit.

* st.c: pack numhash which have 5 or less entries in bins.
  (st_init_table_with_size): setup entries_packed flag.
  (st_clear): support packed mode.
  (st_lookup): ditto.
  (st_insert): ditto.
  (st_add_direct): ditto.
  (st_copy): ditto.
  (st_delete): ditto.
  (st_foreach): ditto.
  (st_reverse_foreach): ditto.
  (unpack_entries): new function for converting to unpacked mode.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13299 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-29 02:36:54 +00:00
matz 3783246a2e * include/ruby/defines.h (flush_register_windows): call "ta 0x03"
even on Linux/Sparc.  [ruby-dev:31674]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13298 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-29 02:15:03 +00:00
matz 51b4cc11d1 * string.c (rb_str_subseq): retrieve substring based on byte offset.
* string.c (rb_str_rindex_m): was confusing character offset and
  byte offset.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13295 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-28 06:45:32 +00:00
ko1 6244e502cc * thread.c: fix Mutex to be interruptable lock.
* thread_win32.ci, thread_win32.h, thread_pthread.ci, thread_pthread.h:
  prepare native_cond_*() which are based on pthread_cond_*() spec.
* prelude.rb: fix Mutex#synchronize method.
* vm_core.h, include/ruby/intern.h: change unblock function interface
  (to pass some user data).
* file.c, process.c: ditto.
* benchmark/bm_vm2_mutex.rb: add a benchmark for mutex.
* benchmark/bm_vm3_thread_mutex.rb: add a benchmark for mutex
  with contension.
* benchmark/run.rb: fix to remove ENV['RUBYLIB'] for matzruby.
* test/ruby/test_thread.rb: add a test.
* common.mk: fix benchmark options.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13290 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-27 16:48:14 +00:00
matz 4461bd2f1f * encoding.c (rb_enc_codelen): raises invalid sequence exception
if ONIGENC_CODE_TO_MBCLEN() returns zero.  [ruby-dev:31661]

* encoding.c (rb_enc_mbclen): check invalid sequence.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13287 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-27 13:48:09 +00:00
matz 1ba65ebfe9 * include/ruby/encoding.h: remove unused rb_enc_ismbchar().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13273 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-25 15:27:08 +00:00
ko1 5ba27573a0 * string.c, include/ruby/intern.h: export rb_str_length().
* insns.def: use rb_str_lengt() in opt_length.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13271 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-25 08:54:29 +00:00
nobu 2d888a8f33 * include/ruby/encoding.h (rb_enc_str_new): prototype added.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13269 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-25 08:05:08 +00:00
matz 000b6e22f4 include/ruby/encoding.h: added.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13264 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-25 04:14:26 +00:00
matz a25fbe3b3e * encoding.c: provide basic features for M17N.
* parse.y: encoding aware parsing.

* parse.y (pragma_encoding): encoding specification pragma.

* parse.y (rb_intern3): encoding specified symbols.

* string.c (rb_str_length): length based on characters.  
  for older behavior, bytesize method added.

* string.c (rb_str_index_m): index based on characters.  rindex as
  well.

* string.c (succ_char): encoding aware succeeding string.

* string.c (rb_str_reverse): reverse based on characters.

* string.c (rb_str_inspect): encoding aware string description.

* string.c (rb_str_upcase_bang): encoding aware case conversion.
  downcase, capitalize, swapcase as well.

* string.c (rb_str_tr_bang): tr based on characters.  delete,
  squeeze, tr_s, count as well.

* string.c (rb_str_split_m): split based on characters.

* string.c (rb_str_each_line): encoding aware each_line.

* string.c (rb_str_each_char): added.  iteration based on
  characters.

* string.c (rb_str_strip_bang): encoding aware whitespace
  stripping.  lstrip, rstrip as well.

* string.c (rb_str_justify): encoding aware justifying (ljust,
  rjust, center).

* string.c (str_encoding): get encoding attribute from a string. 

* re.c (rb_reg_initialize): encoding aware regular expression

* sprintf.c (rb_str_format): formatting (i.e. length count) based
  on characters.

* io.c (rb_io_getc): getc to return one-character string.
  for older behavior, getbyte method added.

* ext/stringio/stringio.c (strio_getc): ditto.

* io.c (rb_io_ungetc): allow pushing arbitrary string at the
  current reading point.

* ext/stringio/stringio.c (strio_ungetc): ditto.

* ext/strscan/strscan.c: encoding support.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13261 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-25 03:29:39 +00:00
ko1 977d66ec99 * cont.c: separate Continuation and Fiber from core.
* ext/continuation/*, ext/fiber/*: ditto.
* include/ruby/ruby.h: remove rb_cFiber.
* include/ruby/intern.h: add the rb_fiber_new() declaration.
* enumerator.c (next_init): fix to use rb_fiber_new().
* test/ruby/test_enumerator.rb: remove next? tests.
* test/ruby/test_continuation.rb: add a require 'continuation'.
* test/ruby/test_fiber.rb: add a require 'fiber'.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13259 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-25 02:03:44 +00:00
ko1 c5e4cd0638 * cont.c: add Fiber#resume and Fiber.yield.
and Fiber::Core class to realize Coroutine.
* include/ruby/intern.h: declare rb_fiber_yield(), rb_fiber_resume(),
* enumerator.c: use above api.
* test/ruby/test_fiber.rb: fix and add tests for above changes.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13130 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-21 18:51:39 +00:00
nobu be4fc7941b * st.c (struct st_table_entry): add new members, fore and back, to
iterate in inserted order.

* include/ruby/st.h (struct st_table): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13124 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-21 04:43:51 +00:00
ko1 b982cff67c * eval.c (rb_call), eval_method.ci (rb_add_method, rb_alias),
insnhelper.ci (vm_call_method): fix to save safelevel for
  method node.
* include/ruby/node.h: ditto.
* bootstraptest/test_method.rb: add a test for above.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13079 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-17 12:25:47 +00:00
matz c186fdb90b * enumerator.c (enumerator_next_p): should check correctly even when
e.next has not been called before.

* enumerator.c (enumerator_next): raise StopIteration (name taken
  from Python) instead of IndexError.

* enum.c (enum_zip): catch StopIteration exception.

* enumerator.c (enumerator_with_index): return Enumerator if no
  block is given.

* test/ruby/test_iterator.rb (TestIterator::test_enumerator): add
  test for enumerators.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12905 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-08 07:07:03 +00:00
nobu f800cdbabc * include/ruby/ruby.h (ruby_special_consts): added RUBY_SPECIAL_SHIFT.
* .gdbinit: some improvements.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12897 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-07 04:58:07 +00:00
matz 57b0b6c7b1 * cont.c (rb_fiber_yield): change argument ordering. export.
* cont.c (rb_fiber_current): export

* include/ruby/intern.h: export several functions from cont.c.

* enumerator.c (enumerator_next): new method to implement external
  iterator (generator) using fiber.

* enumerator.c (enumerator_next_p): new method to check whether
  any element is left in the generator sequence.

* enumerator.c (enumerator_rewind): a new method to rewind the
  generator sequence.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12891 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-06 16:41:17 +00:00
nobu d9274e7d6b * parse.y (reg_compile_gen): set error if failed to compile regexp
literal.  [ruby-dev:31336]

* re.c (rb_reg_compile): should not use regexp which could not get
  initialized.  [ruby-dev:31333]
  return error message to let the parser know it.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12862 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-02 14:36:25 +00:00
matz e1def8a987 * include/ruby/oniguruma.h: upgrade to Oniguruma 5.9.0. fixes
some memory violation.  [ruby-dev:31070]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12841 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-23 09:39:30 +00:00
nobu fb00d61acf * thread.c (is_ruby_native_thread): made an int function as
well as version 1.8.

* include/ruby/ruby.h (is_ruby_native_thread): moved prototype
  from intern.h as well as version 1.8.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12837 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-22 07:07:12 +00:00
nobu f1622c195d * file.c (rb_file_s_rename): deleted code to get rid of a bug of
old Cygwin.

* file.c (rb_file_truncate): added prototype of GetLastError()
  on cygwin.  [ruby-dev:31239]

* include/ruby/intern.h (is_ruby_native_thread): prototype.

* missing/strftime.c (strftime): fix printf format and actual
  arguments.

* ext/Win32API/Win32API.c (Win32API_initialize): ditto.

* ext/tk/tcltklib.c (ip_finalize): ditto.

* ext/win32ole/win32ole.c (lcid_installed): ditto.

* ext/socket/getnameinfo.c: include stdio.h always.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12836 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-22 05:33:54 +00:00
nobu 09ce106ab3 * bignum.c (rb_big_lshift, rb_big_rshift): separated functions
to get rid of infinite recursion.  fixed calculation in edge
  cases.  [ruby-dev:31244]

* numeric.c (rb_fix_lshift, rb_fix_rshift): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12814 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-19 05:38:48 +00:00
nobu cba32dcaa6 * ext/dl/cfunc.c (rb_dlcfunc_call): adjust format. [ruby-dev:31222]
* ext/digest/digest.c (rb_digest_instance_update,
  rb_digest_instance_finish, rb_digest_instance_reset,
  rb_digest_instance_block_length): %s in rb_raise() expects char*.
  [ruby-dev:31222]

* ext/openssl/ossl.h: include ossl_pkcs5.h.  [ruby-dev:31231]

* ext/openssl/ossl_pkcs5.h: new file for PKCS5.  [ruby-dev:31231]

* ext/openssl/ossl_x509name.c (ossl_x509name_to_s): use ossl_raise()
  instead of rb_raise().  [ruby-dev:31222]

* ext/sdbm/_sdbm.c: DOSISH platforms need io.h.  [ruby-dev:31232]

* ext/syck/syck.h: include stdlib.h for malloc() and free().
  [ruby-dev:31232]

* ext/syck/syck.h (syck_parser_set_input_type): prototype added.
  [ruby-dev:31231]

* win32/win32.c: include mbstring.h for _mbspbrk().  [ruby-dev:31232]

* include/ruby/win32.h (rb_w32_getcwd): prototype added.
  [ruby-dev:31232]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12799 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-15 13:24:39 +00:00
ko1 b626539e9b * include/ruby/intern.h: remove unused function declarations.
* include/ruby/ruby.h: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12766 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-13 09:36:04 +00:00
usa 2e4f2aaaf0 * include/ruby/ruby.h (FIX2ULONG): drop sign bit for LLP64 platform.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12737 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-11 20:35:10 +00:00
ko1 302c311199 * hash.c (rb_hash_lookup): added. this function is similar to
rb_hash_aref(), but doesn't call Hash#default when no entry
  exists.
* include/ruby/intern.h: ditto.
* insnhelper.ci (lfp_svar_get): use rb_hash_lookup().



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12734 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-10 10:39:39 +00:00
ko1 a6e3d19f3a * vm.c, insnhelper.ci: fix svar interface.
* compile.c (iseq_compile_each), yarvcore.h: fix to use new
  svar interface for flip flop.
* eval.c: ditto.
* insns.def: ditto.
* include/ruby/intern.h: remove "rb_svar()" declaration.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12731 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-10 08:04:52 +00:00
nobu 46603a78af * include/ruby/{intern,ruby}.h, compile.[ch], error.c, eval.c,
eval_load.c, gc.c, iseq.c, main.c, parse.y, re.c, ruby.c,
  yarvcore.[ch] (ruby_eval_tree, ruby_sourcefile, ruby_sourceline,
  ruby_nerrs): purge global variables.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12700 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-05 08:12:18 +00:00
nobu e8b0aa4ca0 * include/ruby/{node,ruby}.h, ruby.c: added enum constants for gdb
support.  [ruby-dev:31066]

* .gdbinit: some improvements.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12695 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-05 01:42:09 +00:00
nobu ba563e4a41 * include/ruby/st.h, st.c (st_init_table, st_init_table_with_size):
constified.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12693 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-05 01:06:49 +00:00
usa 49b0a4d5ed * include/ruby/onigiruma.h (ONIG_EXTERN): use RUBY_EXTERN if defined.
* regenc.h: include ruby/defines.h.

	* regint.h: x64-mswin64 support.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12682 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-03 14:14:08 +00:00
ko1 fd78c2193e * include/ruby/node.h, parse.y, gc.c, iseq.c: remove NODE_CREF.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12638 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-27 16:23:49 +00:00
usa 1aa54c6db6 * include/ruby/win32.h, win32/Makefile.sub, win32/configure.bat,
win32/mkexports.rb, win32/setup.mak, win32/win32.c: import
	  x64-mswin64 port.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12635 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-27 11:47:53 +00:00
usa c179584ba4 * include/ruby/ruby.h: IL32LLP64 support.
* bignum.c (bigfixize, rb_cstr_to_inum): ditto.

	* insns.def (opt_plus, opt_minus, opt_mult): ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12622 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-26 06:23:34 +00:00
usa a00c1ed672 * include/ruby/node.h (NODE_LMASK, nd_line): shouldn't use int and/or
long carelessly.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12611 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-25 09:01:27 +00:00
ko1 f58eb1e276 * eval.c: remove ruby_current_node and change eval() prototype.
fix to use rb_sourcefile/line() instead of ruby_sourcefile/line.
* error.c, eval_error.ci, eval_load.c, eval_safe.ci, gc.c,
  include/ruby/intern.h, parse.y, process.c, ruby.c: ditto.
* vm.c: fix spaces.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12608 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-24 20:33:04 +00:00
matz 115410ecde * string.c (rb_str_upto): add optional argument to specify
exclusiveness.

* range.c (range_step): use String#upto with optional argument.

* range.c (range_each): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12586 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-22 16:23:16 +00:00
nobu 2b592580bf * include/ruby: moved public headers.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12501 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-10 03:06:15 +00:00