1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
Commit graph

27705 commits

Author SHA1 Message Date
eregon
b0e40509c3 set encoding to ASCII for appropriate String#unpack modifiers
* pack.c (pack_unpack): set encoding of the
  'H','h','B' and 'B' modifiers to US-ASCII.
* test/ruby/test_pack.rb: tests for the above.
  [ruby-core:47653][Bug ]
* test/test_securerandom.rb: tests for SecureRandom.hex
  from tenderlove. [ruby-core:46792][Bug ]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37269 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-19 13:13:32 +00:00
ko1
f4dbc7a384 * method.h (rb_method_cfunc_t::invoker): add new field (func ptr)
`invoker'. `invoker' function invoke cfunc body
  (rb_method_cfunc_t::func).
  `invoker' is set at method definition timing.
  With this change, the big `switch' (branch) in `call_cfunc()'
  is no longer needed.
  However, the performance benefit is only a bit.
* vm_core.h (rb_call_info_t::aux::func): add a new field to store
  cfunc body function pointer.
* vm_method.c (call_cfunc_invoker_func): add a new function which
  returns a suitable invoke function.
* vm_method.c (setup_method_cfunc_struct): added.
* vm_method.c (rb_add_method): fix to set `invoker'.
* vm_eval.c (vm_call0_body): catch up above changes.
* vm_insnhelper.c (call_cfunc): removed.
* vm_insnhelper.c (vm_call_cfunc): fix to call cfunc body
  with `invoker' function.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37268 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-19 10:38:30 +00:00
ko1
0fc7f4bb30 * eval.c, vm_eval.c: use TH_PUSH_TAG() instead of PUSH_TAG().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37267 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-19 07:57:56 +00:00
ko1
e99989bf4f * benchmark/driver.rb: remove unexpected `output'.
(commit miss)



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37265 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-19 02:15:00 +00:00
ko1
3daa9b9f5a * vm_insnhelper.c (vm_search_method): remove needless local variable.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37264 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-19 01:24:50 +00:00
ko1
f2a9c42c7a * benchmark/bmx_temp.rb: removed.
This file should not be in repository.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37263 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-19 01:23:50 +00:00
svn
0801dba3f6 * 2012-10-19
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37262 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-19 01:22:12 +00:00
ko1
a31d53ecf5 * benchmark/driver.rb: add new option `--ruby-arg [ARG]'
which is passed as a launch parameter for each ruby's execution.
  ($ ruby [ARG] [File])



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37261 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-19 01:22:08 +00:00
ko1
7e8f558aea * insns.def (opt_send_simple): move the location of
`opt_send_simple' to the place near `send' definition.
  (to take care about icache locality).



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37260 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-18 09:44:19 +00:00
ko1
d0ead20888 * insns.def (send): remove unused condition.
This condition will be true after r37258.
* vm_insnhelper.c (vm_caller_setup_args): remove `UNLIKELY' on
  checking blockiseq (it seems `LIKELY').



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37259 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-18 09:41:55 +00:00
ko1
1486b9cf0a * insns.def (opt_send_simple): introduce new instruction used
when no need to care about block and splat.
* compile.c: use the `opt_send_simple' instruction.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37258 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-18 08:35:19 +00:00
nobu
6be52625b2 vm_method.c: check arity earlier
* vm_method.c (rb_add_method_cfunc, rb_add_method_cfunc_frameless):
  check arity earlier at definition time.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37257 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-18 07:44:09 +00:00
nobu
60f949e101 ChangeLog: adjust spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37256 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-18 06:57:58 +00:00
ko1
fea629da83 * vm_insnhelper.c: add `inline' keyword to several functions.
Compilers (gcc) are conservative than I expected.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37255 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-18 06:14:39 +00:00
ko1
cc012cfb19 * include/ruby/ruby.h: add a decl. of
`rb_define_frameless_method()'.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37254 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-18 06:04:02 +00:00
ko1
c992cec4a0 * compile.c (new_callinfo): set a temporary index of callinfo
(used in `iseq_set_sequence()') to rb_call_info_t::aux::index.
  rb_call_info_t::argc is initialiesed by same value of
  rb_call_info_t::orig_argc.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37253 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-18 05:33:31 +00:00
ko1
588b73bca2 * class.c (rb_define_frameless_method): rename from
rb_define_method_fast(). Defined method with this C API
  does not make a method frame. It is bit lightweight than
  ordinal C functions. Now only 0 or 1 argc are permitted.
