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

34895 Коммитов

Автор SHA1 Сообщение Дата
nobu 33b8663f1b parse.y: guard dup string
* parse.y (rb_str_dynamic_intern): prevent a string which may be
  duplicated, from GC.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45432 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-26 06:34:35 +00:00
nobu ad8ed59ab9 parse.y: dup iff needed
* parse.y (rb_str_dynamic_intern): dup the given string only if
  needed.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45431 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-26 06:34:33 +00:00
nobu 9a848c5f4a parse.y: no dup US-ASCII string
* parse.y (rb_str_dynamic_intern): no needs to associate encoding
  if it is US-ASCII.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45430 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-26 06:34:31 +00:00
usa e70b61d010 * parse.y: inline must be static (for mswin).
fixed build error introduced at r45426.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45429 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-26 05:58:41 +00:00
nari b9ea135950 * internal.h (USE_SYMBOL_GC): enable Symbol GC by default (USE_SYMBOL_GC == 1).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45428 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-26 05:39:22 +00:00
nari 17a6f9227a cast to int to silence clang compile error
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45427 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-26 05:14:51 +00:00
nari 90b7073842 * parse.y: support Symbol GC. [ruby-trunk Feature #9634]
See this ticket about Symbol GC.

* include/ruby/ruby.h:
  Declare few functions.
  * rb_sym2id: almost same as old SYM2ID but support dynamic symbols.
  * rb_id2sym: almost same as old ID2SYM but support dynamic symbols.
  * rb_sym2str: almost same as `rb_id2str(SYM2ID(sym))` but not
    pin down a dynamic symbol.
  Declare a new struct.
  * struct RSymbol: represents a dynamic symbol as object in
    Ruby's heaps.
  Add few macros.
  * STATIC_SYM_P: check a static symbol.
  * DYNAMIC_SYM_P: check a dynamic symbol.
  * RSYMBOL: cast to RSymbol

* gc.c: declare RSymbol. support T_SYMBOL.

* internal.h: Declare few functions.
  * rb_gc_free_dsymbol: free up a dynamic symbol. GC call this
    function at a sweep phase.
  * rb_str_dynamic_intern: convert a string to a dynamic symbol.
  * rb_check_id_without_pindown: not pinning function.
  * rb_sym2id_without_pindown: ditto.
  * rb_check_id_cstr_without_pindown: ditto.

* string.c (Init_String): String#intern and String#to_sym use
  rb_str_dynamic_intern.

* template/id.h.tmpl: use LSB of ID as a flag for determining a
  static symbol, so we shift left other ruby_id_types.

* string.c: use rb_sym2str instead `rb_id2str(SYM2ID(sym))` to
  avoid pinning.

* load.c: use xx_without_pindown function at creating temporary ID
  to avoid pinning.

* object.c: ditto.

* sprintf.c: ditto.

* struct.c: ditto.

* thread.c: ditto.

* variable.c: ditto.

* vm_method.c: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45426 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-26 04:57:47 +00:00
naruse 2bf56deded * addr2line.c (fill_lines): loop reverse order not to overwrite
the basis of base addresses comparison.

* addr2line.c: use uintptr_t instead of intptr_t for poinrters.

* addr2line.c (rb_dump_backtrace_with_lines): don't use syms.

* vm_dump.c (rb_print_backtrace): ditto.

* addr2line.h: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45425 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-26 04:30:43 +00:00
nobu 3935f2ae6e marshal.c: undumpable hidden objects
* marshal.c (w_object): internal objects are not dumpable.
  [ruby-core:61677] [Bug #9674]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45424 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-26 02:20:52 +00:00
nobu 1dd527012b thread.c: undumpable
* ext/thread/thread.c (undumpable): ConditionVariable and Queue
  are not dumpable.  [ruby-core:61677] [Bug #9674]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45423 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-26 02:20:26 +00:00
naruse f3867e2203 * addr2line.c (follow_debuglink): show message if it closes opened
(and maybe used) elf binary.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45422 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-26 01:38:23 +00:00
naruse b8ba4016ac * addr2line.c (fill_line): pass and use offset instead of
curobj_baseaddr.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45421 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-26 01:38:05 +00:00
kanemoto 62efb9c29f add feature number to ChangeLog entry
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45420 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-26 00:48:33 +00:00
kanemoto 738c303461 add --disable-pie option to configure
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45419 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-26 00:13:36 +00:00
naruse 537623e43d don't write _start as is; use dlsym
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45418 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-26 00:02:24 +00:00
naruse 3bd0fd118d temporaly change/add to debug on powerpc64-linux
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45417 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-25 23:55:58 +00:00
naruse 633b2fc9d7 * addr2line.c (fill_lines): don't run fill_lines multiple times.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45416 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-25 23:55:39 +00:00
nobu df0034f890 * internal.h (rb_reg_search0): not a public API.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45415 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-25 23:52:18 +00:00
charliesome a77206582e Stop allocating backref strings within gsub's search loop
* internal.h: add prototype for rb_reg_search0

* re.c: rename rb_reg_search to rb_reg_search0, add set_backref_str
  argument to allow callers to indicate that they don't require the
  backref string to be allocated

* string.c: don't allocate backref str if replacement string is provided

Closes GH-578. [Bug #9676] [ruby-core:61682]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45414 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-25 23:46:05 +00:00
nobu ebd9f1d0e4 lib/rubygem.rb: Weirich
* lib/rubygem.rb: fix spelling of Jim Weirich.  [Fixes GH-577]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45413 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-25 23:29:44 +00:00
naruse 0fe34c4c3b main is not a pubic function, use _start instead
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45412 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-25 18:44:32 +00:00
svn 925a1e1d70 * 2014-03-26
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45411 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-25 16:58:47 +00:00
naruse c1b81d3578 * addr2line.c (rb_dump_backtrace_with_lines): a function to get must
be a function in the main executable, whose absolute path is not
  available by dladdr, and ruby get it by /proc/self/exe on Linux.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45410 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-25 16:58:45 +00:00
naruse cd2afc30fd * addr2line.c (fill_lines): skip if path is NULL.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45409 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-25 16:58:42 +00:00
nobu dcd1e5e5c2 parse.y: required kwarg without parentheses
* parse.y (parser_yylex): only a newline after label should be
  significant.  [ruby-core:61658] [Bug #9669]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45408 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-25 14:57:18 +00:00
kazu 6df5f314ac remove unnecessary unshift
* ext/pathname/lib/pathname.rb (Pathname#join): remove unnecessary unshift.
* test/pathname/test_pathname.rb (TestPathname#test_join): add tests.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45407 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-25 14:42:36 +00:00
usa 602a9c1416 * test/ruby/test_time.rb: extended the timeout span and reduce the loop count.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45406 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-25 07:57:35 +00:00
nobu d7442c32df parse.y: required kwarg without parentheses
* parse.y (lex_state_e, parser_params, f_arglist, parser_yylex):
  separate EXPR_LABELARG from EXPR_BEG and let newline significant,
  so that required keyword argument can place at the end of
  argument list without parentheses.  [ruby-core:61658] [Bug #9669]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45405 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-25 07:47:37 +00:00
nobu 0574b64694 parse.y: removing padding
* parse.y (parser_params): shrink struct size by removing padding
  on 64-bit platforms.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45404 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-25 07:39:58 +00:00
usa 69c80f18e3 * test/ruby/test_time.rb: use portable time zone. see [ruby-core:61671] [Bug #9652]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45403 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-25 06:55:04 +00:00
nobu b8c376cb9d defs/gmake.mk: no _FORTIFY_SOURCE unless optimization
* defs/gmake.mk (XCFLAGS): remove _FORTIFY_SOURCE if optimization is
  disabled as it requires compiling with optimization.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45402 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-25 01:30:07 +00:00
svn c54e268a1f * 2014-03-25
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45401 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-24 15:28:33 +00:00
nobu 4765f9c774 vm.c: extract core_hash_merge
* vm.c (core_hash_merge): extract from m_core_hash_merge_ary and
  m_core_hash_merge_ptr.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45400 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-24 15:28:31 +00:00
nobu d617a02b14 vm.c: merge code
* vm.c (m_core_hash_from_ary, m_core_hash_merge_ary): merge
  duplicated code.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45399 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-24 15:28:30 +00:00
akr f9382d033c [DOC]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45398 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-24 13:51:28 +00:00
nobu 0331e42be3 parse.y: freeze filename
* parse.y (ripper_initialize): filename can not be modified.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45397 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-24 13:19:57 +00:00
nobu 87108634e1 test_time.rb: arguments order
* test/ruby/test_time.rb (TestTime#test_marshal_zone_gc): fix
  the order of arguments.  expected value should come first.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45396 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-24 08:26:09 +00:00
naruse f664ffb5a0 Asia/Tokyo is more portable value for ENV["TZ"] [Bug #9652]
FreeBSD doesn't accept "Japan".

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45395 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-24 08:02:54 +00:00
naruse 2e47a521e6 * addr2line.c (rb_dump_backtrace_with_lines): fetch path of the
executable from /proc/self/exe on Linux.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45394 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-24 06:28:32 +00:00
hsbt 23d790e46f gc.c: Fix up default GC params by @csfrancis [fix GH-556]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45393 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-24 05:28:03 +00:00
svn 75f44fc33f * 2014-03-24
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45392 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-24 04:18:32 +00:00
naruse d2b1deda92 * addr2line.c (parse_debug_line_cu): explicitly specify signed char
because DWARF's line_Base is signed char and char maybe unsigned.
  patched by Rei Odaira. [ruby-dev:48068] [Bug #9654]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45391 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-24 04:18:28 +00:00
nobu d550d72249 .gdbinit: use st_numhash
* .gdbinit (rb_numtable_entry): use st_numhash() to follow r45384.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45390 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-23 14:47:04 +00:00
nobu 0ab88d13a1 vm_method.c fix commit miss
* vm_method.c (rb_method_entry_get_without_cache): fix commit miss.
  remove extra !.  [Bug #9663]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45389 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-23 02:05:52 +00:00
nobu 99baae9905 vm_method.c: check if klass is 0
* vm_method.c (rb_method_entry_get_without_cache): me->klass is 0
  for a method aliased in a module.  [ruby-core:61636] [Bug #9663]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45388 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-23 02:03:53 +00:00
nobu bedc6fdf88 vm_method.c: check if klass is 0
* vm_method.c (rb_method_entry_get_without_cache): me->klass is 0
  for a method aliased in a module.  [ruby-core:61636] [Bug #9663]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45387 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-23 02:03:51 +00:00
nobu 10cf7c5b2a hash.c: use ID_SCOPE_SHIFT
* hash.c (rb_any_hash): use ID_SCOPE_SHIFT instead of magic number.
  [Feature #9425]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45386 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-23 01:10:12 +00:00
svn 152b33a1e2 * 2014-03-23
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45385 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-22 23:34:26 +00:00
normal ef59670a44 st.c: use power-of-two sizes to avoid slow modulo ops
* st.c (hash_pos): use bitwise AND to avoid slow modulo op
  (new_size): power-of-two sizes for hash_pos change
  (st_numhash): adjust for common keys due to lack of prime modulo
  [Feature #9425]
* hash.c (rb_any_hash): right shift for symbols
* benchmark/bm_hash_aref_miss.rb: added to show improvement
* benchmark/bm_hash_aref_sym_long.rb: ditto
* benchmark/bm_hash_aref_str.rb: ditto
* benchmark/bm_hash_aref_sym.rb: ditto
* benchmark/bm_hash_ident_num.rb: added to prevent regression
* benchmark/bm_hash_ident_obj.rb: ditto
* benchmark/bm_hash_ident_str.rb: ditto
* benchmark/bm_hash_ident_sym.rb: ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45384 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-22 23:34:21 +00:00
naruse 14c9cf885c * addr2line.c (fill_lines): compare the file names of object in which
symbols exist. [Bug #9654] [ruby-dev:48058]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45383 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-22 14:06:11 +00:00