* method.h (VM_METHOD_TYPE_CFUNC_FRAMELESS): rename macro name
  from VM_METHOD_TYPE_CFUNC_FAST.
* vm_insnhelper.c, vm_method.c: rename related functions.
* proc.c (rb_method_entry_arity): catch up above changes.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37252 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-18 05:22:13 +00:00
nobu
676c01bb36 parse.y: fail if yyerror
* parse.y (assignable_gen): fail if yyerror occurred.  fix a bug in
  r36973.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37251 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-18 01:30:37 +00:00
nobu
849c4eaaf3 test_syntax.rb: test_unassignable
* test/ruby/test_syntax.rb (TestSyntax#test_unassignable): assert
  keywords are unassignable.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37250 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-18 01:29:54 +00:00
svn
46a45ca613 * 2012-10-18
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37249 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-18 00:24:05 +00:00
tenderlove
a34a3c2caa * hash.c (initialize_copy): duping should rehash the hash.
* test/ruby/test_hash.rb: added a test to ensure rehash.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37248 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-18 00:24:00 +00:00
nagachika
bff930ccf4 * ChangeLog: fix a typo of r37243.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37247 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-17 13:36:45 +00:00
shirosaki
14d59c122f extmk.rb: fix mingw make failure with make -jN
* common.mk (WPROGRAM): need same dependencies as PROGRAM.

* cygwin/GNUmakefile.in (uncommon.mk): move include position
  below WPROGRAM definition to be defined in uncommon.mk.

* ext/extmk.rb (all, static): fix make rubyw.exe failure with make -jN.
  If make of ruby.exe and rubyw.exe run in parallel, link dll and link
  exe run in parallel, which causes link failure on mingw. To fix this,
  we make ruby.exe and rubyw.exe in one make process.
  [ruby-core:48007] [Bug ]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37246 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-17 12:20:57 +00:00
ko1
aef5f90281 * benchmark/bm_vm2_method_missing.rb: add a benchmark to measure
performance of invoking `method_missing'.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37245 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-17 07:26:58 +00:00
ko1
000ff5b3ce * vm_insnhelper.c (vm_getivar): fix to use `aux.index' instead of
`aux.opt_pc'.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37244 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-17 07:24:52 +00:00
ko1
9a82db49eb * vm_insnhelper.c (vm_call_method_missing): make a refactoring
about method_missing process. Use `vm_call_method()' to invoke
  `method_missing' method instead of `rb_funcall2()'.
  In `vm_call_method()', set fastpath to `vm_call_method_missing()'
  if it can be cached.
* vm_core.h (rb_call_info_t): add new field
  `rb_call_info_t::aux::missing_reasion' to pass the reason to
  `vm_call_method_missing()'.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37243 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-17 07:12:40 +00:00
nobu
7254573c55 configure.in: multiple opt-dir
* configure.in (opt-dir): allow multiple directories separated by
  $PATH_SEPARATOR as well as dir_config in mkmf.rb. [ruby-core:47868]
  [Bug ]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37242 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-17 06:33:14 +00:00
shugo
0f1e7bcec0 * ChangeLog: add credit.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37241 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-17 06:30:29 +00:00
shugo
bd6bb6c0b2 * lib/net/imap.rb: fix Net::IMAP::ResponseParser to accept
message/delivery-status ([ruby-core:47920] [Bug ]),
  message/rfc822 attachments ([ruby-core:47921] [Bug ]), and
  (BODY ("MIXED")) ([ruby-core:47951] [Bug ]).

* test/net/imap/test_imap_response_parser.rb: related test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37240 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-17 06:18:14 +00:00
shugo
c4e63346d2 * ChangeLog: use tab for indentation.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37239 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-17 03:55:35 +00:00
usa
38c0b5f0e3 * test/ruby/test_hash.rb (TestHash#test_dup_equality): added a new test
to show the problem of r37232.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37238 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-17 02:06:34 +00:00
shugo
8f58f60643 * vm_insnhelper.c (vm_search_method): fix a build error that occurs
when OPT_INLINE_METHOD_CACHE is 0.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37237 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-17 01:50:53 +00:00
ko1
5e2625eebd * benchmark/bm_vm2_dstr.rb: add a benchmark to measure
performance of dynamic generated string ("foo#{bar}baz").



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37236 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-16 23:47:51 +00:00
ko1
49371b5420 * compile.c (compile_dstr_fragments): use `putobject' instead of
`putstring' for all of strings used by NODE_DSTR because
  ruby users can not grab this string.
  For example, the string object of "baz" in "foo#{bar}baz"
  is located by `putobject' (users can not touch "baz" object
  directly). This change reduces GC pressure.
  This improvement is suggested by Aaron Patterson.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37235 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-16 23:38:58 +00:00
ko1
8addee9649 * thread.c (rb_threadptr_interrupt_mask): fix to check interrupt
after interrupt_mask changed.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37234 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-16 23:03:54 +00:00
ko1
199fc6a54f * vm_insnhelper.c (vm_call_method): fix to return value immediately.
Remove CHECK_INTS() after that method dispatch.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37233 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-16 21:49:18 +00:00
tenderlove
b3803cc49a * hash.c (initialize_copy): copy the underlying st_table on dup,
rather than copying the hash key by key. [ruby-core:48009]

* test/ruby/test_hash.rb: relevant tests for initialize_copy

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37232 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-16 21:33:59 +00:00
ko1
ddb6408f6e * vm_insnhelper.c (vm_call_iseq_setup_2): separate tailcall and normal
method frame setup functions.
  Add checking interrupts at the tailcall setup function.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37231 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-16 21:20:11 +00:00
ko1
db3898fe90 * benchmark/bm_vm1_yield.rb: add a benchmark to measure `yield'
(invoke empty block) performance.
* benchmark/bm_vm2_method_with_block.rb: add a benchmark to measure
  method invocation with empty block.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37230 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-16 20:37:25 +00:00
ko1
9182dab459 * vm_insnhelper.c (vm_invoke_block): vm_caller_setup_args() can skip
when splat flag is not set.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37229 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-16 20:30:17 +00:00
ko1
db1e99cdad * vm_insnhelper.c (vm_getivar, vm_setivar): support index inline cache
with rb_call_info_t to speedup `attr' getter and setter.
  Cached index is stored in rb_call_info_t::aux::index.
  `index' == 0 means not cached. `index' > 0 means cached and cached
  index is `index - 1'.
* insns.def ((get|set)instancevariable): use new wrapper functions
  vm_(get|set)instancevariable() defined in vm_insnhelper.c.
* vm_core.h (rb_call_info_t::aux): introduce new union data because
  opt_pc can share with index.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37228 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-16 17:07:23 +00:00
svn
aedc460fed * 2012-10-17
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37227 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-16 15:32:23 +00:00
nagachika
0eb6ef5b5b * method.h(rb_method_definition_struct): remove a comma after the last element
of enum.  fix for r37198.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37226 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-16 15:32:19 +00:00
ko1
f8c2a968dd * benchmark/driver.rb (show_results): Show speedup ratio
with first executables score at last of results
  if two or more executrables are given.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37225 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-16 13:26:46 +00:00
ko1
64b1751194 * benchmark/driver.rb: some refactoring.
(1) Remove `average differential'.
  In this benchmark driver, We should not care about `average'.
  We use fastest score because this score should not include
  any disturbances (affections of background process, etc).
  If you care about timing affect, I recommend `median'
  score with more than 5 examinations rather than simple
  `average' score (`average' score was affected by error scores).
  (2) Show log file name.
  (3) Change default directory from './' to driver's directory.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37224 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-16 13:07:44 +00:00
nobu
9af8102225 file.c: ASCII-compatible
* file.c (rb_file_join): need to check again after any conversion run.
  [ruby-core:48012] [Bug ]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37216 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-16 05:56:25 +00:00
kazu
66141d47d7 * test/ruby/envutil.rb (Test::Unit::Assertions#assert_file): rename from file_assertion.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37215 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-16 04:02:04 +00:00
kazu
41e5fdb20f fix typos
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37214 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-16 04:02:01 +00:00
nobu
37b8f7b84f file.c: hide result
* file.c (rb_file_join): hide the result under construction until
  return.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37213 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-16 02:30:20 +00:00
nobu
a583f42062 file.c: ASCII-compatible
* file.c (rb_file_join): check nul-byte only for strings, since
  FilePathStringValue() does it.  [ruby-core:48012] [Bug ]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37212 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-16 02:27:07 +00:00