ko1, Koichi Sasada

Hash Date Message
21db43bfe70b597bda21fc6f65c7933087f8aa18 2006-12-20
a3e1b1ce7ed7e7ffac23015fc2fde56511b30681 2006-12-31
939357f0d846c0b50cdd8db5258b42c90504cbd4 2006-12-31
e7a993656c84c166278d9f6e77babd4aa6fd31c9 2006-12-31
a7911f55a4fc59d8d460b15b5e19cc17f0d725d5 2007-01-04 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11465 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
784dedc5f06db04b1fd51d30c126508061e05a50 2007-01-04
26608663cd480f265ada34856aaebdcae133a222 2007-01-04 * common.mk : restore changes
424eec36a63bfc3b35297f54bc3c3b5d671edae3 2007-01-04 * thread_pthread.ci : fix last changes around PTHREAD_STACK_MIN.
a7028afec0bc880372b7e6b307cbf05b2be6a540 2007-01-04 * yarv_version.h : removed. * common.mk : remove yarv_version.h from rules * yarvcore.h (Init_yarvcore) : remove useless constants
31d815aacf57d5d61d9e04683c6c4b9a36a4fbee 2007-01-04 * common.mk : fix to use test.rb script in build directory. ($(srcdir)/test.rb -> test.rb)
3e5b3dac1f3b847161fa914f3e4cb3e85198c4a4 2007-01-04 * common.mk : rename yarv-test-[all/each] to compare-test[/-each]. purpose of "compare-test" rule is to compare ruby (trunk) and matzruby (branches/matzruby) binary in miniruby level. MATZRUBY parameter means an path to miniruby of matzruby binary. to do this comparison test, you should build matzruby branch. * yarvtest/yarvtest.rb : fix to use command line option as command names to be compared. * yarvtest/runner.rb : remove a debug output.
c5bd0c8e3bf602e082cfd8f95bc28b06aeea2694 2007-01-05 * compile.c (iseq_compile_each, set_block_local_tbl) : support NODE_LAMBDA (partly). * sample/test.rb : restore test of NODE_LAMBDA * test/ruby/test_lambda.rb : ditto
d880d4382ffca5a9deb083ba0acc69dfa5f5d306 2007-01-05 * eval_method.h (rb_add_method) : fix to check old_node
20f8b25d1df4bfe1e7e23fbf3458f9742394b728 2007-01-05 * eval_method.h (rb_alias) : fix to check search result
716b91a5f72102483a56af9a3694531a30f9fd37 2007-01-05 * common.mk : add .SUFFIXES rule
91a0e26a5234cf5f98aacc802c8910279d9a8195 2007-01-05
21e39197e6351aa786a555f7304cbb5b98b599ef 2007-01-05 * benchmark/run_rite.rb : fix to use readlines instead of read(...).lines (because 1.8 doesn't have String#lines).
ed9d4087f6bcccf82f08de670942cf51c4a0a54c 2007-01-05 * compile.c, compile.h : add ADD_CALL_RECEIVER() macro. * insns.def (send) : use GET_SELF() direct if FCALL. * eval.c (rb_f_send) : check method dispatch type to permit nvoking private method when dispatch type is FCALL/VCALL * insns.def (opt_ltlt) : remove useless statement. * vm.h : remove unused macros.
c5a0c3be2e604e64ffa9cb77d758ac10eedecce9 2007-01-05 * yarvtest/yarvtest.rb : fix to compare results
d22d3b5a7a37bc2ff723fa5acc4ce2d85539d189 2007-01-05 * benchmark/bm_app_pentomino.rb : use Array#dup instead of Array#clone * benchmark/bmx_temp.rb : removed * benchmark/run.rb : use run.rb instead of run_rite.rb * common.mk : ditto * benchmark/run_rite.rb : removed * common.mk : use $(srcdir)/test.rb to run a test program with "make run" * benchmark/bmx_temp.rb : removed and set svn:ignore (bmx_*.rb) to benchmark/ * test.rb : set svn:ignore
384cfd3871c1839d0f167f9f4bf39ef3dcd42069 2007-01-05 * benchmark/run.rb : change option format * common.mk : ditto
ce55b4c0e0062cd59eb3d5e05ffc5d75bdcde85a 2007-01-06 * insns.def : support direct method dispatch with "send" or "funcall". This means that "obj.send :m" skips "BasicObject#send" invocation (method frame creation, etc) and "obj.m" invokes directly. If you make backtrace, there are no enties of "send" method. * compile.c (iseq_specialized_instruction) : fix to support above * eval.c : ditto (remove "static" from rb_f_send and rb_f_funcall * yarvcore.c : ditto (add a external IDs for compiler) * yarvcore.h : ditto (add a VM_CALL_SEND_BIT macro) * yarvtest/test_method.rb : add tests for above changes * eval.c : remove unused "Kernel#send" declaration
52296cdee134593ec3a18c3420c7c6b7251c24f9 2007-01-06 * common.mk : add PHONY dependency to some rules
ad4213d6feaa3f8c79b4c3de6753b11ae2d46a84 2007-01-06 * insns.def (send) : fix to optimize send() with Symbol. * yarvtest/test_method.rb : add another test.
4e4eec7016037f051a6d1173bb5829de9c4840c3 2007-01-07 * common.mk: add a "compare" rule and fix MATZRUBY variable
84f8da11579b8b655505dc8abffc31c715784794 2007-01-07 * thread.c (rb_thread_stop_timer_thread(), rb_thread_reset_timer_thread(), rb_thread_start_timer_thread()): added. * thread_pthread.ci: add a native_thread_join() and move rb_thread_reset_timer_thread() definition to thread.c. * thread_win32.ci: ditto * process.c: fix before_exec(), after_exec() to stop timer thread (and restart timer thread if exec failed). and fix to reset timer thread information when forked child process starts (to fix [ruby-core:09822]).
7eb928624f84135634075ea575d6f10d759f2263 2007-01-16 * eval_proc.c (rb_proc_new): added. * string.c (sym_to_proc): supported. * vm.c (invoke_block, th_invoke_yield, th_invoke_proc): fix to support rb_proc_new. * yarvcore.c: add a test code.
c22416a87fe3d4979ba698ba2d14a1cb4a98cdee 2007-01-16 * env.h: removed
63315f63054890397a19a1cbefe10166cb1768c8 2007-01-16 * vm.c (invoke_block): fix to specify self.
5078c85782efc2d1245377d9a49c71eedd40c170 2007-01-16 * common.mk: fix ruby script path.
ca46eab09073c2d91bb21939b32aa6d767dafa36 2007-01-16 * vm.c (eval_search_super_klass): rename to search_super_klass() and use it by th_call_super(). * insns.def: ditto.
dbee678630736a5d873cde1f262bf2cfc87e8dfe 2007-01-17 * some refactoring around yarvcore and proc. * eval_proc.c: renamed to proc.c. * common.mk: ditto. * yarvcore.h, yarvcore.c: rename or remove some global variables removed: mYarvCore, mYarvInsns renamed: cYarvISeq -> rb_cISeq, cYarvProc -> rb_cProc, cYarvBinding -> rb_cBinding ::YarvCore module is removed and ::YarvCore::VM class becomes ::VM. And change/remove some functions which added with YARV. * compile.c: ditto. * eval.c: ditto. * iseq.c: ditto. * vm.c: ditto. * inits.c: rename Init_yarvcore to Init_vm. * yarvcore.c, proc.c: move some functions and initialization from yarvcore.c to proc.c. * intern.h, proc.c: add global function rb_binding_new(void).
025cfde57d14b12504595130cb1b222372881143 2007-02-05 * eval_thread.c, common.mk: remove eval_thread.c. * yarvcore.c: rename cYarvThread to rb_cThread. * gc.c: remove YARV_* prefix. * gc.h: add an include guard and prototype of rb_gc_set_stack_end(). * inits.c: fix to ANSI prototype style and reorder Init_*(). * io.c (pipe_finalize): TODO: comment out last_status. * process.c, yarvcore.h: fix to use yarv_vm_t#last_status instead of rb_last_status and make last_status_get() to access $?. * yarvcore.c (vm_mark): mark yarv_vm_t#last_status. * ruby.h: add declarations of rb_cISeq and rb_cVM. * thread.c: move eval_thread.c codes to thread.c and remove yarv_* function prefix. * thread.c (thread_start_func_2): use yarv_thread_t#first_func if it is not null. * vm.c: fix copyright year. * yarvcore.c (Init_vm): rename to Init_VM().
48002b881e49ff76f869e0f383fd5419cbca9af3 2007-02-05 * ruby.h: add a prototype of rb_id2str().
27172b8e6fcd14f07fa5ea5be803cb04bde04559 2007-02-05 * intern.h: prepare rb_last_status_get() and rb_last_status_set(). Use these functions instead of rb_last_status ([ruby-dev:30264]). * process.c: define above functions. * ext/pty/pty.c: use above functins. * io.c (pipe_finalize): ditto. * process.c: ditto.
0d70d8864359e6d8c410dd2727de618ba7cc3dc7 2007-02-05 * proc.c: refactoring (remove K&R style, move Binding stuffs from Init_Proc() to Init_Binding()).
a4a81019653287291f88563964d482798da6221f 2007-02-05 * proc.c: support Binding#eval. * yarvtest/test_eval.rb: add a test for above change.
46cceb5a741148766eadf60f57139123d396f6d6 2007-02-06 * complement last commit. * common.mk (*.inc): use VPATH. * vm_opts.h: renamed from vm_opts.h.base.
42ce75cdff741d69927e407ac57b68dd58408111 2007-02-06 * compile.c, insns.def: remove (get|set)instancevariable2 and add a operand is_local to (get|set)instancevariable. * yarvtest/test_class.rb: add a test for class local instance variable. * parse.y (rb_decompose_ivar2): remove unused variable oid. * tool/insns2vm.rb: remove needless require.
c27ef66dd7dc00fa22dce416dd2080f5da501a47 2007-02-06 * compile.c (iseq_compile_each): fix setting is_local flag. * yarvtest/test_class.rb: add a test for class local isntance variable.
87861402065ac2f5f0578c897f28b4cb4409d75b 2007-02-06 * vm_opts.h: set properties: svn:keywords: Author Date Id Revision svn:eol-style: native
8ee7d0767f7940baeae60ffa95afde93f3378c93 2007-02-06 * blockinlining.c, compile.c, compile.h, error.c, eval.c, eval_intern.h, eval_jump.h, eval_load.c, eval_method.h, eval_safe.h, gc.c, insnhelper.h, insns.def, iseq.c, proc.c, process.c, signal.c, thread.c, thread_pthread.ci, thread_win32.ci, vm.c, vm.h, vm_dump.c, vm_evalbody.ci, vm_macro.def, yarv.h, yarvcore.h, yarvcore.c: change type and macro names: * yarv_*_t -> rb_*_t * yarv_*_struct -> rb_*_struct * yarv_tag -> rb_vm_tag * YARV_* -> RUBY_VM_* * proc.c, vm.c: move functions about env object creation from proc.c to vm.c. * proc.c, yarvcore.c: fix rb_cVM initialization place. * inits.c: change Init_ISeq() order (after Init_VM). * ruby.h, proc.c: change declaration place of rb_cEnv from proc.c to ruby.c.
44aef0b53f3e73ec987a668a3284d5e28bdb8121 2007-02-07 * this commit is a result of refactoring. only renaming functions, moving definitions place, add/remove prototypes, deleting unused variables and removing yarv.h. This commit doesn't change any behavior of ruby/vm. * yarv.h, common.mk: remove yarv.h (contents are moved to yarvcore.h). * error.c, eval_intern.h: include yarvcore.h instead yarv.h * rename some functions: * debug.[ch]: debug_*() -> ruby_debug_*() * iseq.c: iseq_*() -> rb_iseq_*(), ruby_iseq_disasm() * iseq.c: node_name() -> ruby_node_name() * vm.c: yarv_check_redefinition_opt_method() -> rb_vm_check_redefinition_opt_method() * some refactoring with checking -Wall. * array.c: remove rb_ary_ptr() (unused) and remove unused local variables. * object.c: add a prototype of rb_mod_module_exec(). * eval_intern.h (ruby_cref): set it inline. * eval_load.c (rb_load), yarvcore.c: yarv_load() -> rb_load_internal(). * parse.y: add a prototype of rb_parse_in_eval() (in eval.c). * process.c: add a prototype of rb_thread_stop_timer_thread() (in thread.c). * thread.c: remove raw_gets() function (unused) and fix some format mismatch (format mismatchs have remained yet. this is todo). * thread.c (rb_thread_wait_fd_rw): fix typo on label name. * thread_pthread.ci: comment out codes with USE_THREAD_CACHE. * vm.c (rb_svar, rb_backref_get, rb_backref_get, rb_lastline_get, rb_lastline_set) : moved from yarvcore.c. * vm.c (yarv_init_redefined_flag): add a prototype and rename yarv_opt_method_table to vm_opt_method_table. * vm.c (rb_thread_eval): moved from yarvcore.c. * yarvcore.c: remove unused global variables and fix to use nsdr().
4042176a9920b384d99152883fe6b7aed20d5827 2007-02-07 * eval.c: fixed to use ANSI function style.
0b91bd56c2246f4a6dc313e0972a28074c68ecee 2007-02-07 * eval_intern.h, yarvcore.h: remove unused macro definition.
0eaefd202a7072aea6a17993c19c8704366ed9f7 2007-02-07 * eval_intern.h: remove UNSUPPORTED() macro. * thread.c: fix to define Continuation methods (they only do rb_notimplement()).
9c574383a430c815406fb343e9adba18e348b5a3 2007-02-08 * blockinlining.c, error.c, eval.c, eval_error.h, eval_intern.h, eval_jump.h, eval_load.c, eval_safe.h, gc.c, proc.c, signal.c, thread.c, thread_pthread.ci, thread_win32.ci, vm.c, vm.h, vm_dump.c, vm_evalbody.ci, yarvcore.c, yarvcore.h: fix typo (rb_thead_t -> rb_thread_t).
ea2dd2e805fbaf1f5ee491397db9a16eb1d4dbe3 2007-02-08 * process.c: fix to use rb_status_line_set/get/clear(). * eval_intern.h: fix line break.
93b2cfbc4a5572f8f00cfda931fff543ab598c4a 2007-02-08 * common.mk: fix to use RUNRUBY instead of BASERUBY if possible. * common.mk ($(INSNS) rule): remove $(PROGRAM) first.
ae317b518c4dcbcbf0ed02bb9e6cd7513f0a34fe 2007-02-08 * yarvcore.h, thread.c: fix to use pthread on cygwin. * yarvcore.h, thread.c: move GVL_UNLOCK_BEGIN() and GVL_UNLOCK_END() from yarvcore.h to thread.c. * thread.c: change GVL_UNLOCK_RANGE() arguments (adding ubf as 2nd argument). * thread.c: fix to use polling in select on cygwin and mswin32. * thread.c, thread_pthread.ci, thread_win32.ci, yarvcore.h: rename: * rb_thread_t#interrupt_function -> unblock_function * rb_interrupt_function_t -> rb_unblock_function * some interrupt function name -> ubf_* * yarv_* -> *
eb64061a384db53ca69dfdb1ab184a3b88d68f2d 2007-02-08 * thread.c (GVL_UNLOCK_RANGE): rename to BLOCKING_REGION(). * thread.c (rb_thread_run_parallel): rename to rb_thread_blocking_region().
86846f0ee50d4cd2a8783bc414a6e7904a6ece4f 2007-02-08 * test/ruby/marshaltestlib.rb: eval(sym) -> eval(sym.to_s)
cff97cc9f0adbc40df8a05b5d3ce795f318bd489 2007-02-08 * test/ruby/test_module.rb: fix to use Symbol instead of String
a0abd3c4b14f1387986fc87d273a305bb4bb16fa 2007-02-08 * test/ruby/test_string.rb: ("foo" == :foo) and ("foo" === :foo) should be false. * ChangeLog: fix last messages.
9e249508162c80974a815504cf96c78e240e3a42 2007-02-08 * test/ruby/test_clone.rb: fix to current spec (Module should not be occur many times in ancestors).
eb6153b37d480222b034dd24dfe7212e46644078 2007-02-08 * yarvtest/yarvtest.rb: check target command names.
a9026242f2292cc7df06628652f4254c55c37e22 2007-02-08 * thread.c, thread_pthread.ci, thread_win32.ci (thread_start_func_1): move cleanup function to thread_start_func_2(). * thread.c, thread_pthread.ci, thread_win32.ci: add more destruct functions. (native_thread_destroy() and native_mutex_destroy()) * thread_pthread.ci, thread_pthread.h: make native_mutex_* functions (check error, etc), it's not macro any more. * thread_win32.ci (thread_start_func_1): store some values before running thread (to release these after running thread). * thread_win32.ci (native_thread_create): fix spaces.
5ab816f7f7588f605299df7c545efb4545704a13 2007-02-09 * test/ruby/test_readpartial.rb: tests are working on mswin32/cygwin.
a5abb1cb2199081dab0e8517ff6962517e389da0 2007-02-09 * thread_win32.ci (w32_show_error_message): renamed to w32_error. this function do rb_bug().
9895ce9f7706f1c941bee73ada4cb6ef2bd204b7 2007-02-14 * eval_load.c, yarvcore.h: use rb_vm_t#loaded_features instead of rb_features (global variable). * yarvcore.c: mark rb_vm_t#loaded_features.
da06c63c66cd9901be498ab4a970332fbbeeceeb 2007-02-14 * thread.c (set_unblock_function): fix function interface.
f2586498f3bb38310f039e7532c034011e2aef82 2007-02-14 * thread.c (do_select): fix to iterate select(). on cygwin/mswin32, iterate in unblocking region. * thread.c (rb_thread_select): don't iterate on this function. (iterate in do_select).
b1c1f4957f820b6599a074e9fdc4bc3cb28bbee3 2007-02-14 * thread_pthread.ci (native_thread_create): adjust 4KB (page size) alignment. * thread_pthread.ci (CHECK_ERR): call rb_bug() instead of printf() and exit().
b9084ef40826d53bfd3a09c926b6d1c0eaf1645e 2007-02-14 * thread_pthread.ci (native_thread_create): adjust 4KB (page size) alignment. (missed at last commit)
bee3de05ad672461623a0feef8c53dab2e4a5652 2007-02-14 * configure.in: change stack limit to 2MB from 32MB. * win32/Makefile.sub: ditto.
970df0d1385ea23c453f4779050a31c4379d6d11 2007-02-14 * lib/delegate.rb: catch up with class local variable (@_v) spec. * lib/singleton.rb: ditto.
a8d47615da58b73423cf638f57b694d6ab463b9b 2007-02-14 * test/fileutils/test_fileutils.rb (check_singleton): fix to use symbole instead of string. * test/io/nonblock/test_flush.rb: enable tests. * test/xmlrpc/test_webrick_server.rb: ditto.
5e4e71a34852ccc8e871e384de19dccad347100c 2007-02-14 * vm.(c|h), yarvcore.(c|h) (yarvGlobalStateVersion): rename to ruby_vm_global_state_version.
b13c74bf82d7d919de5cc85cc2b1992b128ba559 2007-02-16 * intern.h: add a prototype of rb_sym_to_s().
353cd251706d07ae4ffd66994a72acae06e98057 2007-02-16 * object.c (rb_obj_ivar_set/get/defined): fix to check :@_v/C id. * test/testunit/test_testcase.rb: fix to use instance_variable_get() to access @_result.
661955cc39db3a96f9adc731e3df7c2fef9882ef 2007-02-20 * thread.c (do_select, rb_thread_wait_fd_rw): raise sys error if errno is not 0 and EBADF.
db95cb49af50b005c26bdab8a80257f070f78fbe 2007-02-20 * test/io/nonblock/test_flush.rb: YARV doesn't raise any errors if another thread close IO object which current thread is blocking with.
90a192865a9a57e8acecfdfd653386b4f335787b 2007-02-20 * eval.c, vm.c, yarvcore.h: move definition of rb_call_super() to vm.c from eval.c. change th_call_super() to static function.
287aa3324af51a31acaf27c47ff73c9f76b8345e 2007-02-24 * common.mk: change vm_macro.def -> vm_macro.inc rule.
e3155f4200b3567b323d788c15031004ccc71b7d 2007-02-24 fix ChangeLog.
c5148e038316b3351b4c831773b83e08c11c20fb 2007-02-24 * test/testunit/test_testcase.rb: catch up with current instance variable spec.
0fe72040e4c278bfafe232dc44551de2dfac85e2 2007-02-24 * parse.y, node.h, compile.c: change node tree structure. a purpose of this change is to unify argument structure of method and block. this change prohibits duplicate block parameter name. new argument infromation: NODE_ARGS [m: int, o: NODE_OPT_ARG, ->] NODE_ARGS_AUX [r: ID, b: ID, ->] NODE_ARGS_AUX [Pst: id, Plen: int, init: NODE*] optarg information: NODE_OPT_ARGS [idx, expr, ->] * vm_macro.def: ditto. * gc.c: ditto. * iseq.c: ditto. * compile.h: fix debug function name. * test/ripper/test_scanner_events.rb: |_,_,foo| -> |_1,_2,foo| * test/ruby/test_lambda.rb: disalbe test temporarily.
61d521117a4b37865ca779f50901138aafc8334d 2007-02-24 * lib/soap/mapping/factory.rb: catch up with spec changes (return Symbols instead of Strings). * lib/soap/mapping/mapping.rb: ditto.
71986ef6bc232455deca67017873fff0c3cbd860 2007-02-25 * yarvcore.h: rename: rb_iseq_t#file_name -> filename rb_iseq_t#local_tbl -> local_table add: rb_iseq_t#local_table_size * compile.c: separate local_table_size and local_size (local variable size) * blockinlining.c: apply above rename. * compile.h: ditto. * eval.c: ditto. * iseq.c: ditto. * proc.c: ditto. * vm.c: ditto. * vm_dump.c: ditto.
571317ee309515494bcec3093b88b0c689a3bf0e 2007-02-25 * thread.c (rb_thread_run): fix to ANSI style.
757ed3ccf1047480729f848552dd360d827843d3 2007-02-25 * ruby.h: define RUBY_VM macro and remove NATIVETHREAD* macros. * intern.h: ditto. * signal.c (posix_signal): remove unused function posix_nativethread_signal().
fd6f1f0a7174a412007f24d669790624927fb965 2007-02-25 * win32/Makefile.sub: enable -Zi (debug) option.
e98f7e1eaa18c33d211e6a0cf245eaf4b175c3c7 2007-02-25 * common.mk: change "gdb" rule. You can debug miniruby with $(srcdir)/test.rb on gdb by this rule (type "make gdb"). If you write break points to "breakpoints.gdb" on $srcdir, gdb runs with this file.
9987d53e519cf84fe47ffbbd4f48be0bc40938c7 2007-02-25 * yarvcore.h: add rb_thread_t#top_wrapper, top_self. * eval_load.c (rb_load): support eval in wrapper module (load(file, true)). * eval.c: ditto. * eval_jump.h: ditto. * iseq.c: ditto. * vm.c: ditto. * yarvcore.c: ditto. * insns.def: add a empty line.
8a1b1c2b41b475cc40a8013623b5b6fe5381d6da 2007-02-26 * yarvcore.h, vm.h: rename th_invoke_yield() to th_yield(). * blockinlining.c: ditto. * eval.c: ditto. * vm.c, insns.def: rename th_invoke_yield_cfunc() to th_yield_with_cfunc(). * yarvcore.h, yarvcore.c: rename theYarvVM to ruby_current_vm and yarvCurrentThread to ruby_current_thread. remove yarvVMArray.
bb7a2d40ff6190f819feb3d9eef0caaffec1a3f9 2007-03-21 * compile.c, parse.y, eval.c, intern.h, iseq.c, lex.c, node.h, proc.c, vm.c, vm_macro.def, vm_macro.def, yarvcore.c, yarvcore.h, debug.c, debug.h: merge half-baked-1.9 changes. The biggest change is to change node structure around NODE_SCOPE, NODE_ARGS. Every scope (method/class/block) has own NODE_SCOPE node and NODE_ARGS represents more details of arguments information. I'll write a document about detail of node structure.
baeb828c03e96b1f78c296fe4e12602e57497401 2007-04-12 * compile.c (iseq_compile_each): check node->nd_state == 1, not !0.
cc3871f9dcd8f89d6e554f59ff02c67dde42fc37 2007-04-12 * eval.c (rb_protect): restore cfp ([ruby-dev:30671]).
e0943c481ab3fc3a5a35e3f7a71d97ad93f7036f 2007-04-12 * eval.c (rb_rescue2): restore cfp ([ruby-dev:30582]).
0089455e53628edf94060b56203279ad59c32553 2007-04-12 * thread.c (mutex_try_lock): check and set owner thread. * thread_pthread.ci: fix to show error code in error message.
2dd91facca2337ff611489f1ccd84441d8fc9bf2 2007-04-19 * lib/optparse.rb: fix to override conv proc.
a73894337a830cdd32a913964f3150bc35269975 2007-04-19 * eval.c, node.h, thread.c, yarvcore.[ch], eval_intern.h: support set_trace_func (incomplete. id and klass don't be passed). And support Thread#set_trace_func which hook only specified thread and Thread#add_trace_func which add new trace func instead of replace old one. C level API was modified. See thread.c (logic) and yarvcore.h (data structures). * vm.c, vm_macro.def: add hook points. * compile.c, insns.def: fix "trace" instruction. * iseq.c, vm_macro.h: add compile option "trace_instruction". * test/ruby/test_settracefunc.rb: hook "c-return" of set_trace_func.
52ecaf65b0ff40492c5a85cdd9f5cd34201b4a0e 2007-04-20 * eval_intern.h: add prototypes of rb_sourceline() and rb_sourcefile().
abcbd7ea38f64f942a934ba065aabf9da81a21bc 2007-04-25 * yarvcore.h: remove rb_control_frame_t#callee_id. * vm_macro.def: ditto. * eval_intern.h (exec_event_hooks): fix to check event flags * eval_intern.h (EXEC_EVENT_HOOK): fix to re-check event flags. * ext/probeprofiler : added. this profiler is sampling based profiler. * vm.c: add rb_thread_current_status() API for probeprofiler. * thread.c (rb_thread_execute_interrupts): add comments.
ec4a7ccf86c6be8d54934dd70c8e69fed328a612 2007-04-25 * ext/probeprofiler/probeprofiler.c: fix function name and return value.
9d89855052b008c4f366164e36ab88ed49c21e52 2007-04-26 * compile.c: support multiple splat (e.g, [a, *b, *c, e, *f]).
75d28f887089c8582b63a64cf5df1d0270f15cc1 2007-05-01 * yarvcore.h, compile.c (set_arguments): support post arguments. * test/ruby/test_method.rb: add tests for above. * test/ruby/test_proc.rb: ditto. * proc.c: fix an arity bug ([ruby-core:11029]). * vm.c, vm.h, insns.def, vm_dump.h: fix bmethod process. * vm.c: support block argument on block parameter.
f80841275d23122872e528f75f975270cb7b1624 2007-05-01 * proc.c (proc_arity): fix an arity bug ([ruby-core:11060]).
9ca1fec41b62d40d9cf3b6034e6364290592a7ee 2007-05-01 * sample/test.rb: import matzruby's sample/test.rb.
f53a94c83124ce44a53e4262cdd30ffa53016f1a 2007-05-02 * compile.c: use Qtrue instead of 2. * vm.c, insns.def: support "lambda" calling convention.
1db71b2ecae2d35c700de5a4d8257c3617a093ae 2007-05-02 * eval_method.h: add redefine checks ([ruby-dev:30751]).
fba2420be4f16a74ed867098ef256c3702ffb5d4 2007-05-02 * vm.c, yarvcore.h, yarvcore.c, insns.def: fix to mark VM stack in correct range.
84fbcb9694b01e47c9adbbcb4dbd4f46241940bb 2007-05-17 * debug.c (ruby_debug_node): fix to show node line.
82068396594c85a3686cb73a52a57cb60745b394 2007-05-17 * iseq.c (ruby_iseq_disasm): fix to show post arg info.
ebaec402a7b3ee6c88aaaaa7fa3dfb103f614a40 2007-05-17 * parse.y, compile.c (set_arguments): fix to support in-paren parameter (ex: def foo((a, b))).
affa7430b70336b53cd496496d889c2544d41322 2007-05-21 * compile.c, vm_macro.def: support tail call optimization (on default, this feature is not enabled). * iseq.c, compile.c, vm_opts.h: add "tailcall_optimization" option. * sample/test.rb (test_ok): fix to adjust tailcall stack layout. * insns.def, vm.c, compile.c, yarvcore.c, yarvcore.h: add opt_gt, opt_le instructions.
7c4ff2d3322753479b3974105e5100b6f4e43001 2007-05-23 * cont.c: support callcc which everyone love. incomplete. please give me bug reports. * common.mk, inits.c, thread.c: ditto. * yarvcore.c: export thread_mark(). * yarvcore.h: disable value cache option. * eval_intern.h: set th_get_ruby_level_cfp to inline.
7d200b94f946f0caffa3ea3a72783855e421df32 2007-05-24 * gc.c, yarvcore.c: fix to mark VM structure on startup. * yarvcore.h: disable USE_CACHED_VALUE.
e4aa7208e5b8b5aff35af4b262291ab2c39e66d9 2007-05-24 * cont.c: check across trap violation. * eval.c, yarvcore.h: ditto.
57062d91b9bfb1688151cd2393011504fd26f0d8 2007-05-27 * cont.c: support Fiber. Check test/ruby/test_fiber.rb for detail. Fiber is known as "Micro Thread", "Coroutine", and other terms. At this time, only Fiber#pass is supported to change context. I want to know more suitable method name/API for Fiber (... do you know more suitable class name instead of Fiber?) as "suspend/resume", "call", "yield", "start/kick/stop/restart", .... * eval.c, eval_intern.h, thread.c, yarvcore.c, yarvcore.h: ditto.
d64609463fb755d94922e0d205283416542d9ea2 2007-05-29 * cont.c: fix bug around Continuation and Fiber. * test/ruby/test_continuation.rb: add tests for Continuation.
284565992f487937080230d3ae2b5afae4c8ac3f 2007-05-30 * cont.c (cont_capture): store all local variables in heap ([ruby-dev:30832]). * vm.c (th_stack_to_heap): added. * test/ruby/test_continuation.rb: add a test for above. * eval_intern.h (th_get_ruby_level_cfp): fix to clean code.
66d4a354a874fb8539e0e421a684c34d8890ad22 2007-06-02 * proc.c (Init_Proc): remove a line break.
6b3ef2249cc6d03b9e153a1bbfb24eb12d4032a5 2007-06-02 * cont.c (Fiber#pass): rename to Fiber#yield. Block parameter of fiber body receive first yield values. e.g.: Fiber.new{|x| p x}.yield(:ok) #=> :ok * cont.c: rename rb_context_t#retval to rb_context_t#value. * test/ruby/test_fiber.rb: ditto.
203286673d0c66fdcaf6e65acfa267aaebdc3400 2007-06-05 * insns.def (invokeblock): check block is created by lambda or Proc.new. * vm.c (block_proc_is_lambda): added.
78029f00d5e330ea7bb594d1abef54e490effc2d 2007-06-05 * parse.y (new_yield), compile.c (iseq_compile_each): fix passing parameter. * eval.c, eval_jump.h: simplify rb_yield*. * proc.c (proc_mark): fix to mark proc->block.proc. * proc.c (Init_Proc): add Proc#lambda? * test/ruby/test_lambda.rb: add some tests. * vm.c (invoke_block): fix to check lambda block or not. * vm.c (th_yield_setup_args): fix to check arguments size when lambda block.
64ffdb44402f365198ba45c84fa15e449f3411e6 2007-06-05 * cont.c (rb_fiber_start): clear th->tag and check error to fix [ruby-dev:30888] and [ruby-dev:30889]. * eval_intern.h: fix rb_fiber_start() prototype. * test/ruby/test_fiber.rb: add tests for above.
9a524fad38693240a0ac9c8dbfcb956516475861 2007-06-06 * compile.c (iseq_compile_each): fix around yield arguments (with NODE_ARGSCAT).
15b31b0d80dd9959873d1db0a76e269a556790ac 2007-06-06 * cont.c (rb_cont_call): forbid calling dead fiber with Cotinuation#call.
9c0b2b8b65dc27d27bcd2d417a116e7a343399a2 2007-06-06 * test/ruby/test_continuation.rb: add a test for last commit.
bf544c05d26ec4cb151cd322e69a495a58924a0d 2007-06-06 * eval.c (rb_yield): fix to check Qundef.
6c5a50ff3357c7ca913f9772a8f98a7edcecfcfd 2007-06-06 * insns.def (invokeblock): fix of splat argument. (splat same as normal method dispatch)
ed8897523701745467cf831ff19ec3268856cf6e 2007-06-06 * eval_intern.h, eval.c (ruby_init): remove POP_TAG_INIT(). * cont.c (rb_fiber_start): remove zero-clearing tag.
d80e7373cfb0ca1558bdeb79643c53db5f9ce4d8 2007-06-06 * cont.c (cont_new): add debug message. * cont.c (cont_restore_1): copy stack information from fiber. * cont.c (rb_fiber_s_new): fix to mark created fiber. * test/ruby/test_fiber.rb: add some tests around Thread and Fiber. * yarvcore.c (thread_free): fix to skip freeing stack if root fiber is available.
6d2dee14f3d5d4224effd0ec2d8fbc07dc54cbac 2007-06-06 * test_fiber.rb: add a test (Continuation and Fiber).
8620de6b042f2c069a25d7fdbf5b1d5a3ffd87a9 2007-06-07 * cont.c (cont_restore_1): fix to check root fiber [ruby-dev:30911]. * test/ruby/test_fiber.rb: add a test.
d7d85f9ecdfb34b80a9d44f24462e0bdc1542b7a 2007-06-07 * iseq.c (prepare_iseq_build): freeze filename and name string. * variable.c: freeze class name string.
72734ac15451af26a7eac789cfaa3ed61bd002f8 2007-06-07 * thread.c (rb_thread_execute_interrupts): invoke ensure when main thread exits.
3a6860058ef4990c519dd21ba67e422010cbcbe1 2007-06-08 * eval_jump.h: th->errinfo should clear with nil.
f84c8cb19079cbfe2b5433a7b3e1eca4eae3ef22 2007-06-15 * sample/test.rb: fix to show line information whether test succeeds.
31ac946975a8e20157e1f47d23546ae237484024 2007-06-15 * cont.c (rb_cont_call): forbid cross fiber continuation call. * test/ruby/test_fiber.rb: ditto.
70df6311af85b7f53b5c730502d4b9a94fa23cc9 2007-06-15 * eval.c (ruby_finalize_1): rb_thread_t#errinfo should be clear with Qnil.
7567fbf080552e04df4b5d2af9d601cf1d345b11 2007-06-15 * vm.c (th_yield_setup_args): |v| should work as |v,|. ex) def m;yield 1, 2; end; m{|v| p v} #=> 1 * parse.y: apply above change for "for" statement. * test/ruby/test_assignment.rb: ditto * test/ruby/test_basicinstructions.rb: ditto. * test/ruby/test_iterator.rb: ditto. * test/ruby/test_yield.rb: ditto. * compile.c (iseq_compile_each): fix debug.
7307d38c4fb5c6943bab8859e178d2d28769a64c 2007-06-15 * test/ruby/test_iterator.rb: remove debug code (GC.stress=true).
afb1901848f9b6998f320423474e830a1e95d780 2007-06-15 * hash.c: exchange semantics of Hash#each and Hash#each_pair. pointed out by [ruby-dev:30997]. * test/ruby/test_iterator.rb: ditto. * test/ruby/test_yield.rb: ditto.
5cbefb96b998480208b26ea260658c985bf7b861 2007-06-15 * insns.def(setconstant, toregexp): fix to mark object correctly.
4471bf2356b86683c8490de12d2d199eea461e3a 2007-06-17 * signal.c (sigsegv): clear gc_stress flag on SEGV.
d220634bb7d1e3b13e12fe444de709c4ab9df458 2007-06-17 * vm_dump.c (vm_stack_dump_raw): hide VM stack trace.
8adc4541ff4fa7caa2fbd3c006465305e21e336a 2007-06-17 * vm.c (env_mark): fix to mark block.proc. * vm.c (th_make_proc_from_block): set created proc to block->proc.
3aa45744ab0d100934dcefcc90fdf157f259c7f4 2007-06-24 * bootstraptest/runner.rb: set default directory to '/tmp/bootstraptest.tmpwd' and add --dir option. fix to output driver and target information. * common.mk: fix to run btest on BASERUBY and add OPTS to pass option ("make btest OPTS=...").
68e02f2c2cc98e6ab736b3122aafe7a2398642f6 2007-06-24 * vm.c (callee_setup_arg): added. support correct post arg. * vm_macro.def (macro_eval_invoke_func): fix to use callee_setup_arg. * compile.c (set_arguments): adjust for above changes. * compile.c (iseq_compile_each): ditto. * iseq.c (ruby_iseq_disasm): ditto. * yarvcore.h: add rb_iseq_t#post_arg_start and arg_size. * bootstraptest/test_method.rb: add post arg tests.
adc677eb5cd3aed1986c3316d5b98ed942f544d5 2007-06-24 * insnhelper.h: change CHECK_STACK_OVERFLOW() to throw exception. * vm.c (caller_setup_arg), vm_macro.def: remove macro_eval_setup_send_arguments and add caller_setup_arg(). * insns.def: ditto. * bootstraptest/test_method.rb: add splat arg tests.
f2074245b4c4d712cb74716c680d876eda9b8789 2007-06-24 * insns.def, vm.c: add/fix stack overflow check.
1757fc9927fe25b761fca9f2391d1982e7a781c3 2007-06-24 * vm.c, vm_macro.def : remove macro_eval_invoke_cfunc() and add vm_call_cfunc().
59202b7ab8147f3947900a919fcf82bc5f3e74e7 2007-06-24 * insnhelper.h (RESTORE_REGS): add do/while(0) around macro. * vm.c, vm_macro.def: remove macro_eval_invoke_func() and add vm_setup_method(). use it instead.
904b9e5d547f4f9a9f3236d2633f0cb6d7aae14c 2007-06-24 * vm_macro.def: removed. * insn_send.ci: added. this file includes send instruction body. * common.mk: ditto. * insns.def: ditto. * tool/insns2vm.rb: ditto. * vm.c: ditto.
62deb7dbbda5104c352abd723053bd1b18e50dbf 2007-06-24 * insn_send.ci: removed. * common.mk: ditto. * vm.c (vm_call_bmethod), isnsn.def: added. fix to use this function instead of using goto. * vm.c (vm_call_bmethod): renamed from th_invoke_bmethod(). * vm.c (vm_method_missing): renamed from eval_methdo_missing(). * vm_evalbody.ci: remove tmp_* variables. * insnhelper.h: add some macros. * insns.def: forbid zsuper from method defined by define_method(). * test/ruby/test_super.rb: ditto.
a5c2d584284e2b137b1d4d06574470a971c9087e 2007-06-24 * eval_method.h (rb_add_method): fix to check 0.
97ba019c9410ccb5ec76f6b54fd2e140b7583038 2007-06-24 * vm.c: some refactoring. * rename th_* to vm_*. * remove unused variables functions. * add prototypes. * blockinlining.c, compile.c, cont.c, eval.c, eval_intern.h, eval_jump.h, eval_load.c, inits.c, insns.def, iseq.c, parse.y, proc.c, process.c, signal.c, thread.c, vm.c, vm_dump.c, vm_evalbody.ci, yarvcore.c, yarvcore.h: ditto.
61fa3576222f7bee1ecc8486075baee62936c840 2007-06-24 * insns.def (invokesuper): fix error message.
7980e653e57ae5b539533dee1d0b1a00fc16ea5d 2007-06-24 * call_cfunc.ci: removed. * insnhelper.ci: added. this function includes all functions that vm insns need. * common.mk: ditto. * insnhelper.h, vm.h, vm.c: move some declaration. * gc.h: remove GC_CHECK() macro because GC.stress is more useful. * compile.c, iseq.c, vm_dump: ditto. * gc.h, thread.c: move a prototype decalaration. * debug.c, debug.h: rename some functions. * compile.h: ditto.
144ff322c7adcc600139da1cfacf0e98010c1bce 2007-06-24 * insnhelper.ci (caller_setup_args): add need_block_check option. * insns.def: ditto. * yarvcore.h: add GetCoreDataFromValue().
6bd0345627f383f1d1b041edba2a255ea4cdfb9b 2007-06-24 * eval_*.h: rename to eval_*.ci. * common.mk: ditto. * eval_error.ci: remove ruby_set_current_source(). * error.c, eval.c, ruby.c: ditto. * eval_safe.c, proc.c: remove unused macros.
f58eb1e276a2db3ff2062c80a7acf97860aca8ca 2007-06-24 * 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.
4bdb5ced9a06532d33e6aa0dd6be49e863b31d22 2007-06-25 * gc.h: add RUBY_ prefix to debug macros. * cont.c, proc.c, yarvcore.c, * gc.c: define ruby_gc_debug_indent variable to debug mark/free. * vm.c, insnhelper.ci: rename some functions to vm_* or rb_vm_*. move some functions, definitions, declarations to suitable files. * eval.c, yarvcore.h, eval_error.ci, insnhelper.ci: ditto.
ed4e57690c9cc782ab8675c4bf48153ce0a36896 2007-06-25 * insnhelper.ci, vm.c: complete block parameter support. post arguments, optional arguments, block argument. * compile.c, parse.y: fix {|a|} parameter. * insnshelper.ci, insns.def: revert caller_setup_args() option (need_block_check) parameter.
762a7ec12e1cd6cd59129eeb1ed42035157ded2a 2007-06-25 * compile.c (setup_arg): support kind of "m(*ary, x)" method call. ([ruby-dev:31048]).
0043929b5f564ef6c9377d8321a4e4a4b7ec6e14 2007-06-25 * compile.c: rename setup_arg() to setup_args(). fix to use setup_args() at processing NODE_YIELD.
702e431f1b3741ac3e88d05e450f32b745207f5c 2007-06-25 * cont.c (rb_fiber_s_new), yarvcore.c (th_init2): fix to clear VM stack ([ruby-dev:31046]).
1a49d91fddf47bd791836a20505558c724fa491b 2007-06-25 * cont.c (rb_fiber_s_new): fix to clear rb_thread_t#tag.
8bfcdf323f1843237140e9f119496b93557eaefd 2007-06-25 * insnhelper.ci (vm_yield_with_cfunc), proc.c: fix Method#to_proc to return lamba Proc ([ruby-dev:31021], [ruby-dev:31037]).
931574010102b4bd9db6cfb17b840e28b26030e6 2007-06-26 * cont.c (rb_fiber_s_new): revert initializing VM stack. * yarvcore.c (th_init2): ditto. * vm.c, vm.h: fix to stop using Qundef on VM stack. According to this change, VM stack should not include Qundef value. * insns.def (putundef): removed. * compile.c (iseq_compile_each): ditto. * eval.c (eval): fix spacing.
02ae0a3e76dab85cfe7a363bf23d00d3af9e2455 2007-06-26 * iseq.c (ruby_node_name): update node names.
ab7c645fee1f3776951da9928c57f774c80e55ce 2007-06-26 * thread.c (rb_thread_wait_fd_rw): terminate fdset.
30ab3f75f9a8399c300359ea84e25f9a93df73ae 2007-06-26 * compile.c (compile_massign), insns.def (expandarray): support postarg with massign (a, *b, c = ...). * bootstraptest/test_massign.rb: add tests for above. * compile.h: fix debug macro names.
35ecb83d413f5d7143dd269b2d591cb742526a90 2007-06-26 * compile.c (iseq_compile_each): fix type error.
c44e2cdd58efbe13ed3b57cd56f98fc81ea64c2e 2007-06-27 * vm_evalbody.ci: support OPT_CALL_THREADED_CODE. * insns.def, vm.c, vm.h: ditto. * vm.h: add VM_CFP_CNT() and VM_SP_CNT().
41e9245e853c6d1f02a60f431afa87aeb7749787 2007-06-27 * compile.c (iseq_translate_direct_threaded_code): fix prototype function name. * vm.h: add correct cast.
4a7d47e41a771bda537ce92139500fb441ad6fd3 2007-06-27 * compile.c (iseq_compile_each): fix popped backref and others. ([ruby-dev:31068]). * compile.c (iseq_compile_each): remove needless statements.
fd78c2193e7032389a2a3ff9154654fa231ac8f0 2007-06-27 * include/ruby/node.h, parse.y, gc.c, iseq.c: remove NODE_CREF.
caa535286d7442ddcbc1caf9fb2778efd435c56d 2007-06-27 * bootstraptest/runner.rb: fix to show file name. * bootstraptest/test_*.rb: add bootstarp tests.
c1ac175af5d819d319e4410602be9a9e64e37566 2007-06-27 * compile.c (setup_args): change parameter type.
c1849cf09476181825ab5f59f819245d3559bfa2 2007-06-27 * bootstraptest/runner.rb: fix to untouch $:.
fd58a0836f2c4d0cf1c03be97011691a29a035ba 2007-06-27 * common.mk (run.gdb): fix to load $(srcdir)/.gdbinit * vm.c (rb_vm_set_finish_env): add a cast. * vm.h: support __fastcall for MSVC.
b73d7a44aa97a422f9a6781b87fb9a0f12b9b56b 2007-06-28 * compile.c: fix to remove -Wall warnings on gcc. * compile.c (make_name_with_str): removed. use rb_sprintf() instead.
480c602bdc9ad15c40e093bd1acf9776e3ade5de 2007-06-28 * win32/Makefile.sub: define FUNC_FASTCALL macro. * vm.h: fix to use FUNC_FASTCALL macro. TODO: add FUNC_FASTCALL macro by configure.
ca9b486294fa860c5fbe9a3b29e1cde7b4935b7c 2007-06-29 * tool/insns2vm.rb, lib/vm/instruction.rb: move process body to lib/vm/instruction.rb. * common.mk: fix aotc rule. experimental. bin/ruby2cext is not added yet.
3d04e2e40f1bbcf2ad56e4a19f72178d33dbf596 2007-06-29 * configure.in: add fastcall attribute check.
6aacb0ede41385bf1bb6328931a5c071de7345d3 2007-06-29 * proc.c (proc_new): fix to return a proc object which block is contained.
6c635566c08f8c44ff98dbcd8f19f518109d549f 2007-06-29 add a Mainling list pointer.
e648fc492344f07744ad3c32d9fbe405c9dd8a43 2007-06-29 add a Mailing list pointer.
0d7e74a6bebf02a289f77c13c34dc5c8d4934478 2007-06-29 * parse.y: fix to show line number of blank block. [ruby-dev:31093]
eb9aaa4c4fdaee9225e1843a71b5cdefaf179db6 2007-06-30 * vm.h: rename insn_func_type to rb_insn_func_type. * vm_evalbody.ci: ditt. * insns.def: add opt_call_native_compiled instruction instead of opt_call_native_compiled.
6a69ad4df1719516a2da8b95872d3a44deae026c 2007-06-30 * yarvcore.h: some refactoring on rb_iseq_t. rename some variable names, add comments, etc. * compile.c, iseq.c, proc.c, vm.c: ditto.
061cce6d6f98021d5c5d1b7912d4fcf1955f5240 2007-06-30 * insnhelper.h, vm.h: some refactoring. remove useless comments, etc.
27013e71e4ca0417ad8a694bb743de5457ed3ff7 2007-07-01 * yarvcore.h, compile.c, insnhelper.ci, iseq.c, vm.c: rename structure names and field names. * insnhelper.h, insns.def: add GET_CONST_INLINE_CACHE(). * iseq.c: add rb_iseq_build_for_ruby2cext(). * yarvcore.h, vm.h: move declaration of rb_insn_func_t to yarvcore.h.
1ccf555a707324facc28f8a8f075c5e23a0a359d 2007-07-01 * compile.c, iseq.c: fix iseq some of load/store process.
9c708baa2de1db5eb3541459385967c9b6a8dbd4 2007-07-01 * eval_intern.h, yarvcore.h: move declaration of sysstack_error to yarvcore.h. * iseq.c: fix symbol name (:toplevel -> :top). * lib/vm/instruction.rb, template/vm.inc.tmpl: replacable current file name.
ee457d92c2d99d85f61346ccd7dd3a6c21b294b6 2007-07-02 * compile.c: rename iseq_translate_direct_threaded_code() to iseq_translate_threaded_code(). * eval_intern.h, yarvcore.h: mv EXEC_EVENT_HOOK() and exec_event_hooks() to yarvcore.h. * insnhelper.ci, vm.c: mv yarv_finish_insn_seq to vm.c. * insns.def (opt_call_c_function): fix to use RESTORE_REGS(). * iseq.c (rb_iseq_build_for_ruby2cext): fix to allocate iseq.
0e5360b2e406fd0f182e62bc5cb38be4d43a9afc 2007-07-03 * cont.c (cont_save_machine_stack): clear saved_thread.machine_stack*.
d82f3e7d5cf98f484cd1b3ed397e45d2fd7cf806 2007-07-03 * compile.c (compile_massign): fix massign compilation (example: a, *v, (*x) = ...). [ruby-dev:31107] * bootstraptest/test_massign.rb: add tests for above.
1d8ce92a37df9e8c1f9a68de82fee8c9b3e66af6 2007-07-03 * compile.c (iseq_compile_each): support v[&b]= type method call. [ruby-dev:31094] * bootstraptest/test_method.rb: add a test for above.
590609f255378694c085b5ee20a6a083d4eab0c3 2007-07-03 * compile.h: fix debug print level.
43bbe2841daf838111aa3f2687c23506191e76e7 2007-07-03 * compile.c (compile_array): ignore NODE_ZARRAY. [ruby-dev:31110] * bootstraptest/test_method.rb: add a test for above.
04e9a81b8e969dd4827219572880c05e5fbac2f8 2007-07-03 * compile.c (compile_array, iseq_compile_each): fix about array generation in void context. [ruby-dev:31102] * bootstraptest/test_literal.rb: add a test for above.
21b644e8123d357df653b65689273be51617bae3 2007-07-03 * insnhelper.ci (caller_setup_args): fix to show correct class on an error message (ex: m(&1)). [ruby-dev:31101]
e96cd603e5f5da7a887cff4feded62ff05d02d0d 2007-07-03 * iseq.c (set_relation): added.
0bb4c2b3db16c7e1c23877f1f1efc216c601f3d0 2007-07-05 * compile.c (iseq_compile_each): add break catch point. * insns.def (throw): support correct "break" and "return". this commit achieve that "make test" passes all tests. * vm.c: ditto.
6a858e554c646c52f05f38b876e97322302c5c3d 2007-07-05 * test/ruby/test_basicinstructions.rb: remove an assertion using unsupported hash literal (such as {1, 2}). * test/ruby/test_hash.rb: ditto.
0d0ef6eccc50ed95d8babcf5381426c70c4d4b30 2007-07-05 * yarvcore.h: rename rb_control_frame_t#magic to flag. * vm.h: add VM_FRAME_TYPE() and VM_FRAME_FLAG(). * cont.c, insnhelper.ci, insns.def, vm.c, vm_dump.c, vm_evalbody.ci, yarvcore.c: apply above changes.
b9171a73c4f0d212b723e0160859ab69b89b3339 2007-07-05 * insns.def: fix to invoke nil.to_splat on NODE_ARGSCAT. [ruby-dev:31138]. * bootstraptest/test_literal.rb: add tests for above.
976bfae03be67236543367aef7b8a22df02cd37b 2007-07-05 * insns.def: remove unused code. * compile.c (compile_massign): fix to invoke to_splat on splat rhs (example: *a = *nil). [ruby-dev:31136] * bootstraptest/test_massign.rb: add tests for above. * compile.c (iseq_compile_each): disable excess optimization. [ruby-dev:31126]
9aa9c07c077d918a2a70c7e60402d1e475c6686a 2007-07-06 * test/ruby/test_iterator.rb: fix test to 1.9 spec.
616f4d33856a539e89aadfbf75ebb17acc7781da 2007-07-06 * bootstraptest/runner.rb: fix load path. * common.mk: fix "test" rule to run with "btest". * rubytest.rb, sample/test.rb: fix to show tests progress.
0afe6cb08f97a2fdbfb945f8b5685a5fe79fa184 2007-07-07 * insnhelper.ci (vm_yield_setup_args), vm.c, insns.def: fix to pass nil as block parameter to yielded block. [ruby-dev:31147] * bootstraptest/test_block.rb: add a test for above.
0ec2b20d2f1339ab1e4d41567f9b37d733802968 2007-07-07 * parse.y: fix node construction (around f_margs). [ruby-dev:31143] * bootstraptest/test_block.rb: add a test for above. * insnhelper.ci: fix indent.
079976cac25cdc31805479a66c21c7fec1f9c2d2 2007-07-07 * compile.c: use rb_bug() instead of rb_compile_error().
a6e3d19f3ac344613da68dff705fb411d9120d63 2007-07-10 * 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.
3ead5dcfb461a1ae8d7f48cbee408e1478783153 2007-07-10 * eval.c (exec_under): add proper casts.
bc1e2ab306ada94a7169d5812dd8252743553102 2007-07-10 * eval.c, insnhelper.ci, vm.c: change cref index (-1 -> 2).
302c311199c80ac9094dfa2b9781e6240f6a3092 2007-07-10 * 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().
6b6bf4dd481f744faf54b5efcda5f32e4565bd7d 2007-07-12 * blockinlining.c: remove "yarv" prefix. * array.c, numeric.c: ditto. * insnhelper.ci, insns.def, vm_evalbody.ci: ditto. * yarvcore.c: removed. * yarvcore.h: renamed to core.h. * cont.c, debug.c, error.c, process.c, signal.c : ditto. * ext/probeprofiler/probeprofiler.c: ditto. * id.c, id.h: added. * inits.c: ditto. * compile.c: rename internal functions. * compile.h: fix debug flag. * eval.c, object.c, vm.c: remove ruby_top_self. use rb_vm_top_self() instead. * eval_intern.h, eval_load: ditto. * gc.c: rename yarv_machine_stack_mark() to rb_gc_mark_machine_stack(). * insnhelper.h: remove unused macros. * iseq.c: add iseq_compile() to create iseq object from source string. * proc.c: rename a internal function. * template/insns.inc.tmpl: remove YARV prefix. * thread.c: * vm.c (rb_iseq_eval): added. * vm.c: move some functions from yarvcore.c. * vm_dump.c: fix to remove compiler warning.
aebce0bb76fb68bb734ec4fc081ae0ece183990e 2007-07-13 fill ChangeLog entry.
b626539e9b5cead657348e93d9f36d95d533b1eb 2007-07-13 * include/ruby/intern.h: remove unused function declarations. * include/ruby/ruby.h: ditto.
2829c72cce152f5d0d198e47b9ea0c00ab44cc1e 2007-08-06 * bootstraptest/runner.rb (assert_equal): add additional message parameter.
1a300415363ed3b87a7210aaed79623510e1fc9e 2007-08-06 * parse.y: fix a f_marg rule. [ruby-dev:31160]
1951ef76cec33f2e6abcdb1a017972d53c032cfb 2007-08-06 * parse.y (value_expr_gen): fix to cause "void value expression" when jump expression such as "next" are shown on value_expr(). [ruby-dev:31119] * bootstraptest/test_syntax.rb: fix to above change.
18c81c3d3ef53c6548c5fa0cad90efe2b3ae93cf 2007-08-06 * sample/test.rb: fix to output file name if it contains invalid syntax.
fe0f6734bf0ee31f17b29e2e1c90d2ce8fb58e3f 2007-08-06 * lib/vm/instruction.rb (make_header_analysys): add to separate header addition process.
7e2b837a3939b0c7473728c12579dd8930c3cfaf 2007-08-06 * lib/vm/instruction.rb (make_header_analysys): fix last commit.
ae421c43dfda6e9a1e9af1edaa649a3de17ff07a 2007-08-06 * insnhelper.ci, insns.def: move some statements to functions. * vm.c, vm.h, vm_evalbody.ci: fix include/typedef places.
99b51f6020e847826d60a5bae0fca451cf2e7994 2007-08-12 * template/yasmdata.rb.tmpl: fix type and name.
b1c5d848f89dc4bc7a25909fed26b4d8dcebb074 2007-08-12 * vm_dump.c (debug_print_pre): fix to show control frame count. * insns.def (opt_call_c_function): fix operand type. * lib/vm/instruction.rb: ditto. * insnhelper.ci (vm_push_frame, vm_pop_frame): fix to show control stack status on if VMDEBUG == 2. * vm.h: add a comment about VMDEBUG. * iseq.c (find_prev_line_no): fix to skip bug report if line is not found. * lib/vm/instruction.rb: fix to use build_string() on source code generators.
fc234a916a18f27b47005358c8ae3f7e4205415a 2007-08-12 insnhelper.ci: missed at last commit.
161b2e264fcfc0ecb046b35245139e02847bbdb0 2007-08-12 * compile.c (iseq_peephole_optimize): fix peephole optimization bug. [ruby-dev:31360] * bootstraptest/test_syntax.rb: add a test for above.
d7a19d03334075e29e14e0e2065d29b73e5d5350 2007-08-12 * thread.c (rb_thread_raise): check if target thread is thrown by another thread or not. [ruby-dev:31371] * bootstraptest/test_thread.rb: add a test for above.
9cdeae9dad9f8ac8fe50b6b6f01ecd76f21f5e6b 2007-08-14 * common.mk: change test order (test -> btest).
14c3aa52aeff4fed170b3dbe8666aaa851b654d2 2007-08-14 * proc.c (Init_Proc), eval.c (Init_eval), eval_intern.h: move init place of exception_error. * inits.c: ditto. * eval.c (Init_eval): set exception_error#throwed_state as TAG_FATAL. [ruby-dev:31407] * bootstraptest/test_exception.rb: add a test for above.
686535d403395587995082e5436f3131e80a04d7 2007-08-15 * process.c (proc_geteuid): fix strange cast. [ruby-dev:31417]
fe898043ccc99f3e127c63e0c18f4d2233bfa555 2007-08-15 * parse.y: fix rules around f_margs. "make test" passes all tests. * bootstraptest/test_block.rb: add some tests for above.
fc5885aa7a6be99bf19a827a42d1de157a1f4a94 2007-08-15 * parse.y: remove "//" type comment.
0aecfb04393982d79907539dcd202c71c28c7f53 2007-08-15 * inits.c (rb_call_inits): change initializing order. [ruby-dev:31420]
f13e9b734cbdec6f93796aa68feb95f0b123a040 2007-08-15 * gc.c (os_live_obj): fix to skip T_VALUES. * sample/test.rb: add an ObjectSpace test.
3efcb087a37b73f2c3095dcfbf44bfd7b43ae4d1 2007-08-15 * cont.c (rb_fiber_m_yield): added. use this function for Fiber#yield instead of rb_fiber_yield.
571f22f5fe3fd3e265512c0e9ee4720482443301 2007-08-16 * compile.c (iseq_compile_each): fix next/redo stack consistency. [ruby-dev:31373] * bootstraptest/test_syntax.rb: add tests for above. * sample/test.rb: fix to use __FILE__ instead of $0 to know basedir.
e7c3478261c30c64092a0f9532cb8b714911e1e8 2007-08-16 * insns.def (throw): insert a RUBY_VM_CHECK_INTS(). [ruby-dev:31361]
4657257b75ff1d88e2653e4c408b0d98e7fbdc9a 2007-08-16 * iseq.c (ruby_iseq_disasm): fix to show arg_simple value.
fc466622fd220b1d907d86cdbc3f74acc11a58ca 2007-08-16 * compile.c (iseq_set_arguments), insnhelper.ci (vm_callee_setup_arg, vm_yield_setup_args): fix block parameter problems. [ruby-dev:31437], [ruby-dev:31440] * bootstraptest/test_block.rb: add a test of [ruby-dev:31440].
04176dc21fb74c26a12895319a86eb2c3b138f90 2007-08-16 * compile.c (iseq_compile_each): fix thorw insn option of next.
e5d5f5a61a484c5d3993cee2c02c4f501a6f74f8 2007-08-17 * thread.c (rb_thread_terminate_all): fix to ignore exceptions. * thread.c (thread_start_func_2): fix abort_on_exception process. [ruby-dev:31394]
b982cff67c1e7e879b4532f496c40d9ebd3b1c0d 2007-08-17 * 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.
ad272173cdeb8233757088d765ed16444dc7d17a 2007-08-17 * test/ruby/test_basicinstructions.rb: fix old tests. class variables should be inherited.
2c5463fe99df8868e53817af834f1ecec9875515 2007-08-17 * compile.c (iseq_compile_each): massign should return rvalue(s).
4d3a58bc693dc589293426c0115cbc6897e0a45e 2007-08-18 * compile.c (iseq_set_arguments), insnhelper.ci (vm_callee_setup_arg, vm_yield_setup_args): * bootstraptest/test_block.rb: add tests for above.
77cc5f203126933569bb28ec77f8d3fb9df78019 2007-08-18 add ChangeLog entry.
f72409043cb0e9cdea665ee7248ec98a9e523016 2007-08-18 * bootstraptest/test_exception.rb: add escape character ("\") for editors.
2e83c555d83d379f65f8e6af79ce7bda36a7ba2c 2007-08-18 * insnhelper.ci (vm_callee_setup_arg): fix to check arguments correctly. [ruby-dev:31472]
42cf6ee7530e312288ff78236f552e1b6d5ca341 2007-08-18 * eval.c: $! should not be writable. * eval.c (rb_rubylevel_errinfo): added. rb_errinfo() returns rb_threa_t#errinfo. rb_rubylevel_errinfo() returns $! value.
0c031468fe31537bad55ce558e22a6c5da527d7d 2007-08-18 * compile.c (iseq_compile_each): fix to allow self.x= if x= is private. * bootstraptest/test_method.rb: add a test for above.
2c5ae0eebad1397653f5dac5982cd5eba14ff35d 2007-08-18 * insnhelper.ci (vm_call_bmethod), vm.c (vm_invoke_proc_core): fix to do not restore $SAFE when proc invoked by bmethod. * vm_core.h: ditto.
98e7aa679a65fc0ec8e476c52b7254d4d6d2350d 2007-08-19 * insnhelper.ci (vm_callee_setup_arg): fix to mark enough VM stack. [ruby-dev:31492]
cd30220afff0d5473022bfb5749716364ebc05a8 2007-08-19 * insnhelper.ci (vm_call_bmethod): fix to propagate information that this proc is "from Method". [ruby-dev:31490] * proc.c (method_proc, rb_mod_define_method): ditto. * vm.c (vm_invoke_proc_core): removed. * vm_core.h: ditto.
0a02ad5e2e2cdd7e3dcb33f40eae056a8dfdc639 2007-08-19 * compile.c (iseq_compile_each/NODE_RESBODY): fix to add additional nop to prevent tailcall optimization. * vm_opts.h: clean up comments.
ad56f8c6110bd8233a4f2224ccdd1cc7ef645dc1 2007-08-20 * enumerator.c (next_i): fix to return with Fiber#yield at the end of each block. [ruby-dev:31470] * enumerator.c (enumerator_next_p): call init_next if not initialized. [ruby-dev:31514] * test/ruby/test_enumerator.rb: add tests for Enumerator.
2d3724e05833f79e19f729195fdf0f01f081c5a6 2007-08-20 * test_enumerator.rb (enum_test): fix to return sorted array (for Hash test).
3fffbe1e82d974a3bb6cdba58733086a369d4b06 2007-08-20 * test/ruby/test_enumerator.rb: fix last commit.
c629aecbc810e8014a88943a2b3ddcb716aa6ffb 2007-08-20 * benchmark/bm_vm2_case.rb: add a new benchmark. YARV optimize case/when syntax. If every conditions are literal (such as Symbol, Fixnum, String), dispatch calc order will be O(1).
c5e4cd063838033dff617f360a5b670b9eedaece 2007-08-21 * 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.
e9a2d02fec6e3d662ed536f5b38bcbcedb549fa0 2007-08-22 * bootstraptest/test_knwonbug.rb: added. This file will contain test cases which point out known bug. If bug is fixed, tests should move to the suitable place. * bootstraptest/test_massign.rb: move a test which show known bug to test_knownbug.rb.
95f37b477e09e2cfd2b75640ec805e1e6b7dd853 2007-08-22 * bootstraptest/test_knownbug.rb: fix typo of filename (test_knwonbug.rb).
e39eb9dab50eaa681467e51145b37cdc11667830 2007-08-23 * compile.c, insns.def, parse.y: fix massign order. This change causes performance problem. Try vm1_swap benchmark. [ruby-dev:31522] * insns.def, insnhelper.ci: move process body of expandarray insn to vm_expandarray(). * bootstraptest/test_knownbug.rb, bootstraptest/test_massign.rb: move a solved test.
ac150ad226ce961dd8b0563cb2cd52ca07beb71e 2007-08-23 * compile.c: optimize simple massign.
b285d26a16c90f8e2d491592e793c3b40545aaf1 2007-08-24 * compile.c (compile_massign_opt): fix to skip massign optimization with global variables. * bootstraptest/test_massign.rb: add some tests for above.
6bf7d3d8c08dbd96ec485bb856cb739139e720bc 2007-08-24 * prelude.rb: added. run this script on startup. * tool/compile_prelude.rb: compile prelude.rb to C string. (prelude.rb -> prelude.c) * common.mk: fix to build with prelude.c. * inits.c (rb_call_inits): ditto. * thread.c (Init_Thread): move definition of Mutex#synchronize to prelude.rb.
487a7da22df69432d471a80982c446ec2e7db649 2007-08-24 * benchmark/bm_loop_generator.rb: added.
85e3b4703208af36a0b15ecaf12c17f658138d8c 2007-08-24 * prelude.rb: fix Mutex#synchronize definition.
2f17991bd12e45ba5e4ca4ae973ba0af3887b5d6 2007-08-24 * tool/compile_prelude.rb: fix to include "vm_core.h".
d866a4202518df17b0acd02a601a56a4b44e252e 2007-08-24 * id.h, id.c: remove idFuncall. * compile.c (iseq_specialized_instruction): ditto.
c289cf3a1ffa71217e597df051d945ff24126379 2007-08-25 * prelude.rb: add Thread.exclusive. This class method is different from 1.8's. Thread.exclusive only does synchronize with VM global mutex.
977d66ec993b0f1892fb3e4cd8ac1c41716daf85 2007-08-25 * 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'.
c2a734ea9946f88109b5ffc4507af66eed7f8cc8 2007-08-25 * cont.c: rename FIBER_STACK_SIZE to FIBER_VM_STACK_SIZE.
5ba27573a0d179d0a39d9997cfde000b20cd0b87 2007-08-25 * string.c, include/ruby/intern.h: export rb_str_length(). * insns.def: use rb_str_lengt() in opt_length.
cf16f0de0f01cbabec98e6efe8bcaaef2edeefe1 2007-08-25 * test/ruby/test_fiber.rb: fix to require 'continuation'.
343c363d5b1374f3aca6f9ba6d755a156d03f3f5 2007-08-25 * insnhelper.ci (vm_call_method): fix to relaxant safe level check ($SAFE > 2). [ruby-core:11998] * bootstraptest/test_method.rb: add tests for above.
2ca7ad139f651baa6b8093f0f51fc0358e47b2c9 2007-08-25 * insnhelper.ci (vm_setup_method): reorder code for branch prediction.
d55c0f53825546c309dc613e34a96b2b13d61170 2007-08-26 * cont.c: fix to remove Fiber.new until fiber.so is not loaded. * test/ruby/test_continuation.rb: fix to use resume.
6244e502cc12a7b8c5698740d3b5b355c1695e37 2007-08-27 * 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.
88f13dfc7276ac7fbc4f010de9848ed8652c369c 2007-08-27 remove conflict sign.
a22a489cdeafc3a92db2bd1dead932fac6cb3a4f 2007-09-06 * common.mk: fix typo.
8b92f5df326ed21d1afeb8e7a6f46587846c9a1f 2007-09-14 * insnhelper.ci (vm_expandarray): should be volatile value for GC.
d5e687b724f067fbd83652ed8f6aa037395861c0 2007-09-14 * vm.h, eval_intern.h: move some macros to eval_intern.h. * eval_jump.ci (rb_f_throw): fix to use NEW_THROW_OBJECT(). * eval.c (rb_f_loop): remove additional macro.
34530b1ad317cb522233c72cb4dc0895a0f9cf6f 2007-09-14 * bootstraptest/runner.rb: add a stress test (-s).
3e3953cd66b2204c12b779b73192d7f025019cb5 2007-09-14 * insnhelper.ci (vm_expandarray): assignment should be placed after creating new array.
64221159aa3e9aa183d6083b04cca50de8009f93 2007-09-14 * test/ruby/test_io.rb: tests which cause SEGV should not be added. * bootstraptest/test_knownbug.rb: add above test to known bug.
e826eec433728676af1bde2f6dde74a6f7126693 2007-09-26 * cont.c: Fiber as SemiCoroutine on default. [ruby-core:12146] * ext/fiber/fiber.c: enable Fiber#transfer.
94331261e94b15fe06df26ec78668480c17537f5 2007-09-26 * insnhelper.ci (vm_throw): fix to move increment point. [ruby-dev:31840]
67aa07f44d40e5e67081c6e8fef5af49caee1525 2007-09-26 * eval.c (eval): fix to check stack overflow. * eval_intern.h, vm.h: move CHECK_STACK_OVERFLOW() macro.
f902e0946044222e4214ddde0e63ba64a435d7bb 2007-09-26 add ML number.
ff2af1ed9843ac3bb7cddc014b58b5dcde225ebd 2007-09-26 * bootstraptest/test_knownbug.rb: move fixed tests. * bootstraptest/test_method.rb: ditto. * test/ruby/test_io.rb: ditto.
55f7f3dd3c9569a33589e481cae8d727cafa60e5 2007-09-26 * bootstraptest/test_knownbug.rb: remove a fixed test.
29538dbb0ed5dda03ecd6348b33ab29d174fcb58 2007-09-27 * ext/fiber/fiber.c: modify prototype declaration. [ruby-core:12247]
87375866a629e64a646c1b32d0e50926a729ca11 2007-09-27 * benchmark/driver.rb: added. * common.mk: fix to use above driver. * benchmark/prepare_so_count_words.rb: added. * benchmark/bm_so_count_words.rb: fix benchmark process.
2fe11b75d631ea10a3dd3acbdb25ce40cb40a411 2007-09-27 * benchmark/driver.rb: fix to output some helpful messages.
6698dd81e6d05b76baddf76703308c5d20f2a492 2007-09-28 * benchmark/driver.rb: fix file selection algorithm.
225e95fe830494bf929a09f96ac518534e8b67fd 2007-09-28 * benchmark/bm_app_erb.rb: added. * benchmark/bm_io_file_(create|read|write).rb: added.
8aa618d8e27e9728b6d102bf69e3294d7e9283e6 2007-09-28 * benchmark/driver.rb: fix to output benchmark results to file "bmlog-#{Time.now.strftime('%Y%m%d-%H%M%S')}.#{$$}". * benchmark/bm_io_file_create.rb: remove useless codes. * benchmark/bm_vm2_eval.rb: added.
30b2cb380e0a8f777a2fc2d736c2ccddf3362fcd 2007-09-28 * benchmark/driver.rb: fix notations. * benchmark/bm_loop_whileloop.rb: ditto. * benchmark/bm_loop_whileloop2.rb: ditto. * benchmark/bm_app_uri.rb: added. * benchmark/bm_vm1_ivar_set.rb: ditto. * benchmark/bm_so_binary_trees.rb: added from Computer Language Benchmarks Game (http://shootout.alioth.debian.org/). * benchmark/bm_so_fannkuch.rb: ditto. * benchmark/bm_so_mandelbrot.rb: ditto. * benchmark/bm_so_meteor_contest.rb: ditto. * benchmark/bm_so_nbody.rb: ditto. * benchmark/bm_so_nsieve.rb: ditto. * benchmark/bm_so_nsieve_bits.rb: ditto. * benchmark/bm_so_partial_sums.rb: ditto. * benchmark/bm_so_pidigits.rb: ditto. * benchmark/bm_so_spectralnorm.rb: ditto.
fbebfdf23db958e3bb06dc0d4ccadca48d748dff 2007-09-28 * benchmark/bm_so_fasta.rb: added. * benchmark/bm_so_k_nucleotide.rb: added. * benchmark/bm_so_reverse_complement.rb: added. * benchmark/make_fasta_output.rb: added. * benchmark/prepare_so_k_nucleotide.rb: added. * benchmark/prepare_so_reverse_complement.rb: added.
534d057e58e68c5a65509e718366f2dab5e69e84 2007-09-28 * cont.c: Thread local storage should be fiber local. * bootstraptest/test_knownbug.rb, test/ruby/test_fiber.rb: move a fixed test.
88f570d9ae5984decc313f10b54d259ff54fa525 2007-10-01 * proc.c (proc_dup): proc->block.proc should be self. * bootstraptest/test_knownbug.rb, test_method.rb: move a fixed test.
c5f2bbaf829d35c65ccab8ef8d209646b552c4da 2007-10-03 * benchmark/driver.rb: enable specify label to executable. (-e "ruby1::/path/to/ruby1; ruby2::/path/to/ruby2; ...")
68bcdf4c7ee41b73d165c78fe320c7a22d778a19 2007-10-06 * cont.c (cont_free): check Fiber or Continuation. * bootstraptest/test_knownbug.rb: remove a fixed test.
3c78d621e60a2cae073b5e6ef7b7ac8b6d884a7e 2007-10-07 * insns.def (opt_eq): fix to use rb_str_equal().
0303c1d42b0dc8c8dfe96b885adb7f7ab9098e85 2007-11-09 * ruby.c (set_arg0): fix breaking environ bugs.
9f6de20f5879ea8460e74e2b7bf1e989cc6573cb 2007-11-09 * cont.c: add rb_context_t#type.
9a0e440b810a10efa5db716a5df36dd9d9229567 2007-11-09 * marshal.c (w_object): should be SPECIAL_CONST_P() instead of IMMEDIATE_P().
28c0aec1d889cfb3447c708a790b0acb95607e2f 2007-11-09 * eval.c (eval): should be volatile value for GC.
65cb92fca34538ce3cb39ac91f9421674c57dfc5 2007-11-13 * compile.c (iseq_specialized_instruction): check argc.
25c0cb981af8fda9860ec6e365b9ea7a9e3f498f 2007-11-13 * include/ruby/ruby.h: introduce 2 macros: RFLOAT_VALUE(v), DOUBLE2NUM(dbl). Rename RFloat#value -> RFloat#double_value. Do not touch RFloat#double_value directly. * bignum.c, insns.def, marshal.c, math.c, numeric.c, object.c, pack.c, parse.y, process.c, random.c, sprintf.c, string.c, time.c: apply above changes. * ext/dl/mkcallback.rb, ext/json/ext/generator/generator.c: ditto.
3688c7a1eeda83b3da39cf03bbd0b8ae09df94b9 2007-11-13 * tool/makedocs.rb, template/insnstbl.html: removed.
d907cbc81d6aa67502695df21a6f31c55325db0c 2007-11-13 * blockinlining.c, compile.c, compile.h, debug.c, debug.h, id.c, insnhelper.h, insns.def, thread.c, thread_pthread.ci, thread_pthread.h, thread_win32.ci, thread_win32.h, vm.h, vm_dump.c, vm_evalbody.ci, vm_opts.h: fix comments and copyright year.
3453b2bd0e186788bb81deff5d723cf48e10881f 2007-11-20 * gc.h, vm_core.h: decl of rb_gc_save_machine_context() should be at vm_core.h. * include/ruby/ruby.h, intern.h: remove type rb_thread_t. * include/ruby/intern.h: change rb_unblock_function_t, rb_unblock_function_t. * file.c, process.c: apply above changes. * thread.c, thread_pthread.ci, thread_win32.ci: ditto. * io.c: support blocking open (2). [ruby-core:13614]
01dacec2b4f7ec733ebea7b0427fc123542be21e 2007-11-20 * include/ruby/ruby.h: rename RFloat#double_value -> float_value. * numeric.c, parse.y: ditto.
53b3bf961cd4f4de0388d56c7d8b5059eba1c3c0 2007-11-21 * array.c (rb_ary_permutation): add gc guard codes.
58b1f91b469fddbe52e280bc044d7c0594bca6d0 2007-11-21 * benchmark/driver.rb: add path to trunk/lib if driver runner is in build directory.
c79ab68d378cd2ebde4013e2204e0d365fce0b3e 2007-11-21 * vm.c: fix to recycle thread data (VM stack). * thread.c: ditto. * benchmark/bm_vm3_thread_create_join.rb: add loop count.
1e4278c98dbb8481d460483146cf18f0ff108c37 2007-11-23 * bootstraptest/test_knownbug.rb: move solved tests. * bootstraptest/test_io.rb, test_marshal.rb, test_objectspace.rb: ditto. * test/ruby/test_integer.rb, test_regexp.rb: ditto.
2a2e4bbbc3d43ad37fdef17f3d6942eb10db96b7 2007-11-23 * vm.c: fix comment.
c4c151bed8dc3ffacf28a7f58cb23bcd82bcc5ae 2007-11-23 * io.c: add rb_read_internal() as blocking function.
329484693ae6d9dab6e01675faf7b535c2783a83 2007-11-27 * insns.def, compile.c: fix to allow dsym for alias/undef. [ruby-dev:32355] * bootstraptest/test_method.rb: add tests for above.
9c7aab17a54996b7320e7bc34230a1aab7f7a115 2007-11-27 * eval.c (rb_method_missing): fix stack trace. * bootstraptest/test_knownbug.rb: move solved tests. * bootstraptest/test_method.rb, test/ruby/test_regexp.rb: ditto.
db2b0037fd2e8eb61d59d4e9a2420cabbba4cd78 2007-11-27 * test_beginendblock.rb: add loop to wait signal. [ruby-dev:32332]
1152eef81de3897b3ff823aa84d515058b796109 2007-11-27 * insns.def: fix typo.
b0986a8f827cc97d7cf19b15c38fbdab794e34b9 2007-11-27 * compile.c, insns.def: change return value of "defined?" for $&, $1, ... . If such variables are defined, return "global-variable". * test/ruby/test_defined.rb: add tests. * bootstraptest/test_syntax.rb: fix a test.
1bed0ccca83a56dac3a30ecf25a0dd0b3fe66118 2007-11-27 * compile.c (iseq_compile_each): "a[*b] += 1" dumps core. a patch from Yusuke ENDOH <mame AT tsg.ne.jp>. [ruby-dev:32354] * bootstraptest/test_syntax.rb: add a test for above.
0cdd3bced5e42557ed4ee3c7f3cd35f7f56cbcf0 2007-11-27 * compile.c (iseq_compile_each): "when *[],1" dumps core. a patch from Yusuke ENDOH <mame AT tsg.ne.jp>. [ruby-dev:32350] * bootstraptest/test_syntax.rb: add a test for above.
c2aef47c846e1ff2ddcc2059c36b494859d740f6 2007-11-28 * insnhelper.ci (vm_invoke_block): should splat args. [ruby-dev:32392] * test/ruby/test_yield.rb: add tests for above.
6fafbfd63e9f56350e06910bbac70bf7ff0d5df0 2007-12-01 * insnhelper.ci (vm_yield_with_cfunc): fix to passing argc on third parameter of IFUNC. [ruby-dev:32329] * enumerator.c: fix to pass exact number of argument. * eval.c (rb_yield_values2): added. * include/ruby/ruby.h: ditto. * bootstraptest/test_knownbug.rb: move a fixed test. * bootstraptest/test_block.rb: ditto.
0d4761fb1a122e012a355107b6cb2fbedaa7a124 2007-12-01 * bootstraptest/test_knownbug.rb: move fixed bugs. * test/ruby/test_sprintf.rb: ditto. * test/yaml/test_yaml.rb: ditto.
f3e3ce4c8241e1c6aa2afca5468d7fb69b93c47b 2007-12-02 * insnhelper.ci (vm_callee_setup_arg): fix error message. [ruby-dev:32430]
9c1e3d00d51e28fa8ffedd56dc326fdc0ffbc6db 2007-12-05 * compile.c (iseq_compile_each): fix typo.
3923d7f420d1cbcad2b7fd781ffeb389d3151d07 2007-12-09 * vm.c (rb_thread_mark): use rb_gc_mark_maybe() for VM stack specified by mark_stack_len. * insnhelper.ci: clear vm stack extended by opt value.
a44f38ff52e3d828173e0719bc27ef7a5f381cf4 2007-12-09 * eval_intern.h (CHECK_STACK_OVERFLOW): reserve frame size. [ruby-dev:32485]
3db5e76e50f1acd979c0f40cd139e224f0ac6af3 2007-12-10 * benchmark/bm_vm1_neq.rb, bm_vm1_not.rb: added.
b7090e3673897708b50ee82d4247ca3f5f3dce20 2007-12-10 * benchmark/bm_vm1_neq.rb, bm_vm1_not.rb: prop set.
1f75a4e700883da8d15048fc3da6528ba53ec1e4 2007-12-18 * bootstraptest/test_knownbug.rb: add issues.
cd843108646b999e13cfbf04e51eca30b68850b3 2007-12-18 * compile.c, insnhelper.ci, insns.def, object.c, vm.c, vm.h: optimize !@, != method invocation. * id.c, id.h: ditto. * bootstraptest/test_syntax.rb: add tests for above.
8394de7bfcb053019f96f7171c4f2f4ebbdfbe50 2007-12-18 * vm.c (invoke_block): merge 2 stack overflow checks.
192ec21adf718e324fbe499b38997fa5bea98375 2007-12-18 * insnhelper.ci, vm.c: rewrite sp manipulation around method/block invocation. [ruby-dev:32547]
9bd91ea3b00d896c65b94c44e4ed523353a81000 2007-12-19 * eval.c (errinfo_place): skip if error is Fixnum. [ruby-dev:32608] * bootstraptest/test_exception.rb, test_known_bug.rb: move fixed bug.
def4a99af2081b428b91e8d00c74dd36caa230ca 2007-12-19 * bootstraptest/test_knownbug.rb, test_block.rb: move fixed bug. * bootstraptest/test_m17n.rb: added.
860b40fd631f280fbc9164abdc36409dcfac7e27 2007-12-19 * compile.c (iseq_compile_each): remove "retry" in block. ("iter{retry}" cause syntax error) Currently, "begin; ...; rescue; iter{retry}; end" cause syntax error too. * bootstraptest/test_jump.rb: ditto. * lib/drb/invokemethod.rb: ditto. * sample/drb/darrayc.rb: ditto. * sample/test.rb: ditto. * test/drb/drbtest.rb: ditto. * test/ruby/test_iterator.rb: ditto. * sample/test.rb: add a 'test' directory on the SYSTEM test.
10b933295ac8fed13ecf87fee1e304f426d78db9 2007-12-19 * compile.c (iseq_compile_each): remove unused retry entry.
5485df3e105aadfd6b61854180a8c4a803fe993f 2007-12-19 * compile.c (iseq_compile_each): add pop after throw as return. * bootstraptest/test_knownbug.rb, test_syntax.rb: move resolved test. * vm_core.h, iseq.c, compile.h: add debug output code.
f5e7602c330110f28163708afac91f6de69999a7 2007-12-20 * compile.c (iseq_compile_each/NODE_RETURN): fix stack consistency.
bc162c69ea86378d6c0f649f2fecbf1a38bdddfb 2007-12-20 * bootstraptest/test_syntax.rb: add a test.
e0dcf23cd5973c9f1fdb7218cf3eac7774f1f0c2 2007-12-20 * insnhelper.ci (vm_expandarray): fix sp increase place. a patch from Yusuke ENDOH <mame AT tsg.ne.jp> in [ruby-dev:32581]. * bootstraptest/test_massign.rb: add a test for above. * bootstraptest/test_syntax.rb: fix last committed test.
314bef7ef149d7ce87c57fa0c95e30fc8fb9b27f 2007-12-20 * insnhelper.ci, vm.c, vm_core.h: change interface of vm_invoke_block() to specify block ptr. [ruby-talk:266422] * cont.c, eval_jump.ci, insns.def, proc.c, signal.c, thread.c: apply above change. * bootstraptest/test_knownbug.rb: move fixed bug. * bootstraptest/test_block.rb: ditto. and add a test.
be137f3601610491d4265a4f9c87bf52fef28d66 2007-12-20 * iseq.c (find_line_no): return 0 if not found.
40d8543fbdec5485a638a2cb1008089d106b978d 2007-12-20 * proc.c: support Proc#binding. * sample/test.rb: add a test.
c334a09f7ad58c692ec86e1d55c561e86806260b 2007-12-20 * common.mk, *.ci: renamed to *.c. * eval_laod.c: renamed to load.c.
ff3e1957465fa7c790077d93e250a8c9545e6af2 2007-12-20 * configure.in: add libthr for FreeBSD.
cb7e82a94aa8405ac650e12abdf52b8560e559bf 2007-12-20 * thread_pthread.c (native_thread_apply_priority): check _POSIX_PRIORITY_SCHEDULING for OpenBSD.
5c04ed459bde261deff75a9d6f4fffee7d12dd58 2007-12-20
2a564dfb94eaa293461a0439cbe714f923a6993d 2007-12-21 * vm.c, vm_dump.c: fix typo.
685cc0f7c4c85877ccbb2804bdbb15280b049445 2007-12-21 add reported.
e613c7cf5fed9bca9ccf98b045c45596508bd4e0 2007-12-21 * compile.c: remove "illegal".
5c00dd28c5e16c85ed2ada37cae3b8be3a08ef3e 2007-12-21 * gc.h: extern variable should not be initialized. * thread_pthread.c: add a parameter.
6cbc9ac208b5bbaf5d43cdd47268f41d6a98970b 2007-12-21 * thread.c (rb_thread_atfork): fix to mark thread object. [ruby-dev:32404] * bootstraptest/test_knownbug.rb, test_fork.rb: move a fixed test.
f40a94a9cd2807296c89eff3240436b3065b4827 2007-12-21 * bootstraptest/featurebug.rb: added. * bootstraptest/test_knownbug.rb: move a feature bug.
f12cc82e0fced3708807df2db748fa86483a21ac 2007-12-21 * bootstraptest/pending.rb: renamed from featurebug.rb. This file contains bugs which is known but will not be fixed in days.
91c6c2c170698577b4618139181f57f3874f5a9c 2007-12-21 * io.c: write() should be in blocking region. * bootstraptest/test_io.rb, test_knownbug.rb: move a fixed test.
5a1cf1c5cb2dd1007389a5c3f2ef5bcecc74a6ac 2007-12-21 * bootstraptest/test_fork.rb: skip if fork is not unsupported. * bootstraptest/test_io.rb: skip if require failed.
c375b2f4206906618e437aa645523b8f5dca0983 2007-12-22 * tool/insns2vm.rb: moved from lib/vm/instruction.rb.
85143195da6d07b7a50ae4ab73e461414293d47c 2007-12-22 * eval.c (rb_obj_instance_eval): use class of immediate objects. * test/ruby/test_eval.rb: fix a test.
dd6ab4f3d5ba92c57d999f0ab4cbcb8c401af3d6 2007-12-22 * array.c (rb_ary_permutation): add volatile to avoid GC problem.
e6f67598e9466a5cb95fc0a8ed487b04c764f361 2007-12-22 * bootstraptest/test_objectspace.rb: skip flozen string.
34ff55e82a5b8cca1ecf43118926fc66c7223e9d 2007-12-22 * test/ruby/test_float.rb, test_sprintf.rb: fix test place.
de1dbf48294c9d83049e8a398375001fd512bf81 2007-12-22 * process.c (rb_f_fork): Unsupport Kernel.fork() on NetBSD.
fc5c62bef79c1d09606ba0e012d7a66e64d14270 2007-12-22 * ext/probeprofiler/: removed.
020fd204f8063816301f31260dc00d8e91103d97 2007-12-22 * bootstraptest/test_objectspace.rb: fix condition.
f03abbce93f27abc129b20a8fce015f6880e3985 2007-12-23 * common.mk: remove additional "-".
9f34b73009e9454e885378483d503b9466bac231 2007-12-23 * cont.c, vm.h: fix to support sparc machine. a patch from Yusuke ENDOH <mame AT tsg.ne.jp>
835c8d9d48683192784a00a811fdb8fd39bce02d 2007-12-24 * tool/compile.rb, getrev.rb, runruby.rb: remove unused tools.
8fd40444465a6165f08490269f8e0b142edc2824 2007-12-24 * mkconfig.rb: add teeny to CONFIG['ruby_version'].
e2e23e688fd655c55112872b10a7bd6840314653 2007-12-24 * iseq.c (Init_ISeq): disable ISeq.load() because there is no verifier. * iseq.c, proc.c: add ISeq.disasm(method).
d12d33f0e50673b21b0c87dd05ed91b85458d3d0 2007-12-24 * instruby.rb: fix rdoc install dir.
0bdcb32cd3c75a01f40d46ccca3f665d47c09172 2007-12-24 * test/rinda/test_rinda.rb: enable rinda test.
7d6d35394bfb06309e2f58c2e73df38021ddd61e 2007-12-24 * test/rinda/test_rinda.rb: revert last commit because this test seems to have timing problem to halt all tests.
9c09689301fd6bddbb5a9397a6854fef35a224ae 2007-12-24 * test/io/nonblock/test_flush.rb: fix test for 1.9.
105e00bdd797fa6699919e3d34edf57428be3c6e 2007-12-24 * compile.c (iseq_compile_each): add a "pop" insn after break to fix stack consistency error. [ruby-core:14385] * bootstraptest/test_syntax.rb: add tests for above. * bootstraptest/test_knownbug.rb: remove fixed bug.
e885517639c2bc1eacedfffe68679c4882b2fa5f 2007-12-24 * compile.c (iseq_compile_each): fix stack consistency bug. a patch from Yusuke ENDOH <mame AT tsg.ne.jp>
95ca3f72a8a72126ab412f5c58fd2c8f6e03bbed 2007-12-24 * compile.c (iseq_compile): clear local table if node == 0. a patch from Yusuke ENDOH <mame AT tsg.ne.jp> * vm.c: clear VM stack.
479568e5c14c6e62e09286fdd7e10f54f9bdbd14 2007-12-24 add a ML ref.
a79ce52e085e3c61250ee817ba8b2d1df81e779b 2007-12-24 * vm.c: add dummy toplevel frame.
7ad94af99b237460eb86e0de5828ed9f45f561b2 2007-12-24 * bootstraptest/test_knownbug.rb, test_literal.rb: move fixed test.
b40dbc304efe8297d7dbe10d6781c7608a651934 2007-12-25 * vm.c: check frame is FINAL when creating env. [ruby-core:14395] * bootstraptest/test_block.rb: add a test for above.
bfc19ade2e824dd549868d601b2c688f6ad928c5 2007-12-25 * iseq.c, vm_core.h: comment out unused fields.
1af43d329fe797e4ac74feeff95c742eb7953338 2007-12-25 * compile.c (iseq_compile_each): fix stack consistency error. a patch from Yusuke ENDOH <mame AT tsg.ne.jp> [ruby-dev:32720] * bootstraptest/test_syntax.rb: add 2 tests for above.
b90e7414ceb911bc714389294164418528ab90b9 2007-12-25 * vm.c (Init_VM): remove unused code.
94c942ed34e328f23c3d3316b4bf66ecfda8bf8a 2007-12-25 add ML ref.
5f0b8afb97d7830de8f04a7d6a39cde660020c69 2007-12-25 * vm_core.h, thread.c, cont.c: add RUBY_VM_SET_INTERRUPT(), RUBY_VM_SET_TIMER_INTERRUPT(), RUBY_VM_INTERRUPTED(). * thread.c, thread_pthread.c, thread_win32.c: fix to ignore time slice event until sleep. * bootstraptest/test_thread.rb: add a test for time limited join test.
42f0b52f771570adebbea518fa2464bd227bca99 2007-12-25 * thread_pthread.c, thread_pthread.h, thread_win32.c, thread_win32.c: make some functions static functions. a patch from Tadashi Saito <shiba AT mail2.accsnet.ne.jp> in [ruby-core:14407]
884f1eed2c4cebe4c0658b71ecef7a3ce3ae60d1 2007-12-25 * thread.c (rb_thread_wait_fd_rw): should check EBADF on select().
b79c8682960eef9d78a9c6e9c34dc966951bf45e 2007-12-25 * include/ruby/ruby.h, thread.c: rename is_ruby_native_thread() to ruby_native_thread_p(). * ext/tk/tcltklib.c: apply it.
36df55c6e4dff444d92eb5c44d2ecb65567427e6 2007-12-25 * iseq.c: all methods need $SAFE < 1. vm.c: comment out debug functions.
633df8de16203da72dff1a010740fdf92f9f7f5c 2007-12-25 * compile.c (iseq_compile_each): fix stack consistency error (break is compiled to throw instead of jump insn). these problems are reported by Yusuke ENDOH <mame AT tsg.ne.jp> * bootstraptest/test_knownbug.rb, test_syntax.rb: move fixed test.
e037d72514d18deb383dffc8fc45e2fc681cfa75 2007-12-25 * thread.c: remove Thread.critical(=).
96b9744b3dab5bb9bbe5f53e2cb861a984b3e50e 2007-12-25 * bootstraptest/pending.rb: add pending issue.
dccf2b925597832f3534f3fdea707c7faf4d2bb9 2007-12-25 * insns2vm.rb: add encoding option to shbang.
1421b85ea242c64272a3bed9974d834d305926b6 2008-01-03 * bootstraptest/test_eval.rb, test_knownbug.rb: move a fixed test.
a0350e5964c1edba90bf6cf4bd7e2d5b64eaa386 2008-01-03 * eval_jump.c (rb_f_catch): Resotre cfp if catched thrown object.
2004a2b536bde0bff385821c1b570dc9d1f52a5d 2008-01-14 * vm.h: remove dangerous assembler sentence.
0c801d657a963290c0cd269166bdbf79586b47ec 2008-01-14 * bootstraptest/runner.rb: add "flunk" method. * bootstraptest/test_knownbug.rb: fix to use flunk.
5360e77db8aa0e40c7c79cee74f91634eefa8576 2008-01-14 * thread.c: clear thread structure. (TODO: survey that child process should clear mutex or not). * bootstraptest/test_knownbug.rb, test_thread.rb: move a fixed test.
13b5b22ae63cb35adc7e73f8f3d248a6ffd46ad1 2008-01-25 * compile.c, compile.h: fix stack pointer issues. calculate correct stack depth at compile time. * insns.def (emptstack): remove it and add a new insn "adjuststack". * bootstraptest/test_knownbug.rb: move/remove fixed test. * bootstraptest/test_syntax.rb: ditto.
3b1c663ed942c3125c8ff93243b3af77da7cdac4 2008-01-26 * compile.c, compile.h: fix to calculate correct stack depth at each instruction.
51ea2cf4e431d2265a255cb3bfedc91461acf8d4 2008-01-26 * compile.c (iseq_compile_each): validate argument expr of "next" statement. * bootstraptest/test_syntax.rb: add a test.
3f3fdb4869350554bffcabcac7bf59ab866a8ddf 2008-04-07 * bootstraptest/test_knownbug.rb: add a known-bug.
9d0a5d8e96644394bbd0c344fb5d26098b7919c4 2008-04-26 * include/ruby/ruby.h, gc.c: remove T_BLOCK. * include/ruby/ruby.h: re-number T_xxx.
3de80833a23b6aa07f698bf20fffbba25d6fe79d 2008-04-27 * gc.c (gc_count): add a GC.count method. This method returns a GC invoking count.
5e4edb43a2a3183931b3d891b1c4bd6031b73560 2008-05-14 * insns.def: add a "putcbase" instruction. * compile.c, insns.def: fix to use putcbase instruction for class search. Qundef should not be used.
a6bec144712bb5ae9168eb336147f71bcdd5f4a8 2008-05-14 * iseq.c (insn_operand_intern): remove Qundef related code.
385f0e8af657b1334e477e6837b0846cc14fa00d 2008-05-19 * vm.c, insns.def, eval.c, vm_insnhelper.c: fix CREF handling. VM value stack frame of block contains cref information. (dfp[-1] points CREF) * compile.c, eval_intern.h, eval_method.c, load.c, proc.c, vm_dump.h, vm_core.h: ditto. * include/ruby/ruby.h, gc.c: remove T_VALUES because of above changes. * bootstraptest/test_eval.rb, test_knownbug.rb: move solved test.
39fcd1cdf295d310c1bfd220324fef5b2f725230 2008-05-19 * bootstraptest/test_knownbug.rb: move solved tests. * bootstraptest/test_eval.rb, test_literal.rb, test_syntax.rb, test_thread.rb: ditto. * test/ruby/test_m17n.rb, test_proc.rb, test_sprintf.rb, test_string.rb, test/ruby/test_struct.rb: ditto.
950ee3e0a6f716b12c18d993c2d8b086eda1ba6e 2008-05-19 * version.h: fix strange change by version.h update tool.
67d0fbd03f46edcc0a6fb2a65409ebfa6be25534 2008-05-19 * thread_pthread.c (native_thread_apply_priority): fix argument range check. [ruby-dev:33124]
b001dbad6e57919560caf5066f6be6524a970440 2008-05-19 * vm.c (invoke_block_from_c): fix call flow.
e07663ec1fa3f03031fd6e074446857490767983 2008-05-19 * bootstraptest/test_knownbug.rb: fix a test. "block_given?" returns true if "yield" can be used.
d457fdad2dbcba31eee20f491deae3120db11dec 2008-05-19 * eval.c, vm_insnhelper.c: fix cref in instance_eval and cvar_base search protocol. * bootstraptest/test_knownbug.rb, test_eval.rb: move soleved test and add new tests. * test/ruby/test_eval.rb: fix tests for spec.
a16e394bbf85c4e3a1920a7f4ddf46f9561c4a77 2008-05-21 * bootstraptest/test_eval.rb: fix syntax.
4c094940aa8544e3ee149dee57ec294a47f3099d 2008-05-21 * insns.def, vm_insnhelper.c: specify "const".
559d021d200a2e5457fa89a8ddbaf15ab1aeecb9 2008-05-22 * eval.c, vm.c, vm_core.h, vm_insnhelper.c: specify "const". * vm_opts.h: add a OPT_TOKEN_THREADED_CODE macro.
a45cd8a01ce1d51cd124f0f87d9d56b6d3d60da8 2008-05-22 * eval.c, eval_intern.h, include/ruby/intern.h, include/ruby/ruby.h, vm.c, vm_core.h, vm_insnhelper.c: remove pointless "const".
9832ab36631b1f241eb646c936e801c0ff4d0cb9 2008-05-22 * insns.def (opt_gt|ge|lt|le): use values directly to compare.
59c061235f7bb39d6a33b7e2b7fb4e3db57305db 2008-05-24 * eval_method.c: renamed from vm_method.c. "vm_method.c" is included by "vm.c". * vm_eval.c: added. Some codes are moved from "eval.c" * common.mk: fix for above changes. * compile.c: make a vm_eval(0) * eval.c, eval_error.c, eval_intern.h, eval_jump.c, proc.c, vm.c, id.c, id.h, vm_core.h, vm_dump.c, vm_evalbody.c, vm_insnhelper.c, blockinlining.c: fix for above changes. and do some refactoring. this changes improve rb_yield() performance.
ed68367f9e583e01d8bb89a4b668b62c83e80cda 2008-05-24 * vm_eval.c: added. Some codes are moved from "eval.c"
9eec758a1e574edbee84797463a00b832c5fcbea 2008-06-04 * string.c (hash): should be "static".
bf4626ed723a122c43a9edf73d68873ed4ca56d5 2008-06-06 * vm_insnhelper.c (vm_callee_setup_arg): check simple flag before calling setup_arg function(). this change reduce function call.
72ba13aa8e86eb7f12bd17737a689ad2ec214036 2008-06-08 * array.c, bignum.c, cont.c, dir.c, dln.c, encoding.c, enumerator.c, enumerator.c (enumerator_allocate), eval_jump.c, file.c, hash.c, io.c, load.c, pack.c, proc.c, random.c, re.c, ruby.c, st.c, string.c, thread.c, thread_pthread.c, time.c, util.c, variable.c, vm.c, gc.c: allocated memory objects by xmalloc (ruby_xmalloc) should be freed by xfree (ruby_xfree). * ext/curses/curses.c, ext/dbm/dbm.c, ext/digest/digest.c, ext/gdbm/gdbm.c, ext/json/ext/parser/parser.c, ext/json/ext/parser/unicode.c, ext/openssl/ossl_cipher.c, ext/openssl/ossl_hmac.c, ext/openssl/ossl_pkey_ec.c, ext/sdbm/init.c, ext/strscan/strscan.c, ext/zlib/zlib.c: ditto.
a99140631cefb87bd2c443573f4e0de116072080 2008-06-08 * gc.c: add a build option "CALC_EXACT_MALLOC_SIZE". This option enables to calculate exact size of current allocated size by malloc(). You can access these information with GC.malloc_allocated_size and GC.malloc_allocations. This option consume additional memory as a header of each memory object. This option also helps to find out xmalloc()/xfree() consistency. If you get trouble with this option, some extension using "free()" instead of "xfree()". This options is disabled by default.
7e6c9db4e22fd949e8a19ac1711f345529e9ebaa 2008-06-08 * bootstraptest/pending.rb: move/remove solved issues. * bootstraptest/test_class.rb: ditto.
fe54190f68fa3326ea933bacc100f88878031797 2008-06-09 * bootstraptest/test_knownbug.rb -> ./test_knownbug.rb: moved. * common.mk: add a rule "test-knownbug".
e2958af0b78c2431b6127e8bc7f4397cf0b123b3 2008-06-09 * test_knownbug.rb -> KNOWNBUGS.rb: renamed. * common.mk: apply above change.
ed4139e39bb3ceda2985b2ea2ebd9a91479d25da 2008-06-10 * include/ruby/intern.h, proc.c: revert rb_proc_call() and create rb_proc_call_with_block() instaed. * include/ruby/ruby.h, eval_jump.c, thread.c, vm_insnhelper.c: rb_blockptr should not be exposed.
9e324fdd3ef0b858f6c5dfea1d0055d77979a3a2 2008-06-10 * vm.c, eval_intern.h (PASS_PASSED_BLOCK): set a VM_FRAME_FLAG_PASSED flag to skip this frame when searching ruby-level-cfp. * eval.c, eval_intern.h, proc.c: fix to check cfp. if there is no valid ruby-level-cfp, cause RuntimeError exception. [ruby-dev:34128] * vm_core.h, vm_evalbody.c, vm.c, vm_dump.c, vm_insnhelper.c, insns.def: rename FRAME_MAGIC_* to VM_FRAME_MAGIC_*. * KNOWNBUGS.rb, bootstraptest/test*.rb: move solved bugs.
9ead0d771ba70c87f434748bf6309f839a4a3f90 2008-06-15 * vm_core.h, thread.c: rename global_interpreter_lock to global_vm_lock.
1c4f7a4c642f539f0bfc6db4234dde99d19c2b16 2008-06-15 * vm_dump.c (vm_stack_dump_raw): disable verbose debug output.
faa93e847da75c0b8f5bae70f8362f22865388a6 2008-06-15 * eval.c (rb_f_block_given_p): fix to skip class frame. [ruby-core:14813] * KNOWNBUGS.rb, bootstraptest/test_method.rb: move solved test.
00e4fd42f36fa23de04cccb9cea3c3e5d14c9ae9 2008-06-17 * vm.c, vm_insnhelper.c: fix escape process with "braek" and "return" syntax in "lambda". [ ruby-Bugs-19304 ], [ruby-core:17164] * KNOWNBUGS.rb, bootstraptest/test_proc.rb: add/move solved test.
f98e6b91dec68ddd010ccb3bad651a18e7dca338 2008-06-17 * KNOWNBUGS.rb, bootstraptest/pending.rb: move pending bug.
c3e619c83dcd3223cb6d17d5a1884039b5d0cc4f 2008-06-19 * vm_insnhelper.c (vm_throw): fix "return" process from "lambda". * bootstraptest/test_proc.rb: add a test. * bootstraptest/pending.rb: add a pending bug.
1bc6479a8830f26c821003de1818f4750ab5cc26 2008-06-19 * test/ruby/test_enumerator.rb: fix to skip "with_memo" test.
af94c81302cd778d5e62ddae714e52c891f69d38 2008-06-19 * thread_win32.c (native_sleep): fix to decrement sleeper count.
e7dac48a9190169a241865cd706566b52e07b3b7 2008-06-19 * proc.c (proc_new): fix to return Proc object if block is already in heap. [ruby-core:15711] * bootstraptest/test_proc.rb: add a test.
e929f49e564dab959e6df43bb7e3621d74e8c3c5 2008-06-19 * KNOWNBUGS.rb, bootstraptest/pending.rb: move a bug (?) to pending.
d4cddaaa4ce60dd5d35e85da4436236a287a622b 2008-06-26 * vm_eval.c (vm_call_super): fix to call method_missing. [ruby-core:15719], [ruby-core:17340]
285066dd0bc256fc6b197ac6e55c51b39a574924 2008-06-26 * configure.in: need a ",". * process.c (rb_fork): check CANNOT_FORK_WITH_PTHREAD macro.
002fb8f747933409b05b805a9903dcbc7a72abbd 2008-06-29 * process.c (Init_process): fix to avoid a warning.
9ebf6473ebfd76e64c33904bb555b5fc8435dc66 2008-06-29 * vm.c, vm_core.h,vm_core.h, vm_dump.c, iseq.c: rename class name VM -> RubyVM, and rename rb_cVM -> rb_cRubyVM. "VM" is too short name for class. * test/ruby/test_method.rb, test/ruby/test_settracefunc.rb: ditto. * include/ruby/ruby.h: rb_cRubyVM, rb_cEnv, rb_cISeq should not be exposed.
eb33f91cb7a763331e210bc10fbdefa037366496 2008-07-01 * compile.c, insns.def, vm.c, vm_core.h: remove some insns (undef, alias, definemethod). Call RubyVM::FrozenCore's singleton method instead. Add "putiseq" and "putspecialobject" instructions. * id.c, id.h: add ids for above. * tool/parse.rb: "VM" no longer exists. Use RubyVM instead.
a056546f0dfa9af3d358c70e2e66bbaf5b4fef8f 2008-07-01 * tool/instruction.rb: RubyVM is not module.
807fbd69403bcae4bc38138a8f8a4bba5914dcda 2008-07-01 * compile.c, vm.c, insns.def: call FrozenCore.set_postexe method instead to use "postexe" insn. * id.c, id.h: add a prepared id for above.
ab109c36f19aeaef088e975fa1de3ca6e6cce6f0 2008-07-01 * proc.c, vm.c: fix to refer next ruby level cfp to make binding.
9a61579c1658502a87f62c857ec29cd831d5db41 2008-07-01 * compile.h, insns.def: reduce insn operand of "trace". * include/ruby/ruby.h: add RUBY_EVENT_COVERAGE event.
8b3969f8b3c069a5b7fc0eccf65fe8e919fa4c70 2008-07-08 * compile.h: fix to skip inserting a trace insn.
f1d967c6ee0560eee1d728a70903534992adb6cd 2008-07-08 * lib/debug.rb, lib/profile.rb: fix to use RubyVM. * lib/rdoc/parsers/parse_c.rb: ditto.
7e16f9e7777781a4969537b5d9f659b1356b2786 2008-07-08 * lib/debug.rb, lib/profile.rb: fix to use RubyVM. * lib/rdoc/parsers/parse_c.rb: ditto.
df91d39c943333ea39be83cdcc0efb5ee1fb943d 2008-07-10 * thread.c (thread_create_core): fix GC problem. [ruby-core:17669]
7c8ad088f5ca528fd47138bb8f6fed19201dca59 2008-07-25 * vm.c (vm_invoke_proc): skip setting safe_level if it from bmethod. This change makes test/ruby/test_proc.rb pass.
60be3dc560d1bd61344c328ee6a939ec9cffa537 2008-07-27 * include/ruby/ruby.h: add a type T_DEFERRED. * gc.c: fix deferred finalizer system. finalize processes of T_DATA and T_FILE are executed after gc process. And fix to use BUILTIN_TYPE() instead of seeing flag. * thread.c, vm_core.h: add RUBY_VM_SET_FINALIZER_INTERRUPT() and check intterupt_flag at rb_thread_execute_interrupts(). * thread.c (mutex_mark): fix to mark next_mutex. * vm.c (rb_thread_mark): fix to mark keeping_mutexes.
845e5766dcf9f47b440ba522fc81f1c10c9a24fc 2008-07-27 * gc.c (gc_mark_children, obj_free): T_DEFERRED should not be appear. * gc.c (gc_sweep, finalize_list): fix to decrement heap_slot#limit after executing finalizer.
596eecd76d28ad02039462b3d090615ed7fb01e2 2008-08-12 * vm.c, vm_insnhelper.c (vm_define_method): move function place.
cc77f676f4a386479b6457e11993b9933412022c 2008-08-13 * vm.c: rewind cfp to show proper backtrace. [ruby-dev:35820]
16612b360b376d0cb3f50f966e2e671cf80fdc25 2008-08-13 * thread.c, vm_core.h: add manual priority support using time slice. if you enable USE_NATIVE_THREAD_PRIORITY macro, this mechanism is ignored. [ruby-dev:33124] * thread_pthread.c, thread_win32.c: ditto. * test/ruby/test_thread.rb: fix test parameter.
8f1e7a37e520fd1b105bec102cb05d2b49acf4a2 2008-08-13 * thread.c (rb_thread_check_ints): added. please note that this function may cause ruby's thread switching. * include/ruby/intern.h: ditto. * regint.h: use rb_thread_check_ints() instead of RUBY_CHECK_INTS() directly.
96af71a288ef97800b658b4d0cda7ce83f3f95be 2008-08-13 * gc.c: count only freed object as freelist size.
abfd87c2305a0a07bd5958be2282fcc2fa10a639 2008-08-13 * thread.c (rb_thread_execute_interrupts): switch event should be occur only once.
400796e87b7df6f4605c4d342741511da3f855c3 2008-08-23 * vm_opts.h: enable "OPT_TRACE_INSTRUCTION" on default.
100d0a568eeac44c8844a3a8707a1faa460f5106 2008-08-29 * vm_insnhelper.c (vm_call_method): copy arguments to allocated memory from machine stack. [ruby-dev:36028] * KNOWNBUGS.rb, bootstraptest/test_method.rb: move fixed test.
fa4c17e71283e72100c12b8824aafe176372241d 2008-08-29 * gc.c, include/ruby/ruby.h: rename T_DEFERRED to T_ZOMBIE.
35617676cb24f12d8daa8342cefd0b2355b137e4 2008-08-30 * parse.y: remove include pragma for "ruby/intern.h".
1b80bfa4692f6dcab6505610bb27d8dc593a132a 2008-08-30 * ext/iconv/iconv.c: remove include pragma for "ruby/intern.h".
03b2fc9adf609e61550011f9de644209dd6ce021 2008-08-31 * bootstraptest/test_thread.rb: add a test.
ca6a8b1e2c9e1832ab993edff48d2d3a9234a4b3 2008-08-31 * include/ruby/intern.h: rename RB_UBF_DFL to RUBY_UBF_IO and RUBY_UBF_PROCESS. Because there is no default (universal) unblocking function. * ext/socket/socket.c, file.c, io.c, process.c, thread.c: ditto.
204929af9dfc7d483d69476325c1ceac1721e219 2008-09-03 * include/ruby/signal.h: removed. * common.mk, class.c, eval.c, eval_intern.h, file.c, gc.c, hash.c, io.c, process.c, signal.c: vm_core.h: ditto. Some unused external global variables are also removed. (rb_prohibit_interrupt, rb_trap_immediate, rb_trap_pending, rb_thread_critical) * ext/openssl/ossl_ssl.c, ext/openssl/ossl_x509store.c, ext/readline/readline.c, ext/socket/depend, ext/socket/socket.c: ditto.
cb0ade87d6d832a4d34c854d4e8164041a01b8fe 2008-09-03 * test/ruby/test_thread.rb: fix test. [ruby-dev:35960]
b00710df4ea2039f2c99032ee7a286e6fc0ebb28 2008-09-03 * win32/win32.c: fix ruby/signal.h depending codes.
80843ea156b7b2849b1fcc9764e85f70811cdd89 2008-09-04 * thread.c (rb_thread_check_trap_pending): added for compatibility. * ext/tk/tcltklib.c, ext/tk/tkutil/tkutil.c: remove ruby/signal.h dependency.
4780af9566c0357ca8c6e479bbb9575ac38dba2c 2008-09-04 * vm_dump.c: rename some debug functions.
ca253f40dbabfd4ce910155089ae5213b36340e8 2008-09-04 * thread.c (rb_thread_critical): removed.
d803c452346a2bec2b34e2cd0502ff34f21663f3 2008-09-04 * vm.c (thread_recycle_stack_slot, thread_recycle_stack_count): make it static.
f0bf74a07b98e0c5cf8875b1a4eb258083fd991e 2008-09-04 * iseq.c (iseq_data_to_ary): make it static. * thread.c (thgroup_enclose): ditto.
69029b90fea8a6b7e5607ead5e2184da30db9e76 2008-09-15 * gc.c, include/ruby/ruby.h: rename rb_register_mark_object() to rb_gc_register_mark_object(). * eval.c, vm.c: initialize vm->mark_object_ary at Init_top_self(). * bignum.c, complex.c, encoding.c, ext/win32ole/win32ole.c, io.c, load.c, marshal.c, rational.c, ruby.c, vm.c: use rb_gc_register_mark_object() instead of rb_global_variable() or rb_gc_register_address().
8cd252ac6f3fd2d2eb3524880bf45767490bed70 2008-09-23 * common.mk: clean up - remove blockinlining.$(OBJEXT) to built - make ENCODING_H_INCLDUES variable (include/ruby/encoding.h) - make VM_CORE_H_INCLUDES variable (vm_core.h) - simplify rules. - make depends rule to output depend status using gcc -MM. * include/ruby/mvm.h, include/ruby/vm.h: rename mvm.h to vm.h. * include/ruby.h: ditto. * load.c: add inclusion explicitly. * enumerator.c, object.c, parse.y, thread.c, vm_dump.c: remove useless inclusion. * eval_intern.h: cleanup inclusion. * vm_core.h: rb_thread_t should be defined in this file. * vm_evalbody.c, vm_exec.c: rename vm_evalbody.c to vm_exec.c. * vm.h, vm_exec.h: rename vm.h to vm_exec.h. * insnhelper.h, vm_insnhelper.h: rename insnhelper.h to vm_insnhelper.h. * vm.c, vm_insnhelper.c, vm_insnhelper.h: - rename vm_eval() to vm_exec_core(). - rename vm_eval_body() to vm_exec(). - cleanup include order. * vm_method.c: fix comment.
7440ec27fd23fc725c35049a1aea5bdc4fe9a7b3 2008-09-23 * eval_safe.c, safe.c: rename eval_safe.c to safe.c. * common.mk, eval.c, safe.c, inits.c: separate safe.c from eval.c and make Init_safe().
23c291da09859680c95a71686cdfdb2f9dd512e6 2008-09-23 * common.mk, hash.c: remove unused inclusion.
7f7834abf738ab26236bea159fce7f37dea03f1f 2008-09-23 * include/ruby/node.h, vm_core.h: move definition of RUBY_VM_METHOD_NODE to node.h. * class.c, common.mk: remove useless inclusion. * compile.h, iseq.h, vm_core.h: rename compile.h to iseq.h. move some definitions from vm_core.h to iseq.h. * compile.c, iseq.c, vm.c: ditto. * eval.c, compile.c: move some functions for parser from eval.c to compile.c. * eval_intern.h, vm_core.h: move va_init_list() macro to vm_core.h. * iseq.c (rb_iseq_new_top, rb_iseq_first_lineno): added. * load.c, ruby.c: use rb_iseq_new_top() instead of rb_iseq_new() with ISEQ_TYPE_TOP constant directly. * proc.c: use rb_iseq_first_lineno() instead of accessing iseq structure.
abf97237c4bb80503f91b98cc92e00737949a1d6 2008-09-23 * ruby.h: fix comment and rename macro HAVE_RUBY_MVM_H to HAVE_RUBY_VM_H.
68a533c61164392a9524d19f11f163a6c7e811ba 2008-09-23 * class.c, vm_core.h: move decl of rb_iseq_clone() to class.c.
b9a12116fb2da007ef9059befc9b1b314bb079ed 2008-09-23 * thread.c, include/ruby/intern.h (rb_thread_interrupted): added. * io.c: use VALUE of thead instead of rb_tread_t to check interrupts.
64c35be42c436538efc25db5c6e4f037f90c686a 2008-09-23 * thread.c (rb_thread_blocking_region): write a document
c431879a6827ebd72ffecf6e9e21e82092ebfbda 2008-09-23 * thread.c (rb_thread_blocking_region): fix typo in a document.
757f1b135dfa5534fe24ba0c544556b04288d503 2008-09-23 * common.mk (io.o): remove dependency for vm_core.h.
445e26fb00e8ce7e9f1785579abfd5662880f3f1 2008-09-23 * signal.c (signal_exec): fix to use rb_proc_call().
29f5911cf54536f06697aea6e0a5c98977c536e9 2008-09-23 * signal.c (signal_exec): execute rb_eval_cmd() directly.
379bd563539f62dd918bba8d22e35443871190c9 2008-09-23 * vm_core.h: remove unused frame values.
57c4acf94ad977c520a805becb47b27eaf965e1e 2008-09-23 * vm_core.h: remove unused frame values. (fix previous commit miss)
2e311f6bd56a6f6f380e400863a21adbfb73ddfe 2008-09-23 * include/ruby/node.h, node.h: move node.h from include path. This change stop to install node.h beacuase of saving ABI (node.h will be changed. Extensions should not depends on this file). * blockinlining.c, class.c, compile.c, debug.h, enum.c, gc.c, iseq.c, parse.y, ruby.c, signal.c, variable.c, vm.c, vm_core.h, vm_dump.c: ditto. * ext/ripper/depend: ditto.
4ee0a8e740d4c9af11897e2999fd66c242d302dd 2008-09-25 * common.mk: fix btest-* rules [ruby-dev:36528]. and remove obsolete rules.
3e9276a5389c95f0d010b39bffd7c53f16197693 2008-09-26 * vm_core.h (RUBY_VM_CHECK_INTS_TH): add an UNLIKELY hint.
574027ba0371ab2e6fdb84e0634ec72d02cd6ff7 2008-09-28 * vm_exec.c (vm_exec_core): add an UNLIKELY() hint. * vm_insnhelper.h (BASIC_OP_UNREDEFINED_P): add a LIKELY() hint.
3f710785f0508d93795b316b78dc24987cf47370 2008-10-10 * parse.y: optimize 'for' statement when one variable given. * benchmark/bm_loop_for.rb: added. * benchmark/bm_loop_times.rb: modified.
7215c9af95eb2375eebef478502a7a824ddd16d5 2008-10-12 * vm.c, vm_insnhelper.h (ruby_vm_redefined_flag): apply optimization patch proposed by Paul Brannan. [ruby-core:19171]
3337185ed683bfc82f86641e0627021952cefa8b 2008-10-21 * parse.y (arg_concat_gen): concat target node should be NODE_ARRAY. [ruby-core:19413] * bootstraptest/test_method.rb: add tests.
bf52a3c0c4ce5044a31e62ab6f6366e5a76103a7 2008-10-21 update ChangeLog for last check in.
34d1e9bb2504d7fa0b98ad99a32c549cd0d92853 2008-10-21 * include/ruby/vm.h: write a comment. * common.mk: remove vm.h from any rules. vm.h is not needed on this version. * vm_core.h: ditto.
8a0d53ac2b0d2af06d4c5fef87d1bb5913adbb05 2008-10-22 * cont.c: separate data structure between rb_fiber_t and rb_context_t (rb_fiber_t includes rb_context_t). rb_fiber_t has double linked list of fibers in same threads.
8c6a26ab8e1d9ba48f904c165a175d55732a5240 2008-12-24 * tool/file2lastrev.rb (get_revisions): fix to ignore end of line.
f0da2e1657e645233faff25faeb05905dd350623 2008-12-24 * vm_insnhelper.c (vm_call_method): use class of method defined instead of receiver's class on bmethod. fixes [ruby-core:20786] * bootstraptest/test_method.rb: add a test for above. * vm_insnhelper.c (vm_setup_method): remove unused parameter klass. * vm_insnhelper.h (CALL_METHOD): ditto. * insns.def, vm_eval.c: ditto.
7160543aeb8a9f5d7b2f26d3c7b0d7702016f831 2008-12-24 * error.c (exc_equal): == method should not raise Exception. [ruby-dev:37519] * sample/test.rb: fix test.
f23e8d87c01c751094b58fc13cde1da59ed7eda6 2008-12-24 * vm.c (invoke_block_from_c): fix to point right cfp. * vm.c (vm_make_proc, vm_make_proc_from_block), vm_core.h: remove unused parameter cfp. * vm_insnhelper.c, proc.c (proc_new): ditto.
155149109a9c6d6ae79bf40398cb51e8883dad26 2008-12-24 * compile.c (iseq_peephole_optimize): fix typo.
8d1689508d8b9b45decd4dd0507d46ba12dfce2e 2008-12-24 * error.c, vm_dump.c: change message by rb_bug().
f6e435fe878cfdb03906b1dbb2e366e9b3408b53 2008-12-25 * vm_insnhelper.c (vm_yield_with_cfunc): check block has Proc.
7c982059ea464cbdb951eab239afdffb2d0553ca 2008-12-25 * proc.c (proc_new): should use proc_dup() if block has Proc. * vm.c (vm_make_proc_from_block): should use rb_cProc for block. * vm.c (vm_make_proc): add an assertion. * bootstraptest/test_proc.rb: add a test.
a71fb38d47d910b421c56e7b28931be12a32d09d 2008-12-25 * vm_insnhelper.c (vm_method_search): return rb_cObject if there is no super class. [ruby-dev:37587] * bootstraptest/test_method.rb: add tests for above.
1f2d804e5e2b724e91e627faa53d1283cfe7554e 2008-12-25 * vm_insnhelper.c (vm_method_search): fix control flow bug. (commited at r20981)
597220ef0c694a74663e064b73605bd48ad7250b 2008-12-27 * vm.c (Init_VM): create and define TOPLEVEL_BINDING at first. * vm.c (vm_set_main_stack, rb_iseq_eval_main): added. * parse.y (rb_parser_compile_file): fix to check parse_in_eval flag. * eval.c (ruby_exec_node): use rb_iseq_eval_main() instead of rb_iseq_eval(). * iseq.c (rb_iseq_new_main), vm_core.h: added. main script (specified by -e or script name) should be run under TOPLEVEL_BINDING using Kernel#eval. Above changes simulate Kernel#eval behaviour. [ruby-dev:37240] * compile.c (make_name_for_block): skip iseq except block type. this fix is needed for [ruby-dev:37240], and also fixes [ruby-dev:35392].
b30b998966553a614f18703536b49a4dc273e0c6 2008-12-27 * vm_insnhelper.c (vm_call_method, vm_call_cfunc): use original id instead of calling id when NODE_CFUNC or NODE_BMETHOD. fixes Bug #632 [ruby-core:19282]. * vm_eval.c (vm_call0, vm_call_super): ditto. * vm_method.c (rb_add_method, rb_alias): store original id in nd_file field of NODE_METHOD. * test/stringio/test_stringio.rb: add a test.
bd96f1fe705c973af8c6e1aec92802ba692b9b52 2008-12-27 * eval.c (get_errinfo): return th->errinfo value if normal errinfo place (dynamic local viriable) is not found. fixes Bug #732 [ruby-dev:37046]. * bootstraptest/test_proc.rb: add a test.
6c08b4522d4b9173dcbada62c6d218452d103b4a 2008-12-27 * iseq.h, iseq.c (rb_iseq_new_main): add a type ISEQ_TYPE_MAIN. [ruby-dev:37619] * compile.c (rb_dvar_defined, ruby_iseq_compile): ditto. * iseq.c (iseq_data_to_ary, iseq_load): ditto. * compile.c (iseq_compile_each): fix to check ip->compile_data.
b19be9b1a90b9672f0866566904ad66e43440c97 2008-12-27 * ruby.c (process_options): fix to untouch th->mild_compile_error. [ruby-dev:37621], [ruby-dev:37620]
1f8620ca22d75b1f4487975ed2012a866dca9c3c 2008-12-27 * vm_insnhelper.c (vm_yield_with_cfunc): rename parameter name "blockptr" to "blockargptr".
aebfdbeea573c031ea690ee93f816a53ac27ca51 2008-12-27 * eval.c (rb_frame_callee, rb_frame_caller): rb_frame_callee() should return method id on current frame. add rb_frame_caller() to get method id on parent frame. Bug #884 [ruby-dev:37446] * eval.c (rb_f_method_name): use rb_frame_caller() instead of rb_frame_callee().
ec5283e691a31d466099bc274169d3b0568ca840 2008-12-28 * ruby.c (process_options): set th->base_block only while it is needed. * ruby.c (require_libraries): clear th->base_block before require libraries.
813d983154c5e237f1e4c1957917e054df6a69c7 2008-12-28 add ML index ([ruby-dev:37634]).
b2ad49565f10dfdd594680c2fa7a4af81c1027fe 2008-12-29 * thread.c (rb_mutex_trylock): return false if Mutex owned by current thread. [ruby-core:20943] * thread.c (rb_mutex_lock): check dead lock (recursive lock) here. * test/ruby/test_thread.rb: add a test.
272a3aa6a2ef9d2ef60288791f0e73c978367f62 2008-12-29 * vm.c (vm_set_eval_stack, vm_set_main_stack, vm_set_top_stack): check stack overflow. [ruby-dev:37646]
d0ed5a93786881e2ddda99d0c83e4d1a216a3ca8 2008-12-29 * ext/dl/test/test_base.rb: add libc search logic. this patch is written by Takehiro Kubo. [ruby-core:20963] [Bug #932] * ext/dl/dl.h: Add ",..." as the last argument. this patch is written by Takehiro Kubo. Bug #633 [ruby-core:19289] * ext/dl/lib/dl/stack.rb: add add_padding() to calculate alignment. this patch is written by Takehiro Kubo. Bug #633 [ruby-core:19289] * ext/dl/test/test_func.rb: atof()'s return value is double. this patch is written by Takehiro Kubo. Bug #633 [ruby-core:19289] * ext/dl/test/test_import.rb: - atof()'s return value is double. - The types of qsort's second and third argument are size_t. - fprintf()'s return value is int. this patch is written by Takehiro Kubo. Bug #633 [ruby-core:19289]
9c04a0647fb99f7554cb2e04385ddbb970631e02 2008-12-30 * thread.c (rb_thread_blocking_region): add a comment. * thread.c (rb_thread_call_without_gvl): added as a alias of rb_thread_blocking_region(). * thread.c (rb_thread_call_with_gvl): added. * vm_core.h (rb_thread_t#blocking_region_buffer): added for rb_thread_call_with_gvl().
6961f8becccc21f21e188aac5efa382a211e3c6a 2008-12-30 * ext/dl/test/test_import.rb: fix a prototype decl. pointed out by Takehiro Kubo [ruby-core:20971].
d46fcaf485dbf1fedf32330e200c039a55853fff 2009-01-10 * cont.c (cont_restore_1): should not be inlined.
af12cefe06d4731a1796d815ad5738517de19199 2009-01-12 * eval.c: remove unused decl.
6f09fc2efd1915c4337ce6dded52a8a8771c3222 2009-01-12 * thread.c: fix comment (terminology: Global VM Lock). * thread.c (blocking_region_begin, blocking_region_end): save and clear th->blocking_region_buffer. * thread.c (rb_thread_call_with_gvl): check if it has GVL. * thread.c (ruby_thread_has_gvl_p): added. * vm_core.h: add decls.
29a6650d86c12c0756a4bb3ae8bf25079d44dbcd 2009-01-12 * gc.c (ruby_xmalloc, ruby_xrealloc, ruby_xfree): enable to use them without GVL. if GC is invoked, acquire GVL during GC. if NoMemoryError is raised, acquire GVL and raise it.
b5cd33a4adacf86dbf13889ec30c1701b0479c60 2009-01-15 * gc.c (gc_with_gvl): suppress warnings.
e39bd71126c6834637d115995a3602c56302b224 2009-01-15 * common.mk: btest-ruby should receive option with OPTS.
a3a45fafa3d7df3ea1a406847abef1b4aaa07bf1 2009-01-15 * vm.c (rb_vm_inc_const_missing_count, ruby_vm_const_missing_count): added. * vm_insnhelper.h: ditto. * variable.c (rb_const_get_0), insns.def: Constants should not be cached if const_missing is called. [ruby-core:21059] [Bug #967] * bootstraptest/test_class.rb: add a test.
e317b93409e04275605aa0082fb94340a784dc1c 2009-01-15 * lib/debug.rb: as wanabe-san pointed out, set_trace_func should be completely final task in debug.rb. Bug #847 [ruby-core:20449]
e40928733d9849b63bfe665d8b1d0df7bc26df83 2009-01-15 * ruby.c (process_options): decrement parse_in_eval to recognize parsing main or normal eval script. * compile.c (rb_parse_in_main): return 1 if parsing main script. (if parse_in_eval is negative value, it means main script) * parse.y (yycompile0): check rb_parse_in_main() to accumulate script text. Bug #848 [ruby-core:20450]
d9395fc46630c113204cece80781f31373b5a818 2009-01-15 * thread.c (call_trace_proc): as Matz said ([ruby-core:21183]), should skip rb_str_new2() if rb_sourcefile() returns NULL. rb_sourcefile() returns NULL if frame is toplevel of Fiber. [ruby-core:21161] [Bug #985]
a04df27e72aa8e1f5940e80e8646d046977f5198 2009-01-16 * thread.c (thread_start_func_2): call ruby_cleanup() if thread is main thread. [ruby-dev:37624]
4316e4d99b856fcd16a2aa0f08cb6285dcab24af 2009-01-19 * eval.c, vm_eval.c (rb_f_local_variables): move definition from eval.c to vm_eval.c because vm_collect_local_variables_in_heap() should be static function. * vm.c (vm_collect_local_variables_in_heap): make it static.
c4c3f238d78f58242682b8c8428da63b3c018e54 2009-01-19 * iseq.c: rename ruby_iseq_disasm_insn() -> rb_iseq_disasm_insn(). rename ruby_iseq_disasm() -> rb_iseq_disasm(). * compile.c: rename ruby_iseq_compile() -> rb_iseq_compile_node(). rename ruby_iseq_translate_threaded_code() -> rb_iseq_translate_threaded_code(). rename ruby_insns_name_array() -> rb_insns_name_array(). rename ruby_iseq_build_from_ary() -> rb_iseq_build_from_ary(). * iseq.c, compile.c: remove ruby_insn_make_insn_table() and make static function insn_make_insn_table(). * iseq.h, ruby.c, vm.c, vm_core.h, vm_eval.c, vm_dump.c, blockinlining.c: ditto. Rename strange "ruby_" prefix to "rb_" prefix. This changes may affect only core because renamed functions require a pointer of rb_iseq_t which is not exposed.
7d431933b65252109bde705391398126fb5930b9 2009-01-19 * gc.c (garbage_collect_with_gvl): suppress warnings.
651f0e48bb148cfbeb190bd92fa2da736dac0d6c 2009-01-19 * vm_dump.c: add a prefix "rb_vmdebug_" to vm_stack_dump_raw(), vm_stack_dump_raw_current(), vm_env_dump_raw(), vm_proc_dump_raw(), vm_stack_dump_th(), vm_debug_print_register(), vm_thread_dump_regs(), vm_debug_print_pre(), vm_debug_print_post(), vm_thread_dump_state(). This change also may affect core (in fact, user of above functions may be only ko1). * vm_core.h: ditto. * vm_exec.h (SDR2): remove duplicate definition.
cf23d0f0f0b6f3c118a0c243e16cc9b66a81d541 2009-01-19 * vm.c: add a prefix "rb_" to exposed functions vm_get_ruby_level_next_cfp(), rb_vm_make_env_object(), vm_stack_to_heap(), vm_make_proc(), vm_invoke_proc(), vm_get_sourceline(), vm_cref(), vm_localjump_error(), vm_make_jump_tag_but_local_jump(), vm_jump_tag_but_local_jump(). This changes may affect only core because most of renamed functions require a pointer of not-exposed struct such as rb_thread_t or NODE. In short, they are core functions. * cont.c, eval.c, eval_intern.h, load.c, proc.c, thread.c, vm_core.h, vm_dump.c, vm_eval.c, vm_exec.c, vm_insnhelper.c: ditto.
9b520ddcec94c4654ca36bbb404bf4e9569b70cc 2009-01-19 * vm_eval.c, eval.c (rb_f_block_given_p): move definition of "iterator?" and "block_given?" to make static. * vm.c (vm_get_ruby_level_caller_cfp): make it static. * eval_intern.h, vm_insnhelper.c: move decl. of vm_get_ruby_level_caller_cfp() from eval_intern.h to vm_insnhelper.c.
d31e1d4a52fc17c0cd8848eedd6e0934f5ea5291 2009-01-19 * ruby.c (require_libraries): reset th->parse_in_eval while loading libraries. fixes [ruby-dev:37780]
c5d7d78daeb44b4c5ad7a9b624638ffd1be96135 2009-02-13 * cont.c (rb_fiber_alive_p): fix to return true instead of 1. [ruby-dev:37991] * test/ruby/test_fiber.rb: add a test for Fiber#alive?
0cb68b619ef80f8edb050ac4aa21306815b2a501 2009-02-13 * vm_eval.c (eval_string_with_cref): use rb_vm_get_ruby_level_next_cfp() instead of vm_get_ruby_level_caller_cfp(). checking a upper frame is not enough. [ruby-dev:37984] * proc.c, vm_core.h: declare rb_vm_get_ruby_level_next_cfp() on vm_core.h.
8a5746bf34f9b4952dc18566a69c7762b30e1c6a 2009-02-13 fix typo (1 -> 0).
c9e4dc308f51122e0401756ac3aa4972d0b4ad32 2009-02-16 * compile.c: fix to add "ensure" codes across "while" clause before "return" expression. [ruby-dev:37967] * bootstraptest/test_flow.rb: add a test.
0cdfbc9446d65959dc24b82e38b3cb5d6f9d825f 2009-06-07 * thread_pthread.c (rb_thread_create_timer_thread): print fatal error message to stderr instead of using rb_bug(). * KNOWNBUGS.rb, bootstraptest/test_fork.rb: move a fixed test.
79b62da9b421527917bbf9eecd657f369b8175fc 2009-06-08 * thread.c: rename functions which require a parameter "rb_thread_t *", the prefix to be rb_threadptr_ instead of rb_thread_. * thread.c (rb_thread_add_event_hook(), rb_thread_remove_event_hook): change the parameter type from rb_thread_t * to VALUE. * eval.c, eval_error.c, eval_intern.h, signal.c, vm_core.h, vm_eval.c: ditto. * include/ruby/intern.h: remove decl of rb_thread_signal_raise() and rb_thread_signal_exit().
d3027870eeebed365979875858159d98e0f1effa 2009-06-14 * transcode.c (transcode_restartable0): revert last commit because this change cause SEGV at test-all.
63bd8a74e81537ecf2aba0be0f8ef6eec9df2758 2009-06-14 * thread.c, vm_eval.c: add Thread.backtrace. * test/ruby/test_thread.rb: add a test.
06f833e6d5b096afa294725044c1f54e5ae9c414 2009-06-16 * gc.c (rb_objspace_each_objects): New C API, added.
a0e0fafa0c45eba54689854d6c8d3ace9badefe0 2009-06-16 * gc.c: fix indent.
a74d12dc285ed07464d1272c7c15ab3eae4972be 2009-06-16 * include/ruby/ruby.h: New structure RTypedData, added. This structure incldues more explicit type information for T_DATA objects. If RData(obj)->dfree is immediate value `1' on T_DATA object obj, obj is needed to be accessed with RTYPEDDATA(obj) instead of RDATA(obj). A RTypedData structure points the structure rb_typed_data_t. rb_typed_data_t includes information such as the type name of this data, mark and free function what RData includes, and memsize function show how data consuming the memory size. Note that you do not need any change existing T_DATA objects. If you use RDataType instead of RData on T_DATA object, you can specify explicit type information. * gc.c (rb_data_typed_object_alloc, rb_objspace_data_type_memsize, rb_objspace_data_type_name): added.
dfb0fa0ca6b6d860affae3339f7bec83bb694bb4 2009-06-16 fix indent.
af0429b54eef973077f00d24d40fd17687a86ac0 2009-06-16 * st.c, include/ruby/st.h (st_memsize): added. This function returns the memory usage of st_talbe.
51d174a17704c56342488cc1cc932b0825a3f305 2009-06-16 * iseq.c (iseq_memsize): added. Use RTypedData instead of RData for ISeq. * vm.c (env_memsize, vm_memsize, thread_memsize): added. Use RTypedData instead of RData for Env, VM, Thread.
3caa4ee5e545ee975ca3dc3fa798e63876e59a05 2009-06-16 * array.c (rb_ary_memsize): added. * io.c (rb_io_memsize): added. * regcomp.c (onig_memsize): added. * string.c (rb_str_memsize): added. * transcode.c (rb_transcoding_memsize, rb_econv_memsize): added. * variable.c (rb_geneic_ivar_memsize): added.
39a770b7205fe79b50bb8cd370f758e8a82759bf 2009-06-16 * ext/objspace: added. objspace library extends some methods to ObjectSpace module.
9e607430088d2b89576769530aa9069680da97f5 2009-07-07 * include/ruby/ruby.h: rename "...TypeStruct" and "typed_struct" to "TypedData..." and "typeddata", respectively. rename rb_data_type_t#name to rb_data_type_t#wrap_struct_name. * error.c, gc.c, iseq.c, vm.c: ditto.
0ac93a1a405d3642a1e73294c04f428c79f5f947 2009-07-13 * insns.def, vm_insnhelper.c (getinstancevariable): fix to use inline cache. * compile.c: fix to skip inline cache entry (IC). IC is added automatically by compiler. * insns.def, vm_insnhelper.h: fix IC positions. * iseq.c: increment minor_version of ISeq because of above change.
20d9aefccbc5d9b5f9feacef9ee52dc1731aec55 2009-07-13 * vm_core.h, compile.c: declare struct iseq_inline_cache_entry. Inline cache (IC) entries are no longer GC managed object. IC entries are freed when ISeq is freed. * iseq.c: fix mark, free, memsize functions for above change. * insns.def: remove rb_gc_write_barrier(). * vm_insnhelper.c (vm_method_search): ditto. * tool/instruction.rb, template/insns_info.inc.tmpl (insn_iclen): added.
d3cbda6e8dc5732f64b06cacb4c137f01ebe0461 2009-07-15 * dir.c (push_glob): fix GC problem.
c330876d7c5065f89234becc5125426d0d136bdc 2009-07-15 * method.h, vm_core.h: add rb_method_entry_t. Remove nodes around method management. This change affect some VM control stack structure. * vm.c, vm_insnhelper.c, vm_method.c, vm_eval.c: ditto. and make some refactoring. * insns.def, class.c, eval.c, proc.c, vm_dump.c : ditto. * vm_core.h, compile.c (iseq_specialized_instruction): remove VM_CALL_SEND_BIT. use another optimization tech for Kernel#send. * node.h: remove unused node types. * ext/objspace/objspace.c (count_nodes): ditto. * gc.c: add mark/free functions for method entry. * include/ruby/intern.h: remove decl of rb_define_notimplement_method_id(). nobody can use it because noex is not opend. * iseq.c (iseq_mark): fix to check ic_method is available. * iseq.c (rb_iseq_disasm): fix to use rb_method_get_iseq().
0d2449bd35061399c57d6ce87128d7e876db645c 2009-07-15 * io.c (argf_free): free data body.
70303852733730508621b1185f8032449efafa80 2009-07-15 * common.mk: add method.h.
0e03a296e63b9694709de9bc462c08de60873a58 2009-07-15 * dir.c (push_glob): re-fix GC problem.
d4628c0bcd0479b15593cfa4ed0907b4360857e0 2009-07-15 * vm_method.c: separate clearing cache entry code.
94664d6d0cc8042e98c7256ec28a751d3e5b687c 2009-07-16 * node.h, vm_core.h, variable.c: rename global_entry to rb_global_entry. * compile.c, insns.def, iseq.c, vm_insnhelper.h: ditto.
b5dd85f049ce4dc7249711ac9ee5c7a90520d4f1 2009-07-16 * vm_method.c (rb_alias): fix a case which try non-existing method alias. * test/ruby/test_alias.rb: add a test.
9050b61dcbee9bbd5ad9e494de65cd4cd3103af8 2009-07-28 * proc.c (rb_method_entry_arity): support optimized method (send). * test/ruby/test_method.rb: add a test for above.
497ee63f8d8c5df055efa6b8782a07ebdbcb0443 2009-07-28 * proc.c (rb_method_entry_arity): support not_implemented method. (I have no idea to test it)
07de51fc4fbb392cedc5b5700bab7b2ac37cfd02 2009-07-28 * vm_core.h, vm_insnhelper.c (vm_call_method): revive VM_CALL_OPT_SEND_BIT and use it to recognize "send" method.
8e8e34319ba6d9457b3ffa374738baa41a96be05 2009-08-12 * insns.def, vm.c, vm_insnhelper.c, vm_insnhelper.h: check definition of (classes)#=== for case/when optimization. Fix Bug #1376 [ruby-core:23190]. * string.c (Init_String), bignum.c (Init_Bignum), numeric.c (Init_Numeric): define String#===, Symbol#===, Bignum#===, Fixnum#===, Float#=== as same as (classes)#==.
a174dbcd4fc33a0355b92b646ec3a412b1ebbb14 2009-08-15 * vm_insnhelper.c (opt_eq_func): fix optimization bug. This issue was found out and debugged with Takuto Hayashi at Security and Programming camp 2009.
d2d0d733c168916d356e088ed14b6e5a47766766 2009-09-01 * vm_eval.c (eval_string_with_cref): fix to check local_table_size. [ruby-dev:39205] [Bug #2024]
a4b94c4443953b61ecdbb764e4a544c0e7208c7e 2009-09-02 * gc.c (obj_free): fix to free method table (fix memory leak).
bd8da69e9b5df785cc3fa0871332257e09335a78 2009-09-06 * insns.def (setinstancevariable), vm_insnhelper.c (vm_setivar): fix to use inline cache (trivial optimization).
f825d848986177d779e8018a1083f88b8799ae5f 2009-09-06 * compile.c (iseq_specialized_instruction), insns.def (opt_size): optimize #size methods (by specialized instruction). * id.c, id.h, vm.c, vm_insnhelper.h: ditto.
55cfc1e4098cf742758dd6f4d5c96a30b0e187fa 2009-09-06 * template/id.h.tmpl: fix this. * id.h: removed. Because this file is generated automatically.
f1e98086f218f1d5de247f1670f94bfcdff2bf33 2009-09-06 * vm_insnhelper.h (CALL_SIMPLE_METHOD_IC): make a macro invoke simple method with inline cache entry. * insns.def (opt_length, opt_size): fix to use inline method cache.
3463db3068924d4671d7cb982658eae202b40eb6 2009-09-06 * vm_insnhelper.c: rename macro name ENABLE_IC_FOR_IVAR to USE_IC_FOR_IVAR.
dd7f5639a989ecec4aa8a30f36e89ef40a51e284 2009-09-06 * benchmark/driver.rb: remove RUBY_VERSION output.
cea5aeb795149cead9a9cb151a4754c6ce185d13 2009-09-06 * Makefile.in, common.mk: move a id.h generation rule.
b82db5251c2c39f8a10cd21b595cc1cad8155cdc 2009-09-06 * insns.def (opt_*): add IC operands. * vm_insnhelper.h (CALL_SIMPLE_METHOD): add a version which use an inline cache. USE_IC_FOR_SPECIALIZED_METHOD macro switchs the behaviour. This change also removes CALL_SIMPLE_METHOD_IC() macro. * tool/instruction.rb: fix elimination process to ignore variable "ic".
a31c632299b72cd9e4ff53cec6d7b56f1f8a54f7 2009-09-08 * iseq.c (iseq_mark): no need to mark inline cache entries. * insns.def (onceinlinecache, setinlinecache): save a value to mark cached value.
e519c9d960549163c17571689cc977f7ca45073e 2009-09-10 * include/ruby/ruby.h (rb_data_type_t): Add comments. And add a member variable "data", a multi-purpose storage area for rb_data_type.
6f817b6dd2d0c749a6657077845331130a1fa4da 2009-09-12 * vm_core.h: change members of iseq_inline_cache_entry. make cache value members to one union member "ic_value". * insns.def: ditto. * vm_insnhelper.c: ditto.
554e9a83e02b00d97870432c82267fc63c469c5f 2009-09-17 * blockinlining.c: removed. * README.EXT: ditto. * README.EXT.ja: ditto.
c8c6fde56f84c4fd26ade4268376279c65266949 2009-09-17 * eval_intern.h: use rb_node_newnode() directly.
f833dd2e24b821c083385863dc552bd847ce85c9 2009-09-25 * iseq.c (compile_string): rename to parse_string(), because this function only parse String to NODE.
6ed425d55b45cfbca9f03e6083ac35622e694653 2009-09-26 * string.c: use rename-macro instead of RUBY_ALIAS_FUNCTION_TYPE. Because build causes failure.
618445576faa94fcd6d3957ea3fb59f6372b64ba 2010-01-24 * eval.c, vm.c, vm_eval.c, vm_insnhelper.c: fix issues about return and c-return trace. This issue skips (c-)return event with global jump such as break or return. This fix make vm invoke hooks at stack rewind timing. fix [ruby-core:27606] [Bug #2610]. * test/ruby/test_settracefunc.rb: add a test for above.
d3f73f45d8342e37a814eeb8c98e1d04f451a3b4 2010-02-24 * insns.def: Change the operand type of setinlinecache (OFFSET to IC). This IC must be same as corresponding getinlinecache instruction's IC operand. This change is for a little performance improvement (getting IC directly) and is for the AOT compilation development. * compile.c, iseq.c, insns.def: Change the approach to handling inline cahce (IC) type operand to enable the above change. This change also affects ISeq#to_a method. The inline cache operand will be dumped by fixnum, the index of inline cache, in other words, inline cache identity. * template/insns_info.inc.tmpl, tool/instruction.rb: No need to count inline cache size (insn_iclen()).
9da12c5850a4226b51ba5fd8fd52c45939f7757c 2010-03-09 * compile.c (defined_expr), insns.def (defined): fix to pass a Symbol object such as :$foo for the "defined?($foo)" expression on defined instruction. This patch fixes ISeq#to_a/load.
8ed1f433922a45b941fd58e6c3054c8e4c97dd53 2010-05-04 * vm_insnhelper.c (argument_error): push correct backtrace. Bug #2281 [ruby-core:26333]
b4d7d616d9ad8d94df0563f06318c7b9a6a80269 2010-05-04 * method.h, vm_method.c: rename some internal functions related to rb_method_entry_t. rb_add_method_me() -> rb_method_entry_set(). rb_get_method_entry() -> rb_method_entry_without_cache(). rb_gc_mark_method_entry() -> rb_mark_method_entry(). * class.c, proc.c: ditto.
833cade2dce8ee8a9dd2091fcc84880030a51d54 2010-05-05 * vm_method.c (rb_unlink_method_entry, rb_sweep_method_entry): added. Unlinked method entries are collected to vm->unlinked_method_entry_list. On the GC timing, mark all method entries which are on all living threads. Only non-marked method entries are collected. This hack prevents releasing living method entry. [Performance Consideration] Since this Method Entry GC (MEGC) doesn't occuer frequently, MEGC will not be a performance bottleneck. However, to traverse living method entries, every control frame push needs to clear cfp->me field. This will be a performance issue (because pushing control frame is occurred frequently). Bug #2777 [ruby-dev:40457] * cont.c (fiber_init): init cfp->me. * gc.c (garbage_collect): kick rb_sweep_method_entry(). * method.h (rb_method_entry_t): add a mark field. * vm.c (invoke_block_from_c): set passed me. * vm.c (rb_thread_mark): mark cfp->me. * vm_core.h (rb_thread_t): add a field passed_me. * vm_core.h (rb_vm_t): add a field unlinked_method_entry_list. * vm_insnhelper.c (vm_push_frame): clear cfp->me at all times. * vm_insnhelper.c (vm_call_bmethod): pass me. * bootstraptest/test_method.rb: add a test.
c462c50d6336a0c7823ff8cfce51f8bff22eeff6 2010-05-05 * cont.c: apply FIBER_USE_NATIVE patch. This patch improve Fiber context switching cost using system APIs. Detail comments are written in cont.c.
26c48195afc911ed45ae2db72dc68d7373e4504e 2010-05-06 * cont.c (fiber_setcontext): Fix last commit.
9831508ba3296789f9d00ef4296e7b75d2d8b965 2010-09-21 bootstraptest/test_method.rb: add a test for [ruby-core:30534].
f01fae288597249bacff89e89ebfbc3067036f82 2010-09-21 * bootstraptest/test_method.rb: fix last commit.
86a8b820d636a36ddc49f9c906f5d0744dd3ef23 2010-09-27 * insns.def (opt_case_dispatch), vm_insnhelper.c: execute the procedures of "when" clauses by bytecode instead of st_foreach() when the object does not hit prepared hash. [ruby-dev:42304]
559fd3e439194bbc8d55cae30c8c1ba13832c8e8 2010-10-14 * insns.def, iseq.c, vm_insnhelper.c: rename variable name (ip -> iseq).
261661517af17df2cb8602594ab263b25c39132c 2010-10-15 * hash.c (rb_hash_aref): skip calling "default" method if it is not neede for speed-up.
e923b67707d05f0ab55885cf94037fd9aab75876 2010-10-21 * gc.c (gc_lazy_sweep): Variable declarations should be at the head of block.
3bd7384c76c439a80a7b2157888edb3d132c8cf2 2010-10-23 * vm_dump.c (rb_vm_bugreport): fix to add bug outputs. - loaded script ($0) - loaded features ($") - process memory map on Linux (/proc/self/maps) * vm_dump.c (rb_vmdebug_stack_dump_raw): fix header message.
df26e9d44e5c4555b5e42f593ab6afe50503f1d6 2010-10-24 * common.mk (run.gdb): Quit gdb on 'make gdb' when no signals are received.
b36aa7af03a481fc1f41533256a78946498ba0ae 2010-10-27 * ext/objspace/objspace.c (memsize_of): fix rdoc. * ext/objspace/objspace.c (total_memsize_of_all_objects): added. * test/objspace/test_objspace.rb: - add a test for ObjectSpace.total_memsize_of_all_objects. - add two tests for ObjectSpace.memsize_of (for nil and Fixnum).
492d120877e6687fa27d68c3bb17f776d14340fc 2010-10-27 * gc.c (GC.stat): added. [ruby-dev:38607] * test/ruby/test_gc.rb: add a test for above.
87c0b99446b0aa2265e25d0cf06ba5676e1683a9 2010-10-28 * gc.c (before_gc_sweep, run_final): fix decrement timing of final_num.
8121a4f5a856b94345f68dd60a8873afc5d1620f 2010-10-28 * ext/objspace/objspace.c (ObjectSpace.memsize_of_all): rename ObjectSpace.total_memsize_of_all_objects() to ObjectSpace.memsize_of_all([klass]). Accept Class object to filter the objects. * test/objspace/test_objspace.rb: fix test for above change.
32623a16276b8c99a8c142c570cb2f50dc3df737 2010-10-29 * test/profile_test_all.rb: added. You can use test-all profiler with the following command: RUBY_TEST_ALL_PROFILE=true make test-all This command generates ./test_all_profile and you can analyse which tests consume memories. * test/runner.rb: ditto.
0a0c6572856431d822e76348bd2c0f0933b537e0 2010-10-29 * ext/objspace/objspace.c (memsize_of): take care of T_CLASS/const_tbl. a patch from nagachika <nagachika00@gmail.com> [ruby-dev:42490]
340bb04efe438e10a972c3d159451636b69ead1e 2010-10-29 * iseq.c (iseq_s_compile): fix optional argument. a patch from Yutaka HARA [ruby-core:32953] [Ruby 1.9-Bug#4001]
b76fd8283aa28794c082c61615b57bc0e80acdc7 2010-10-31 * vm_core.h: some refactoring. - move decl. of rb_compile_option_struct to iseq.h. - define enum iseq_type. - define enum vm_special_object_type. * compile.c: some refactoring. - apply above changes. - (struct iseq_link_element): change value of type. - remove unused decl. - fix comment. - rename iseq_build_body and iseq_build_exception to iseq_build_from_ary_body and iseq_build_from_ary_exception. * iseq.h: define enum catch_type and enum defined_type. * insns.def: apply above changes. * iseq.c: define ISEQ_MAJOR_VERSION and ISEQ_MINOR_VERSION.
7b0d48c1fad4185f7d72ce469c296068474389c4 2010-10-31 * gc.c (finalizer_table, objspace->final.table): Create finalizer_table at Init_heap(). Remove all null checks of finalizer_table. * gc.c (mark_tbl): skip if no table entries. * gc.c (slot_swee): remove useless need_call_final check.
f6b2490fdb7d30d0c4ab37d63801f969c1aad4d5 2010-11-03 * gc.c, vm.c, vm_core.h: remove USE_VALUE_CACHE option.
08db452620d5e39cf239b5fc82b7fed0a33cce37 2010-11-04 * gc.c (after_gc_sweep, slot_sweep): finalizers should be invoked as soon as possible.
3ff23bf9268d98597b14eb3198bc31dc40810841 2010-11-04 * gc.c (after_gc_sweep, before_gc_sweep): invoke rb_sweep_method_entry() as soon as possilbe.
ba0143b59138a905eaf5f6a05fb17c81d5882bb2 2010-11-04 * gc.c (before_gc_sweep): fix commit miss.
e95b72a1f1817180ef4958bb5f8573459c0c2c33 2010-11-04 * gc.c (run_final): do not need argument obj.
ad3427002c196abbac9d7a62c4c32b205ecff4dd 2010-11-04 * gc.c (run_final): do not need argument obj.
be4eee217c5630c62e16fb31ae729cf6754ad013 2010-11-04 * ChangeLog: missed to write a last ChangeLog. * gc.c (gc_finalize_deferred): removed. * gc.c (rb_gc_finalize_deferred): Do not invoke a free_unused_heaps().
71603f3f011bd47993e3ae0db441916ec2533991 2010-11-04 * gc.c (rb_newobj): force garbage_collect() if GC.stress == true.
450463d5fbc7098666c1405b5ea1ece4c8dd04a5 2010-11-27 * thread.c, vm_core.h: make gvl_acquire/release/init/destruct APIs to modularize GVL implementation. * thread_pthread.c, thread_pthread.h: Two GVL implementations. (1) Simple locking GVL which is same as existing GVL. (2) Wake-up queued threads. The wake-up order is simple FIFO. (We can make several queues to support exact priorities, however this causes some issues such as priority inversion and so on.) This impl. prevents spin-loop (*1) caused on SMP environemnts. *1: Only one Ruby thread acqures GVL again and again. Bug #2359 [ruby-core:26694] * thread_win32.c, thread_win32.h: Using simple lock not by CRITICAL_SECTION but by Mutex. Bug #3890 [ruby-dev:42315] * vm.c (ruby_vm_destruct): ditto.
7a4b99129b1e05221add4132533a92de4c454da3 2010-11-28 * thread_pthread.c (native_cond_*): Check return code. (Some OSs except Linux return error code).
e4cf9c59fda102a80aa767c3a66a4738e26f6213 2010-11-28 * thread_pthread.c: remove pthread_atfork().
283c36e761b55a6f393b088261b7ceee8c83d6e8 2010-11-28 * thread_pthread.c (NATIVE_MUTEX_LOCK_DEBUG): move and use it. * ChangeLog: fix my timezone.
5a363fbb50570063019fd1dfd13490f053cbb29f 2011-06-10 * common.mk: restore TESTRUN_SCRIPT to "$(srcdir)/test.rb". TESTRUN_SCRIPT is used by "make run", "make gdb" and so on.
3c9187a2ad892d0c7c4b905104bb71c3c34a999e 2011-06-12 * benchmark/bm_vm3_thread_mutex.rb: remove it. * benchmark/bm_vm3_thread_mutex[1-3].rb: added 3 benchmarks. 1: one thread with one mutex (no contention). 2: two threads with one mutex (contention). 3: 1000 threads with one mutex (huge number of contention) Abobe removed benchmark was type 3. Therefore, this commit adds type 1 and 2 benchmark.
8c09664a94ed4e1bf043847b28e4567da845292b 2011-06-12 * vm_method.c (rb_clear_cache*): update only vm state version. * vm_method.c (rb_method_entry_get_without_cache, rb_method_entry): Fill method cache entry with vm state version, and check current vm state version for method (cache) look up. This modification speed-up invaridating of global method cache table. [Ruby 1.9 - Feature #3905] [ruby-core:36908]
d5abe72ccac9705a68868e6642a42c0425b121bc 2011-06-12 * benchmark/bm_vm3_clearmethodcache.rb: added.
7b614a53dd50508410c48113dce87abfc003df6b 2011-06-12 * ext/objspace/objspace.c (total_i): fix to skip no ruby objects.
038ef3f05cbddb484c181a8614b088d99014917b 2011-06-13 * vm_core.h, vm_insnhelper.h: move decl. of ruby_vm_global_state_version and related macros from vm_core.h to vm_insnhelper.h. * vm.c (vm_clear_all_cache): added. This function is called when ruby_vm_global_state_version overflows. TODO: vm_clear_all_inline_method_cache() is only place holder. We need to implement it ASAP. * vm_method.c (vm_clear_global_method_cache): added.
ef3fb5d1e89c6494f1223da46ed8c7a74dff7d2d 2011-06-14 * benchmark/bm_vm3_thread_*.rb: renamed bm_vm3_thread_*.rb to benchmark/bm_vm_thread_*.rb.
1ac74a11c2594f1cc4284c941ccf5ca91fc8e146 2011-06-16 * thread_pthread.c (native_thread_create): fix debug message. (add last newline)
98d45ef140dcc53f4dd7c0dbdd25433d5c378ff7 2011-06-16 * benchmark/bm_vm4_thread_create_join.rb, benchmark/bm_vm4_thread_mutex[1-3].rb: renamed to bm_thread_* (fix last rename).
772a2811923e1634ff7c157abdc9b41740659af6 2011-06-16 * thread_pthread.c, thread_pthread.h: remove unused variables. (native_thread_data_t::gvl_cond, native_thread_data_t::gvl_next)
436810414630dd00c9881e06f0007f8f16973ca6 2011-06-18 * vm.c, vm_core.h (rb_vm_stack_to_heap): fix "const" place.
d1d5d5e79845c292c6118884fa66729954daad01 2011-06-27 * thread_pthread.c: Stop polling in the timer thread when there are no waiting thread. If there are 2 or more runnable threads, the timer thread does polling. Avoid polling makes power save for several computers (0.2W per a Ruby process, when I measured). If outside-event such as signal or Thread#kill was occuerred when the timer thread does not do polling, then wake-up the timer thread using communication-pipe (the timer thread waits this communication-pipe with select(2)). The discussion about this modification can be found from the post [ruby-core:33456] and other related posts. Note that Eric Wong and KOSAKI Motohiro give us the huge contributions for this modification. Thanks. * thread_pthread.c (rb_thread_wakeup_timer_thread): add a function. This function wakes up the timer thread using communication-pipe. * thread.c (rb_thread_stop_timer_thread): add a parameter which specify closing communication-pipe or not. * thread.c (rb_thread_terminate_all): do not stop timer thread here (ruby_cleanup() terminate timer thread). * signal.c: wake up timer thread using rb_thread_wakeup_timer_thread() from signal handler. * eval.c (ruby_cleanup): use rb_thread_stop_timer_thread(1). * process.c: use rb_thread_stop_timer_thread(0) (reuse communication-pipe). * thread_win32.c (rb_thread_wakeup_timer_thread): add a dummy function. * vm_core.h: add and fix decl. of functions.
f18cf4f023448fc25078303c12d1cec15ed3edf9 2011-06-27 * thread_pthread.c (rb_thread_create_timer_thread): Fixes missing initialization of oflags.
014a5f31789856f9ed7a59f19fb3c3e544655a7d 2011-06-28 * thread_pthread.c (consume_communication_pipe): Make "buff" as static. (Maybe) "buff" can be shared between any caller (any threads) because no one use the read values. And remove const value "buff_size", and define CCP_READ_BUFF_SIZE macro.
9ca26b50d7117726f821735e1fd7eff4b93d34d0 2011-06-28 add a detail comment.
c22126755cd89f2b8aa309df8908d839e588a3bd 2011-06-28 * error.c (rb_async_bug_errno): async-safe bug report function. In timer thread, signal handler shoul use it. The patch is contributed by Eric Wong <normalperson@yhbt.net>. Refs: [ruby-core:37644] and [ruby-core:37647] * thread_pthread.c: use rb_async_bug_errno(). And replace all fprintf() to write(). * internal.h (rb_async_bug_errno): add decl. of above func.
87dadf3b8cd9b8bd2d5a5ba1a5009e289447f08a 2011-06-28 * thread_pthread.c (native_stop_timer_thread): skip to close communication pipe to avoid timing bug (process termination timing). The communication pipe will closed by OS.
51646778414daf9546aff748e6bf0561b050aa5c 2011-06-30 * thread_pthread.c (rb_thread_create_timer_thread): allocate machine stack for the timer thread at least 12KB. FreeBSD 8.2 AMD64 causes machine stack overflow (SIGSEGV) only with PTHREAD_STACK_MIN (maybe defined as 2KB).
d49a61e68f1d6ffe448ec3244c63d48adc101cea 2011-06-30 * thread_pthread.c (ping_signal_thread_list, thread_timer): fix to keep polling state if there are any ping-tasks.
3b32735546e989557a8992063f9f1bbdcd999beb 2011-06-30 * ext/objspace/objspace.c (ObjectSpace.count_tdata_objects): Fix rdoc. * ext/objspace/objspace.c (ObjectSpace.count_tdata_objects): Change key type if the klass of a object is zero (internal object). Read rdoc for details. * internal.h: export rb_objspace_data_type_name().
9942e92ca6693bf0b6f795fed11f1ff7acef8b8a 2011-06-30 add ref to ticket.
fa2c1c75a9ef0c9a9b35a56108ef6d2ea84717e5 2011-06-30 * thread_pthread.c (thread_timer): ignore unknown errno. (we observed that select(2) was canceled by errno=514 on boron == Linux/Xen environment)
065fe8b7a4dadd41760131cb3778abd4aef26e90 2011-06-30 * vm_insnhelper.c (vm_call_bmethod): fix to hook call/return event for methods defined by define_method(). * thread.c (call_trace_proc): Fix to skip if class is not given (0). Note that ID and Class object are passed for call/return event if the called method was defined by define_method(). If you are author of tracer/profiler/debugger, this may be an important change. You should check passed class as zero or non-zero instead of checking the event type. * test/ruby/test_settracefunc.rb: add a test for above.
3bd05662883a14ce0ffe63666317d80faeb7afef 2011-06-30 add an issue number.
c4becf8aaf8b1dc27ca274457548117d703c65e5 2011-06-30 * benchmark/bm_vm2_defined_method.rb: added to measure performance of bmethod (method defined by define_method()).
fa4514e4fedc1e1390200e3901e2add22a4a27b4 2011-06-30 * thread.c (rb_threadptr_check_signal): only wake up main thread. * thread.c (rb_threadptr_execute_interrupts_common): check signal deliverly if it is main thread. fixes [ruby-dev:44005] [Ruby 1.9 - Bug #4950] * bootstraptest/test_fork.rb: add a test for above. * signal.c (rb_get_next_signal): skip if signal_buff is empty. (check signal_buff.size first) * vm_core.h: remove unused variable rb_thread_t::exec_signal. * thread.c (rb_thread_check_trap_pending): check rb_signal_buff_size() because rb_thread_t::exec_signal is no longer available.
2e4fb84f7c78d7d9cd24d1802ef97fda6d2466d0 2011-06-30 * vm_insnhelper.c (vm_getivar): check vm state version to invalidate inline chache (ivar index). fixes Bug #4926. * vm_insnhelper.c (vm_setivar): ditto.
eb35bb0b351f55459fdfce7198e8756e37141dff 2011-07-03 * include/ruby/intern.h, thread_pthread.c (rb_reserved_fd_p, RB_RESERVED_FD_P): added. This C API is to limit to access fds which are used by RubyVM internal. In this version of CRuby, return 1 if fd is communication pipe. If your application needs to close all file descriptors to preent resource leak, skip internal fds using this C API. We also define a macro RB_RESERVED_FD_P(fd). So you can write #ifndef RB_RESERVED_FD_P #define RB_RESERVED_FD_P(fd) 0 #endif for Ruby 1.9.2 or previous version to write compatible extensions. See [ruby-core:37727] * thread_win32.c (rb_reserved_fd_p): added (return 0 for any fds). * io.c (rb_io_initialize): raise ArgumentError if given fd is reserved by Ruby.
919978a8d9e25d52697c0677c1f2c0ccb50b4492 2011-07-10 * internal.h (rb_thread_call_with_gvl, rb_thread_call_without_gvl): make them visible as experimental C APIs. fixes Feature #4328.
9cf9d5eaf7923498a3ece7f6757c9010aaa55e71 2011-07-10 * vm_insnhelper.c (vm_throw): check a class frame. Fixes Bug #4648. The patch is contributed by Kazuki Tsujimoto. * bootstraptest/test_proc.rb: add tests for above.
ce698d4c0d4eb9c48650466b7f1566c869eb2e01 2011-07-10 * internal.h: add comments (cautions).
4f03f0cb67b0bf6497ffd4051e872905e3b49ead 2011-08-24 * insns.def (defined): fix to checking class variable. A patch by Magnus Holm <judofyr@gmail.com>. Thanks! * test/ruby/test_variable.rb: add a test for above.
7049d9c80d1ba859beb5d68c7a9de37d5c11b8e8 2011-08-24 * iseq.h, iseq.c, compile.c: Change the line number data structure to solve an issue reported at [ruby-dev:44413] [Ruby 1.9 - Bug #5217]. Before this fix, each instruction has an information including line number (iseq::iseq_insn_info_table). Instead of this data structure, recording only line number changing places (iseq::iseq_line_info_table). The order of entries in iseq_line_info_table is ascending order of iseq_line_info_table_entry::position. You can get a line number by an iseq and a program counter with this data structure. This fix reduces memory consumption of iseq (bytecode). On my measurement, a rails application consumes 21.8MB for iseq with this fix on the 32bit CPU. Without this fix, it consumes 24.7MB for iseq [ruby-dev:44415]. * proc.c: ditto. * vm_insnhelper.c: ditto. * vm_method.c: ditto. * vm.c (rb_vm_get_sourceline): change to use rb_iseq_line_no().
beb26e1b491f8d9fd20a2d944f036100cd1abac3 2011-08-24 * vm_insnhelper.h, vm_insnhelper.c, vm.c, vm_method.c, insns.def: Manage a redefinition of special methods for each classes. A patch from Joel Gouly <joel.gouly@gmail.com>. Thanks!
ef039de5604582fbf87aea2dbc9a28697423aa51 2011-08-24 * vm.c (vm_make_env_each): work around to solve Bug #2729. fixes: Bug #2729 a patch from Kazuki Tsujimoto <kazuki@callcc.net> This problem is caused by changing dfp (dynamic env pointer) from saved dfp. Saved dfp is pointed env in VM stack. However, the dfp can be moved because VM copies env from VM stack to the heap. At this copying, dfp was also changed. To solve this problem, I'll try to change throw mechanism (not save target dfp, but save target cfp). * bootstraptest/test_flow.rb: add a test for above.
5d486bec613a2b420a19a03f67e6253ae22b7ca7 2011-08-26 * vm_core.h: add a decl. of rb_autoloading_value().
45248e74e424715c51c0d14e958fd3a9995ba572 2011-08-26 * iseq.c (iseq_data_to_ary): fix type of variable (long -> unsigned long) to suppress a warning.
49042ae821cb15986ab92d030960ee84154ae8a7 2011-09-09 * gc.c (GC_PROFILE_MORE_DETAIL, CALC_EXACT_MALLOC_SIZE): define macros only if they are not defined. fixes: [Ruby 1.9 - Feature #5291]
9cd8b76e6df560d1da61138e99eab76b7c3e1f6b 2011-11-09 * cont.c (rb_fiber_m_transfer, rb_fiber_resume): prohibit using "resume" after "transfer" method are used. You should not mix "resume" fiber and "transfer" fiber. [Bug #5526] * NEWS: add information about this change.
0c215e34dfc51e0757322c8ef17d421c6dfb07e4 2011-11-09 * test/ruby/test_fiber.rb: add tests for r33684 (Fiber#resume).
6da0604df71d66b7484e77b92e5c13154664b06e 2012-04-10 * compile.c (iseq_set_sequence): show a hint if there are duplicated "when" clauses. [ruby-core:41502] [ruby-trunk - Feature #5716]
ee7f8d4805fb4a661b8e8328be49f32cbc3e606d 2012-04-12 * compile.c (compile_array, compile_array_): Divide big array (or hash) literals into several blocks and concatetene them. There was a problem that a big array (hash) literal causes SystemStackError exception (stack overflow) because VM push all contents of the literal onto VM stack to make an array (or hash). To solve this issue, we make several arrays (hashes) and concatenate them to make a big array (hash) object. ?? * compile.c (iseq_compile_each, setup_args): use modified compile_array. * vm.c (m_core_hash_from_ary, m_core_hash_merge_ary, m_core_hash_merge_ptr): added for above change. * id.c (Init_id), parse.y: add core method ids. * bootstraptest/test_literal.rb: add simple tests. * bootstraptest/test_eval.rb: remove rescue clause to catch SystemStackError exception. * test/ruby/test_literal.rb: add tests to check no stack overflow.
45b3509ce1c34eb8fcca864ade6a42d6ca9e9249 2012-04-12 Add a ticket number for last commit.
66d247bcb50a29769ff940100223544c125521aa 2012-04-24 * compile.c: fix to output warning when the same literals are available as a condition of same case clause. And remove infomation ('#n') because we can find duplicated condition with explicit line numbers. [ruby-core:38343] [Ruby 1.9 - Bug #5068] * test/ruby/test_syntax.rb: add a test for above.
6978b8ca6767cf79840354f7e0472d9d635a95b9 2012-04-28 * vm_core.h (rb_thread_t#yielding): add a field. * thread.c (rb_thread_schedule_limits): set th#yielding while release GVL to yield CPU time. * thread.c (timer_thread_function): skip timer interrupt when th#yielding is true. This patch fixes r35480. * thread.c (rb_threadptr_execute_interrupts_common): revert a patch of r35480. * ChangeLog: add an extended memo of r35480. http://bugs.ruby-lang.org/projects/ruby-trunk/wiki/R35480_ExtendedMemo
458c30e57d23bbef7fda89e436a463ab6800d1e9 2012-05-01 * common.mk: replace '@' prefix to '$(Q)' to control build process outputs.
e6bd1496a8f6c57c2b876d321483782485252859 2012-05-01 * common.mk: "$(Q)-..." doesn't work on nmake.
6051f542608d2fa86c84f45aeae847022550dfcc 2012-05-06 * compile.c (iseq_compile_each): remove unused variable `size'.
8bcf7fc40266faa09cf8b6cebb2d96c1bb8d51ee 2012-05-22 * vm_core.h: add a data type rb_location_t to store iseq location information. rb_location_t#filename, filepath, name and line_no was moved from rb_iseq_t. rb_location_t#basename is a new field which is similar to `name' field without any decoration. `name' field contains some decoration such as `block in foo'. `basename' only contains `foo'. rb_iseq_t contains memory object of rb_location_t. * iseq.c: setup rb_location_t for each rb_iseq_t memory objects. * compile.c, proc.c, vm.c, vm_dump.c, vm_eval.c, vm_insnhelper.c, vm_method.c: support about it.
3dcebce5235276e99a75c6b0c71f4f3c4f4e225c 2012-05-24 * vm.c: add RubyVM::Backtrace object (btobj). Backtrace information contains an array consists of location information for each frames by string. RubyVM::Backtrace object is lightweight backtrace information, which contains complete information to generate traditional style backtrace (an array of strings) with faster generation. If someone accesses to backtrace information via Exception#backtrace, then convert a RubyVM::Backtrace object to traditonal style backtrace. This change causes incompatibility on marshal dumpped binary of Exception. If you have any trouble on it, please tell us before Ruby 2.0 release. Note that RubyVM::Backtrace object should not expose Ruby level. * error.c, eval.c, vm_eval.c: ditto. * internal.h: ditto. * eval_error.c: fix to skip "set_backtrace" method invocation in creating an exception object if it call a normal set_backtrace method (defined by core). * test/ruby/test_settracefunc.rb: fix for above change. * vm_method.c (rb_method_defined_by): added. This function checks that the given object responds with the given method by the given cfunc. * benchmark/bm_vm2_raise1.rb, benchmark/bm_vm2_raise2.rb: add to measure exception creation speed. raise1 create exception objects from shallow stack frame. raise2 create exception objects from deep stack frame.
d5893b91faa7dc77ca6c9728d1054dabd757aead 2012-05-24 * vm_method.c (rb_method_defined_by): removed. nobu pointed out that rb_method_basic_definition_p() is enough for last commit. * error.c, eval_error.c: change for above.
1f3142a4477a10bfe566c17837c2a0b9f6cba00f 2012-05-25 * vm.c: refactoring backtrace related funcitons. (1) unify similar functions (rb_backtrace_each() and backtrace_object()). backtrace_each() is a unified function. variation: a) backtrace_object(): create backtrace object. b) vm_backtrace_str_ary(): create bt as an array of string. c) vm_backtrace_print(): print backtrace to specified file. d) rb_backtrace_print_as_bugreport(): print backtrace on bugreport style. (2) remove rb_backtrace_each(). Use backtrace_each() instead. (3) chang the type of lev parameter to size_t. a) lev == 0 means current frame (exception, etc use it). b) lev == 1 means upper frame (caller(0) use it). * vm_core.h, vm_dump.c, vm_eval.c: ditto. * vm.c (backtrace_object(), vm_backtrace_str_ary()): fix to return a correct size of caller(lev) array. Let n be a "caller(0).size" then ln as caller(lev).size should be (n - lev). However, the previous implementation returns a wrong size array (ln > n - lev). [ruby-dev:45673] * test/ruby/test_backtrace.rb: add tests for backtrace.
a5f190615e894c0d1931300b27d8651f7eedf5e1 2012-05-25 * vm.c (oldbt_init, vm_backtrace_str_ary): arg->data should be initialized before calling `backtrace_each()'.
4258db79543d97845f0684f9b69911b67181cecd 2012-05-25 * vm_eval.c (rb_f_caller): caller() method accepts second optional argument `n' which specify how many frames should return. For example, `caller(0, 1)' returns only one frame information which calls caller() method. If there are less than n frame information, then all frame information are returned. If n is 0, then always return []. This fix is part of [ruby-dev:42345] [Ruby 1.9-Feature#3917]. However, performance and features are not enough. RDoc is also not available. * test/ruby/test_backtrace.rb: add a test for above.
6d597718cf45aff0dd25ee7c7e8bd8e158ac0268 2012-05-26 * vm.c (rb_frame_info_t): keep previous ISEQ frame info for CFUNC frame info. And fix to cache a calculated line_no of ISEQ frame info.
fbf531c4a249e75260e80ed767114b02e0a1e985 2012-05-26 * vm.c (frame_info_to_str): add `break'. * vm.c (backtrace_object): remove lev and n parameter. backtrace_object always returns all of backtrace information. * vm.c (rb_backtrace_to_str_ary): fix to use backtrace_object(). This change improve performance of caller(lev, n). * benchmark/bm_vm3_backtrace.rb: added to check above improvement. FYI: measurement on my laptop, 1.9.3p229 needs 5.125 sec, and current trunk only needs 0.299sec.
4f54d4710e1edfbcb8b0d7d7feea1bd8c519229f 2012-05-26 * vm.c (RubyVM::FrameInfo): add a class to access each frame information. You don't need to parse strings from caller(). FrameInfo has the following methods: FrameInfo#name: method name, class name, etc with decorations. FrameInfo#basename: name without decorations. FrameInfo#line_no: line number. FrameInfo#filename: file name. FrameInfo#filepath: full filepath. FrameInfo#iseq: iseq if it is iseq frame (defined by ruby script) FrameInfo#to_s: return caller() method style string. RubyVM::FrameInfoFrameInfo.caller(n, lev) returns array of FrameInfo objects. The name "RubyVM::FrameInfoFrameInfo.caller" is long and ambiguous (same as caller() method), we need to change the name before Ruby 2.0 release. Good names or comments are welcome. * test/ruby/test_backtrace.rb: add a test for above change.
ca433168bad83458e02309fca76d9a9e00541419 2012-05-26 * NEWS: add Kernel#caller's second argument.
a28b100f1c3ac22eed095e3a1fd6874ad5ecbb9f 2012-05-26 ChangeLog: fix typos
9c3d8bb0f26762d6809501a38be773de685764f0 2012-05-26 * test/ruby/test_backtrace.rb (test_caller_lev): decreaze recursion size.
ec187ff8473f3c2091253496595b515ea59d2ec0 2012-05-26 * vm.c (backtrace_*): change type of lev and n from size_t to int. Also set type of rb_backtrace_t#backtrace_size to int. A patch from nobu. * vm_eval.c: ditto.
06653c193384cbb89086213135c98b2d1c1638cc 2012-05-27 * benchmark/driver.rb: fix to continue benchmarks when an error is occurred.
7796c7d75188ba20aa7f8fb0222f0d26fae7a27d 2012-05-27 * benchmark/bm_vm1_lvar_init.rb: added. This benchmark measures a initialize time of non-used variable. * benchmark/bm_vm1_lvar_set.rb: added. This benchmark measures a local variables initialization time. * benchmark/bm_vm2_bigarray.rb: added. This benchmark mesures a big array literal creation time. * benchmark/bm_vm2_bighash.rb: This benchmark mesures a big hash literal creation time. * benchmark/bm*: change notation "i=0" to "i = 0".
681d73a9232581df1d157cb3ae43a53be6c64e65 2012-06-02 * vm_backtrace.c: added. Separate backtrace related functions to this file. * vm.c, common.mk: ditto.
b57c81ae3efd33599e993500816bce18e108a2d3 2012-06-02 * common.mk: fix to build vm_backtrace.c only itself (vm_backtrace.c is no longer included from vm.c). I hope this separation reduce compile time of vm.c. * internal.h: ditto. * vm.c, vm_core.h, vm_dump.c, vm_eval.c: ditto. * vm_eval.c: some functions (callee, etc) moved to vm_backtrace.c.
f6f769d26d8ba3fa715cbb0e3717ff50207befaa 2012-06-02 * vm_backtrace.c: change names. (1) Class name: RubyVM::FrameInfo -> RubyVM::Backtrace::Location. (2) Method name: RubyVM::FrameInfo.caller -> Kernel.caller_locations. (3) Instance methods of RubyVM::FrameInfo (RubyVM::Backtrace::Location) (3-1) name -> label (3-2) basename -> base_label (basename is confusing with File.basename) (3-3) line_no -> lineno (We have already similar name File#lineno, commented by kou [ruby-dev:45686]). (3-4) filename -> path. (3-5) filepath -> absolute_path. (3-5) iseq -> removed (we will make other APIs to access iseq and other information of frame for debugging). * test/ruby/test_backtrace.rb: apply above changes. And apply comment from kou [ruby-dev:45686].
bac9f65f707e8ffcb79389e5b10b32addc94dc01 2012-06-04 * vm_core.h (rb_location_t): fix type and field name. (1) rename rb_location_t to rb_iseq_location_t. (2) rename field names of rb_iseq_location_t to adjust RubyVM::Backtrace::Location methods. (2-1) filename -> path (2-2) filepath -> absolute_path (2-3) basename -> base_label (2-4) name -> label (3) rename filed name rb_iseq_location_t#line_no to rb_iseq_location_t#first_lineno to clear purpose of this field. (4) The field names rb_binding_t#(filename|line_no) are also renamed to rb_binding_t#(path|first_lineno). * compile.c: apply above changes. * iseq.c: ditto. * proc.c: ditto. * vm*.c: ditto.
2e7c7696334b1b69681cbc0315836fef8e06227d 2012-06-04 * test/ruby/test_backtrace.rb: fix test. Windows path includes `:' character.
06513cc1cf5bbe1e23f871f920df7e2b7b793d9d 2012-06-04 * vm_insnhelper.h: remove magical code "lfp[0] & 0x02". Current VM doesn't use this bit. * vm_core.h (RUBY_VM_GET_BLOCK_PTR): added. * eval.c (rb_block_given_p): use RUBY_VM_GET_BLOCK_PTR(). * vm_eval.c (rb_f_block_given_p): ditto.
d556a4759893243b2a0c0322d75d12ac43869ca0 2012-06-07 * .gdbinit: add function `trace_machine_instructions' to trace in native machine assemble. See https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/MachineInstructionsTraceWithGDB for more details.
574024147b3ff9fb0f157a1387dc62403faed29d 2012-06-10 * .gdbinit (SDR): add SDR function. It's only for VM debugging.
0a71db8a7497df37b984ea97abfce6b6ffd82df3 2012-06-11 * vm_core.h: remove lfp (local frame pointer) and rename dfp (dynamic frame pointer) to ep (environment pointer). This change make VM `normal' (similar to other interpreters). Before this commit: Each frame has two env pointers lfp and dfp. lfp points local environment which is method/class/toplevel frame. lfp[0] is block pointer. dfp is block local frame. dfp[0] points previous (parent) environment pointer. lfp == dfp when frame is method/class/toplevel. You can get lfp from dfp by traversing previous environment pointers. After this commit: Each frame has only `ep' to point respective enviornoment. If there is parent environment, then ep[0] points parent envioenment (as dfp). If there are no more environment, then ep[0] points block pointer (as lfp). We call such ep as `LEP' (local EP). We add some macros to get LEP and to detect LEP or not. In short, we replace dfp and lfp with ep and LEP. rb_block_t and rb_binding_t member `lfp' and `dfp' are removed and member `ep' is added. rename rb_thread_t's member `local_lfp' and `local_svar' to `root_lep' and `root_svar'. (VM_EP_PREV_EP(ep)): get previous environment pointer. This macro assume that ep is not LEP. (VM_EP_BLOCK_PTR(ep)): get block pointer. This macro assume that ep is LEP. (VM_EP_LEP_P(ep)): detect ep is LEP or not. (VM_ENVVAL_BLOCK_PTR(ptr)): make block pointer. (VM_ENVVAL_BLOCK_PTR_P(v)): detect v is block pointer. (VM_ENVVAL_PREV_EP_PTR(ptr)): make prev environment pointer. (VM_ENVVAL_PREV_EP_PTR_P(v)): detect v is prev env pointer. * vm.c: apply above changes. (VM_EP_LEP(ep)): get LEP. (VM_CF_LEP(cfp)): get LEP of cfp->ep. (VM_CF_PREV_EP(cfp)): utility function VM_EP_PREV_EP(cfp->ep). (VM_CF_BLOCK_PTR(cfp)): utility function VM_EP_BLOCK_PTR(cfp->ep). * vm.c, vm_eval.c, vm_insnhelper.c, vm_insnhelper.h, insns.def: apply above changes. * cont.c: ditto. * eval.c, eval_intern.h: ditto. * proc.c: ditto. * thread.c: ditto. * vm_dump.c: ditto. * vm_exec.h: fix function name (on vm debug mode).
745c23b2d981e23024f044e934967bc6dae66d80 2012-06-15 * vm_core.h: remove VM_FRAME_MAGIC_FINISH (finish frame type). Before this commit: `finish frame' was place holder which indicates that VM loop needs to return function. If a C method calls a Ruby methods (a method written by Ruby), then VM loop will be (re-)invoked. When the Ruby method returns, then also VM loop should be escaped. `finish frame' has only one instruction `finish', which returns VM loop function. VM loop function executes `finish' instruction, then VM loop function returns itself. With such mechanism, `leave' instruction (which returns one frame from current scope) doesn't need to check that this `leave' should also return from VM loop function. Strictly, one branch can be removed from `leave' instructon. Consideration: However, pushing the `finish frame' needs costs because it needs several memory accesses. The number of pushing `finish frame' is greater than I had assumed. Of course, pushing `finish frame' consumes additional control frame. Moreover, recent processors has good branch prediction, with which we can ignore such trivial checking. After this commit: Finally, I decide to remove `finish frame' and `finish' instruction. Some parts of VM depend on `finish frame', so the new frame flag VM_FRAME_FLAG_FINISH is introduced. If this frame should escape from VM function loop, then the result of VM_FRAME_TYPE_FINISH_P(cfp) is true. `leave' instruction checks this flag every time. I measured performance on it. However on my environments, it improves some benchmarks and slows some benchmarks down. Maybe it is because of C compiler optimization parameters. I'll re-visit here if this cause problems. * insns.def (leave, finish): remove finish instruction. * vm.c, vm_eval.c, vm_exec.c, vm_backtrace.c, vm_dump.c: apply above changes.
0cfee328281d98790e527f562eb2c89df51f6452 2012-06-20 * error.c (err_append): rename err_append() to compile_err_append() and move definition body. err_append() is used only by compiling.
a359da842078ebfa13a70fd03fb4887030198db5 2012-06-22 * test/ruby/test_backtrace.rb: decrease recursion depth to reduce consuming stack size.
c4bc9b575898ba352d0fea8289ebcaf8921dacd1 2012-06-22 * iseq.c, vm_eval.c: set th->base_block properly. th->base_block is information for (a) parsing, (b) compiling and (c) setting up the frame to execute the program passed by `eval' method. For example, (1) parser need to know up-level variables to detect it is variable or method without paren. Befor (a), (b) and (c), VM set th->base_block by passed bindng (or previous frame information). After execute (a), (b) and (c), VM should clear th->base_block. However, if (a), (b) or (c) raises an exception, then th->base_block is not cleared. Problem is that the uncleared value th->balo_block is used for irrelevant iseq compilation. It causes SEGV or critical error. I tried to solve this problem: to clear them before exception, but finally I found out that it is difficult to do it (Ruby program can be run in many places). Because of this background, I set th->base_block before compiling iseq and restore it after compiling. Basically, th->base_block is dirty hack (similar to global variable) and this patch is also dirty. * bootstraptest/test_eval.rb: add a test for above. * internal.h: remove unused decl. * iseq.c (rb_iseq_compile_with_option): add base_block parameter. set th->base_block before compation and restore it after compilation. * ruby.c (require_libraries): pass 0 as base_block instead of setting th->base_block * tool/compile_prelude.rb (prelude_eval): apply above changes. * vm.c, vm_eval.c: ditto. * vm_core.h: add comments.
91aba07aff667eb31cf18d9b8849a60fcdc6e18a 2012-06-26 * thread_pthread.c (register_cached_thread_and_wait): return immediately if malloc() failed. [ruby-core:43960] [ruby-trunk - Bug #6235] * thread_pthread.c (USE_THREAD_CACHE): check already defined or not.
28144433b2f951279552b39bc358769a5267e26a 2012-07-18 * thread.c (rb_threadptr_async_errinfo_*): manage async errors queue. Async events such as an exception throwed by Thread#raise, Thread#kill and thread termination (after main thread termination) will be queued to th->async_errinfo_queue. - clear: clear the queue. - enque: enque err object into queue. - deque: deque err object from queue. - active_p: return 1 if the queue should be checked. rb_thread_t#thrown_errinfo was removed. * vm_core.h: add declarations of rb_threadptr_async_errinfo_*. remove rb_thread_t#thrown_errinfo field and add rb_thread_t#async_errinfo_queue (queue body: Array), rb_thread_t#async_errinfo_queue_checked (flag), rb_thread_t#async_errinfo_mask_stack(Array, not used yet). * vm.c (rb_thread_mark): fix a mark function. * cont.c (rb_fiber_start): enque an error. * process.c (after_fork): clear async errinfo queue.
eff4b2b2e11ec9f4ce0448af0308e29796a112b7 2012-07-18 * thread.c: fix last commit miss.
e9a91d2c95dfe22ad0487952f7a1053ef9a5fd16 2012-07-18 * thread.c (rb_thread_call_without_gvl2): added. it can skip last CHECK_INTS. See document for more details. Document about it was updated a bit. * include/ruby/thread.h (decl. of rb_thread_call_without_gvl2): added. * thread.c (rb_thread_call_with_gvl): remove "EXPERIMENTAL!" warning from a document.
f4a8db647ae66621f5d37402f5a11a3d57c69bb0 2012-07-19 * thread.c (rb_thread_s_control_interrupt, rb_thread_s_check_interrupt): added for Thread.control_intgerrupt and Thread.check_interrupt. See details on rdoc. I'll make an ticket for this feature. * test/ruby/test_thread.rb: add a test for Thread.control_intgerrupt. * thread.c (rb_threadptr_raise): make a new exception object even if argc is 0. * thread.c (rb_thread_kill): kill thread immediately if target thread is current thread. * vm_core.h (RUBY_VM_CHECK_INTS_BLOCKING): added. CHECK_INTS while/after blocking operation. * vm_core.h (RUBY_VM_CHECK_INTS): require rb_thread_t ptr. * cont.c (fiber_switch): use replaced RUBY_VM_CHECK_INTS(). * eval.c (ruby_cleanup): ditto. * insns.def: ditto. * process.c (rb_waitpid): ditto. * vm_eval.c (vm_call0): ditto. * vm_insnhelper.c (vm_call_method): ditto.
0d1a905edb43fe9260302b286d04cec66f7c4416 2012-08-07 * vm_exec.c, insns.def (leave): solve problems on OPT_CALL_THREADED_CODE. Catch up finish frame structure on OPT_CALL_THREADED_CODE. * vm_core.h: add rb_thread_t#retval for temporary space on OPT_CALL_THREADED_CODE. * vm.c (th_init): clear rb_thread_t#retval as Qundef. * vm_dump.c (rb_vmdebug_debug_print_pre): fix debug print format.
93b6f8d6195564d0884ee00f536a951f4c26288c 2012-08-08 * compile.c, insns.def (checkmatch): remove checkincludearray instruction and add new instruction checkmatch. This change is to solve [Bug #4438] "rescue args type check omitted". * iseq.c: increment ISEQ_MAJOR_VERSION because removal of checkincludearray instruction. * vm_core.h: add several definitions for the checkmatch instruction. * vm_insnhelper.c (check_match): added. * bootstraptest/test_exception.rb: add a test. * test/ruby/test_exception.rb: ditto.
e2f5d4f9c780cf1c1ecf57f8265ef916f973dc1e 2012-08-08 * bootstrap/test_exception.rb: fix a last committed test.
dcfaf3e277fcadda493757e69b89e3260cd3636f 2012-08-08 * compile.c (ADD_INSNL): make ADD_INSNSL as alias of ADD_INSN1.
8eb93103e4651aa9d6ed147208f6d90b211e9bfa 2012-08-15 * vm_trace.c: separate trace_func related functions from thread.c. * thread.c: ditto. * common.mk: add vm_trace.o. * inits.c: call Init_vm_trace().
4a4a702e61d1c5585d522f1185a82a5685c554f6 2012-08-16 * vm_trace.c, vm_core.h: simplify tracing mechanism. (1) add rb_hook_list_t data structure which includes hooks, events (flag) and `need_clean' flag. If the last flag is true, then clean the hooks list. In other words, deleted hooks are contained by `hooks'. Cleanup process should run before traversing the list. (2) Change check mechanism See EXEC_EVENT_HOOK() in vm_core.h. (3) Add `raw' hooks APIs Normal hooks are guarded from exception by rb_protect(). However, this protection is overhead for too simple functions which never cause exceptions. `raw' hooks are executed without protection and faster. Now, we only provide registration APIs. All `raw' hooks are kicked under protection (same as normal hooks). * include/ruby/ruby.h: remove internal data definition and macros. * internal.h (ruby_suppress_tracing), vm_trace.c: rename ruby_suppress_tracing() to rb_suppress_tracing() and remove unused function parameter. * parse.y: fix to use renamed rb_suppress_tracing(). * thread.c (thread_create_core): no need to set RUBY_VM_VM. * vm.c (mark_event_hooks): move definition to vm_trace.c. * vm.c (ruby_vm_event_flags): add a global variable. This global variable represents all of Threads and VM's event masks (T1#events | T2#events | ... | VM#events). You can check the possibility kick trace func or not with ruby_vm_event_flags. ruby_vm_event_flags is maintained by vm_trace.c. * cont.c (fiber_switch, rb_cont_call): restore tracing status. [Feature #4347] * test/ruby/test_continuation.rb: ditto.
dc78d90ad173936123d221aa7beba9acbb96e4c9 2012-08-21 * test_continuation.rb (tracing_with_thread_set_trace_func): fix to use Thread#set_trace_func(nil), not set_trace_func(nil).
d28e07d57bc15a4baf08f8f4fb64d27cf927aac7 2012-08-22 * vm_trace.c: support TracePoint. [ruby-trunk - Feature #6895] * test/ruby/test_settracefunc.rb: add tests for above. * proc.c (rb_binding_new_with_cfp): add an internal function. * vm.c (rb_vm_control_frame_id_and_class): add an internal function. * vm_trace.c: add rb_add_event_hook2() and rb_thread_add_event_hook2(). Give us the good name for them!
d5697825ef949712143325045b46fc8fe9aba507 2012-08-22 * vm_insnhelper.c (vm_setup_method): fix last commit. [ruby-dev:46065] [Bug #6901]
0a58a564c97cf75dba893ac9c7f9483a7f696985 2012-08-22 update ChangeLog.
051f12d368624fc7b9fc255efe8945e8f23ed25e 2012-08-22 fix typo of ChangeLog.
3721fb0106707de5d0a58af6bd5784053f379ab2 2012-08-23 * ext/date/depend: add dependency to $(ruby_headers).
b3b5e626ad69bf22be3228f847f94e1b68f40888 2012-08-23 * include/ruby/ruby.h: introduce flonum technique for 64bit CPU environment (sizeof(double) == sizeof(VALUE)). flonum technique enables to avoid double object creation if the double value d is in range about between 1.72723e-77 < |d| <= 1.15792e+77 or 0.0. flonum Float value is immediate and their lowest two bits are b10. If flonum is activated, then USE_FLONUM macro is 1. I'll write detailed in this technique on https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/Flonum_tech * benchmark/bmx_temp.rb: add an benchmark for simple Float calculation. * gc.c (id2ref, rb_obj_id): add flonum Float support. * include/ruby/intern.h: move decl of rb_float_new(double) to include/ruby/ruby.h. * insns.def, vm.c, vm_insnhelper.c: add flonum optimization and simplify source code. * vm_insnhelper.h (FLONUM_2_P): added. * marshal.c: support flonum output. * numeric.c (rb_float_new_in_heap): added. * parse.y: support flonum. * random.c: ditto.
0b89d6d5f9f8c788f4391d8a0499f10aed624371 2012-08-27 * include/ruby/ruby.h (rb_float_value): optimize it. This technique was pointed by shinichiro.hamaji <http://shinh.skr.jp/m/?date=20120825#p02>.
1bebb22ce16c6129a805adad83e0f1e29f3874a0 2012-09-26 * insns.def: add new instruction `opt_empty_p' for optimize `empty?' method. Apply a patch proposed at [ruby-dev:46120] [ruby-trunk - Feature #6972] by Glass_saga (Masaki Matsushita). * compile.c (iseq_specialized_instruction), vm.c, vm_insnhelper.h: ditto. * id.c, template/id.h.tmpl: ditto. * test/ruby/test_optimization.rb: test for this changes.
d50483df23383caf098c23c25c133f4eefca5917 2012-09-28 * vm_core.h: remove rb_control_frame_t::bp (bp: base pointer). `bp' can be calculate by `sp' (stack pointer) of previous frame. Now, `bp_check' field is remained for debug. You can eliminate this field by setting VM_DEBUG_BP_CHECK as 0. * vm_insnhelper.c (vm_base_ptr): add `vm_base_ptr(cfp). This function calculates base pointer from cfp. * vm_insnhelper.c (vm_setup_method): push `recv' value on top of value stack (before method parameters). This change is for keeping consistency with normal method dispatch. * insns.def: fix to use vm_base_ptr(). * vm.c (vm_exec): ditto. * vm_dump.c: remove `bp' related dumps. * cont.c (fiber_init): fix to check VM_DEBUG_BP_CHECK.
64f5b6aedc25dc8b6ef086f40d7f3c6cd401ee3e 2012-09-28 * vm_core.h: now VM_DEBUG_BP_CHECK should be 1.
e3990633cb2e44f19588c16a436516a8ecae0459 2012-09-28 * insns.def (opt_checkenv): remove unused instruction `opt_checkenv'. * compile.c (iseq_compile_each): ditto. * node.h: remove unused node `NODE_OPTBLOCK'. * ext/objspace/objspace.c, gc.c (gc_mark_children): ditto.
2adb9fd4a51b054543cc40555718bd09901a324f 2012-09-28 * vm_insnhelper.c (vm_setup_method): refactoring. Remove src_argc and use iseq->arg_size directly.
b1ad79774de9789a2dd60c19c907356fa823ebd9 2012-10-04 * test/ruby/test_settracefunc.rb (test_tracepoint): remove unused test case. (this test case is redefined by newer tests)
23dc0dbc4ad3354a9df899c0105c57bf42e2d243 2012-10-04 * vm.c (VM_COLLECT_USAGE_DETAILS): make new VM usage analysis hooks (old macro name is COLLECT_USAGE_ANALYSIS). This feature is only for VM developers. (I'm not sure I can use `VM developers' (the plural form) in this sentence). If VM_COLLECT_USAGE_DETAILS is not 0, VM enables the following usage collection features: (1) insntruction: collect intruction usages. (2) operand: collect operand usages. (3) register: collect register usages. The results are stored in RubyVM::USAGE_ANALYSIS_INSN for (1, 2), RubyVM::USAGE_ANALYSIS_INSN_BIGRAM for (1) and RubyVM::USAGE_ANALYSIS_REGS for (3). You can stop collecting usages with RubyVM::USAGE_ANALYSIS_INSN_STOP(), RubyVM::USAGE_ANALYSIS_OPERAND_STOP(), RubyVM::USAGE_ANALYSIS_REGISTER_STOP() for (1), (2), (3) respectively. You can also change the hook functions by setting C level global variables `ruby_vm_collect_usage_func_(insn|operand|register)' for (1), (2), (3) respectively. See codes for more details. * tool/instruction.rb: fix macro names. * iseq.c (insn_operand_intern): make it export (used in vm.c). fix to skip several processes if not needed (pointer is 0). * vm_dump.c: move codes for collection features to vm.c. * vm_exec.h: rename macro and function names. * vm_insnhelper.h: ditto.
326e22e14a7625fd947f038f8c3f2235a059d522 2012-10-04 * vm.c (vm_analysis_insn|operand|register): use st_insert instead of using rb_hash_aset() because rb_hash_aset() check $SAFE.
08c8605de91d2f04dcb53672a2eca6bd3f77bb18 2012-10-04 * insns.def (getlocal, setlocal): remove old getlocal/setlocal instructions and rename getdaynmic/setdynamic instructions to getlocal/setlocal. * compile.c: ditto. * iseq.c: remove TS_DINDEX. * vm_exec.h (dindex_t): remove type definition of `dindex_t'. * tool/instruction.rb: ditto.
e03d6d9eb84764cb854dc500ce8c19d85db53656 2012-10-05 * ext/objspace/objspace.c: add ObjectSpace#reachable_objects_from. This method returns an array of objects referenced by given object. If given object is special objects such as true/false/nil/Fixnum etc then it returns nil. See rdoc for details. [ruby-core:39772] * test/objspace/test_objspace.rb: add a test for this method. * gc.c: add rb_objspace_reachable_objects_from(). To make this function, add several member `mark_func_data' to rb_objspace_t. If mark_func_data is not null, then gc_mark() calls mark_func_data::mark_func. * gc.h: export rb_objspace_reachable_objects_from().
7ea3edc409dc6d383df9bc10d0034a6ecddb84dc 2012-10-09 * vm_core.h (rb_call_info_t): add new type `rb_call_inf_t'. This data structure contains information including inline method cache. After that, `struct iseq_inline_cache_entry' does not need to contain inline cache for method invocation. Other information will be added to this data structure. * vm_core.h (rb_iseq_t): add `callinfo_entries' and `callinfo_size' members to `rb_iseq_t'. * insns.def, compile.c: Use CALL_INFO instead of IC. * tool/instruction.rb: support CALL_INFO as operand type. * vm_insnhelper.c, vm_insnhelper.h: ditto.
62ad069c3a8fbd785e766274e02e348b1ec2fc6f 2012-10-09 * iseq.c (iseq_free): fix memory leak. rb_iseq_t::callinfo_entries should be freed.
6990c7f9cd5108be6d9a490d68ff13ded582558e 2012-10-10 * iseq.c (insn_operand_intern): add support disasm TS_CALLINFO operands.
a52af292712cd527b155962feebbc79abfeb957f 2012-10-10 * vm_dump.c: fix debug prints to catch up recent changes such as VM data structures.
fb9034e757da5ecdb79bb552233696779b54b9b7 2012-10-10 * bootstraptest/test_block.rb: add tests for block with super.
cbd597e9bc05eac7249e91dcdb4f1c1c75a53cf5 2012-10-14 * insns.def (send, invokesuper, invokeblock, opt_*), vm_core.h: use only a `ci' (rb_call_info_t) parameter instead of using parameters such as `op_id', 'op_argc', `blockiseq' and flag. These information are stored in rb_call_info_t at the compile time. This technique simplifies parameter passings at related function calls (~10% speedups for simple mehtod invocation at my machine). `rb_call_info_t' also has new function pointer variable `call'. This `call' variable enables to customize method (block) invocation process for each place. However, it always call `vm_call_general()' at this changes. `rb_call_info_t' also has temporary variables for method (block) invocation. * vm_core.h, compile.c, insns.def: introduce VM_CALL_ARGS_SKIP_SETUP VM_CALL macro. This flag indicates that this call can skip caller_setup (block arg and splat arg). * compile.c: catch up above changes. * iseq.c: catch up above changes (especially for TS_CALLINFO). * tool/instruction.rb: catch up above chagnes. * vm_insnhelper.c, vm_insnhelper.h: ditto. Macros and functions parameters are changed. * vm_eval.c (vm_call0): ditto (it will be rewriten soon).
7f052a7213e21c800fa4bd80f61e7903804bcf4f 2012-10-14 * vm_eval.c (vm_call0_body): add new function. `vm_call0()' makes call_info struct and calls `vm_call0_body()' with this struct. In near future, `vm_call0()' will be removed because all of `vm_call0()' users setup call_info struct by itself.
fd3b0dec4a4aa0e56bf56bb058688e0dea91c090 2012-10-14 * benchmark/bm_vm1_attr_ivar(_set).rb: added (for method dispatch speed). * benchmark/bm_vm1_float_simple.rb: added (for flonum/float).
8f08e61bad1d745dc7a10ff216ad5ca2e92b3ded 2012-10-14 * vm_insnhelper.c: refactoring. - move all `call' related functions to the last of file. - make functions for respective method types in vm_call_method(). (all functions have same function parameters) * vm_core.h: add `opt_pc' filed in `rb_call_info_t' as temporal variable. * vm_eval.c (vm_call0_body): catch up above cahnges.
c4457e03c665a48f1d953fbbe4499b65e7b1149b 2012-10-14 * vm_insnhelper.h CI_SET_FASTPATH: introduce new macro `CI_SET_FASTPATH(ci, func)'. This macro set `ci->call' as `func'. `func' (ci->call) is called at the last of `send' (and `invokesuper') instruction. `CI_SET_FASTPATH' does not set `ci->call' when the method (stored in `ci->me') is `protected'. * vm_insnhelper.c (vm_call_method): use `CI_SET_FASTPATH'. After several checking (visibility, argc checking), the result of checking can be reused until re-definition of this method with inline method cache. Note that this optimization is now experimental. If you find any problem about it, please tell us.
f9e50b05b15dacd7cdee8fc380fecb93b6ecbd97 2012-10-15 * vm_insnhelper.c (VM_CALLEE_SETUP_ARG): skip CI_SET_FASTPATH() if it was called from vm_yield_setup_args().
a91e91c537bf77afc49c2aef4b65d91237cbd786 2012-10-15 * vm_core.h (VM_CALL_*): rename VM_CALL_*_BIT to VM_CALL_* (remove `_BIT' suffix). Add comments on each macros. Remove unused macro VM_CALL_TAILRECURSION_BIT. * compile.c, iseq.c, insns.def, vm_insnhelper.c: ditto.
747487cda7b5a8c893ed8f6b0d7f7498aa434a02 2012-10-15 * vm_insnhelper.h (CI_SET_FASTPATH): add new parameter `enabled'. If `enable' is 0 then CI_SET_FASTPATH() doesn't work. And add new configuration option OPT_CALL_FASTPATH. If this macro was defined by 0, then CI_SET_FASTPATH() doesn't work any more. * vm_insnhelper.c (vm_call_method): Pass `0' for `enabled' parameter of CI_SET_FASTPATH if this method is protected.
90a6dce0415f7dc5accc9929d497a8044d9e6067 2012-10-15 * method.h: introduce new method type VM_METHOD_TYPE_CFUNC_FAST. This method is similar to VM_METHOD_TYPE_CFUNC methods, but called cfunc without building new frame (does not push new control frame). If error is occured in cfunc, the backtrace only shows caller frame and upper. This kind of methods can be added by rb_define_method_fast(). This feature is similar to specialized instructions (opt_plus, etc), but more flexible (but a bit slower). * class.c (rb_define_method_fast): added. Maybe it will be renamed soon. * vm_insnhelper.c (vm_call_method): support method type VM_METHOD_TYPE_CFUNC_FAST. * proc.c (rb_method_entry_arity): catch up new method type. * vm_method.c (rb_add_method_cfunc_fast): added.
3083ad7b83486e217ce7c112ed4610f3d4ba3702 2012-10-15 * vm_insnhelper.c (vm_call_method): disable CI_SET_FASTPATH() if this method call needs splat argument because cahced functions (vm_call_attrset, vm_call_ivar, vm_call_cfunc_fast_(unary|binary)) do not check an arity. * bootstraptest/test_method.rb: add a test to check an above issue.
7c1778d6387c6bf695f87fc718d878eb228b628c 2012-10-15 * vm_insnhelper.c (VM_CALLEE_SETUP_ARG): fix wrong condition.
64b1751194754a20173bbf48cff2035078bc225f 2012-10-16 * 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.
f8c2a968dd3628dc0a5f3b671bd41a08104ce466 2012-10-16 * benchmark/driver.rb (show_results): Show speedup ratio with first executables score at last of results if two or more executrables are given.
db1e99cdad846fd2bab426ae0cc39c7321fae427 2012-10-16 * 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.
9182dab459137533a4315bf13d3a921a24e5d76c 2012-10-16 * vm_insnhelper.c (vm_invoke_block): vm_caller_setup_args() can skip when splat flag is not set.
db3898fe905cf19a65ba8edfe13774a3613943fc 2012-10-16 * 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.
ddb6408f6ef338310065a87cd32b9ed3afbe9c46 2012-10-16 * vm_insnhelper.c (vm_call_iseq_setup_2): separate tailcall and normal method frame setup functions. Add checking interrupts at the tailcall setup function.
199fc6a54f8890c1935e797d5ef09a529bb5391b 2012-10-16 * vm_insnhelper.c (vm_call_method): fix to return value immediately. Remove CHECK_INTS() after that method dispatch.
8addee964963725695f59184281810b7d6956713 2012-10-16 * thread.c (rb_threadptr_interrupt_mask): fix to check interrupt after interrupt_mask changed.
49371b5420619c0729154939b13e02aceb471611 2012-10-16 * 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.
5e2625eebd5ab1c1224ea35d70ad544e67a4ee41 2012-10-16 * benchmark/bm_vm2_dstr.rb: add a benchmark to measure performance of dynamic generated string ("foo#{bar}baz").
9a82db49eb5d464d6d0adc3c7c3ebf4574d5d025 2012-10-17 * 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()'.
000ff5b3ce9ff045a30e146aede5917d6fa4f0ff 2012-10-17 * vm_insnhelper.c (vm_getivar): fix to use `aux.index' instead of `aux.opt_pc'.
aef5f90281d470449fa785f8778b3223a02afd2e 2012-10-17 * benchmark/bm_vm2_method_missing.rb: add a benchmark to measure performance of invoking `method_missing'.
588b73bca2f16f03710d531d64e3dc6a0050c2d7 2012-10-18 * 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.
c992cec4a04839410caf2da53dac7662a67129bb 2012-10-18 * 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.
cc012cfb193c858482adb195128a76893ac22903 2012-10-18 * include/ruby/ruby.h: add a decl. of `rb_define_frameless_method()'.
fea629da834c4e33b2ad1b41a1412e8e7aebfc8b 2012-10-18 * vm_insnhelper.c: add `inline' keyword to several functions. Compilers (gcc) are conservative than I expected.
1486b9cf0ac549edb7e7c3f886558d3e98100746 2012-10-18 * 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.
d0ead20888daff68f58472ad7f5002d6b168e1d5 2012-10-18 * 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').
7e8f558aea05d97f7879d6ead4488cc9807c5136 2012-10-18 * insns.def (opt_send_simple): move the location of `opt_send_simple' to the place near `send' definition. (to take care about icache locality).
a31d53ecf58686718128021b4d3c4f0575e0ad28 2012-10-19 * benchmark/driver.rb: add new option `--ruby-arg [ARG]' which is passed as a launch parameter for each ruby's execution. ($ ruby [ARG] [File])
f2a9c42c7aa666b70286045570c42b7884257550 2012-10-19 * benchmark/bmx_temp.rb: removed. This file should not be in repository.
3daa9b9f5aa705169f9d6fb672d7814749471493 2012-10-19 * vm_insnhelper.c (vm_search_method): remove needless local variable.
e99989bf4fffa966b6333f43d47ce54e2384122c 2012-10-19 * benchmark/driver.rb: remove unexpected `output'. (commit miss)
0fc7f4bb304ad07e8172f868d885112a1dcceb0f 2012-10-19 * eval.c, vm_eval.c: use TH_PUSH_TAG() instead of PUSH_TAG().
f4dbc7a3849988ebe75d3e1031aa50441347c497 2012-10-19 * 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.
9eba45a72a63674e35d0e9dec6ddf73088ed39e8 2012-10-23 * vm_core.h, vm_insnhelper.c, vm_eval.c (OPT_CALL_CFUNC_WITHOUT_FRAME): add a new otpimization and its macro `OPT_CALL_CFUNC_WITHOUT_FRAME'. This optimization makes all cfunc method calls `frameless', which is fster than ordinal cfunc method call. If `frame' is needed (for example, it calls another method with `rb_funcall()'), then build a frame. In other words, this optimization delays frame building. However, to delay the frame building, we need additional overheads: (1) Store the last call information. (2) Check the delayed frame buidling before the frame is needed. (3) Overhead to build a delayed frame. rb_thread_t::passed_ci is storage of delayed cfunc call information. (1) is lightweight because it is only 1 assignment to `passed_ci'. To achieve (2), we modify GET_THREAD() to check `passed_ci' every time. It causes 10% overhead on my envrionment. This optimization only works for cfunc methods which do not need their `frame'. After evaluation on my environment, this optimization does not effective every time. Because of this evaluation results, this optimization is disabled at default. * vm_insnhelper.c, vm.c: add VM_PROFILE* macros to measure behaviour of VM internals. I will extend this feature. * vm_method.c, method.h: change parameters of the `invoker' function. Receive `func' pointer as the first parameter.
d41ec2a79a53bc17dc9c7d574ae3824f5276745d 2012-10-23 * thread.c (rb_threadptr_raise): check interrupts after Thread#raise because the behavior of Thread.current.raise is expected to perform same as Kernel.raise (by rubyspec).
a4f79a6ece4b02720507b0ff249c2964ee859479 2012-10-23 Revert the last commit because some tests (in btest) fail
479d8ce5b5ba8ce22fdb6e92ed7e871f99d88735 2012-10-23 * thread.c (thread_raise_m): check interrupts after Thread#raise if a target thread is the current thread because the behavior of Thread.current.raise is expected to perform same as Kernel.raise (by rubyspec).
a0873931cedcb7039b752d6e615e46e3d3d4b2a1 2012-10-23 * vm_eval.c (vm_call0_body): remove RUBY_VM_CHECK_INTS() after method invocation using rb_call0(). * vm_eval.c (vm_call0_body): remove default section on top of switch statement and add cases for `VM_METHOD_TYPE_CFUNC_FRAMELESS' and `VM_METHOD_TYPE_UNDEF'. * vm_eval.c (vm_call0_body): remove useless brackets.
378041cfbf91809fe84fe70bbc90162f065a18a0 2012-10-23 * eval_error.c (error_print), vm_eval.c (eval_string_with_cref), vm_trace.c (rb_suppress_tracing): use TH_PUSH_TAG() instead of PUSH_TAG().
e1d772c801b95a5b0c8ed898b48d7205faceb83c 2012-10-23 * vm_insnhelper.c (vm_call_method): remove `default' and add a case for `VM_METHOD_TYPE_UNDEF'.
6c6dece7f192664986c3973ed15c994cc6af1696 2012-10-24 * ext/objspace/objspace.c (ObjectSpace.reachable_objects_from): internal object support. If given object `obj' has references to internal objects (such as T_NODE objects), then this method returns instances of `ObjectSpace::InternalObjectWrapper' instead of that internal objects. This instance contains a refereance to an internal object and you can check the type of internal object using `ObjectSpace::InternalObjectWrapper#type' method. Rdoc of `InternalObjectWrapper' is not prepared yet. * gc.c (rb_objspace_reachable_objects_from), gc.h: change an interface of 'rb_objspace_reachable_objects_from()' * gc.c, gc.h: add two APIs - rb_objspace_markable_object_p(obj): check markable or not. - rb_objspace_internal_object_p(obj): check internal or not.
6cbd18d7ef28ab2eebc07dfb1badc9c02fba8a15 2012-10-24 * ext/objspace/objspace.c (Init_objspace): add a new method `ObjectSpace::InternalObjectWrapper#internal_object_id' which returns an object id of a wrapped internal object.
aab12ec054ed6af47bc67abd07076a64a10222b6 2012-10-24 * gc.c (garbage_collect, gc_marks): move the location of clear and restore rb_objspace_t::mark_func_data from garbage_collect() to gc_marks().
04c177e277cad6e3c785de00238ef48c3fbe027a 2012-10-24 * ext/objspace/objspace.c (reachable_object_from_i): change data structure of the result of reachable objects. Keys of table contains object_id of each reachable objects. Value of table is an object itself or an instance of InternalObjectWrapper. To avoid duplication, we use st_table and object_id keys. * ext/objspace/objspace.c (type2sym): bug fix. Should use `i' instead of `type'.
9b68747be0f70908d0147b4d753e322bab5a8b5c 2012-10-24 * benchmark/driver.rb: add `-x' or `--exclude' option to specify exclude benchmark name pattern. You can specify "-x foo" if you want to exclude the benchmarks if the name of benchmark contains `foo'.
9dc3a7d7a5aece71c2bad9d2ec185f2ef87245b6 2012-10-25 * include/ruby/ruby.h, class.c: remove (revert) `rb_add_method_cfunc_frameless()' API. This API is not mature to become an offical API. For example, we can not use this API with `rb_define_private_method()'. * method.h, vm_method.c (rb_add_method_cfunc_frameless): removed.
180c744b3b4043b2491031a4af9c8cbe4c0ae2ab 2012-10-27 * numeric.c (rb_float_new_in_heap), include/ruby/ruby.h: make all Float objects frozen. [ruby-dev:46081] [ruby-trunk - Feature #6936] Most part of patch by NARUSE, Yui <naruse@ruby-lang.org>. * class.c (singleton_class_of): raise TypeError when trying to define a singleton method on Float objects. * vm.c (vm_define_method): ditto. * test/ruby/marshaltestlib.rb: catch up above changes. * test/ruby/test_class.rb: ditto. * test/test_pp.rb: ditto.
2731767b5dfefacf139ba4eedb25a9b550ad5454 2012-10-27 * vm.c (vm_define_method): remove type and frozen checking. Checking is done in `rb_singleton_class()'.
5dc9855a4f6a223b903fb6629aace9a5a49b064b 2012-10-27 vm_insnhelper.c: fix indentation
f3e5f2cd758f5013685d997ffd9efdcceccd449f 2012-10-28 * bignum.c (bignew_1): Bignum instances are frozen. Feature #3222 * include/ruby/ruby.h: Fixnum instances are also frozen. * class.c (singleton_class_of): check Bignum before singleton cheking. * test/ruby/test_bignum.rb: add a test. * test/ruby/test_fixnum.rb: ditto. * test/ruby/marshaltestlib.rb, test/ruby/test_eval.rb, test/ruby/test_object.rb: catch up above changes.
98c96a69c379ab377217469f2b8115ba83447a86 2012-11-01 * NEWS: add a news about objspace, ObjectSpace.reachable_objects_from.
ffd3cbdc759841c984ec35bfecfb9f7ed28d4faa 2012-11-13 * vm_insnhelper.c (vm_caller_setup_args): save and restore ci->argc and ci->blockptr before and after method invocations because these method dispatches override call_info. * bootstraptest/test_method.rb: add tests for this fix.
0d6c9accd7f64c19ff9162e42890aba87b4f9d4e 2012-11-13 fix ChangeLog
1619c02dd34dcc811b7d18437e8fc3f019906d1c 2012-11-13 * compile.c (insn_data_to_s_detail): remove debug lines.
0c1682b3045a04f753f81d0a5d18c303dd9496ba 2012-11-13 * vm_insnhelper.c (vm_call_cfunc_with_frame): don't use ci after EXEC_EVENT_HOOK because ci can be overridden. * vm_eval.c: ditto. * method.h: change invoker's parameters types. * vm_method.c (call_cfunc_invoker_func): ditto.
768801b020d2ec28af2bb719cadf5bc3c126c3d6 2012-11-15 * vm_exec.h (GENTRY): GENTRY should be pointer size. A patch by yoshidam (Yoshida Masato) [Bug #7332].
9ee34b15e415446093039f620a5986dd3426f552 2012-11-16 * thread.c (rb_thread_call_without_gvl2): change the parameter of `func' from `int *skip_interrupt' to `VALUE *flags'. If (flags & RUBY_CALL_WO_GVL_FLAG_SKIP_CHECK_INTS) is not zero, then skip checking interrupt. [ruby-core:46547] * include/ruby/thread.h: ditto.
15d940b8b0361925e15f412913f346fca4bf3400 2012-11-19 * thread.c: add `Thread#backtrace_locations' method. This method is similart to `caller_locations' method for specific method. And fix to accept `level' and `n' parameters for `Thread#backtrace' and `Thread#backtrace_locations'. `caller' (and `caller_locations') do not return `caller' method frame. However, `Thread#backtrace' (and `Thread#backtrace_locations') return `Thread#backtrace' method frame itself if `Thread.current.backtrace' was called. * vm_backtrace.c: ditto. * internal.h: ditto. * test/ruby/test_backtrace.rb: add tests.
553931962a8a6c73ecef770831165070479c8763 2012-11-20 * vm_trace.c: add two methods: (1) TracePoint#return_value which returns return value on the :return and :c_return event. (2) TracePoint#raised_exception which returns raised exception value on the :raise event. Eeach methods raise RuntimeError if it is called at unsupported event. Please review and give us feedback until next preview release (Dec/2012) of Ruby 2.0.0. * insns.def, vm.c, vm_eval.c, vm_insnhelper.c, eval.c, thread.c: ditto. * vm_trace.c, vm_core.h: move definition of rb_trace_arg_t from vm_trace.c to vm_core.h. Caller fills rb_trace_arg_t and pass the pointer of this variable. * test/ruby/test_settracefunc.rb: fix tests to test this change.
1da641a16b6fdccad639ac46cec658436029af16 2012-11-20 * vm_trace.c: rename and add TracePoint APIs. (1) TracePoint.new(...){...} creates a new trace point but does not make it enable. (2) TracePoint.trace(...){...} creats a new trace point and enable it (same as old behavior). (3) TracePoint#enable make it enable (renamed from TracePoint#retrace). If block given, when enable only in block. (4) TracePoint#disable make it disable (renamed from TracePoint#untrace). If block given, when disable only in block. (5) TracePoint#enabled? returns this trace is enable or not. * test/ruby/test_settracefunc.rb: addd tests.
f1aee6327a8afa5ed048b270772ae0bf054a4d87 2012-11-20 add a ticket number
cea7600b524cfc5023a15436f1263a5c872f99d9 2012-11-20 * include/ruby/debug.h: introdudced. Debugging/profiling features will be located. * vm_trace.c: expose C-level TracePoint APIs. Note that they are experimental. * vm_trace.c, include/ruby/debug.h: rename `rb_hook_flag_t' to `rb_event_hook_flag_t'. Macro names `RUBY_HOOK_FLAG_*' are also renamed to `RUBY_EVENT_HOOK_FLAG_*'. * debug.h, vm_debug.h: rename debug.h to vm_debug.h. * common.mk: ditto. * debug.c, main.c, vm_core.h: ditto.
c13f83471ae115bea4f52c2860a5b5f63e17571d 2012-11-21 * benchmark/bm_so_nsieve_bits.rb: add an encoding pragma.
9d8c6adce1b4dc3c9adf37e0d3dbc1b6ed964c1f 2012-11-21 add a description on ChangeLog
15648bfda8c7ee29006dc8871985ce6e3d042237 2012-11-21 add a ML number
9d803dfd5f1a57a6d07c27b0d95917165ba259dc 2012-11-24 * vm_trace.c (rb_tracepoint_attr_raised_exception): should not check value before event checking. * vm_trace.c (rb_tracepoint_attr_return_value): ditto. * test/ruby/test_settracefunc.rb: add tests for TracePoint#return_value and TracePoint#raised_exception.
2e87867a8f07e93141156933e8d648c57c0b57d4 2012-11-26 * benchmark/driver.rb: accept multiple `-e'. You don't need to use `;' separation character. [ruby-core:50139] [ruby-trunk - Bug #7380]
7b918be3d43a043abfa47772da90e856cdd7a355 2012-11-26 * common.mk: specify label `built-ruby'. * benchmark/driver.rb: quote path.
42e9fc4110dc6607332fe05c2e2f4e565fd1b5fd 2012-11-26 * bootstraptest/test_thread.rb: try to `join' each 100 threads. This benchmark seems consuming long time on travis-ci several times (and make `failure').
8c6ad2b0ae9a0d5c2205f4648e5fa0c86fa6077f 2012-11-26 * iseq.c (make_compile_option_value): add trace_instruction option. a patch by davidbalbert (David Albert). [Bug #6786]
8c138db3d28828365f86f276ec753a248d2e0a19 2012-11-26 * vm_core.h: add members to rb_trace_arg_t: * `klass_solved' represents klass and id is checked. * `line' represents line calculated from cfp. * `file' represents line calculated from cfp. * vm_trace.c: fix to use above data stractures. No need to calculate klass and id, line and file pairs for each trace points.
d187f4bc215119469c3da6828ef78f216dfe20f2 2012-11-26 * vm_trace.c: rename TracePoint#file and TracePoint#line to TracePoint#path and TracePoint#lineno respectively. They are consistent to RubyVM::Backtrace::Location. * include/ruby/debug.h: ditto. * vm_core.h: ditto. * test/ruby/test_settracefunc.rb: ditto.
4df479f50b66ebbde130668a39714e9b6f8b0aaa 2012-11-27 * NEWS: add TracePont.
2f9ee7af47124113bc0aa0966816720c907a9c91 2012-11-27 * thread.c (rb_thread_terminate_all): broadcast terminate event not only an interrupt exception but any exceptions.
c72f0daa877808e4fa5018b3191ca09d4b97c03d 2012-11-27 * thread.c (rb_thread_terminate_all): retry broadcast only when an exception is raised.
956cc2934d9848fa4c5cc7bcf79edd76f1171053 2012-11-27 * vm.c (rb_vm_make_env_object): make Proc object if Env is possible to point block. [ruby-core:41038] [ruby-trunk - Bug #5634] * vm.c (rb_vm_make_proc): No need to make Proc object here. * bootstraptest/test_proc.rb: add tests.
1ff0a3d0c66e89f4c920e67813d604a6bb933fac 2012-11-28 * ext/psych/extconf.rb: copy sources into build directory, not into srcdir.
49ed2a756bb41e4e3d3b520d0f84a60851504fe2 2012-11-28 * proc.c: remove Proc#== and Proc#eql?. Proc objects compared with thier object ids. * test/ruby/test_proc.rb: remove related test.
fc57f2bfdbc6c34289bd3143a7cd5e948ddded9b 2012-11-28 add ticket number [Bug #4559]
9d0de48e662046d870e38a21771cbe939031051a 2012-11-28 * include/ruby/thread.h (rb_thread_call_without_gvl2): change meaning of function. This function is called with same parameters of `rb_thread_call_without_gvl()'. However, if interrupts are detected, when return immediately. * thread.c: implement `rb_thread_call_without_gvl2()'.
ff2ca81bb387ceae24d70a139ec48f227a83be39 2012-11-28 * vm_insnhelper.c (vm_call_method): fix undefined behavior. Should not access scope local variable from outer scope.
bf442ed2b3385016b81472da981aaff51ad89ab7 2012-11-28 * thread_win32.c: catch up latest change of BLOCKING_REGION.
09f9aa43858de25a16db90fb55dc28a9d7be0e32 2012-11-28 * thread.c (rb_mutex_sleep): fix to allow spurious wakeup. * NEWS: write about spurious wakeup.
36b21ada61220c0675fa3c00aa091538a2063739 2012-11-28 add ticket ref: [ruby-dev:46654] [ruby-trunk - Bug #7455]
0fe2051c93197d7617ccc4f07a2dfc697cde9df7 2012-11-28 * vm_backtrace.c: rename Class name from ::RubyVM::Backtrace and ::RubyVM::Backtrace::Location to ::Thread::Backtrace and ::Thread::Backtrace::Location.
2fa079b62ac3611ee7c52c605bd2da8209129895 2012-11-28 * vm_backtrace.c (backtrace_to_str_ary2): rename to backtrace_to_str_ary. * vm_backtrace.c (rb_backtrace_to_str_ary): use `backtrace_to_str_ary()'. * vm_backtrace.c (backtrace_to_frame_ary): rename to backtrace_to_location_ary.
3d47e7b2854a47878fd6346586d12cb6c312df82 2012-11-29 * vm_backtrace.c (vm_backtrace_to_ary): support range argument like Array#[]. [ruby-core:50092] [ruby-trunk - Feature #7434] Test and document is not available. Please help us.
98ed344ae9c97d2b273c57f35c6bde9761b1906a 2012-11-29 * eval.c (ruby_cleanup): delay THREAD_KILLED timing. It should be located just before rb_thread_terminate_all().
d7ab6820b589571f9a82246f6f4c96688d9fd824 2012-11-29 * vm_backtrace.c: use `long' for return values of `NUM2LONG()'.
f22f1fbb54f7a2d3088205bf951d255f41f8f034 2012-11-29 * vm_backtrace.c: same as a last patch.
c512d6acf98a6d550d1dd03c7642fee82dc46cea 2012-11-29 * gc.c (gc_stat): GC.stat supports new information * total_allocated_object: total allocated object number. * total_freed_object: total freed object number. Above two numbers are only accumulated and they will overflow (return to 0). Please use them as a hint.
502ab126ac8d4b87edebb786e69042f13463e525 2012-11-29 * gc.c (gc_stat): prepre Symbol objects at first time to make it fast.
89c889d4e72eb39bb70734d2360b9607c1099bdb 2012-11-29 * vm_trace.c (rb_tracepoint_attr_defined_class): rename TracePoint#klass to TracePoint#defined_class. [ruby-core:50187] Re: [ruby-trunk - Feature #6895] * include/ruby/debug.h: ditto. * test/ruby/test_settracefunc.rb: ditto.
479e39619240d7723f0573add301d71125df6933 2012-11-29 * vm_trace.c (rb_tracepoint_attr_method_id): rename TracePoint#id to TracePoint#method_id. * include/ruby/debug.h: ditto. * test/ruby/test_settracefunc.rb: ditto,
3f606b7063fc7a8b191556365ad343a314719a8d 2012-11-29 * include/ruby/debug.h: provide rb_tracearg_*() APIs, instead of rb_tracepoint_attr_*(). These APIs are for debuggers/profilers. They will be explained in another docs somtime. * vm_trace.c: ditto.
585ac7f1a2a1e96460cc78e050d2700d2e2680e5 2012-11-29 * include/ruby/debug.h: add rb_debug_inspector_* APIs. * vm_backtrace.c: ditto. * common.mk: add dpendency from vm_backtrace.o to include/ruby/debug.h. * proc.c (rb_binding_new_with_cfp): constify. * vm.c (rb_vm_get_ruby_level_next_cfp): consitify. * vm_core.h, vm_trace.c: move decls.
e8af0046b72bb5a1da549a90888b445525d6cfff 2012-11-29 * vm_backtrace.c (rb_debug_inspector_open): use RARRAY_LENINT() for int variable.
4db83403982100df21c3c6c18b1cef29dd379e6a 2012-11-29 [EXPERIMENTAL: NEED DISCUSS] * vm_trace.c: add events * :thread_begin - hook at thread beggining. * :thead_end - hook at thread ending. * :b_call - hook at block enter. * :b_return - hook at block leave. This change slow down block invocation. Please try and give us feedback until 2.0 code freeze. * include/ruby/ruby.h: ditto. * compile.c (rb_iseq_compile_node): ditto. * insns.def: ditto. * thread.c: ditto. * vm.c: ditto. * include/ruby/debug.h: add a comment. * test/ruby/test_settracefunc.rb: add a tests.
0c3f23ae7c60798e1c40421eb2924bcd1e063f25 2012-11-29 * vm_backtrace.c: add GC guards.
c86379402c8dfeab9504c39c2de435601d408e57 2012-11-29 * thread.c (rb_thread_interrupted): avoid warning of implicit conversion. * thread.c (rb_threadptr_execute_interrupts): ditto.
719e0cd530dd7187c716c103876fb3a112cbd30c 2012-11-30 * thread.c: rename Thread.control_interrupt to Thread.async_interrupt_timing. The option name `:never' is also changed to `:defer'. [ruby-core:50375] [ruby-trunk - Feature #6762] * thread.c: remove Thread.check_interrupt. This method is difficult to understand by name. * thraed.c: add Thread.async_interrupted?. This method check any defered async interrupts. * test/ruby/test_thread.rb: change tests for above.
6df1b3a9de0076e1f51a58ffc23b1d42cf2e8366 2012-11-30 * vm_trace.c (tracepoint_disable_m, tracepoint_enable_m): fix block parameter. No arugment should be given to a block which is passed to TracePoint#enable (and disable).
bb4410a2890fab69271145a09f895c91a8ee8863 2012-11-30 * thread.c: TracePoint#self returns invoking/exitting thread object at thread_begin/end event. * test/ruby/test_settracefunc.rb: fix test.
12f2f7371f2dcf9c8da2a96fa251d1af2a7e977e 2012-11-30 [EXPERIMENTAL] * iseq.c: add following two methods. * ISeq#line_trace_all returns all line traces (line numbers) * ISeq#line_trace_specify(pos, set) set `pos'th line event to specified_line event (if set is true). These features are introduced for debuggers (mainly to make breakpoint). * iseq.h: add decl. of C APIs. * test/ruby/test_iseq.rb: add tests. * vm_trace.c: add `specified_line' event. * include/ruby/ruby.h: ditto.
5697f69baa942ae117c66322bca0088cbb38557f 2012-11-30 * iseq.c: add RubyVM::InstructionSequence (ISeq) inspection methods. * ISeq#path returns path of this ISeq written. * ISeq#absolute_path returns absolute path. * ISeq#label returns label (method name and so on). * ISeq#base_label returns base label (see Thread::Backtrace::Location). * ISeq#first_lineno returns first line number of this ISeq. * ISeq.of(obj) returns ISeq object which obj (Proc or Method) is contains. * test/ruby/test_iseq.rb: add tests.
e742a446c8864e3988537d06022312c708f9e176 2012-11-30 * thread.c (Thread.async_interrupt_timing): fix RDoc. :never is not used any more.
c906e879d8e83263752a25faf34cc102a7b2e60e 2012-12-01 * vm_backtrace.c (location_inspect_m): add Thread::Backtrace::Location#inspect. It same as loc_obj.to_s.inspect.
095022cbe91ff03af27c19bbe47a819e1323f004 2012-12-01 * test/ruby/test_backtrace.rb: add a test for Thread::Backtrace::Location#inspect. BTW, tests for `caller_locations' are not enough. Any volunteers are welcome.
921385a6443338d6150e71acf0806108294c1c9a 2012-12-01 * vm_trace.c: add TracePoint#inspect. * test/ruby/test_settracefunc.rb: add a test for this change.
5bdd03936c2a7fb5c835587535466ec76bf0ca9e 2012-12-01 * iseq.c (rb_iseq_line_trace_each): iterate `line' event only. * test/ruby/test_iseq.rb: add a test for this change.
f6f388a5bdbd3d3a68bf18f3352ba2be12688639 2012-12-02 * array.c, enum.c, insns.def, io.c, numeric.c, parse.y, process.c, range.c: use prepared IDs. A patch from charliesome (Charlie Somerville). [Bug #7495] * common.mk: add dependency to id.h. * common.mk: replace ID_H_INCLUDES with id.h.
38766319e181e6cdbd3f7bb14f8cc9736f4d6c9e 2012-12-03 * compile.c (iseq_compile_each): joke shouldn't use id.h defined ids. * id.c (Init_id): ditto. * common.mk: fix dpendency.
1d193d9251fb5cc58f1b4ac3346ac63529d63097 2012-12-03 * vm_backtrace.c (vm_backtrace_to_ary): check negative size (2nd arg).
c4f9dd26263da640a2c9a02c478df245685e2b69 2012-12-03 * iseq.h: iseq_catch_table_entry::catch_type should be Fixnum because they are pushed into Array in a compiler. [Bug #7502] * test/ruby/test_objectspace.rb: add a test of this issue.
fcc557a8f48de33fb686025624aad0cedc0c7183 2012-12-03 * vm_exec.c: vm_analysis_insn should be statkc.
010b6e6a38540f5e2e98c9f6053ae0f550d09af6 2012-12-03 fix typo
41d77571ff4cb3e6ccf238cf63bfdc3c50fc1564 2012-12-03 * test/ruby/test_objectspace.rb: skip RuntimeError which says a message "can't modify frozen File". Is that correct behavior?
5c582807731b675012647e0f7d9ad8bae937053b 2012-12-03 * compile.c (iseq_specialized_instruction): change condition of using `opt_send_simple'. More method invocations can be simple.
9975712793a8289e229d7f9fe23c8df77e1005ae 2012-12-03 * vm_exec.c: check VM_COLLECT_USAGE_DETAILS.
d3842de5c9baa2962e01d02b2499eac49d9065a6 2012-12-04 * vm_opts.h: enable optimization - operand unifications. Operand unification technique enable to combine an instruction and specific operands and make new instruction. * defs/opt_operand.def: add several configuration of operand unifications. * insns.def: use `int' instead to suppress warning.
895bb667b294ab2b762c83373c320a5bbf94dd3f 2012-12-05 * test/ruby/test_settracefunc.rb: disable trace.
592e87e1f8cbe257f8f11d703c1315b033537b6c 2012-12-05 * test/ruby/memory_status.rb: suppress warning. A patch from NAKAMURA Usaku.
c2f5a574034cacd938d5af888646585c850f2747 2012-12-06 * vm_trace.c: TracePoint#enable should not cause an error when it is already enabled. TracePoint#disable is too. [ruby-core:50561] [ruby-trunk - Bug #7513] * test/ruby/test_settracefunc.rb: add tests.
1c5b309211c8d41b2624766fdeb60cc5fa3faf94 2012-12-08 * ext/objspace/objspace.c (iow_size): return size of internal object for ObjectSpace.memsize_of(). * test/objspace/test_objspace.rb: add a test.
33fedef5a5e3b846c06cccefd9fef23485c7f8ba 2012-12-13 * method.h: remove "VM_METHOD_TYPE__MAX" from rb_method_type_t. rb_method_type_t is not a number and "_MAX" causes misunderstanding. * proc.c (rb_method_entry_arity): ditto. * vm_eval.c (vm_call0_body): ditto. * vm_insnhelper.c (vm_call_method): ditto.
6247099f4c85a43c0405d1f4536cea99b37a652a 2012-12-17 * vm_trace.c (fill_id_and_klass): TracePoint#defined_class returns singleton class. `set_trace_func' passed attached class (which is attached/modified by singleton class) by 6th block parameter if it is singleton class. Previous behavior follows this spec. However, this method named `defined_class' should return singleton class directly because singleton methods are defined in singleton class. There are no compatible issue because TracePoint is introduced after 2.0. But compatiblity with `set_trace_func' is brokne. This means that you can not replace all `set_trace_func' code with TracePoint without consideration of this behavior. [Bug #7554] * test/ruby/test_settracefunc.rb: change a test to catch up an above chagne.
256c5f257743401d4ee7e2ba756ef2ffd22e4d7a 2012-12-17 * method.h: remove `VM_METHOD_TYPE_CFUNC_FRAMELESS' method type. This method type is for optimized CFUNC such as Fixnum#+ and so on. This feature is half-baked and no way to use them. [Background] Now, VM has opt_plus instructions to optimize `+' methods for some Classes (such as Fixnum, Float (flonum)). We call this type of instructions as `specialized instructions'. This simple technique improve simple program dramatically. However, we can make specialized instructions for only several types (classes) and selectors (method names) because a large instruction will be slow. In other words, this technique has no extensibility. To overcome this problem, VM_METHOD_TYPE_CFUNC_FRAMELESS was introduced (r37198). This type is a variant of CFUNC, but called their functiions directly without building a method frame. Any CFUNC method can be defined as frameless methods if a method is not needed to make method frame. Frameless methods are faster as specialized instructions (a bit slower, but no need to care). No problem described at http://charlie.bz/blog/why-do-singleton-methods-make-ruby-slow because this technique doesn't see class, but see method body itself. Alias is also no problem. [Problem] However, we can't set frameless method type for polymorphic methods such as Array#[]. Necessity for method frame depends on which parameter type. For example, Fixnum#+ needs method frame if coerce is needed. Current VM_METHOD_TYPE_CFUNC_FRAMELESS is not flexible and need more tuning to introduce it. Expected behavior of frameless method type may be: result = optimized_cfunc(params); /* call optimized cfunc */ if (result == Qundef) { result = normal_cfunc(); } This is why I say this feature is half-baked. We need to learn primitive method in Smalltalk more. (I heard this name at RubyConf Taiwan this month. Thanks!) [Conclusion] Nobody may use this feature and there is no compatibility issue. This feature goes to next minor (2.1?). * proc.c (rb_method_entry_arity): ditto. * vm_eval.c, vm_insnhelper.c, vm_method.c: ditto.
f5a32acb97dec5c798001f2eb6d31bb78fda0113 2012-12-17 fix ChangeLog comment
5d92f6ec05be5df5f89f81fb926ad08faf22ee03 2012-12-19 * test/ruby/test_fiber.rb: remove a strange single quote character. With this character, this script exits by SyntaxError.
87e1616048edca270c86ab7e5d8b8599e1df79de 2012-12-19 * vm.c: support variable VM/Machine stack sizes. Specified by the following environment variaables: - RUBY_THREAD_VM_STACK_SIZE: vm stack size used at thread creation. default: 128KB (32bit CPU) or 256KB (64bit CPU). - RUBY_THREAD_MACHINE_STACK_SIZE: machine stack size used at thread creation. default: 512KB or 1024KB. - RUBY_FIBER_VM_STACK_SIZE: vm stack size used at fiber creation. default: 64KB or 128KB. - RUBY_FIBER_MACHINE_STACK_SIZE: machine stack size used at fiber creation. default: 256KB or 256KB. This values are specified at launched timing. You can not change these values at running time. Environ variables are only *hints* because: - They are aligned to 4KB. - They have minimum values (depend on OSs). - Machine stack settings are ignored by some OSs. Default values especially fiber stack sizes are increased. This change affect Fiber's behavior: (1) You can run more complex program on a Fiber. (2) You can not make many (thousands) Fibers because of lack of address space (on 32bit CPU). If (2) bothers you, (a) Use 64bit CPU with big memory, or (b) Specify RUBY_FIBER_(VM|MACHINE)_STACK_SIZE correctly. You need to choose correct stack size carefully. These values are completely rely on systems (OS/compiler and so on). * vm_core.h (rb_vm_t::default_params): add to record above settings. * vm.c (RubyVM::DEFAULT_PARAMS): add new constant to see above setting. * thread_pthread.c: support RUBY_THREAD_MACHINE_STACK_SIZE. * cont.c: support RUBY_FIBER_(VM|MACHINE)_STACK_SIZE. * test/ruby/test_fiber.rb: add tests for above. * test/ruby/test_thread.rb: ditto.
e3e4e9dfe77c103ac8a46e5ad15ef6b36e6f0653 2012-12-19 add ticket number
87d48d14a0839316f051bddd4d794bdd64e49181 2012-12-21 * vm_core.h, vm_trace.c: fix multi-threading bug for tracing. Move `trace_arg' from rb_tp_t::trace_arg to rb_thread_t::trace_arg. `trace_arg' may changed by multiple threads. rb_thread_t::trace_arg can represent rb_thread_t::trace_running (null or non-null) and rb_thread_t::trace_running is removed. After that, `rb_tp_t' is not needed to check tracing or not (A running thread knows tracing or not). This is why I remove tp_attr_check_active() and make new function get_trace_arg(). And this modification disable to work the following code: TracePoint.trace{|tp| Thread.new{p tp.event} # access `tp' from other threads. } I believe nobody mix threads at trace procedure. This is current limitation. * cont.c (fiber_switch, rb_cont_call): use rb_thread_t::trace_arg instead of rb_thread_t::trace_running. * test/ruby/test_settracefunc.rb: add a multi-threading test.
979479270ca802c0d10dc1bd60c7ff445886eb51 2012-12-21 add a ticket number
8578cc337bf270545217db6827c6c5ccbc0ef64b 2012-12-21 * include/ruby/debug.h: define rb_trace_arg_t. * vm_core.h: catch up above changes.
a598fcc8c1412f82453f709433275f52d29f0501 2012-12-21 fix ChangeLog
f4ef96e6a292b70947adbeca4e12fb7943718e8e 2012-12-21 * ruby.c (process_options): need to acquire env from TOPLEVEL_BINDING each time. `bind->env' may update after `eval()'. [Bug #7536]
a6c5431156d3fde6364724e7bd061b1ae79334db 2012-12-21 * vm_trace.c (tracepoint_new): add code to support specified thread. But not tested and this feature is not supported officially.
17ac7835415cab22649422704a17c7b7f1c43419 2012-12-21 * iseq.c (Init_ISeq): remove definition of the following methods: ISeq#line_trace_all and ISeq#line_trace_specify because they are half baked. C APIs are remained as experimental. These functions will be renamed, removed their parameters may be changed. You can use these methods by C exts. Please give us your comments.
914611adbcaec6a2711d30fcc1ff136e02efecf8 2012-12-21 * test/ruby/test_iseq.rb: disable a test which checks features removed at r38532.
0f9b33c793f225c1b817d73e5c915050c429edc4 2012-12-23 * thread.c: rename methods: from Thread.async_interrupt_timing to Thread.handle_interrupt, from Thread.async_interrupted? to Thread.pending_interrupt?. Also rename option from `defer' to `never'. [ruby-core:51074] [ruby-trunk - Feature #6762] * vm_core.c, thread.c: rename functions and data structure `async_errinfo' to `pending_interrupt'. * thread.c: add global variables sym_immediate, sym_on_blocking and sym_never. * cont.c, process.c, vm.c, signal.c: ditto. * lib/sync.rb, lib/thread.rb: catch up this renaming. * test/ruby/test_thread.rb: ditto.
48f320194a267bcf6858cbaa77a688cce0759d8d 2012-12-25 add empty line for style.
59e1e822a189f8b4c89c3216dd1d82b827969c46 2012-12-25 * vm_core.h (RUBY_VM_THREAD_VM_STACK_SIZE): change default VM stack size (128 KB or 256 KB -> 512 KB or 1024 KB). This re-sizing corrects smaller value introduced at r38478. Newer value is same VM stack size of Ruby 1.9. [ruby-dev:46797] [ruby-trunk - Bug #7603]
270fbd9c058fc2a36dc7c44243f4a20c91143481 2012-12-25 * vm_core.h, eval_intern.h (CHECK_STACK_OVERFLOW): move CHECK_STACK_OVERFLOW() to vm_core.h and rename to CHECK_VM_STACK_OVERFLOW(). This change is only move and rename. * tool/instruction.rb: catch up above changes. * vm.c, vm_insnhelper.c: ditto. * vm_insnhelper.c (vm_stackoverflow): add a function to unify raising vm stackoverflow exception.
c2693f8bd61757e32d2f92010c041a79b21d074a 2012-12-25 * vm_trace.c (rb_threadptr_exec_event_hooks_and_pop_frame): pop a frame before JUMP_TAG() if exception occurred. This change fix bug of Ruby 1.9. [ruby-core:51128] [ruby-trunk - Bug #7624] * vm_core.h (EXEC_EVENT_HOOK_AND_POP_FRAME): add to use `rb_threadptr_exec_event_hooks_and_pop_frame()'. * vm.c (vm_exec): use EXEC_EVENT_HOOK_AND_POP_FRAME() while exception handling. While exception hadnling, if an exception is raised in hooks, need to pop current frame and raise this raised exception by hook. * test/ruby/test_settracefunc.rb: add a test.
bb70ca493f4547cbb86c54d216b5559b68f2d860 2013-01-07 * NEWS: add a NEWS entry about RubyVM.
b8e6fd6ffe9f24921c7138f656596ae3bbdd7ad7 2013-01-07 * vm_trace.c (rb_threadptr_exec_event_hooks_orig): pop tag before JUMP_TAG() if frame is `finish' frame. Without this patch, there is an inconsistency between control frame stack and tags stack. [Bug #7668] * test/ruby/test_settracefunc.rb: add a test for above.
06f2a86f1a57ded8177f0611bb107f0c4bcc2e70 2013-01-07 * include/ruby/ruby.h (RUBY_EVENT_SPECIFIED_LINE): make it special. This flag is not contained by RUBY_EVENT_TRACEPOINT_ALL. This event is experimental one. It is possible to remove/rename flag name after 2.0.1. * vm_trace.c (get_event_id): return :line if SPECIFIED_LINE was occurred. `:specified_line' never been returned.
a5e2f3221a96ee54dd8f5abdfc4439328f34e386 2013-01-09 * compile.c (compile_array_): modify wrong optimization. A script "[print(1)]; print(2)" should output "12". However, the compiler had eliminted "[print(1)]" expression because it is void expression (unused array). Of course, side-effect should be remained. This issue is reported by Masaya Tarui. * bootstraptest/test_literal.rb: add a test.
5849920066ad295cd416c5b4782e795329a666fd 2013-01-10 * vm_core.h (VM_DEBUG_BP_CHECK): set 0 as default. This flag specifies checking BP consistency on each frame popping. Now, we don't have any trouble on it, so I remove it. If you feel any bugs about VM execution, then set it to 1.
e5481ccd8e6470b05d0c8a202103dc307c4aa25f 2013-01-23 * thread_pthread.c (ruby_init_stack): ignore `STACK_END_ADDRESS' if Ruby interpreter is running on co-routine. [Feature #2294] https://bugs.ruby-lang.org/issues/2294#note-18
d50bd4939a79bb53aeaf8c607e3d6612d3167022 2013-01-25 * vm_core.h: modify a comment about rb_iseq_t::local_size. A patch by davidbalbert (David Albert) [Bug #6750]
18e01f63816ec36d10b8d958b8298b73950dd89f 2013-01-29 * vm_backtrace.c: fix issue of rb_debug_inspector_open(). The order of making binding should be stack (frame) top to bottom. [Bug #7635] And also fix issue of collecting klass. Collecting klass is same as TracePoint#defined_class. (previous version, it returns T_ICLASS (internal objects). * test/-ext-/debug/test_debug.rb: add a test. * ext/-test-/debug/extconf.rb, init.c, inspector.c: ditto. * vm_backtrace.c: remove magic number and add enum CALLER_BINDING_*. * vm_backtrace.c, include/ruby/debug.h: add new C api (experimental) rb_debug_inspector_frame_self_get(). * vm.c, vm_core.h, vm_trace.c: move decl. of rb_vm_control_frame_id_and_class() and constify first parameter.
4cb4c929df1ed1b86f3aec90ff7cb954db9a9021 2013-02-04 * vm_dump.c (control_frame_dump): capitalize prefix of `ep' if `ep' points an env object.
88101695ab516ce30f930513150c1247ebc6c36d 2013-02-05 * proc.c (rb_binding_new_with_cfp): permit to create binding object of IFUNC frame. When `rb_binding_new_with_cfp()' is called, VM finds out the first normal (has iseq) frame and create a binding object of this frame and create Env objects. `ep's of related frames are updated (`ep's point Env object managed spaces). However, `ep' of skipped IFUNC frame was not updated and old invalid `ep' was remained. It causes serious problems. To solve this issue, permit IFUNC to create binding. (Maybe there is no problem on it) [ruby-dev:46908] [ruby-trunk - Bug #7774] * test/ruby/test_settracefunc.rb: add a test. * vm.c (rb_vm_get_binding_creatable_next_cfp), vm_core.h: added. * vm_trace.c: fix to use `rb_vm_get_binding_creatable_next_cfp()'.
7cbeff908fb75f82b08b2e7eeaed937167eef2d6 2013-02-16 * proc.c (rb_binding_new_with_cfp): create binding object even if the frame is IFUNC. But return a ruby-level binding to keep compatibility. This patch fix degradation introduced from r39067. [Bug #7774] [ruby-dev:46960] * test/ruby/test_settracefunc.rb: add a test.
b4add2ac2be49677b05402bf236c7e547949e0a8 2013-02-16 * vm.c (rb_thread_mark): mark a working Proc of bmethod (a method defined by define_method) even if the method was removed. We could not trace working Proc object which represents the body of bmethod if the method was removed (alias/undef/overridden). Simply, it was mark miss. This patch by Kazuki Tsujimoto. [Bug #7825] NOTE: We can brush up this marking because we do not need to mark `me' on each living control frame. We need to mark `me's only if `me' was free'ed. This is future work after Ruby 2.0.0. * test/ruby/test_method.rb: add a test.
cc16b2139b50ae00e44c672bdf6c932da630d007 2013-02-18 * vm_eval.c (vm_call0_body): check interrupts after method dispatch from C methods. [Bug #7878]
b0690af9a4f09fc2cd6d15e7544cc40a4371228d 2013-02-28 * iseq.c (iseq_data_to_ary): fix condition. r34303 introduces a bug to avoid all line information from a result of ISeq#to_a. This is a regression problem from 2.0.0p0. * test/ruby/test_iseq.rb: add a test of lines after ISeq#to_a.
4cf0918e8e3d8b06d84c3cd3e875c82edb8b87e6 2013-02-28 * compile.c (iseq_compile_each): remove redundant trace(line) instruction. for example, at the following script def m() p:xyzzy 1 2 end compiler ignores `1' because there is no effect. However, `trace(line)' instruction remains in bytecode. This modification removes such redundant trace(line) instruction. * test/ruby/test_iseq.rb: add a test.
925c936bb1f362cb806184afddf2dbac40b21ffc 2013-05-13 * gc.c (rb_data_object_alloc, rb_data_typed_object_alloc): use NEWOBJ_OF() instead of NEWOBJ().
8ac05ae500332d7fb8a86f9da7d87424915ab0ca 2013-05-13 * gc.c (rb_data_object_alloc): check klass only if klass is not 0.
b6b85f6eaf51d4a258cc228319721367cd1f2e0c 2013-05-13 * object.c (rb_obj_setup): added. * include/ruby/ruby.h (OBJSETUP): ues rb_obj_setup() instead of a macro.
c8fc37a99c7d04937c586fe6aad9b4cf421219e1 2013-05-13 * ChangeLog: add a comment.
12bf73637b960cf0ef463f966554595ff2c37ecd 2013-05-13 * include/ruby/ruby.h: add new utility macros to access Array's element. * RARRAY_AREF(a, i) returns i-th element of an array `a' * RARRAY_ASET(a, i, v) set i-th element of `a' to `v' This change is a part of RGENGC branch [ruby-trunk - Feature #8339].
aacd7710462142df7397618ffff4279e495f10f9 2013-05-13 * *.c, parse.y, insns.def: use RARRAY_AREF/ASET macro instead of using RARRAY_PTR().
83aba0486298d61b39f3ed3492042690a889807f 2013-05-13 * include/ruby/ruby.h: constify RBasic::klass and add RBASIC_CLASS(obj) macro which returns a class of `obj'. This change is a part of RGENGC branch [ruby-trunk - Feature #8339]. * object.c: add new function rb_obj_reveal(). This function reveal interal (hidden) object by rb_obj_hide(). Note that do not change class before and after hiding. Only permitted example is: klass = RBASIC_CLASS(obj); rb_obj_hide(obj); .... rb_obj_reveal(obj, klass); TODO: API design. rb_obj_reveal() should be replaced with others. TODO: modify constified variables using cast may be harmful for compiler's analysis and optimizaton. Any idea to prohibt inserting RBasic::klass directly? If rename RBasic::klass and force to use RBASIC_CLASS(obj), then all codes such as `RBASIC(obj)->klass' will be compilation error. Is it acceptable? (We have similar experience at Ruby 1.9, for example "RARRAY(ary)->ptr" to "RARRAY_PTR(ary)". * internal.h: add some macros. * RBASIC_CLEAR_CLASS(obj) clear RBasic::klass to make it internal object. * RBASIC_SET_CLASS(obj, cls) set RBasic::klass. * RBASIC_SET_CLASS_RAW(obj, cls) same as RBASIC_SET_CLASS without write barrier (planned). * RCLASS_SET_SUPER(a, b) set super class of a. * array.c, class.c, compile.c, encoding.c, enum.c, error.c, eval.c, file.c, gc.c, hash.c, io.c, iseq.c, marshal.c, object.c, parse.y, proc.c, process.c, random.c, ruby.c, sprintf.c, string.c, thread.c, transcode.c, vm.c, vm_eval.c, win32/file.c: Use above macros and functions to access RBasic::klass. * ext/coverage/coverage.c, ext/readline/readline.c, ext/socket/ancdata.c, ext/socket/init.c, * ext/zlib/zlib.c: ditto.
f1eadb0fb446418ac7b607a609cf19d9fd943f83 2013-05-13 * iseq.c (prepare_iseq_build): remove additional line braek.
89e6910f04bb7dcb4d1b3879b8e98295bc20271d 2013-05-13 * include/ruby/ruby.h: constify RRational::(num,den) and RComplex::(real,imag). Add macro to set these values: * RRATIONAL_SET_NUM() * RRATIONAL_SET_DEN() * RCOMPLEX_SET_REAL() * RCOMPLEX_SET_IMAG() This change is a part of RGENGC branch [ruby-trunk - Feature #8339]. TODO: API design. RRATIONAL_SET(rat,num,den) is enough? TODO: Setting constify variable with cast has same issue of r40691. * complex.c, rational.c: use above macros.
7d0a90e9b494dd0897e4a5a3b5d219b9c9c891e8 2013-05-13 * gc.c: refactoring GC::Profiler. * gc.c (gc_prof_sweep_timer_start/stop): removed because they doesn't support lazy sweep. * gc.c (gc_prof_sweep_slot_timer_start/stop): added. redefine `sweeping time' to accumulated time of all of slot_sweep(). * gc.c (rb_objspace_t::profile::count): renamed to rb_objspace_t::profile::next_index. `counter' seems ambiguous. increment it when next record is acquired.
b597df707e529381e70ece71e74d4a2c296e9ef3 2013-05-13 * gc.c: disable GC_PROFILE_MORE_DETAIL (fix last commit). * gc.c (gc_prof_set_malloc_info): fix "objspace->heap.live_num" to "objspace_live_num(objspace)". There is no such member variable.
7958c71ee57b0e394ed5e99f724161eacadf3056 2013-05-13 * gc.c: remove rb_objspace_t::marked_num. We can use `objspace_live_num()' instead of removed `marked_num' if it is after `after_gc_sweep()' function call. * gc.c (after_gc_sweep): use objspace_live_num() instead of removed rb_objspace_t::marked_num. * gc.c (gc_mark_ptr, gc_marks): remove rb_objspace_t::marked_num code. * gc.c (gc_prepare_free_objects): do not call set_heaps_increment() with checking objspace->heap.marked_num. At this point, we only need to check availability of free-cell. * gc.c (gc_prepare_free_objects): * gc.c (lazy_sweep): call after_gc_sweep() if there are no sweep_able entry. * gc.c (rest_sweep, gc_prepare_free_objects): remove after_gc_sweep() call.
4f401816ffaf9b641cfbc8ad12203eedcdb527de 2013-05-13 * gc.c: support RGENGC. [ruby-trunk - Feature #8339] See this ticet about RGENGC. * gc.c: Add several flags: * RGENGC_DEBUG: if >0, then prints debug information. * RGENGC_CHECK_MODE: if >0, add assertions. * RGENGC_PROFILE: if >0, add profiling features. check GC.stat and GC::Profiler. * include/ruby/ruby.h: disable RGENGC by default (USE_RGENGC == 0). * array.c: add write barriers for T_ARRAY and generate sunny objects. * include/ruby/ruby.h (RARRAY_PTR_USE): added. Use this macro if you want to access raw pointers. If you modify the contents which pointer pointed, then you need to care write barrier. * bignum.c, marshal.c, random.c: generate T_BIGNUM sunny objects. * complex.c, include/ruby/ruby.h: add write barriers for T_COMPLEX and generate sunny objects. * rational.c (nurat_s_new_internal), include/ruby/ruby.h: add write barriers for T_RATIONAL and generate sunny objects. * internal.h: add write barriers for RBasic::klass. * numeric.c (rb_float_new_in_heap): generate sunny T_FLOAT objects. * object.c (rb_class_allocate_instance), range.c: generate sunny T_OBJECT objects. * string.c: add write barriers for T_STRING and generate sunny objects. * variable.c: add write barriers for ivars. * vm_insnhelper.c (vm_setivar): ditto. * include/ruby/ruby.h, debug.c: use two flags FL_WB_PROTECTED and FL_OLDGEN. * node.h (NODE_FL_CREF_PUSHED_BY_EVAL, NODE_FL_CREF_OMOD_SHARED): move flag bits.
9b6b3672cc1556791225aa9663ded2ac24e9cd1c 2013-05-13 * include/ruby/ruby.h: enable RGENGC (USE_RGENGC) but no type creates write protected (sunny) objects (RGENGC_WB_PROTECTED_* == 0).
1829147fb58982bf31549e4377f171fd18da8919 2013-05-13 * include/ruby/ruby.h: enable to generate write barrier protected objects for numeric types (Float, Complex, Rational, Bignum).
305382bd69339206249db008003baef1bb9461f1 2013-05-13 * include/ruby/ruby.h: enable to generate write barrier protected objects (T_OBJECT).
5016b37ae4960708aa111a8b13b07b32b5abb3fd 2013-05-13 * include/ruby/ruby.h: enable to generate write barrier protected objects (T_STRING).
b8c0ff86d5a8c860f692159ebbc41f84eb2dec5c 2013-05-13 * include/ruby/ruby.h: enable to generate write barrier protected arrays (T_ARRAY).
f254b689f22588d8ffa6f2600ad771a7561a82b1 2013-05-13 * string.c (rb_str_new_frozen): remove debug print.
4a9ec30601e6ac639aec25d93dede1de845b3b61 2013-05-15 * gc.c: add an additional RGENGC_PROFILE mode (2). Profiling result can be check by GC.stat. * gc.c (type_name): separate from obj_type_name().
f1ccdf98cae8e02d156968b1a8f67ac72f9857de 2013-05-15 * gc.c (newobj): rename to `newobj_of' and accept additional three parameters v1, v2, v3. newobj_of() do OBJSETUP() and fill values with v1, v2, v3. * gc.c (rb_data_object_alloc, rb_data_typed_object_alloc): use newobj_of().
e213a7228f88d83ecf8253ea1fb939c6f2384136 2013-05-15 * gc.c (rb_node_newnode): use newobj_of() instead of rb_newobj().
3f2cb86ef325217af8205571996179fee0a7ee40 2013-05-21 * gc.c (gc_profile_dump_on): `count' should be (int) because it can be negative number. And use pointer for `record' (don't copy).
6f7c9e2ecb20d138565f17286620fc656dd5ffbd 2013-05-21 * common.mk (rdoc-bench): add a benchmark rule using RDoc. Generate all rdoc related files (same as `make rdoc') in temporary directory and remove them. Excecution time, GC::Profiler and results of GC.stat are printed. * tool/rdocbench.rb: added for `rdoc-bench'.
2e011442e531b2f8b841d6b5d2a9d62b3c435ae7 2013-05-21 * gc.c: GC::Profiler's sweeping time is accumulated all slot sweeping time. At lazy GC, GC::Profiler makes new record entry for each lazy_sweep(). In this change, accumulating all slot_sweep() time. And change indentation.
9578bb7831201c6c4b8eb03d7352f116046b33c1 2013-05-21 * gc.c: fix to collect additional information for GC::Profiler. * major/minor GC * trigger reason of GC * gc.c (gc_profile_dump_on): change reporting format with added information. * gc.c (gc_profile_record_get): return added information by :GC_FLAGS => array.
51d586c64e19c13a6fdfc75a860247f0835ef1a7 2013-05-21 * gc.c: remove gc_profile_record::is_marked. always true.
9e64703ec87ca5dd3c234942d865330ff9c47cf0 2013-05-21 * gc.c (garbage_collect): all GC is start from garbage_collect() (or garbage_collect_body()). `garbage_collect()' accept additional two parameters `full_mark' and `immediate_sweep'. If `full_mark' is TRUE, then force it full gc (major gc), otherwise, it depends on status of object space. Now, it will be minor gc. If `immediate_sweep' is TRUE, then disable lazy sweep. To allocate free memory, `full_mark' and `immediate_sweep' should be TRUE. Otherwise, they should be FALSE. * gc.c (gc_prepare_free_objects): use `garbage_collect_body()'. * gc.c (slot_sweep, before_gc_sweep, after_gc_sweep): add logging code.
5aece50163fc3636ef06a78b055c2ccea3e0b353 2013-05-22 * gc.c (gc_prepare_free_objects, rest_sweep, lazy_sweep): fix position of `during_gc' setting.
b8b26d05cef49eb671ba5b69895d8987a6275c3a 2013-05-23 * object.c (rb_obj_clone): should not propagate OLDGEN status. This propagation had caused WB miss for class.
b84f7fda07a8e7bfad80a9faae69f071b736f144 2013-05-24 * gc.c (after_gc_sweep, garbage_collect_body): do major GC (full GC) before extending heaps. TODO: do major GC when there are many old (promoted) objects. * gc.c (after_gc_sweep): remove TODO comments.
f38a0630908c17056e150f5ecaf3e3ecf73e0273 2013-05-24 * gc.c: do major/full GC when: * number of oldgen object is biggger than twice of number of oldgen object at last full GC. * number of remembered shady object is bigger than twice of number of remembered shady object at last full GC. * number of oldgen object and remembered shady object is bigger than half of total object space. (please fix my English!)
7b5a42f0fa54dbb0d381ffbe3b8de6601577c518 2013-05-25 * gc.c (after_gc_sweep): reduce full GC timing.
a20a14727f4c15fad7a07b8bd7c39074895aa845 2013-05-26 * hash.c, include/ruby/ruby.h: support WB protected hash. * constify RHash::ifnone and make new macro RHASH_SET_IFNONE(). * insert write barrier for st_update(). * include/ruby/intern.h: declare rb_hash_set_ifnone(hash, ifnone). * marshal.c (r_object0): use RHASH_SET_IFNONE(). * ext/openssl/ossl_x509name.c (Init_ossl_x509name): ditto.
c4c821a7d7f2229a7c8d2c36cdc6b20668101081 2013-05-26 * hash.c (rb_hash_tbl_raw), internal.h: added. Returns st_table without shading hash. * array.c: use rb_hash_tbl_raw() for read-only purpose. * compile.c (iseq_compile_each): ditto. * gc.c (count_objects): ditto. * insns.def: ditto. * process.c: ditto. * thread.c (clear_coverage): ditto. * vm_insnhelper.c: ditto.
ca2ca7d32b7ac53b9c28fac36dfe0bc539df85c6 2013-05-26 * gc.c (gc_stat): collect shade_operation_count, remembered_sunny_object_count and remembered_shady_object_count for each types when RGENGC_PROFILE >= 2. They are informative for optimization.
767debf92e7f21f48631ebb4764ba16cfaf1d7f0 2013-05-26 * gc.c (gc_stat): collect promote_operation_count and types (RGENGC_PROFILE >= 2).
e2793a908e23dd1dde5eaf553c5bb7ed5e8533c9 2013-05-26 * include/ruby/debug.h, vm_trace.c: add rb_postponed_job API. Postponed jobs are registered with this API. Registered jobs are invoked at `ruby-running-safe-point' as soon as possible. This timing is completely same as finalizer timing. There are two APIs: * rb_postponed_job_register(flags, func, data): register a postponed job with data. flags are reserved. * rb_postponed_job_register_one(flags, func, data): same as `rb_postponed_job_register', but only one `func' job is registered (skip if `func' is already registered). This change is mostly written by Aman Gupta (tmm1). https://bugs.ruby-lang.org/issues/8107#note-15 [Feature #8107] * gc.c: use postponed job API for finalizer. * common.mk: add dependency from vm_trace.c to debug.h. * ext/-test-/postponed_job/extconf.rb, postponed_job.c, test/-ext-/postponed_job/test_postponed_job.rb: add a test. * thread.c: implement postponed API. * vm_core.h: ditto.
96090c083dafd99b77405aa97692483f6a6ab9a4 2013-05-26 * ext/-test-/postponed_job/postponed_job.c: fix `init' function name.
680f0b5ba4eb4ba4f542ebc8d1204da61b71eb92 2013-05-27 * include/ruby/ruby.h, gc.c, vm_trace.c: add internal events. * RUBY_INTERNAL_EVENT_NEWOBJ: object created. * RUBY_INTERNAL_EVENT_FREE: object freeed. * RUBY_INTERNAL_EVENT_GC_START: GC started. And rename `RUBY_EVENT_SWITCH' to `RUBY_INTERNAL_EVENT_SWITCH'. Internal events can not invoke any Ruby program because the tracing timing may be critical (under huge restriction). These events can be hooked only by C-extensions. We recommend to use rb_potponed_job_register() API to call Ruby program safely. This change is mostly written by Aman Gupta (tmm1). https://bugs.ruby-lang.org/issues/8107#note-12 [Feature #8107] * include/ruby/debug.h, vm_trace.c: added two new APIs. * rb_tracearg_event_flag() returns rb_event_flag_t of this event. * rb_tracearg_object() returns created/freeed object. * ext/-test-/tracepoint/extconf.rb, ext/-test-/tracepoint/tracepoint.c, test/-ext-/tracepoint/test_tracepoint.rb: add a test.
662cbf22fa5c3914fe04ced1b2b413aa6fc426b4 2013-05-27 * test/-ext-/postponed_job/test_postponed_job.rb: fix typo and class name.
a1b1b6f7fb22fddcb7843a021e16553f96aea137 2013-05-27 * vm_trace.c (rb_postponed_job_flush, rb_postponed_job_register): use ruby_xmalloc/xfree. It is safe during GC.
050dd10d6f8933268ed0fd211eb5bcc8ad49f678 2013-05-27 * ext/objspace/objspace.c: support ObjectSpace.trace_object_allocations. Read the following test to know HOWTO. This feature is a sample of RUBY_INTERNAL_EVENT. * test/objspace/test_objspace.rb: add a test. * ext/objspace/object_tracing.c: ditto. * gc.c (rb_gc_count): add. THis function returns GC count. * internal.h: add decl. of rb_gc_count(). Same as `GC.count'.
f0b6cb6fc7e476dc162a907c021d52831383ba34 2013-05-27 * include/ruby/ruby.h: rename RUBY_INTERNAL_EVENT_FREE to RUBY_INTERNAL_EVENT_FREEOBJ. * ext/-test-/tracepoint/tracepoint.c, ext/objspace/object_tracing.c, gc.c, vm_trace.c: catch up this change.
eccb729a3fb840dc9b45103a19fe62d23b3d5e6c 2013-05-27 * vm_trace.c (rb_postponed_job_flush): remove a wrong comment.
e4c58251b736ba362774b24787dff672fd3ee41b 2013-05-27 * include/ruby/ruby.h, gc.c: add new internal event RUBY_INTERNAL_EVENT_GC_END. This event invokes at the end of after_sweep(). Time chart with lazy sweep is here: (1) Kick RUBY_INTERNAL_EVENT_GC_START (2) [gc_marks()] (3) [lazy_sweep()] (4) [... run Ruby program (mutator) with lazy_sweep() ...] (5) [after_sweep()] (6) Kick RUBY_INTERNAL_EVENT_GC_END (7) [... run Ruby program (mutator), and go to (1) ...] * ext/-test-/tracepoint/tracepoint.c, test/-ext-/tracepoint/test_tracepoint.rb: modify a test.
f72bd6e720ec0a75a3d3e64daef1536297c53967 2013-05-27 add a ChangeLog.
c180e0d8801a8fb1f4d900d6a7e36ccb7d4f557e 2013-05-27 * vm_trace.c (rb_postponed_job_register_one): fix iteration bug. * ext/-test-/postponed_job/postponed_job.c, test/-ext-/postponed_job/test_postponed_job.rb: add a test.
8a81b54a2b9cf5349c882659fd3b2bc7995bc633 2013-05-27 * gc.c (garbage_collect_body): fix GC_ENABLE_LAZY_SWEEP condition. * gc.c (GC_NOTIFY): move debug print location and use stderr instead of stdout.
b01c4ddfce5faa7e0bb982a41319c7e44141c5e3 2013-05-27 * gc.c (gc_stat): remove wrong rest_sweep().
30dbed383786362eaf70ad584a8b382a12b68fef 2013-05-27 * ext/objspace/gc_hook.c, ext/objspace/objspace.c: add new methods to hook GC invocation. * ObjectSpace.after_gc_start_hook=(proc) * ObjectSpace.after_gc_end_hook=(proc) Note that hooks are not kicked immediately. Procs are kicked at postponed_job. This feature is a sample of new internal event and rb_postponed_job API.
7453c53b08655e9d17c0419716ffad1c41663b6d 2013-05-28 * ext/objspace/object_tracing.c: fix a bug reported at "[ruby-core:55182] [ruby-trunk - Bug #8456][Open] Sugfault in Ruby Head" Care about the case TracePoint#path #=> `nil'. * ext/objspace/object_tracing.c: add two new methods: * ObjectSpace.allocation_class_path(o) * ObjectSpace.allocation_method_id(o) They are not useful for Object.new because they are always "Class" and :new. To trace more useful information, we need to maintain call-tree using call/return hooks, which is implemented by ll-prof <http://sunagae.net/wiki/doku.php?id=software:llprof> * test/objspace/test_objspace.rb: add a test.
68f96f6c3c05385a5b47395b82e619f9c06b0437 2013-05-29 * hash.c: fix WB bug. (1) Hash's key also needs WB. (2) callback parameter *key and *value of st_update() is not a storage of st_table itself (only local variable). So that OBJ_WRITE() is not suitable, especially for `!exsinting'. OBJ_WRITTEN() is used instead of OBJ_WRITE().
6e19585ac7dc38810a39f597413279afc1c92bf0 2013-05-29 * gc.c (gc_profile_enable): rest_sweep() to finish last GC. Profiling record is allocated at first of marking phase. Enable at lazy sweeping may cause an error (SEGV).
e7dfa869c0a0f55c64510035611c48e85c9ec72f 2013-06-07 * gc.c: remove "Sunny" terminology. "Sunny" doesn't mean antonym of "Shady" (questionable, doubtful, etc). Instead of "Suuny", use "non-shady" or "normal".
dd96561f76f8c3ae7d60f5ace40ce32f4f1d73c8 2013-06-10 * gc.c (wmap_mark): check allocation of `w->obj2wmap'. (no-allocation `w->obj2wmap' will be NULL pointer reference)
f8ba9a1f605b264069591664eae866b643c74db4 2013-06-10 * array.c (rb_ary_new_from_values): add assertion (ary should be young object).
a03ac78b2c7f48d5e0f9bf2504385a8d24a836ab 2013-06-10 * gc.c (RVALUE_PROMOTE): fix parameter name (`x' to `obj') and make it inline function (like RVALUE_PROMOTE).
a8aaf133921e5cfcf6e0ee88dc6b69e9c52ecf75 2013-06-10 * gc.c (rgengc_remember): permit promoted object. (rb_gc_writebarrier -> remember)
87a120fbdc25544135e8d625e8dc11950b7245a3 2013-06-14 * class.c, include/ruby/ruby.h: add write barriers for T_CLASS, T_MODULE, T_ICLASS. * constant.h: constify rb_const_entry_t::value and file to detect assignment. * variable.c, internal.h (rb_st_insert_id_and_value, rb_st_copy): added. update table with write barrier. * method.h: constify some variables to detect assignment. * object.c (init_copy): add WBs. * variable.c: ditto. * vm_method.c (rb_add_method): ditto.
f41b284fab83ad067eead551e7e9b3d67b2a1e8e 2013-06-14 * compile.c (rb_iseq_compile_node): fix location of a `trace' instruction (b_return event). [ruby-core:55305] [ruby-trunk - Bug #8489] (need a backport to 2.0.0?) * test/ruby/test_settracefunc.rb: add a test.
17be9e97193bd02b439081033db7098f87d1282a 2013-06-17 * gc.c (gc_mark_maybe): added. check `is_pointer_to_heap()' and type is not T_ZOMBE. * gc.c: use `gc_mark_maybe()'. T_ZOMBIE objects should not be pushed to the mark stack.
7a460d2d1deac55cecce6c734b0211f03c8120e7 2013-06-17 * gc.c (gc_mark_children): don't need to care about T_ZOMBIE here.
84608b13622a4774c8015f8942db863820c0f81b 2013-06-18 * variable.c (rb_autoload): fix WB miss.
17cd5ac4af3b8aaec568e41e5531af65cd1adf45 2013-06-18 * gc.c (gc_mark_maybe): check to skip T_NONE. * gc.c (markable_object_p): do not need to check (flags == 0) here.
1d7966f5b461472bd95184c6cea9f0d1a5bdf1da 2013-06-18 * gc.c (gc_stat): add `generated_normal_object_count_types' for RGENGC_PROFILE >= 2.
67d6aaca3521f6fe089103e72157e05ee950882a 2013-06-18 * variable.c (rb_const_set): fix WB miss.
0f1df31bdf1952065f75fa2bfaf32dbd14ec7525 2013-06-18 * hash.c: `st_update()' also has same issue of last fix. write barriers at callback function are too early. All write barriers are executed after `st_update()'
5a70af1d59b85c4987330b5ff8e3ef1cbb6e5668 2013-06-18 * vm.c (kwmerge_i): add WB.
81ed2d3c4aa19c03a6e2d644c853e5977fb53cc8 2013-06-18 * gc.c (gc_stress_set): add special option of GC.stress. `GC.stress=(flag)' accepts integer to control behavior of GC. See code for details. Of course, this feature is only for MRI. You can debug RGenGC (WB) using `GC.stress = 1'. Using this option, do minor marking at all possible places. GC::STRESS_MINOR_MARK = 1 and GC::STRESS_LAZY_SWEEP = 2 seem good to add.
5455b7e72ef7230b36faa3e004444e5bb80915e1 2013-06-18 * gc.c (RGENGC_CHECK_MODE): add new check mode `3'. In this mode, show all references if there is a miss-corrected object.
65791846a66f7bde9fa480f11e0405086323986f 2013-06-18 * gc.c (rgengc_remember): check T_NONE and T_ZOMBIE if RGENGC_CHECK_MODE > 0.
54d04073d77fc65844fd9062cc90dd8a3c079de5 2013-06-18 * gc.c (rgengc_remember): fix output level. * gc.c (rgengc_rememberset_mark): fix to output clear count. (shady_object_count + clear_count = count of remembered objects)
d879849b6e874557c27d6a63e50ea9d0af04acef 2013-06-18 * gc.c (make_deferred): clear flags to T_ZOMBIE. * gc.c (slot_sweep_body): fix indent.
bfac961beda98f90463a77c9944f0dc9fa095b10 2013-06-18 * gc.c (rb_objspace::gc_stress): int -> VALUE to store Fixnum object.
97dd259df5f1598e320e2e48de9aedd41834daa2 2013-06-18 * gc.c (garbage_collect_body): use FIX2INT for ruby_gc_stress.
9b47ec04a89711766c4d14b6d7792fecc7c7b185 2013-06-19 * include/ruby/ruby.h (struct rb_data_type_struct), gc.c: add rb_data_type_struct::flags. Now, this flags is passed at T_DATA object creation. You can specify FL_WB_PROTECTED on this flag. * iseq.c: making non-shady iseq objects. * class.c, compile.c, proc.c, vm.c: add WB for iseq objects. * vm_core.h, iseq.h: constify fields to detect WB insertion.
a1acb395a2fd20ad4eaa16ef1a88e721535c4172 2013-06-19 * gc.c (rb_gc_force_recycle): clear oldgen bitmap, too.
745263abb97faca2cc08f1c577a8e5bd3a9aa6a2 2013-06-19 * gc.c (RVALUE_PROMOTED): check consistency between oldgen flag and oldgen bitmap if RGENGC_CHECK_MODE > 0.
50214475a92b9d9d105a2ea8ee72081b4a6ef54c 2013-06-19 * gc.c (garbage_collect_test): rewrite checking code. When RGENGC_CHECK_MODE >= 2, all minor marking, run normal minor marking *and* major/full marking. After that, compare the results and shows BUG if a object living with major/full marking but dead with minor marking. After detecting bugs, print references information. (RGENGC_CHECK_MODE == 2, show references to dead object) (RGENGC_CHECK_MODE == 3, show all references)
ce7c13ef4d2b75eb56b950563d131e3abc9bab95 2013-06-19 * gc.c (RVALUE_PROMOTED): fix type.
21b0705c1838741d8557f486e697163daa99662d 2013-06-19 * gc.c (gc_marks): fix wrong option. FALSE means major/full GC. It should be TRUE (minor marking).
6622ab2049996a966b2182cc1159a42f8f68e846 2013-06-19 * gc.c: Accumulate sweep time to GC time. Now [GC time] is [mark time] + [sweep time] + [misc]. ([GC time] >= [mark time] + [sweep time]) * gc.c (gc_prof_sweep_slot_timer_start/stop): rename to gc_prof_sweep_timer_start/stop and locate at lazy_sweep(). * gc.c (elapsed_time_from): add a utility function.
efc53c496e3694d5050be10068c1ad16c41e53c3 2013-06-19 * gc.c (gc_prof_sweep_timer_start): fix merge miss. * gc.c (GC_PROFILE_MORE_DETAIL): set it 0.
65ad154e2ab959c7b57e566866500b874e6d253a 2013-06-19 * gc.c (gc_profile_total_time): check objspace->profile.next_index > 0.
55ae2402f40c428307a1ac1e8a9f2800a4a2f1bf 2013-06-19 * tool/rdocbench.rb: add summary.
57bb153456513d727f388bc4e6d9811dc1b4c79b 2013-06-19 * common.mk: add new rules `gcbench-rdoc', `gcbench-hash'. * tool/gcbench.rb: separate GC bench framework and process. * tool/hashbench1.rb, tool/hashbench2.rb: add two types GC bench. hashbench1: many temporal objects (GC by newobj) hashbench2: hash size becomes bigger and bigger (GC by malloc) Two benchs are executed by `gcbench-hash' rule. * tool/rdocbench.rb: separated.
fcd5d8fd332b30800c85008100446961473f97d6 2013-06-19 * tool/gcbench.rb: Summary in one line. * common.mk: separete gcbench-hash to gcbench-hash1 and gcbench-hash2.
36bc41251310d71450803094ddc91abe63640fed 2013-06-20 * common.mk: remove dependency from ruby.
800103e40a8fa65de0b6effbd06654bc754ac1ad 2013-06-20 * tool/hashbench1.rb: fix parameters.
ab7e4592106e0796d5b243c0d0c8629a47351e05 2013-06-20 * tool/hashbench1.rb: fix paramter too. Increase temporary objects.
99b10ff471c50358ed0f6864f4cf87857c51a91d 2013-06-20 * benchmark/gc: create a directory to store GC related benchmark. * benchmark/gc/gcbench.rb: moved from tool/gcbench.rb. * benchmark/gc/hash(1|2).rb: ditto. * benchmark/gc/rdoc.rb: ditto. * benchmark/gc/null.rb: added. * common.mk: fix rule.
2802afffd688f4f3dce0492a45dab82bfc80e070 2013-06-20 * benchmark/gc/redblack.rb: import red black tree benchmark from https://github.com/jruby/rubybench/blob/master/time/bench_red_black.rb * benchmark/gc/ring.rb: add a benchmark. This benchmark create many old objects.
fe6b76e78983fd1a0546e1683c0051a01c6cf408 2013-06-20 * benchmark/gc/pentomino.rb: added. Simply load pentomino puzzle in the benchmark/ directory.
c5c1e8b8d49d65d5844b4c4a7cd905c2ba55eeb8 2013-06-20 * benchmark/bm_so_binary_trees.rb: disable `puts' method and change iteration parameter to increase execution time. * benchmark/gc/binarytree.rb: added.
8e94c016534eab6d43454733c68247d657d02200 2013-06-20 * benchmark/bm_app_aobench.rb: added. * benchmark/gc/aobench.rb: added.
8fbffe61cc35433cef210ce25708fa535d2cc9bf 2013-06-20 * benchmark/bm_app_aobench.rb: use attr_accessor/reader instead of defining methods.
1db64a2035fc8779ac206958f01d71acc8017c28 2013-06-20 * benchmark/gc/gcbench.rb: don't use __dir__ to make compatible with ruby 1.9.3.
07b6816583451e41d9e6a97fe97ef366b0539828 2013-06-20 * benchmark/gc/gcbench.rb: stop GC::Profiler before output results. Generating GC::Profiler result under profiling causes infinite loop.
45f7b78d29cb4798b68e58c3c674631a90d8295d 2013-06-20 * benchmark/gc/gcbench.rb: Do not use GC::Profiler::disable because GC::Profiler::disable prohibit to access profiling data. It should be spec bug. Skip GC::Profiler::report if RUBY_VERSION < '2.0.0'
bf017de1f3cefd4adef07a4ee4b0332d14438a21 2013-06-20 * gc.c (rgengc_rememberset_mark): record (1) normal objects count in remember set (2) shady objects count in remember set each GC timing. * gc.c (gc_profile_record_get): enable to access above information and REMOVING_OBJECTS, EMPTY_OBJECTS.
d1c518d416274a8142cb8281f3361e91f98cc5f4 2013-06-20 * gc.c (gc_prof_sweep_timer_stop): accumulate sweep time only when record->gc_time > 0.
8ab7d0e4c3c19688736c874e17a85c32124dbd88 2013-06-20 * gc.c (gc_profile_record::oldgen_objects): added. * gc.c (gc_profile_dump_on): print the following infomation: * Living object counts * Free object counts If RGENGC_PROFILE > 0 then * Oldgen object counts * Remembered normal object counts * Remembered shady object counts
8b80ce3a53c5695f13b76c146d8bde1a2bc332cb 2013-06-20 * gc.c: fix to support USE_RGENGC == 0 (disable RGenGC). If USE_RGENGC==0, it caused compilation error.
caf923fa6a473918fa7a7a66aeb73495feaff833 2013-06-21 * gc.c (slot_sweep_body): add counters at a time. * gc.c (gc_profile_dump_on): fix line break position.
7986e98394af984cc0d0959f748c714f6c471e5c 2013-06-21 * gc.c (heaps_header/heaps_slot): embed bitmaps into heaps_slot. no need to maintain allocation/free bitmaps.
b21bf8f94b1d260b3a98ddac503ac643c13bb171 2013-06-21 * gc.c (gc_marks_body): fix to get `th' in this function.
4a113cd3cb1eb33811532181a9c3f2cb0f666a09 2013-06-21 * gc.c: RGENGC_CHECK_MODE should be 0.
e35f127403979e2b61e38402155b1e5d94910c6a 2013-06-21 * gc.c: fix to use total_allocated_object_num and heaps_used at the GC time for profiler.
8398719020b56bbd38bad72c894dd21d2aff6de9 2013-06-21 * gc.c: fix to use total_allocated_object_num and heaps_used at the GC time for profiler.
dfc4cc019607e37d817869af0b3b713f92ed3c38 2013-06-21 revert last commit (operation miss).
ac9413893ac7792b5614c9efe795f8448767103f 2013-06-21 * gc.c: enable lazy sweep (commit miss).
ab084f406319dcfd06a4f7922fcb6e95ccec22bc 2013-06-21 * gc.c (gc_sweep): profile sweep time correctly when LAZY_SWEEP is disabled. * gc.c (gc_marks_test): store oldgen count and shady count before test marking and restore them after marking.
372272c24517801813390f0a1284703db9b2a79c 2013-06-21 * benchmark/gc/gcbench.rb: fix summary of benchmark result notaton.
9296bd49da1b75731e4ccf48e6517c59d21a700b 2013-06-21 * include/ruby/ruby.h, re.c: support write barrier for T_REGEXP.
de928040818eba82d7f1ca239244c80895c5da43 2013-06-21 add a note
6a1101f23ea403a8825c2f361508eeb85878b011 2013-06-21 * include/ruby/ruby.h: support write barrier protection for T_STRUCT. Introduce the following C APIs: * RSTRUCT_RAWPTR(st) returns pointer (do WB on your risk). The type of returned pointer is (const VALUE *). * RSTRUCT_GET(st, idx) returns idx-th value of struct. * RSTRUCT_SET(st, idx, v) set idx-th value by v with WB. And * RSTRUCT_PTR(st) returns pointer with shady operation. The type of returned pointer is (VALUE *). * struct.c, re.c, gc.c, marshal.c: rewrite with above APIs.
c2269d9aadce0fbb6b4d02f1d4737c17586062b2 2013-06-21 * vm_eval.c (eval_string_with_cref): fix WB miss.
508b255b9a11b03fd08efbe9855bc985f702076f 2013-06-21 * include/ruby/ruby.h: constify RArray::as::ary and RArray::heap::ptr. Use RARRAY_ASET() or RARRAY_PTR_USE() to modify Array objects. * array.c, gc.c: catch up above changes.
79d3385e9d7b826e8845a7cac2aa4ed404582675 2013-06-21 * gc.c (allocate_sorted_heaps): remove unused variable `add'.
a27c48f69e1460d1327db4a3a0c52574c1b4a087 2013-06-21 * gc.c (check_bitmap_consistency): add to check flag and bitmap consistency. Use this function in several places.
671c196384908064703362857b2bf5f7f1b6bf39 2013-06-21 * gc.c (slot_sweep_body): rename to slot_sweep(). No need to separate major/minor GC. * gc.c (gc_setup_mark_bits): remove gc_clear_mark_bits() and unify to this function.
4223f00713bec8721c031e50bf8a6d23e806f3e9 2013-06-21 * include/ruby/ruby.h (OBJ_WRITE): cast to (VALUE *) for second parameter `slot'. You don't need to write a cast (VALUE *) any more. * class.c, compile.c, hash.c, iseq.c, proc.c, re.c, variable.c, vm.c, vm_method.c: remove cast expressions for OBJ_WRITE().
7396fbb0b5d2d9305ea4c5e8c1bda9bfa22ba100 2013-06-21 * gc.c (rgengc_rememberset_mark): call gc_mark_children() for remembered objects directly instead of pushing on the mark stack.
b4f907ea29e2525874be1e3a959e46b534837261 2013-06-21 * gc.c (rb_gc_giveup_promoted_writebarrier): remove `rest_sweep()' because all of remembered objects are called for gc_mark_children().
dbd8f3ac03428d5577405344885abb64d5020bc3 2013-06-21 * gc.c (rb_objspace::profile): rename rb_objspace::profile::record to records (because it points a set of records) and add a field rb_objspace::profile::current_record to point a current profiling record. * gc.c: use above fields.
a59e629868a72b4fb71a5b4930191337264b82e2 2013-06-21 * gc.c (gc_prof_set_heap_info, after_gc_sweep): call gc_prof_set_heap_info() just after sweeping to calculate live object number correctly. (live object number = total generated number (before marking) - total freed number (after sweeping)) * gc.c (gc_marks): record `oldgen_object_count' into current profile` record directly. * gc.c (rgengc_rememberset_mark): same for remembered_normal_objects and remembered_shady_objects.
d73b9320cc2a19829ad089f0ec12490a10547a51 2013-06-22 * gc.c (rgengc_check_shady): add new WB miss checking on RGENGC_CHECK_MODE >= 2.
7da562e74074eaee8604b6049ff38f8bfccb6ac8 2013-06-22 * class.c (rb_include_class_new), eval.c (rb_using_refinement): make classes/modules (who share method table) shady. If module `a' and `b' shares method table m_tbl and new method with iseq is added, then write barrier is applied only `a' or `b'. To avoid this issue, shade such classes/modules. * vm_method.c (rb_method_entry_make): add write barriers.
982fee4fcc4cf5163405570b278afd1f53e30d0b 2013-06-22 * include/ruby/ruby.h, gc.c: rename macros and functions: OBJ_WB_GIVEUP() -> OBJ_WB_UNPROTECT(), rb_obj_wb_giveup() -> rb_obj_wb_unprotect(), rb_gc_giveup_promoted_writebarrier() -> rb_gc_writebarrier_unprotect_promoted(), * class.c, eval.c, hash.c: use OBJ_WB_UNPROTECT().
4ab37a13ceb5338c98ba16e5b59ed6b7b51840ee 2013-06-23 * bootstraptest/test_thread.rb: rescue resource limitation errors.
ab0a0031839fee694fa59c6b4e23cea88b820e17 2013-06-25 * gc.c: fix oldgen/remembered_shady counting algorithm. * gc.c (rgengc_check_shady): increment `objspace->rgengc.remembered_shady_object_count' here. * gc.c (rgengc_remember): return FALSE if obj is already remembered. * gc.c (rgengc_rememberset_mark): make it void. * gc.c (gc_mark_children): fix to double counting oldgen_object_count at minor GC.
2afa9b88ca58f01da79efee709ec0b30d485b18a 2013-07-09 * test/test_tracer.rb: catch up recent rubygems changes.
3cd6fe32541d2d19a1084c2cb34de64814c14df5 2013-07-16 * gc.c (after_gc_sweep): refactoring code.
53bdcbed86942f2ac6b1a3affcc187602d25cead 2013-07-16 revert last commit because it fails test-all.
e8ee0a24dcd858178cf7016a9169ffe79f1c25ea 2013-07-16 * gc.c (lazy_sweep): refactoring.
73ee1676b0cd82db62a577bf6ac69fc5b7e00c92 2013-07-16 * gc.c (assign_heap_slot): refactoring variable names. * gc.c (slot_add_freeobj): added. * gc.c (heaps_add_freeslot): added. * gc.c (finalize_list, rb_gc_force_recycle, slot_sweep): use `slot_add_freeobj' instead of modifying linked list directly.
ed621c001e20b8f6fec152c76360371d8fed38c5 2013-07-16 * gc.c (link_free_heap_slot): removed. * gc.c (slot_sweep): use `heaps_add_freeslot' instead of `link_free_heap_slot'. * gc.c (assign_heap_slot): use local variable `slot' instead of `heaps'.
a97c3b75855e86220d0c17544fb0f2c87c7e854d 2013-07-16 * gc.c: slim a path of newobj_of(). * gc.c (objspace): add a new field objspace::freelist, which contains available RVALUEs. * gc.c (newobj_of): simply call new function `get_freeobj()'. get_freeobj() returns objspace::freelist. If objspace::freelist is not available, refill objspace::freelist with a slot pointed by objspace::heap::free_slots. * gc.c (before_gc_sweep): clear objspace::freelist. * gc.c (slot_sweep): clear slot::freelist. * gc.c (heaps_prepare_freeslot): renamed to heaps_prepare_freeslot. * gc.c (unlink_free_heap_slot): remove unused function. * gc.c (rb_free_const_table): remove unused function.
fd92050515d444ccf16ebc84b6b29633732bb10b 2013-07-17 * gc.c: fix heaps_header and heaps_slot to reduce memory consumption. (1) move heaps_header::start and limit to heaps_slot. (2) remove heaps_header::end which can be calculated by start+limit. * gc.c: catch up above change.
79d9c8ac72f7559d02870eebe34a9e65d6715fae 2013-07-17 * gc.c: re-design the heap structure. (1) The heap is consists of a set of slots. (2) Each "slot" has a "slot_body". slot::start and slot::limit specify RVALUE beginning address and number of RVALUE in a "slot_body". (3) "slot_body" contains a pointer to slot (slot_body::header::slot) and an array of RVALUE. (4) heap::sorted is an array of "slots", sorted by an address of slot::body. See https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/GC_design for more details (figure). * gc.c: Avoid "heaps" terminology. It is ambiguous.
fa014681d53931c7f81489f94e141257f3da5693 2013-07-17 * gc.c (unlink_heap_slot): fix memory leak. free slot itself at free_heap_slot(). Reproduce-able code is here: N1 = 100_000; N2 = 1_000_000 N1.times{ary = []; N2.times{ary << ''}} Maybe this problem is remaining in Ruby 2.0.0. * gc.c (unlink_heap_slot): remove not working code.
9860c846d0407cdff6ccb44ee80d9aa39dfd4c90 2013-07-17 * gc.c (rb_objspace_free): free slot itself. * gc.c (objspace_each_objects): fix condition. Use slot->body instead of slot. * gc.c (count_objects): use "slot" variable.
caa14925cc059f2fb89d5af5eb1e3dda9862d171 2013-07-17 * gc.c: catch up last changes for debugging/checking mode.
a3b6aeba68a3ab2aa0124c384dcb518875179a65 2013-07-17 * gc.c: rename heap management functions with prefix "heap_". * allocate_sorted_array() -> heap_allocate_sorted_array(). * slot_add_freeobj() -> heap_slot_add_freeobj(). * assign_heap_slot() -> heap_assign_slot(). * add_heap_slots() -> heap_add_slots(). * init_heap() -> heap_init(). * set_heap_increment() -> heap_set_increment(). * gc.c (initial_expand_heap): inlined in rb_gc_set_params().
5c088cf7036539d225950eb2178675659e76e143 2013-07-17 * gc.c: rename gc related functions with prefix "gc_". * before_gc_sweep() -> gc_before_sweep(). * after_gc_sweep() -> gc_after_sweep(). * lazy_sweep() -> gc_lazy_sweep(). * rest_sweep() -> gc_rest_sweep(). * slot_sweep() -> gc_slot_sweep(). * gc.c: rename a heap management function with prefix "heap_". * get_freeobj() -> heap_get_freeobj(). * gc.c: rename markable_object_p() to is_markable_object().
7497452930b067b1dcdcc204bf9a6f34cd3d5d18 2013-07-18 * string.c (str_alloc): no need to clear RString (already cleared).
6429bbad5925caf111810f720f6abfbc36deb350 2013-07-18 * array.c (ary_alloc): slim setup process.
6795b09fb98fa13eb246b44e670573bda12e35f9 2013-07-18 * include/ruby/ruby.h: fix spell miss.
faa9d5eced17729f0a6edda4ba445dec26ca73a5 2013-07-18 * array.c: add logging feature for RGenGC's write barrier unprotect event.
8e5374d05a9cddc11ef8871eb34bb59109fa272a 2013-07-19 * array.c (ary_unprotect_logging): use (void *) for first parameter because VALUE is not defined before including ruby/ruby.h.
344835a754a832b00d66b7a714b86d04b0778b44 2013-07-19 * gc.c, internal.h (rb_gc_writebarrier_remember_promoted): add a new function to remember an specified object. This api is only experimental (strongly depend on WB/rgengc strategy).
b9b5a2ccab4555dd8e063870a15454d919a1d322 2013-07-19 * array.c (ary_ensure_room_for_push): use RARRAY_RAWPTR() instead of RARRAY_PTR. In this code, there are no "write" operation. * array.c (rb_ary_equal): ditto. * array.c (recursive_equal): ditto.
77887cf01c1ddfcfc471462fb87b805b2d5c4498 2013-07-19 * array.c (rb_ary_store): use RARRAY_PTR_USE() intead of RARRAY_PTR(). Clearing memory space doesn't need WBs.
01bf495286cd0a0f24c4b18982630309566be527 2013-07-19 * array.c (ary_memcpy): add a function to copy VALUEs into ary with write barrier. If ary is promoted, use write barrier correctly. * array.c (rb_ary_cat, rb_ary_unshift_m, rb_ary_dup, rb_ary_sort_bang, rb_ary_replace, rb_ary_plus): use ary_memcpy().
5ef247aa60049300428310ff38af5d7a798df416 2013-07-19 * array.c (rb_ary_resurrect): use RARRAY_RAWPTR() because there is no writing. * array.c (rb_ary_new_from_values): use ary_memcpy().
a6e1e3d637b00ec36e5a2ed9da0f2183abed4b1c 2013-07-19 * array.c: fix commit miss. RGENGC_UNPROTECT_LOGGING should be 0.
9cc7f5f829959cdd8a0bd4e1935b9d0b4bb28492 2013-07-19 * array.c (ary_mem_clear): added. This operation doesn't need WB because this operation creates a reference to Qnil. * array.c (ary_make_shared, rb_ary_store, rb_ary_shift_m, rb_ary_splice, rb_ary_resize, rb_ary_fill): use ary_mem_clear() instead of rb_mem_clear(). * array.c (ary_make_shared): use RARRAY_RAWPTR() instead of RARRAY_PTR().
8d8ead142c7849ccf719ca451fc8cbea2105b3a6 2013-07-19 * array.c: reduce shade operations. * array.c (rb_ary_modify): use RARRAY_RAWPTR(). * array.c (ary_make_substitution, rb_ary_s_create, ary_make_partial, rb_ary_splice, rb_ary_resize, rb_ary_rotate_m, rb_ary_times): use ary_memcpy().
6e3c4fd8b53f1bfa5741d6a1f88139837f631bef 2013-07-19 * array.c: reduce shady operations. * array.c (rb_ary_modify, ary_make_partial, rb_ary_splice, rb_ary_replace, rb_ary_eql, rb_ary_compact_bang): use RARRAY_RAWPTR() instead of RARRAY_PTR(). * array.c (rb_ary_shift): use RARRAY_PTR_USE() without WB because there are not new relations. * array.c (ary_ensure_room_for_unshift): ditto. * array.c (rb_ary_sort_bang): ditto. * array.c (rb_ary_delete_at): ditto. * array.c (rb_ary_reverse_m): use RARRAY_RAWPTR() because there are not new relations.
79d557ffcdf189e42f6fb729402d787624bd69b2 2013-07-19 * gc.c: declare type_name() at the beggining of file.
45e8268d62add210f3a9a93f677f255f96bb0cff 2013-07-20 * array.c (ary_make_shared): make shared array shady. Making non-shady shared array causes SEGV (see rubyci). It seems a bug around shared array.
3a20287053640a97896f701f264f8a0fccec7c6a 2013-07-20 * array.c (rb_ary_resize): use simple memcpy because there are no new references.
4132ac3762c96d1180df14ca34848e1a9e7569ea 2013-07-22 * gc.c (gc_slot_sweep): need to add empty RVALUE as freeobj.
8eb0a3cd5020ba2eeb540e4fd81fb88e43305ae4 2013-07-22 * array.c (ary_memfill): added. * array.c (rb_ary_initialize): use ary_memfill(). * array.c (rb_ary_fill): ditto. * array.c (rb_ary_slice_bang): use RARRAY_RAWPTR() because this code creates no new references.
8160fab8bcdd7dc4e70ae0ddd195d4dc942f8637 2013-07-22 * array.c (ary_resize_capa): use RARRAY_RAWPTR() because this code creates no new references.
511e155e24fbd21bd028b19de04aeab6b98109df 2013-07-23 * gc.c (heap_get_freeobj): clear slot->freelist here. This means that this slot doesn't have any free objects. And store this slot with objspace->heap.using_slot. * gc.c (gc_before_sweep): restore objspace->freelist into objspace->heap.using_slot->freelist. This means that using_slot has free objects which are pointed from objspace->freelist. * gc.c (gc_slot_sweep): do not need to clear slot->freelist.
374219291946885509dac502230c1084b0058238 2013-07-23 * gc.c (gc_before_sweep): fix spacing.
bd058912da6ffef92a50fe759b1bae210ec82ea4 2013-07-23 * thread_native.h: added. Move native thread related lines from vm_core.h. And declare several functions "rb_nativethread_lock_*", manipulate locking. * common.mk: add thread_native.h. * thread.c: add functions "rb_nativethread_lock_*". * thraed.c, thread_[pthread,win32].[ch]: rename rb_thread_lock_t to rb_nativethread_lock_t to make it clear that this lock is for native thraeds, not for ruby threads.
55201cac9ea35420ef63880323d75f603374413e 2013-07-23 * ext/openssl/ossl.c: use system native (system provided) thread locking APIs added by last commit. This patch fixes [Bug #8386]. "rb_mutex_*" APIs control only "Ruby" threads. Not for native threads.
2b1088c89fd003aefa4b3bc585ae5e041334fe0b 2013-07-23 * thread_pthread.h, thread_win32.h: rename rb_thread_id_t to rb_nativethread_id_t. * thread_pthread.c, vm_core.h: use rb_nativethread_id_t.
b2bcef7294d1a65363773cfc97ade6bd286ee63a 2013-07-23 * thread_native.h: add rb_nativethread_self() which returns current running native thread identifier. * thread_[pthread|win32].c: implement rb_nativethread_self().
4d3feac974f7b854c809f32541a30fa1be817540 2013-07-23 * thread_(pthread|win32).h: rename rb_thread_cond_t to rb_nativethread_cond_t. * thread.c, thread_pthread.c, thread_win32.c, vm_core.h: catch up renaming.
e93e38d165f510aefb541235491347bb69a80d62 2013-07-23 * test/-ext-/tracepoint/test_tracepoint.rb: add GC on/off to count GC events strictly.
33ebcb053809f36a5a244cd587349389958c4d33 2013-07-24 * array.c, gc.c: move ary_unprotect_logging() into rb_gc_unprotect_logging() which is general version * include/ruby/ruby.h: add USE_RGENGC_LOGGING_WB_UNPROTECT to enable.
d9a556548e411c02e9bd0b7ca740062d8d6170d4 2013-07-24 * vm_insnhelper.c (vm_expandarray): use RARRAY_RAWPTR() instead of RARRAY_PTR() because there is no new reference. * vm_insnhelper.c (vm_caller_setup_args): ditto. * vm_insnhelper.c (vm_yield_setup_block_args): ditto.
714428154d5c64ae10a4d8d80f1cf1b05dc15f24 2013-07-24 * compile.c (iseq_set_arguments): use RARRAY_RAWPTR() instead of RARRAY_PTR() because there is no new reference. * compile.c (iseq_set_exception_table): ditto.
dda113e3ff954064f718c73a114bb01361b5d205 2013-07-25 * ext/openssl/ossl.c: support additional three thread synchronization functions. [ruby-trunk - Bug #8386]
72293b69f8a6bd087bdccb9b0ccfec2e1d6af430 2013-07-25 * encoding.c (check_encoding): Check T_DATA or not. is_data_encoding(obj) assumes that `obj' is T_DATA.
d320b2d9e9d4d6dbb73c85df433f8b5559f7d716 2013-07-26 * array.c (ary_memcpy): try to enable optimization. At least on my environments, I don't see any errors with many trials. Please tell us if you find any GC bugs.
d462261395534207d71d07f4a47a6860cf9349bb 2013-07-26 * array.c (ary_memcpy): cast to int to suppress a warning.
621da983093b0877d061c0fa081c0301ea8ffd3f 2013-07-26 * vm_exec.h, tool/instruction.rb: not an error, but a BUG if stack overflow checking failed just before/after the beginning of an instruction. It should be treated as a BUG. Please tell us if your code cause BUG with this problem. This check will removed soon (for performance).
22468a4f92c7fa7a08e53a674285183b1af49ed4 2013-08-06 * vm_insnhelper.c (vm_push_frame): fix stack overflow check codes. Stack overflow check should be done *after* pushing a stack frame. However, some stack overflow checking codes checked *before* pushing a stack frame with iseq->stack_max. To solve this problem, add a new parameter `stack_max' to specify a possible consuming stack size. * vm_core.h (CHECK_VM_STACK_OVERFLOW0): add to share the stack overflow checking code. * insns.def: catch up this change. * vm.c, vm_eval.c: ditto. * test/ruby/test_exception.rb: add a stack overflow test. This code is reported by nobu.
b7bc4706fa92d6e774ea7ca2e0f8929e360a50d1 2013-08-06 * vm_insnhelper.c (vm_push_frame): change type of stack_max to size_t.
7a23eb1c41414a081662a5f89f35fadb59402759 2013-08-07 * thread.c (thread_start_func_2): use RARRAY_RAWPTR() instead of RARRAY_PTR() because there is no new reference.
8741a39777e76c31f0bdc7b3dcc4ecb03a4c1784 2013-08-07 * random.c (random_load): use RARRAY_RAWPTR() instead of RARRAY_PTR() because there is no new reference.
382abb7526eda9dd50c004f654b542297c77fac1 2013-08-07 * cont.c (rb_fiber_start): use RARRAY_RAWPTR() instead of RARRAY_PTR() because there is no new reference. * proc.c (curry): ditto. * proc.c (rb_proc_call): remove line break.
c9d01961f18d4fe5a3390322ba84af4a1b1ed6b5 2013-08-08 * include/ruby/ruby.h: add old macro name `RUBY_EVENT_SWITCH'. This macro name is obsolete because it is renamed to RUBY_INTERNAL_EVENT_SWITCH, but it has compatibility problem using this macro name like ruby-prof. I want to remove this macro after ruby 2.1.
3aea31c101ad28aa774a1c5fcbad5a0b53dc78be 2013-08-08 * include/ruby/ruby.h: define USE_RGENGC_LOGGING_WB_UNPROTECT.
e0932e3ad38a0740e65478bd85897db734980083 2013-08-08 * string.c (rb_str_format_m): use RARRAY_RAWPTR() instead of RARRAY_PTR() because there is no new reference.
2391ee2c6130797d2885da0fb1180bfba737971a 2013-08-08 * thread.c (rb_threadptr_pending_interrupt_check_mask): use RARRAY_RAWPTR() instead of RARRAY_PTR() because there is no new reference.
568c5a8193006d12a47befaf493d1bbd76a5a5cd 2013-08-09 * proc.c: add Binding#local_variable_get/set/defined? to access local variables which a binding contains. Most part of implementation by nobu. * test/ruby/test_proc.rb: add a tests for above. * vm.c, vm_core.h (rb_binding_add_dynavars): add a new function to add a new environment to create space for new local variables.
a39e724dfe64a7f50d9e024b73bfcad16ded2322 2013-08-09 * NEWS: update about new methods for Binding.
9af743fe0e8c7aa7a25a6805a64d499aab3032af 2013-08-12 * class.c (rb_prepend_module): make T_ICLASS object shady because this T_ICLASS object seems to share method table with other class objects. It was causes WB miss. TODO: need to know the data structure. * test/ruby/test_module.rb: add a test for WB miss.
5cd2fb2ebbedf5fd0fd12fd3a5d4a90bcbe2dca3 2013-08-15 * gc.c (gc_lazy_sweep): remove heap_increment() here because heap_inc may be 0.
769715bda562feab2b30aefeda9f83c72624e163 2013-08-16 * test/profile_test_all.rb: refactoring memory profiling tool for test-all. Add profiling targets /proc/meminfo and /proc/self/status. * test/runner.rb: accept other than 'true'.
55251d0c83cf4c0946a2aa6aebe1bdceb9777ea6 2013-08-16 * test/profile_test_all.rb: remove space characters from test names.
ff377d9e81e9c0e58ba1034b1b58cfb68d63c301 2013-08-16 * test/profile_test_all.rb: fix typo.
e4f51f80d08a34318ae9f10d0d8591faaf786f9d 2013-08-19 * test/profile_test_all.rb: add `failed?' information.
158f3547e91792658b6881e32e20ca079af585da 2013-08-19 * test/ruby/test_fiber.rb: collect garbage fibers immediately.
21ecf88ce0bb50dd2014a78e41c78db48f7b0bff 2013-08-19 * gc.c: fix around GC_DEBUG. * gc.c (RVALUE::line): should be VALUE. On some environment (such as mswin64), `int' introduces alignment mismatch. * gc.c (newobj_of): add an assertion to check VALUE alignment. * gc.c (aligned_malloc): `&' is low priority than `=='. * gc.c: define GC_DEBUG everytime and use it as value 0 or 1.
326bf140b4c5b6c9858a0bddd9122c4f691af2cb 2013-08-20 * gc.c (rb_gcdebug_print_obj_condition): add printing information.
30b1947df2da2192f7fcc812ac88dc1884715322 2013-08-20 * insns.def: fix regexp's once option behavior. fix [ruby-trunk - Bug #6701] * insns.def: remove `onceinlinecache' and introduce `once' instruction. `once' doesn't use `setinlinecache' insn any more. * vm_core.h: `union iseq_inline_storage_entry' to store once data. * compile.c: catch up above changes. * iseq.c: ditto. * vm.c, vm_insnhelper.c: ditto. fix `m_core_set_postexe()' which is depend on `onceinlinecache' insn. * test/ruby/test_regexp.rb: add tests. * iseq.c: ISEQ_MINOR_VERSION to 1 (should increment major?)
7e5d63f48308c470b026de9b89a8e094f94363e0 2013-08-22 * compile.c (rb_iseq_compile_node): accept NODE_IFUNC to support custom compilation. * compile.c (NODE_POSTEXE): compile to "ONCE{ VMFrozenCore::core#set_postexe{...} }" with a new custom compiler `build_postexe_iseq()'. * vm.c (m_core_set_postexe): remove parameters (passed by a block).
5a87332ef990798186844fc682175af0e009457f 2013-08-22 * compile.c (build_postexe_iseq): fix to setup the local table.
c50d45fc96ad876bd919b95f4ede258a420317b3 2013-08-23 * array.c: introduce ARY_SHARED_OCCUPIED(shared).
5bcdc68c6e41b1c2b1cb5ce82c64036df80e48de 2013-08-23 * array.c (ary_make_shared): shared ary as shady. Need more effort to make it normal object. * array.c (rb_ary_modify): use RARRAY_PTR_USE() without WB because there are not new relations. * array.c (ary_ensure_room_for_unshift): use RARRAY_RAWPTR() because there are not new relations.
ad0ef29da7ac37b978c281b1e0070fbb6afbe2e6 2013-08-26 * array.c (rb_ary_splice): use RARRAY_PTR_USE() without WB because there are not new relations. * enum.c (enum_sort_by): ditto. * struct.c (setup_struct): use RARRAY_RAWPTR(). * vm_eval.c (yield_under): ditto. * ext/pathname/pathname.c (path_entries): use RARRAY_AREF(). * ext/pathname/pathname.c (path_s_glob): ditto.
c4fe5260114482143943bead5b68a628a047c863 2013-08-27 * gc.c (gc_profile_clear): do rest_sweep() before clearing profile.current_record.
69c8ab256d8e3609dec98a763288b87cd1278f6b 2013-08-27 * ext/stringio/stringio.c (strio_read_nonblock): declare local variables at the first of function.
5da55dfcb480ab2c3a5c2162ee004b155c198099 2013-08-29 * struct.c (rb_struct_define_without_accessor_under): added. This function is similar to rb_define_class_under() against rb_define_class(). * include/ruby/intern.h: add a declaration of this function.
41234c5ca3b40851a9e9bd16d95a10923754b937 2013-09-02 * vm_insnhelper.c (vm_search_super_method): use ci->argc instead of ci->orig_argc. ci->argc can be changed by splat arguments. [ruby-list:49575] This fix should be applied to Ruby 2.0.0 seriese. * test/ruby/test_super.rb: add a test for above.
1e27eda2fa313865bda1246175b3d6ebfe8cc533 2013-09-19 * include/ruby/ruby.h: make Symbol objects frozen. [Feature #8906] I want to freeze this good day, too. * test/ruby/test_eval.rb: catch up this change. * test/ruby/test_symbol.rb: add a test to check frozen symbols.
b23bbb12f2f146024743efccae3a793572f62dea 2013-09-19 * NEWS: add a news for r42974.
d12d47c4beba330862f492fc556b862436652df2 2013-09-25 * test/rdoc/test_rdoc_generator_darkfish.rb: add a guard for windows.
dc626dbab3caaf221c9c7b88a5500ae878615712 2013-09-25 * include/ruby/ruby.h: rename RARRAY_RAWPTR() to RARRAY_CONST_PTR(). RARRAY_RAWPTR(ary) returns (const VALUE *) type pointer and usecase of this macro is not acquire raw pointer, but acquire read-only pointer. So we rename to better name. RSTRUCT_RAWPTR() is also renamed to RSTRUCT_CONST_PTR() (I expect that nobody use it). * array.c, compile.c, cont.c, enumerator.c, gc.c, proc.c, random.c, string.c, struct.c, thread.c, vm_eval.c, vm_insnhelper.c: catch up this change.
9215982a1f254b01e4e75ee49a86db8bbeab026b 2013-09-25 * README.EXT, README.EXT.ja: remove description of RARRAY_PTR() and add a caution of accessing internal data structure directly. Also add a description of rb_ary_store(). [Bug #8399]
f365cd2c9aa4018044cc4005d1d2309faff6b58c 2013-09-27 * gc.c: simplify threshold of GC caused by malloc_increase. Now, malloc_limit is increased/decreased by mysterious logic. This fix simplify malloc_limit increase/decrease logic such as: if (malloc_increase > malloc_limit) /* so many malloc */ malloc_limit += malloc_limit * (GC_MALLOC_LIMIT_FACTOR-1); else malloc_limit -= malloc_limit * (GC_MALLOC_LIMIT_FACTOR-1)/4; Default value of GC_MALLOC_LIMIT_FACTOR is 1.8. malloc_limit is bounded by GC_MALLOC_LIMIT_MAX (256MB by default). This logic runs at before_sweeep(). So there are no effect from caused by lazy sweep. And we can remove malloc_increase2. * gc.c (HEAP_MIN_SLOTS, FREE_MIN, HEAP_GROWTH_FACTOR): rename to GC_HEAP_MIN_SLOTS, GC_FREE_MIN, GC_HEAP_GROWTH_FACTOR respectively. Check them by `#ifndef' so you can specify these values outside gc.c. * gc.c (ruby_gc_params_t): add initial_malloc_limit_factor and initial_malloc_limit_max. * gc.c (vm_malloc_prepare, vm_xrealloc): use vm_malloc_increase to add and check malloc_increase.
752cc234f645b26b64dfbbf12b4fcdae4e96f8dc 2013-09-27 * gc.c: add some fine-grained profiling codes to tuning marking phase. If you enable RGENGC_PRINT_TICK to 1, then profiling results by RDTSC (on x86/amd64 environment) are printed at last. Thanks Yoshii-san.
78a49728b2198db692cae1418601bf1b8c61cb08 2013-09-27 * gc.c (gc_before_sweep): cast to size_t to suppress warnings.
a31ff891a17f0dcf8c070b882fe89be89837e7c5 2013-09-27 * gc.c (GC_MALLOC_LIMIT): 8,000,000 -> 8 * 1,024 * 1,024.
2c0d74b7085edba6557b32a3f48ef8a03d194eb4 2013-09-27 * gc.c: add two GC tuning environment variables. RUBY_GC_MALLOC_LIMIT_MAX and RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR. See r43067 for details. * gc.c (rb_gc_set_params): refactoring. And change verbose notation. Mostly duplicated functions get_envparam_int/double is not cool. Please rewrite it. * test/ruby/test_gc.rb: fix a test for this change.
1d90d0ced96691fb19c136698b341d6705ac6b30 2013-09-30 * gc.c (rb_gc_disable): do rest_sweep() before disable GC. This fix may solve a failure of TestTracepointObj#test_tracks_objspace_events [test/-ext-/tracepoint/test_tracepoint.rb:43].
1450e0b5ac0a49aa1f0d1db521b293b18f6fa99c 2013-09-30 * ext/objspace/object_tracing.c: add new 3 methods to control tracing. * ObjectSpace::trace_object_allocations_start * ObjectSpace::trace_object_allocations_stop * ObjectSpace::trace_object_allocations_clear And some refactoring. * test/objspace/test_objspace.rb: add a test for new methods. * NEWS: add a description for new methods.
1d4e3d48c20325d541a24130de68ec81e92551b4 2013-09-30 * ext/objspace/object_tracing.c: [DOC] add some nots for ObjectSpace::trace_object_allocations.
8c0033a7b625ebf8d3f809791a90512464efdbed 2013-10-02 * gc.c: relax GC condition due to malloc_limit. * gc.c (GC_MALLOC_LIMIT_MAX): change default value (256MB -> 512MB) and permit zero to ignore max value. * gc.c (vm_malloc_increase, vm_xrealloc): do not cause GC on realloc. * gc.c (gc_before_sweep): change debug messages.
fa105e6c203ea14deb1baf04aeb1ef2a471d1a1c 2013-10-03 * gc.c: define gc_profile_record::allocated_size if CALC_EXACT_MALLOC_SIZE is true.
12f368d6a48d7eb35a9c802d1ae4824b876f7c74 2013-10-07 * iseq.c, internal.h: change to public (but internal) functions * VALUE rb_iseq_path(VALUE iseqval); * VALUE rb_iseq_absolute_path(VALUE iseqval); * VALUE rb_iseq_label(VALUE iseqval); * VALUE rb_iseq_base_label(VALUE iseqval); * VALUE rb_iseq_first_lineno(VALUE iseqval); And new (temporary) function: * VALUE rb_iseq_klass(VALUE iseqval); * iseq.c. vm_core.h (int rb_iseq_first_lineno): remove function `int rb_iseq_first_lineno(const rb_iseq_t *iseq)'. Use `VALUE rb_iseq_first_lineno(VALUE iseqval)' instead. * proc.c. vm_insnhelper.c, vm_method.c: catch up this change.
40b1aa9adf04fbd02dcd4bab1197659625951200 2013-10-07 * proc.c: catch up last commit. Type of return value of rb_iseq_first_lineno() is now VALUE. * vm_insnhelper.c (argument_error): ditto. * vm_method.c (rb_method_entry_make): ditto.
774bff0adb44eaf5c806afb1bf9eff65d26b2f1f 2013-10-07 * include/ruby/debug.h: add backtrace collecting APIs for profiler. * int rb_profile_frames(int start, int limit, VALUE *buff, int *lines); Collect information of frame information. * VALUE rb_profile_frame_path(VALUE frame); * VALUE rb_profile_frame_absolute_path(VALUE frame); * VALUE rb_profile_frame_label(VALUE frame); * VALUE rb_profile_frame_base_label(VALUE frame); * VALUE rb_profile_frame_first_lineno(VALUE frame); * VALUE rb_profile_frame_classpath(VALUE frame); * VALUE rb_profile_frame_singleton_method_p(VALUE frame); Get information about each frame. These APIs are designed for profilers, for example, no objectallocation, and enough information for profilers. In this version, this API collects only collect Ruby level frames. This issue will be fixed after Ruby 2.1. * vm_backtrace.c: implement above APIs. * iseq.c (rb_iseq_klass): return local_iseq's class.
ef7df5a414852b172a330fb93a8901d203f8e4c9 2013-10-07 * ext/-test-/debug/profile_frames.c: test/-ext-/debug/test_profile_frames.rb: add a test for new C-APIs.
6b5d5e53223eb4c50832f6e1f24a66638131a44e 2013-10-07 * test/-ext-/debug/test_profile_frames.rb: rename class C to something long name because one test depends on absence of class ::C.
cff2b2b66626e5aee5598f98b1f855249ca2f282 2013-10-08 * vm_backtrace.c, include/ruby/debug.h: add new APIs * VALUE rb_profile_frame_method_name(VALUE frame) * VALUE rb_profile_frame_qualified_method_name(VALUE frame) * iseq.c (rb_iseq_klass), internal.h: add new internal function rb_iseq_method_name(). * ext/-test-/debug/profile_frames.c (profile_frames), test/-ext-/debug/test_profile_frames.rb: add a test.
b753b9606e6329c62d385512ea173171c7c07146 2013-10-09 * include/ruby/debug.h, vm_backtrace.c (rb_profile_frame_full_label): add new C API rb_profile_frame_full_label() which returns label with qualified method name. Note that in future version of Ruby label() may return same return value of full_label(). * ext/-test-/debug/profile_frames.c, test/-ext-/debug/test_profile_frames.rb: fix a test for this change.
dcad4bda588c999d396dc3405bb1bfd241ae5c8b 2013-10-09 * test/ruby/test_rand.rb: fix r43224. local variable `e' is no longer available.
fa7bf880b4f351cd99978f7d096510aad137ca18 2013-10-10 * vm_trace.c (postponed_job): use preallocated buffer. Pre-allocate MAX_POSTPONED_JOB (1024) sized buffer and use it. If rb_postponed_job_register() cause overflow, simply it fails and returns 0. And maybe rb_postponed_job_register() is signal safe. * vm_core.h: change data structure.
4599d3efd7bfda591fd29e5647af2d5aa8be486c 2013-10-10 * vm.c (vm_exec): support :b_return event for "lambda{return}.call". [Bug #8622] * test/ruby/test_settracefunc.rb: add a test.
19ae2748c7da2eaba7a62c07c242230731cf56b2 2013-10-11 revert r43248. Should not set interrupt_flag.
76f9281b925680a49103e344b44fc1dc4a356721 2013-10-11 * vm_trace.c (rb_postponed_job_flush): simplify.
542b31ca278ef5b2314ac3186067cda5615b040a 2013-10-11 * vm_trace.c (rb_postponed_job_flush): fix bit operation.
33ab98f9e690b6505804a10b08e66fb366f9838b 2013-10-11 * ext/objspace/gc_hook.c: prohibit reentrant.
f44b0e5b4fbeb58fa1b5cff2be44c359f9438cf7 2013-10-11 * gc.c, parse.y: support generational Symbol relatetd marking. Each symbols has String objects respectively to represent Symbols. These objects are marked only when: * full marking * new symbols are added This hack reduce symbols (related strings) marking time. For example, on my Linux environment, the following code "20_000_000.times{''}" with 40k symbols (similar symbol number on Rails 3.2.14 app, @jugyo tells me) boosts, from 7.3sec to 4.2sec.
f6fcb9cc94e1934ebb06d6df7106a7634ec681f9 2013-10-11 * gc.c: use __GNUC__ instead of __GCC__.
432834dd35937665abcc30b0393fd857e1921553 2013-10-11 * gc.c: use terminology `full_mark' instead of `minor_gc' in mark functions.
588586d9d4a15fdf982291eb59484fd6f7273417 2013-10-11 * internal.h, parse.y: use `full_mark' instead of `full_marking'.
7aecb95637e222bcc46453059a8b306e9197b063 2013-10-11 * class.c, variable.c, gc.c (rb_class_tbl): removed. rb_class_tbl is no longer used.
9d70a17541782493c7cf5d0dceafadccc2424bd8 2013-10-11 revert r43259 because it is possible to mark miss classes defined in C-exts. Thanks charliesome.
86b2e9d090e9a614400d2ca6f0d24ee5698ad1dd 2013-10-11 * vm_method.c (rb_gc_mark_unlinked_live_method_entries): revert last commit to introduce debug prints.
52c1331763d8b9b8d6362987e6f8847b65ed7f57 2013-10-11 * class.c, variable.c, gc.c (rb_class_tbl): removed. * vm.c, vm_core.h (rb_vm_add_root_module): added to register as a defined root module or class. This guard helps mark miss from defined classes/modules they are only refered from C's global variables in C-exts. Basically, it is extension's bug. Register to hash object VM has. Marking a hash objects allows generational GC supports. * gc.c (RGENGC_PRINT_TICK): disable (revert).
f24101682560b68dfec4667895d746a42e6ab7b1 2013-10-15 * gc.h (rb_objspace_reachable_objects_from_root): added. This API provides information which objects are root objects. `category' shows what kind of root objects. * gc.c (gc_mark_roots): separate from gc_marks_body().
ede6826186a7a2f4380d23a9f46f0bc4b9e50473 2013-10-16 * ext/objspace/objspace.c: add a new method `reachable_objects_from_root'. ObjectSpace.reachable_objects_from_root returns all objects refered from root (called "root objects"). This feature is for deep object analysis. * test/objspace/test_objspace.rb: add a test.
c6b599e1b60c6cd99f0276290c53d95731a26238 2013-10-16 * NEWS: add a line into NEWS for last commit.
955a38da08b64a1c4092f6f8cc3527ce50598092 2013-10-16 * error.c, internal.h (rb_bug_reporter_add): add a new C-API. rb_bug_reporter_add() allows to register a function which is called at rb_bug() called. * ext/-test-/bug_reporter/bug_reporter.c: add a test for this C-API. * ext/-test-/bug_reporter/extconf.rb: ditto. * test/-ext-/bug_reporter/test_bug_reporter.rb: ditto.
f928c326ca3b6af1610ceb7e8b945aba30bb0ff1 2013-10-16 * bootstraptest/runner.rb: check nil before calling `signal?' for a process status.
17e1c7237b6d3186b76af46ec0d087df1f526eeb 2013-10-16 * ext/objspace/object_tracing.c: add new method ObjectSpace.trace_object_allocations_debug_start for GC debugging. If you encounter the BUG "... is T_NONE" (and so on) on your application, please try this method at the beggining of your app.
f9718bf703a9cffdc47b6fb69f77ffcb0a838655 2013-10-16 * error.c (rb_bug_reporter_add): return simply 0 if failed. Please check return value.
82d06c5adeaa54e451e9f873d63b27e3e47f91db 2013-10-16 * gc.c (objspace_each_objects): do not skip empty RVALUEs.
3304eb208af0b9062093cc9cd2042ba6d7e42418 2013-10-16 * ext/objspace/object_tracing.c (newobj_i): add workaround. some bugs hits this check. * ext/objspace/object_tracing.c (object_allocations_reporter_i): cast as pointer.
3f2828078273ec2b92afe27d3b081049bca2bcd2 2013-10-17 * ext/objspace/object_tracing.c (newobj_i): fix memory leak. There is possibility to remain info due to missing FREEOBJ event. FREEOBJ events are skipped while suppress_tracing state, for example, during trace events are invoking.
8ac4f421e13adc2216b4056ab241136066548e7e 2013-10-17 * gc.c, internal.h: add new internal memory mangement functions. * void *ruby_xsizedrealloc(void *ptr, size_t new_size, size_t old_size) * void ruby_xsizedfree(void *x, size_t size) These functions acccept additional size parameter to calculate more accurate malloc_increase parameter which control GC timing. [Feature #8985]
3de7ec0a3f74932d1b65089e606f194cb816e165 2013-10-17 * array.c, string.c: use ruby_xsizedfree() and ruby_xsizedrealloc(). * internal.h (SIZED_REALLOC_N): define a macro as REALLOC_N().
76b06555d05bbf320e2014762efd310de11f0068 2013-10-17 * gc.c, internal.h: rename ruby_xsizefree/realloc to rb_sized_free/realloc. * array.c: catch up these changes. * string.c: ditto.
cf0106827d805eb8965e8a3b00baaef694c1c710 2013-10-17 * string.c (STR_HEAP_SIZE): includes TERM_LEN(str). * string.c (rb_str_memsize): use STR_HEAP_SIZE().
ee4da732e3fce5cf30bb8a9f854f6134ec1d4933 2013-10-17 * gc.c (CALC_EXACT_MALLOC_SIZE_CHECK_OLD_SIZE): introduced. This macro enable checker compare with allocated memory and declared old_size of sized_xfree and sized_xrealloc.
b443d83a770092d02cfccd9ac3cbc96cb51c0d5e 2013-10-18 * gc.c: change terminology of heap. Change "slot" to "page". "Slot" is a space of RVALUE. 1. "Heap" consists of a set of "heap_page"s (pages). 2. Each "heap_page" has "heap_page_body". 3. "heap_page_body" has RVALUE (a.k.a. "slot") spaces. 4. "sorted" is a sorted array of "heap_page"s, sorted by address of heap_page_body (for "is_pointer_to_heap"). See https://bugs.ruby-lang.org/attachments/4008/data-heap_structure.png.
14c08fdb8864b3765e28ae6818ce7d1eefbf4e3e 2013-10-18 * gc.c: fix rb_objspace_t. * make "struct heap" and move most of variables in rb_objspace_t::heap. * rename rb_objspace_t::heap::sorted to rb_objspace_t::heap_sorted_pages and make a macro heap_sorted_pages. * rename rb_objspace_t::heap::range to rb_objspace_t::heap_range and rename macros lomem/himem to heap_lomem/heap_himem.
f5b15f0e3f6d3f3b3467059802e24c8de0d9d361 2013-10-22 * vm_trace.c: exterminate Zombies. There is a bug that T_ZOMBIE objects are not collected. Because there is a pass to miss finalizer postponed job with multi-threading. This patch solve this issue. * vm_trace.c (rb_postponed_job_register_one): set RUBY_VM_SET_POSTPONED_JOB_INTERRUPT(th) if another same job is registered. There is a possibility to remain a postponed job without interrupt flag. * vm_trace.c (rb_postponed_job_register_one): check interrupt carefully. * vm_trace.c (rb_postponed_job_register_one): use additional space to avoid buffer full. * gc.c (gc_finalize_deferred_register): check failure. * thread.c (rb_threadptr_execute_interrupts): check `postponed_job_interrupt' immediately. There is a possibility to miss this flag.
d6fe84b6f3694211ec7b6746c02018cb04a82a86 2013-10-22 * gc.c: allow multiple heaps. Now, objects are managed by page. And a set of pages is called heap. This commit supports multiple heaps in the object space. * Functions heap_* and rb_heap_t manages heap data structure. * Functions heap_page_* and struct heap_page manage page data strcuture. * Functions heap_pagse_* and struct rb_objspace_t::heap_pages maintains all pages. For example, pagaes are allocated from the heap_pages. See https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/GC_design and https://bugs.ruby-lang.org/attachments/4015/data-heap_structure_with_multiple_heaps.png for more deitals. Now, there is only one heap called `eden', which is a space for all new generated objects.
3d85d6edb5064848fea9a27727eb0a7a6d525417 2013-10-22 * gc.c (Init_heap): move logics from heap_pages_init() and remove heap_pages_init().
29ffa2c2733cbeaf0c018579b65d9719ed6c7902 2013-10-23 * gc.c (gc_prof_sweep_timer_stop): catch up recent changes to compile on GC_PROFILE_MORE_DETAIL=1.
69d787ff6d144924b19bbace7dbe03b3bb43da4d 2013-10-23 * gc.c: introduce tomb heap. Tomb heap is where zombie objects and ghost (freed slot) lived in. Separate from other heaps (now there is only eden heap) at sweeping helps freeing pages more efficiently. Before this patch, even if there is an empty page at former phase of sweeping, we can't free it. Algorithm: (1) Sweeping all pages in a heap and move empty pages from the heap to tomb_heap. (2) Check all exsisting pages and free a page if all slots of this page are empty and there is enough empty slots (checking by swept_num) To introduce this pach, there are several tuning of GC parameters.
99c4e43d6aacf4c510cf86be0076ec61dad42730 2013-10-23 * gc.c (heap_pages_free_unused_pages): cast to (int) for size_t variable `i'.
602241142febadfcca9c0536c92d78d672456d3a 2013-10-23 * gc.c: move increment from heap to heap_pages. Share `increment' information with heaps. * gc.c: change ratio of heap_pages_free_min_page to 0.80. This change means slow down page freeing speed.
98feb2b9bfca61414c3909b538b158ea212d6663 2013-10-25 * gc.c (gc_before_heap_sweep): fix freelist management. After rb_gc_force_recycle() for a object blonging to heap->freelist, `heap->using_page->freelist' is not null.
6c458aec30a95695a3a7d20b6cf37fb4dbfd753a 2013-10-26 * gc.c (vm_malloc_increase): do gc_rest_sweep() before GC. gc_rest_sweep() can reduce malloc_increase, so try it before GC. Otherwise, malloc_increase can be less than malloc_limit at gc_before_sweep(). This means that re-calculation of malloc_limit may be wrong value.
286d567bbffb1baef497ecfe9a91fa690ecb7526 2013-10-26 * gc.c: tuning parameters. * gc.c (GC_MALLOC_LIMIT): change default value to 16MB. * gc.c (GC_MALLOC_LIMIT_GROWTH_FACTOR): change default value to 2.0. * gc.c (gc_before_sweep): change decrease ratio of `malloc_limit' from 1/4 to 1/10.
d03912898e8fd37ad9ad82a9e6765fe8f1d78536 2013-10-26 * gc.c (gc_sweep, gc_heap_lazy_sweep): fix measurement code. We only need one sweep time measurement without lazy sweep.
b848aad5bf2c4379ca48ff69b4188aa614a18ee9 2013-10-26 * gc.c (gc_profile_dump_on): use "Page" terminology.
97f0de6d90d9e804386f708172b5a75c277cb38c 2013-10-29 * gc.c (heap_page_resurrect): return a page in tomb heap even if freelist is NULL.
5aa527fadee91ef03e4a3acb173b8da5f56a43ac 2013-10-29 * gc.c (vm_malloc_increase): decrease it more carefully.
52811ab159e7a9927eba9aa30bc14684ff0852fe 2013-10-29 * include/ruby/ruby.h: introduce new flags for T_TYPEDDATA. * RUBY_TYPED_FREE_IMMEDIATELY: free the data given by DATA_PTR() with dfree function immediately. Otherwise (default), the data freed at finalizaton point. * RUBY_TYPED_WB_PROTECTED: make this object with FL_WB_PROTECT (not shady). * gc.c (obj_free): support RUBY_TYPED_FREE_IMMEDIATELY.
5c1b9b38d69dc2d4b9d6e8f4330ae9e11a22da09 2013-10-29 * vm_trace.c (tp_free): remvoed because empty free function. Use RUBY_TYPED_NEVER_FREE instead.
0c6940b718a5a552c4c15e84a5f0eec81a26ad0f 2013-10-29 * include/ruby/ruby.h: fix typo (FL_WB_PROTECT -> FL_WB_PROTECTED).
c5e08b764eb342538884b383f0e6428b6faf214b 2013-10-29 * add RUBY_TYPED_FREE_IMMEDIATELY to data types which only use safe functions during garbage collection such as xfree(). On default, T_DATA objects are freed at same points as fianlizers. This approach protects issues such as reported by [ruby-dev:35578]. However, freeing T_DATA objects immediately helps heap usage. Most of T_DATA (in other words, most of dfree functions) are safe. However, we turned off RUBY_TYPED_FREE_IMMEDIATELY by default for safety. * cont.c: ditto. * dir.c: ditto. * encoding.c: ditto. * enumerator.c: ditto. * error.c: ditto. * file.c: ditto. * gc.c: ditto. * io.c: ditto. * iseq.c: ditto. * marshal.c: ditto. * parse.y: ditto. * proc.c: ditto. * process.c: ditto. * random.c: ditto. * thread.c: ditto. * time.c: ditto. * transcode.c: ditto. * variable.c: ditto. * vm.c: ditto. * vm_backtrace.c: ditto. * vm_trace.c: ditto. * ext/bigdecimal/bigdecimal.c: ditto. * ext/objspace/objspace.c: ditto. * ext/stringio/stringio.c: ditto. * ext/strscan/strscan.c: ditto.
667a519db301292b33ed88614af776df1c5f0563 2013-10-31 * vm_method.c (rb_method_entry_make): fix to pass an ISeq value. OBJ_WRITTEN() accepts only VALUE.
cecbcc420e3e49b1b73d54b66a54c397d6799685 2013-10-31 * benchmark/gc/gcbench.rb: print HWM (high water mark) if possible.
42bd731dc53406d04e4397ec673b3acbb3a79bfc 2013-11-04 * include/ruby/ruby.h: rename FL_OLDGEN to FL_PROMOTED. This flag represents that "this object is promoted at least once." * gc.c, debug.c, object.c: catch up this change.
30456e9607308d79cb3e5a40bdb73023780d243a 2013-11-04 * node.h: catch up comments for last commit.
325d2cfcdfd2beeca4aa45368276d2f2c928ae59 2013-11-04 * gc.c: add 3gen GC patch, but disabled as default. RGenGC is designed as 2 generational GC, young and old generation. Young objects will be promoted to old objects after one GC. Old objects are not collect until major (full) GC. The issue of this approach is some objects can promoted as old objects accidentally and not freed until major GC. Major GC is not frequently so short-lived but accidentally becoming old objects are not freed. For example, the program "loop{Array.new(1_000_000)}" consumes huge memories because short lived objects (an array which has 1M elements) are promoted while GC and they are not freed before major GC. To solve this problem, generational GC with more generations technique is known. This patch implements three generations gen GC. At first, newly created objects are "Infant" objects. After surviving one GC, "Infant" objects are promoted to "Young" objects. "Young" objects are promoted to "Old" objects after surviving next GC. "Infant" and "Young" objects are collected if it is not marked while minor GC. So that this technique solves this problem. Representation of generations: * Infant: !FL_PROMOTED and !oldgen_bitmap [00] * Young : FL_PROMOTED and !oldgen_bitmap [10] * Old : FL_PROMOTED and oldgen_bitmap [11] The macro "RGENGC_THREEGEN" enables/disables this feature, and turned off as default because there are several problems. (1) Failed sometimes (Heisenbugs). (2) Performance down. Especially on write barriers. We need to detect Young or Old object by oldgen_bitmap. It is slower than checking flags. To evaluate this feature on more applications, I commit this patch. Reports are very welcome. This patch includes some refactoring (renaming names, etc). * include/ruby/ruby.h: catch up 3gen GC. * .gdbinit: fix to show a prompt "[PROMOTED]" for promoted objects.
5ba523967ec02f9abed15a219f776c3242e0e742 2013-11-04 * gc.c (GC_MALLOC_LIMIT_MAX): fix default value 512MB -> 384MB. 512MB is huge.
d1674ef67b61df4ff27e93772c0946ae74869c5d 2013-11-05 * gc.c: add support to estimate increase of oldspace memory usage. This is another approach to solve an issue discussed at r43530. This feature is diabled as default. This feature measures an increment of memory consuption by oldgen objects. It measures memory consumption for each objects when the object is promoted. However, measurement of memory consumption is not accurate now. So that this measurement is `estimation'. To implement this feature, move memsize_of() function from ext/objspace/objspace.c and expose rb_obj_memsize_of(). Some memsize() functions for T_DATA (T_TYPEDDATA) have problem to measure memory size, so that we ignores T_DATA objects now. For example, some functions skip NULL check for pointer. The macro RGENGC_ESTIMATE_OLDSPACE enables/disables this feature, and turned off as default. We need to compare 3gen GC and this feature carefully. (it is possible to enable both feature) We need a help to compare them. * internal.h: expose rb_obj_memsize_of(). * ext/objspace/objspace.c: use rb_obj_memsize_of() function. * cont.c (fiber_memsize): fix to check NULL. * variable.c (autoload_memsize): ditto. * vm.c (vm_memsize): ditto.
692aab90101bb9b75a4a008855aca8220aace8e0 2013-11-05 fix typos in ChangeLog.
400a9a7bc285b16a692cdd3d5253de88728990d7 2013-11-05 * benchmark/gc/gcbench.rb: add some options to make quiet.
8c6157e048db72e42f898e8c9e08ee9ceed8fe1c 2013-11-05 * gc.c (Init_GC): add GC::OPTS to show options.
3db0e56472061462e69a3fb9b92a505384490e08 2013-11-06 * gc.c: define RGENGC_ESTIMATE_OLDSPACE == 0 if USE_RGENGC is 0.
df6722d9fc3d03c1804f5b988d4cdb5b4dff9fd9 2013-11-06 * benchmark/bm_vm1_gc_short_lived.rb: added. These GC benchmarks do not reflect practical applications. They are only for tuning. * benchmark/bm_vm1_gc_short_with_complex_long.rb: added. * benchmark/bm_vm1_gc_short_with_long.rb: added. * benchmark/bm_vm1_gc_short_with_symbol.rb: added. * benchmark/bm_vm1_gc_wb_ary.rb: added. * benchmark/bm_vm1_gc_wb_obj.rb: added. * benchmark/bm_vm_thread_queue.rb: added. Thie benchmark is added to know how fast C verion of thread.so.
a6698bc6761eb944563b1fff5e33cb4dc4e6722c 2013-11-07 * gc.c: modify malloc_limit strategy. * fix default vaues: GC_MALLOC_LIMIT_GROWTH_FACTOR GC_MALLOC_LIMIT: 8MB -> 16MB GC_MALLOC_LIMIT_MAX: 384MB -> 32MB * algorithm of malloc_limit increment. if (malloc_increase < malloc_limit) { next_malloc_limit = malloc_limit * factor if (malloc_limit > malloc_limit_max) { malloc_limit = malloc_increase } } This algorithm change malloc_limit from 16MB -> 32MB slowly. If malloc_limit exceeds malloc_limit_max, then increase with malloc_increase.
bc319093665db0e8b4ed102e1bd093c5b0f04039 2013-11-07 * gc.c (vm_malloc_increase): check GVL before gc_rest_sweep(). vm_malloc_increase() can be called without GVL. However, gc_rest_sweep() assumes acquiring GVL. To avoid this problem, check GVL before gc_rest_sweep(). [Bug #9090] This workaround introduces possibility to set malloc_limit as wrong value (*1). However, this may be rare case. So I commit it. *1: Without rest_sweep() here, gc_rest_sweep() can decrease malloc_increase due to ruby_sized_xfree().
b3abb163f4e0e5cc52aa5b4dfacff4273c0510c9 2013-11-09 * benchmark/gc/gcbench.rb: output version description and GC::OPTS.
9782d219f34aded1d0b80f7bdff809132550561e 2013-11-09 * gc.c (vm_malloc_increase): sweep immediately on GC due to malloc(). To reduce memory usage, sweep as soon as possible. This behavior is same as Ruby 2.0.0 and before.
ac778eb2cf8f66a7c15573a73c620f237f9f17dd 2013-11-10 * vm_trace.c (symbol2event_flag): add secret feature. add a_call/a_return events. a_call is call | b_call | c_call, and same as a_return.
301223df95b523ad355ccfe24da74028f4a77f5d 2013-11-19 * gc.c (rb_gc_resurrect): added. rb_fstring() used rb_gc_mark() to avoid freeing used string. However, rb_gc_mark() set mark bit *and* pushes mark_stack. rb_gc_resurrect() does only set mark bit if it is before sweeping. * string.c (rb_fstring): use rb_gc_resurrect. * internal.h: add decl.
2d00e739ef2651277a267c45e8f625dfeedfebf8 2013-11-19 * gc.c (rb_objspace_reachable_objects_from_root): do major marking.
2127b9cfc75da93e3fc43cc830ede0670010d010 2013-11-19 * gc.c (heap_is_swept_object): use heap_page::before_sweep flag.
4e064fb0fdc67ab0d3984dc323a334d5728e86ac 2013-11-20 * parse.y (rb_gc_mark_symbols): set global_symbols.minor_marked only when full_mark is 0. rb_gc_mark_symbols() (with full_mark == 1) can be called by other than GC (such as rb_objspace_reachable_objects_from_root()).
4c9d6d801b5152545ba939f8bc350f5442972fef 2013-11-21 * gc.c: change RGENGC_CHECK_MODE (>= 2) logic. Basically, make an object graph of all of living objects before and after marking and check status. [Before marking: check WB sanity] If there is a non-old object `obj' pointed from old object (`parent') then `parent' or `obj' should be remembered. [After marking: check marking miss] Traversible objects with the object graph should be marked. (However, this alert about objects pointed by machine context can be false positive. We only display alert.) [Implementation memo] objspace_allrefs() creates an object graph. The object graph is represented by st_table, key is object (VALUE) and value is referring objects. Referring objects are stored by "struct reflist". * gc.c (init_mark_stack): do not use push_mark_stack_chunk() at init. This pre-allocation causes failure on is_mark_stask_empty() without any pushing.
5d1d1ed258e4c4a3fdef410b1ee9b623f88bc389 2013-11-21 * gc.c (gc_marks_check): do not dump all refs. * gc.c (allrefs_dump_i): fix output format.
047cdaca14fbfccf177bc221fe0aa324d5258212 2013-11-21 * gc.c: enable "RGENGC_ESTIMATE_OLDSPACE" option as default. Without this option, some application consumes huge memory. (and there are only a few performance down) Introduced new environment variables: * RUBY_GC_HEAP_OLDSPACE (default 16MB) * RUBY_GC_HEAP_OLDSPACE_MAX (default 128 MB) * RUBY_GC_HEAP_OLDSPACE_GROWTH_FACTOR (default 1.2) * gc.c (initial_malloc_limit): rename to initial_malloc_limit_min.
20fa0c26c9c4216926c5240678fbe27878ce9cca 2013-11-21 * gc.c: rename initial_xxx variables to gc_params.xxx. They are not only used initial values. Chikanaga-san: Congratulations on RubyPrize!
b1529a30e08040b717adef8ac1fa8be1c060e7e1 2013-11-21 * gc.c: RGENGC_CHECK_MODE should be 0.
a6ca9f9fce7bcef4a1c04384bb834b5ee0013b16 2013-11-22 * vm.c (ruby_vm_destruct): do not use ruby_xfree() after freeing objspace. * gc.c (ruby_mimfree): added. It is similar to ruby_mimmalloc(). * internal.h: ditto.
c91ec25d19d0b0c2ecae1de8facb779d80665c78 2013-11-22 * gc.c (heap_set_increment): accept minumum additional page number. * gc.c (gc_after_sweep): allocate pages to allocate at least RUBY_HEAP_MIN_SLOTS. [Bug #9137]
dbe9e6a5f8ed9912c86f508b3f4a092d58c79188 2013-11-23 * gc.c: fix gloval variable name. Now we have following environments (and related variable names). * RUBY_GC_HEAP_INIT_SLOTS * RUBY_GC_HEAP_FREE_SLOTS * RUBY_GC_HEAP_GROWTH_FACTOR (new from 2.1) * RUBY_GC_HEAP_GROWTH_MAX_SLOTS (new from 2.1) * obsolete * RUBY_FREE_MIN -> RUBY_GC_HEAP_FREE_SLOTS (from 2.1) * RUBY_HEAP_MIN_SLOTS -> RUBY_GC_HEAP_INIT_SLOTS (from 2.1) * RUBY_GC_MALLOC_LIMIT * RUBY_GC_MALLOC_LIMIT_MAX (new from 2.1) * RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR (new from 2.1) * RUBY_GC_OLDSPACE_LIMIT (new from 2.1) * RUBY_GC_OLDSPACE_LIMIT_MAX (new from 2.1) * RUBY_GC_OLDSPACE_LIMIT_GROWTH_FACTOR (new from 2.1) * test/ruby/test_gc.rb: catch up this change.
c1382f3ab5cde26baf4c36ea86656bf5a2d09789 2013-11-24 * gc.c: change terminology OLDSPACE -> OLDMALLOC. (oldspace -> oldmalloc for variable names) OLDSPACE is confusing because it is not includes slots. To more clearly, rename such as (oldspace_limit -> oldmalloc_limit). It is clear that it measures (estimates) malloc()'ed size.
15bbf34c694d69475d27ba2e79d1ddaa15ff8e3e 2013-11-24 * test/ruby/test_gc.rb: catch up last commit. Now RUBY_GC_OLDSPACE_LIMIT(...) is RUBY_GC_OLDMALLOC_LIMIT(...).
f06002208d98a66532fa3f440454f2daa153e037 2013-11-24 * gc.c (gc_stat): add internal information. * heap_swept_slot * malloc_increase * malloc_limit * remembered_shady_object * remembered_shady_object_limit * old_object * old_object_limit * oldmalloc_increase * oldmalloc_limit * gc.c (gc_stat): rename names. * heap_live_num -> heap_live_slot * heap_free_num -> heap_free_slot * heap_final_slot -> heap_final_slot Quote from RDoc of GC.stat(): "The contents of the hash are implementation specific and may be changed in the future." * test/ruby/test_gc.rb: catch up this change.
a87eaf88a0b50bd1a7f3e2c5aaefde58c231262b 2013-11-24 * gc.c: change terminlogy "..._num" to "..._slots" about slot opetaion. * final_num -> final_slots * objspace_live_num() -> objspace_live_slots() * objspace_limit_num() -> objspace_limit_slots() * objspace_free_num() -> objspace_free_slots()
30e88ca8a71d152987e727b6d194cc783580567f 2013-11-24 * gc.c: continue to change OLDSPACE -> OLDMALLOC. RGENGC_ESTIMATE_OLDSPACE -> RGENGC_ESTIMATE_OLDMALLOC. * gc.c: add a new major GC reason GPR_FLAG_MAJOR_BY_OLDMALLOC.
84b7d6d533208bb9f73e3573ad2352dcf9e2e1b0 2013-11-24 * test/-ext-/tracepoint/test_tracepoint.rb: catch up GC.stat changes at r43835.
2bfd722d803ac26deabde267c3d84d1b1aa85f50 2013-11-25 * internal.h: do not use ruby_sized_xrealloc() and ruby_sized_xfree() if HAVE_MALLOC_USABLE_SIZE (or _WIN32) is defined. We don't need these function if malloc_usable_size() is available. * gc.c: catch up this change. * gc.c: define HAVE_MALLOC_USABLE_SIZE on _WIN32. * array.c (ary_resize_capa): do not use ruby_sized_xfree() with local variable to avoid "unused local variable" warning. This change only has few impact. * string.c (rb_str_resize): ditto.
5b40cb6a2cc6085a346f0f34be03b6ffdaeda8ca 2013-11-26 * vm_trace.c: prohibit to specify normal events and internal events simultaneously. I will introduce special care for internal events later. * ext/-test-/tracepoint/tracepoint.c: test this behavior. * test/-ext-/tracepoint/test_tracepoint.rb: ditto.
bd26be2b3479a0e4ce75179d56de9d6d10be528b 2013-11-26 * vm_trace.c: skip "exception check" and "reentrant check (only normal events) for internal events. Reentrant check for internal events are remaining.
8ca8d7afb3135a518452a1773ce7cabb54dd2a31 2013-11-26 * ext/objspace/object_tracing.c (newobj_i): skip class_path if class is frozen. rb_class_path() can modify frozen classes (and causes errors). This patch is temporary. We need no-modification/no-allocation class path function.
be26a374e994fe070f04928308700a37f46d75d0 2013-11-26 * common.mk: add useful config "set breakpoint pending on" for run.gdb.
a4b0c3c26bcf7eab7c58b00eab2a75ed7d3c31b6 2013-11-26 * test/ruby/test_settracefunc.rb: add tests for a_call/a_return by Brandur <brandur@mutelight.org> [Feature #9120]
5993c141f1c457d45807c3338cdc268052ac2a4e 2013-11-27 * gc.c (gc_stat): add new information heap_eden_page_length and heap_tomb_page_length. * test/ruby/test_gc.rb: fix to use GC.stat[:heap_eden_page_length] instead of GC.stat[:heap_length]. This test expects `heap_eden_page_length' (used pages size).
da65a3d9067a25628a8e033c1a4c800f671acdbc 2013-11-27 * gc.c (gc_page_sweep): disable debug print.
9e733b909167e0ef0cf3766f3e54c9dc4e180ce8 2013-11-27 * gc.c (gc_mark_stacked_objects): check only when check_mode > 0.
d7df3e28306267d9e66d8493aa61642c32a145a3 2013-11-28 * string.c (rb_fstring): fstrings should be ELTS_SHARED. If we resurrect dying objects (non-marked, but not swept yet), pointing shared string can be collected. To avoid such issue, fstrings (recorded to fstring_table) should not be ELTS_SHARED (should not have a shared string).
cda7250de0e7cd3f8842ee9b7c0ce8dc7cf920d1 2013-12-05 * gc.c (vm_malloc_size): added. return malloc_usable_size() if possible. * gc.c (MALLOC_ALLOCATED_SIZE): add new setting macro to enable GC.allocated_size. If platform supports `malloc_usable_size()' (or similar one), GC.allocated_size can be implemented with this function. Default is 0. * gc.c (vm_xmalloc, vm_xrealloc, vm_xfree): use vm_malloc_size() to detect collect allocated size. * gc.c (vm_malloc_increase): refactoring.
53035271a8ae5379152c2fe0c80d1e50515f5fc2 2013-12-05 * gc.c: change function names vm_ prefix to objspace_ prefix. They are objspace_ functionality.
b9cf1033aab2f2622aadd8093bd897590da028d0 2013-12-05 * gc.c (gc_info_decode): fix to avoid syntax error on VS2012.
73d6dc252d0f5df5f15f0aa1401d93f86aa6ac65 2013-12-06 * gc.c (gc_start_internal, rb_gc): do not need heap_pages_free_unused_pages() here. It was done in after_sweep(). * gc.c (rb_gc): The reason is now GPR_FLAG_CAPI.
0e20c2afa818cbe47cad65da93db8b6bb9fe2a5f 2013-12-06 * gc.c (gc_start_internal): do not use rb_gc_start() and rb_gc().
cb62399d90f6eeaf3c42ab44730c39c2c0317746 2013-12-06 * gc.c (atomic_sub_nounderflow): added to simplify atomic sub with care about underflow. * gc.c (objspace_malloc_increase): use it.
2c616737e514faed0e9a7be0e097e3091334277b 2013-12-06 * gc.c (garbage_collect_body): bug fix. initialize after recording.
e4720e1118d71f3a5eae8015cc4bf431e30730e7 2013-12-06 * gc.c (rb_objspace_alloc, Init_heap): initialize oldmalloc_increase_limit at Init_heap. rb_objspace_alloc() is not called on some platforms.
f09058b877c41ba05cec24641ae84425f7ac356f 2013-12-06 * gc.c (atomic_sub_nounderflow): not 0 but val itself.
b91e889c34c8efd199606b616848e331f7efb48f 2013-12-06 * gc.c: change oldmalloc meaning. Increase oldmalloc_increase with malloc_increase instead of using obj_memsize_of(). This change will avoid the danger of memory full without major GC.
5dc77048a3854a74113c62f2d942f3a45d9ad9bf 2013-12-09 * vm.c (vm_stat): renamed from ruby_vm_stat. Should not use ruby_ prefix here.
8d4253f7e15efa8284e111ba1bc965d81e55560c 2013-12-10 * gc.c (gc_marks_check): disable GC during checking and restore malloc_increase info.
14979f2161e2d2f799f2b8b351d1cb451d13416b 2013-12-10 * gc.c (RGENGC_CHECK_MODE): separate checkers to different modes. * 2: enable generational bits check (for debugging) * 3: enable livness check * 4: show all references
1b29c00f00e42ade9858142b512b6eab211fb223 2013-12-10 * gc.c (allrefs_add): push obj only if allrefs table doesn't have obj. * gc.c (allrefs_roots_i): ditto.
a4cbd6412aa8b16893db47ff18243bb4d5371899 2013-12-11 * eval.c (rb_raise_jump): pop frame after setup exception. Patches by deivid (David Rodriguez). [Bug #8886] * test/minitest/test_minitest_unit.rb: catch up this change. * test/ruby/test_backtrace.rb: ditto. * test/ruby/test_settracefunc.rb: ditto.
78d7aa8ae37ab7be93c7dbf038024ec087851731 2013-12-11 revert r44133. See https://bugs.ruby-lang.org/issues/8886 details
919f1438ae30848b8f1b9e7071c27c302049a0f0 2013-12-11 * eval.c (rb_raise_jump): call c_return hook immediately after popping `raise' frame. Patches by deivid (David Rodriguez). [Bug #8886] * test/ruby/test_settracefunc.rb: catch up this fix.
55a77f29c1f4b3ead0699755759daba27e9c4b13 2013-12-13 * gc.c: rename *shady* func/macros. * RVALUE_RAW_SHADY() -> RVALUE_WB_PROTECTED_RAW() * RVALUE_SHADY() -> RVALUE_RAW_SHADY() * rgengc_check_shady() -> rgengc_check_relation(). And fix some messages using "shady" to "non-WB-protected".
3477670963c7cc4d929e5196369f5327421ff62d 2013-12-13 * array.c: fix comment to remove the word "shady". * variable.c: ditto.
c7005118880ceeff65b300479317ca8387ec1246 2013-12-13 * gc.c (garbage_collect_body): use rb_bug() and explicit error message instead of using assert(). [Bug #9222]
0aed7c6874ba75f1a85899d0ed0ea07b24a9f3ef 2013-12-13 * error.c: add Exception#backtrace_locations. Now, there are no setter and independent from Exception#backtrace. [Feature #8960] * eval.c (setup_exception): set backtrace locations for `bt_location' special attribute. * vm_backtrace.c (rb_backtrace_to_location_ary): added. * internal.h: ditto. * test/ruby/test_backtrace.rb: add a test for Exception#backtrace_locations.
1448b0abf5247a4e4eec07a65aafa13d347a016a 2013-12-15 * ext/objspace/objspace.c (reachable_object_from_root_i): reachable objects should not include categories and category_objects because it is noisy information. In fact, objects created after calling ObjectSpace.reachable_objects_from_root should not be included as a returning hash objects. Currently, mswin64 platform has a problem because of this behaviour. Should we trace new objects?
dfa892af437d7c6e01406134a5baded91b4db541 2013-12-16 * gc.c: introduce GC.verify_internal_consistency method to verify GC internal data structure. Now this method only checks geneartion (old/young) consistency.
c979a67bb45669eb212c642da2fc6bed3277ae35 2013-12-16 * gc.c: use gc_verify_internal_consistency() instead of gc_check_before_marks_i() for check consistency on RGENGC_CHECK_MODE >= 2.
d8eb7f3c0df627af7e2a961bfdcb069a9cde34ac 2013-12-16 * vm_method.c (rb_method_entry_make): fix WB miss. Note that rb_method_entry_t::klass is not constified. We may constify this field. * test/ruby/test_alias.rb: add a test.
60b7bd2ea3ac0358427a5d344bebdc6225f6c1f2 2013-12-16 * gc.c (rb_objspace_each_objects): should not clear dont_lazy_sweep flag in nested case.
1779f77fbb74382a69cbd4eaf673a4935ee9c541 2013-12-16 * gc.c (rb_objspace_markable_object_p): it should be live objects.
1a209e496d9459843d98347e88a4e93ad05a119f 2013-12-16 * gc.c (rb_objspace_markable_object_p): fix last commit (build error).
8d254db25b9e6810a49324f70ec314eacb2cf8d2 2013-12-16 * gc.c (gc_verify_internal_consistency): should not use rb_objspace_each_objects() because it call rest_sweep().
d4f80bd74e009152b72f0744e07ca3cea36438e7 2013-12-16 * ext/objspace/objspace.c (reachable_object_from_root_i): use compare_by_identity hash to avoid hash modify problem during iteration. [Bug #9252] * ext/objspace/objspace.c (reachable_objects_from_root): ditto.
9ae9f7c9d3057f45afce56e6f696895b71c84489 2013-12-16 * gc.c (rb_objspace_markable_object_p): should check special_const_p first (by is_markable_object()).
2648a803c12a9885712cdd0419a2edd35df54e2b 2013-12-18 * test/ruby/test_gc.rb (test_expand_heap): allow +/-1 diff.
26e553d0ed235ce4f1100405c966c65ef8e01c2d 2013-12-18 * vm_exec.h (VM_DEBUG_STACKOVERFLOW): added. disable stack overflow check for every stack pushing as default. * vm_exec.c (vm_stack_overflow_for_insn): ditto.
7bdb9fe17fe649023d3c5422b76a3634c48791ab 2013-12-18 * gc.c (gc_profile_clear, gc_profile_enable): remove rest_sweep(). * gc.c: check objspace->profile.current_record before inserting profiling record by new macro gc_prof_enabled().
661cf78bef8db2c55ae1511eadd1e918f63efa8d 2013-12-18 * gc.c (gc_profile_record_get): should return an empty array when profiling is active.
a0a1d0f268994610932c2ae51df9d8f759591b01 2013-12-18 * gc.c (gc_profile_dump_major_reason): fix this function because major_reason can be OR of multiple reasons. * gc.c (gc_profile_dump_on): ditto.
d767adf99017e24a7e3804891bf94fb6820aee4d 2013-12-18 * gc.c (garbage_collect_body): lazy_sweep setting should work without USE_RGENGC.
49dcd2fee436faaf0937557f73b2cfb0b73c7971 2013-12-18 * test/runner.rb: fix commit miss on r44278.
2ad4a1600bd407751f1aae01e758505fd2a5d61d 2013-12-19 * benchmark/gc/gcbench.rb: check GC::OPTS availability for not MRI 2.1.0.
9797647e2546d44126e5d955e394c300a48d4201 2013-12-19 * gc.c (newobj_of): don't need to RBASIC_SET_CLASS() which includes WB here because created obj is always YOUNG/INFANT.
0a8c1142b0b1d8b65cfb732b7b01f6be1441af26 2013-12-19 * gc.c (heap_get_freeobj): improve hot path performance. * gc.c (heap_get_freeobj_from_next_freepage): replace with heap_get_freepage(). It returns freeobj instead of freepage. This is not on hot path.
b766cc4e70f18ab1b3be5aef35d2af8817d23714 2013-12-20 * include/ruby/ruby.h: add a comment for WB interfaces.
c702005a7bbb807cab666537b5ef1877c14c40ba 2013-12-20 * include/ruby/ruby.h: rename OBJ_WRITE and OBJ_WRITTEN into RB_OBJ_WRITE and RB_OBJ_WRITTEN. * array.c, class.c, compile.c, hash.c, internal.h, iseq.c, proc.c, process.c, re.c, string.c, variable.c, vm.c, vm_eval.c, vm_insnhelper.c, vm_insnhelper.h, vm_method.c: catch up this change.
f11b54213ad169975f98bbf0a39e1b303bc2795f 2013-12-20 * vm_method.c: check definition of GLOBAL_METHOD_CACHE_SIZE and GLOBAL_METHOD_CACHE_MASK.
94e870b0004def9dbf6e909eba66244aea32bfe7 2013-12-21 * gc.c (ruby_gc_set_params): don't show obsolete warnings for RUBY_FREE_MIN/RUBY_HEAP_MIN_SLOTS if RUBY_GC_HEAP_FREE_SLOTS/RUBY_GC_HEAP_INIT_SLOTS are given. [Bug #9276]
def62c3267e64128cc4f5aab187dad75bd7b2c39 2013-12-24 * include/ruby/ruby.h (RARRAY_ASET): try to avoid compiler warning. [Bug #9287]
215c40b8130df5f5cbd4ffcfda9c263e68e4462f 2013-12-24 * README.EXT: add a document about RGenGC. Reviewed by havenwood. [misc #8962] * README.EXT.ja: ditto.
777cd24ebb7090e08d8887d99ee3b8179d163bd0 2013-12-24 * README.EXT: add a refer to URL.
485e6ebed846fd77e273177e07348a72786c1d97 2013-12-25 * vm_insnhelper.c (argument_error): insert dummy frame to make a backtrace object intead of modify backtrace string array. [Bug #9295] * test/ruby/test_backtrace.rb: add a test for this patch. fix test to compare a result of Exception#backtrace with a result of Exception#backtrace_locations.
c2e72fb34302e444f6cc4c6477877e36902a7035 2014-01-09 * vm.c (rb_vm_pop_cfunc_frame): added. It cares c_return event. The patch base by drkaes (Stefan Kaes). [Bug #9321] * variable.c (rb_mod_const_missing): use rb_vm_pop_cfunc_frame() instead of rb_frame_pop(). * vm_eval.c (raise_method_missing): ditto. * vm_eval.c (rb_iterate): ditto. * internal.h (rb_vm_pop_cfunc_frame): add decl. * test/ruby/test_settracefunc.rb: add tests. provided by drkaes (Stefan Kaes). * vm.c, eval.c, include/ruby/intern.h (rb_frame_pop): move definition of rb_frame_pop() and deprecate it. It doesn't care about `return' events.
f614957d120f9c2ea7bb1991429ea15011ba858c 2014-01-23 * test/ruby/test_settracefunc.rb: check the target thread.
f061bec852cae077b529790a12d9c9caed742290 2014-01-23 * test/ruby/test_settracefunc.rb: check the target thread.
37f32fd6a0b80b6a272505589b0195ae8b6d5b85 2014-01-23 * test/ruby/envutil.rb: try to wait a bit (0.1sec) when ruby process exits by signals because some SEGV tests fail because of not enough error output.
c77a745aab4372227e7ed929ff4d532dc7753d70 2014-02-04 * string.c: remvoe STR_ASSOC related code. By r44804, string objects can not have STR_ASSOC flag. * internal.h: ditto. * ext/objspace/objspace_dump.c (dump_object): ditto.
171a14b36cf61a1aae127d3b73b1aedd0657ab01 2014-02-04 * string.c: use STR_SHARED instead of ELTS_SHARED. (same value, but more clear meaning)
fc4321ea3fc5be0868be8501536014ac04e9b46b 2014-02-04 * string.c: use long allocator names instead of numbered allocator names. * rb_str_new2 -> rb_str_new_cstr * rb_str_new4 -> rb_str_new_frozen * rb_str_new5 -> rb_str_new_with_class * str_new3 -> str_new_shared * str_new4 -> str_new_frozen_with_klass
62bd0f180fcdbf3c55ba6cc400ae631986ad720b 2014-02-05 * string.c (rb_str_new_frozen): refactoring code. * Move code from str_new_frozen_with_klass() (and remove it) * `aux.shared' should not be 0 for STR_SHARED strings.
906e88e376e9933e9664b477bc86357a9cd01bda 2014-02-05 * gc.c (gc_mark_children): STR_ASSOC is no longer available. Reported by @nagachika. http://d.hatena.ne.jp/nagachika/20140204
46fcec9a17919302dd7f9b15e6a4aa86d4ee4570 2014-02-05 * string.c (RESIZE_CAPA): should not resize shared string.
84d8104ed6b2a6020e8c142a2cc759beb4b3d4a9 2014-02-05 * string.c: refactoring, especially about string flags. * string.c (STR_UNSET_NOCAPA): removed. Use FL_UNSET() with STR_SHARED. * string.c (rb_str_capacity): check STR_SHARED directly beacuse it is not a embed string. * string.c (rb_str_modify_expand): ditto. * string.c (rb_str_shared_replace): use STR_SET_SHARED(). * string.c (str_make_independent_expand): remove STR_UNSET_NOCAPA() because `str' is not shared string.
38cd45a3cdacf6d0bea95e3da41d7ae09da90fb7 2014-02-05 * internal.h: remove macros STR_NOCAPA and STR_NOCAPA_P(). * string.c (rb_str_resize): remove `STR_SET_NOEMBED(str)' because str_make_independent_expand() set NOEMBED flag. * string.c (rb_str_resize): remove `STR_NOCAPA_P(str)' check because `str' is independent (not shared).
3889ce2d156bef45c1f05463fc2cd54a309a1e7e 2014-02-05 * string.c (rb_str_free): use FL_TEST(str, STR_SHARED) directly because str is not embed. * string.c (str_replace): remove `FL_SET(str, STR_SHARED)' line because STR_SET_SHARED() set STR_SHARED.
1ccaa4756aff30afdaa4f9a565c69722a6f6ebe8 2014-02-05 * internal.h, vm_core.h: move LIKELY/UNLIKELY/UNINITIALIZED_VAR() macros from vm_core.h to internal.h. * string.c: remove dependency to "vm_core.h". * common.mk: ditto.
d76b38268366cc3226499b1eb00ce7798c71bcc2 2014-02-05 * ext/objspace/objspace_dump.c (dump_object): use STR_SHARED_P() instead of removed STR_NOCAPA_P() macro.
ae411fb558b0444404097e19bbe94457056a2118 2014-02-05 * vsnprintf.c: remove duplicated def of `UNINITIALIZED_VAR()'.
f167bc403d2d97ec27308a3c41b22ecc16294bbc 2014-02-06 * gc.c (ruby_gc_set_params): if RUBY_GC_OLDMALLOC_LIMIT is provided, then set objspace->rgengc.oldmalloc_increase_limit. Without this fix, the env variable RUBY_GC_OLDMALLOC_LIMIT does not work. * gc.c (get_envparam_int): accept a value equals to lowerbounds. * gc.c (get_envparam_double): ditto.
cb410ff93206316d00355cb2c2d7b55e2101d0b2 2014-02-06 * gc.c (get_envparam_int): don't accept a value equals to lowerbound (changed by last commit) because "" or "foo" (not a number) strings are parsed as 0. They should be rejected. * gc.c (get_envparam_double): ditto.
b31c66f7afc6fe5c55d238ae7bdf18c5a21b7c62 2014-02-06 * gc.c (get_envparam_int): correct warning messsages. * gc.c (get_envparam_double): ditto.
c6f2c9383f446f92e482a6e1c7e13772affde8d7 2014-02-08 * gc.c, gc.h (rb_objspace_marked_object_p): added. This function *ONLY* works just after marking phase, before any sweeping. This function is highly depending current GC implementation and can be removed future version.
3ee0444955b57decfc8ad5f4aff608f9b103f9e6 2014-02-17 * gc.c: introduce new environment variable "RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR" to control major/minor GC frequency. Do full GC when the number of old objects is more than R * N where R is this factor and N is the number of old objects just after last full GC. * test/ruby/test_gc.rb: add a test.
1aebaf735555068fb82c3d1846166b5afc7af10e 2014-02-17 * gc.c (get_envparam_double): fix a warning message.
131696f48f2f089a08a18df8b83e1c73c5770f6f 2014-02-17 * test/ruby/test_gc.rb: ignore warning messages for running with -w option such as chkbuild.
8467d86f8aacf54657f247d69b7413a4ce879d6f 2014-02-26 * gc.c (heap_pages_free_unused_pages): check tomb page availability at first. And return immediately if we don't touch sorted list any more.
57e557908a8c4c01390b7ea52b09f8370a3d7dd3 2014-03-17 * enumerator.c (enumerator_block_call): use PARRAY_CONST_PTR() instead of RARRAY_PTR(). * io.c (rb_io_s_popen): ditto. * numeric.c (num_step_size): ditto. * vm_eval.c (rb_apply): ditto. * vm_eval.c (rb_eval_cmd): ditto.
53bd4502d830d5aafae5deb9278a3ec10c9fb093 2014-03-20 * include/ruby/intern.h (rb_obj_call_init, rb_class_new_instance): constify a parameter (VALUE *). I believe this incompatibility doesn't break any code. However, if you have trouble, please tell us. * eval.c, object.c: ditto.
c813697d97832ffe4d660ab9bf0e5c3519448071 2014-03-20 * struct.c (rb_struct_alloc): use RARRAY_CONST_PTR() instead of RARRAY_PTR().
3e20c50d509708bc0c0dedb02ec8dbfbfe1ac301 2014-03-20 * gc.c (objspace_malloc_increase): should not invoke garbage_collect_with_gvl() here on non-ruby threads. Should just ignore the malloc_increase. This issue is pointed by Eric Wong [ruby-core:61519].
835186a322d8a812cdbeb2f00ecd642cffde9fee 2014-03-29 * gc.c (gc_before_sweep): cap `malloc_limit' to gc_params.malloc_limit_max. It can grow and grow with such case: `loop{"a" * (1024 ** 2)}' [Bug #9687] This issue is pointed by Tim Robertson. http://www.omniref.com/blog/blog/2014/03/27/ruby-garbage-collection-still-not-ready-for-production/
37067ed905954940bafb3b2cc4e1d67c374d31f9 2014-04-02 * gc.c, gc.h (rb_objspace_each_objects_without_setup): Add a new (hidden) C-API to iterate objspace snapshot. This API is not safe to call any C-APIs in a given callback function. Be careful to use this C-API.
bdf4eb0615bea7a0f8b404282e92345f78ae5578 2014-04-08 * gc.c: rename `RGENGC_THREEGEN' to `RGENGC_AGE2_PROMOTION'. * gc.c (rgengc_rememberset_mark): don't promote, but remain in remember set for infant objects. * gc.c (RVALUE_PROMOTE_INFANT, RVALUE_PROMOTE_YOUNG): count numbers in these functions.
52b6be0ad393508c66bb6d7f4f027985d09f0fd5 2014-04-09 * test/ruby/test_gc.rb: more long timeout. This test failed under RGENGC_CHECK_MODE >= 2.
ddffb9bb9b065f266ff845415d508877bdadab20 2014-04-10 * gc.c (rb_gc_writebarrier_unprotect_promoted): disable to dump debug message when RGENGC_CHECK_MODE == 0.
be512007850642da7a02dae0460a2d4f2eea538a 2014-04-10 * gc.c (gc_verify_internal_consistency): move lines and enable allrefs_dump() on RGENGC_CHECK_MODE >= 4.
f19bf5ba5a59631e9d6340d3352b9d9ef20945af 2014-04-10 * array.c (rb_ary_modify): remember shared array owner if a shared array owner is promoted and a shared array is not promoted. Now, shared array is WB-unprotected so that shared arrays are not promoted. All objects referred from shared array should be marked correctly. [ruby-core:61919] [ruby-trunk - Bug #9718] * test/ruby/test_array.rb: add a test for above.
5877dcbb130f394f74b9357636804099f1031968 2014-04-10 * test/ruby/test_array.rb: remove useless `assert'.
6bc463204ae06fe9c5a72371a6a26a8f0b6b0d29 2014-04-11 * array.c: make shared arrays WB-protected objects. Shared arrays were WB-unprotected object because sharing array can modify shared array's buffer if it occupied shared array. [sharing array (ary)] -> [shared array (shared)] -> <buff> | A +---------------------------------------+ write `buff' with WB(ary, &buff[i], obj) -> if `ary' and `shared' are old, then only `ary' will be remembered. -> traverse from `ary'. But `shared' is old, so that written `obj' is not marked. It cause WB miss so that shared arrays were WB-unprotected. (WB-unprotected objects are marked everytime if it is living) This patch insert WB() for `shared' if it is needed.
f2606d6250d5f4b2e7d02b97567b74de6435864a 2014-04-11 * array.c (ARY_SET): added. ARY_SET() is same functionality of RARRAY_ASET(), but it has an assertion (`ary' doesn't have shared array).
d32ad2efcaf6cf9babc6272482582dddda241a8f 2014-04-21 * gc.c (objspace_malloc_increase): don't cause GC by malloc_increase when memop type is MEMOP_TYPE_REALLOC. GC at realloc is not well maintained. We need a time to make it safe. [ruby-dev:48117]
ba6b0acdb6c371f9f7150bed6f555c7f34fe3781 2014-04-30 * vm.c (invoke_block_from_c): add VM_FRAME_FLAG_BMETHOD to record it is bmethod frame. * vm.c (vm_exec): invoke RUBY_EVENT_RETURN event if rollbacked frame is VM_FRAME_FLAG_BMETHOD. [Bug #9759] * test/ruby/test_settracefunc.rb: add a test for TracePoint/set_trace_func. * vm_core.h: renmae rb_thread_t::passed_me to rb_thread_t::passed_bmethod_me to clarify the usage. * vm_insnhelper.c (vm_call_bmethod_body): use renamed member.
c47d59a0a736cefc7bbf80232f3175676a528ad1 2014-05-05 * benchmark/driver.rb: define File::NULL if not defiend and /dev/null is available to run benchmark driver on ruby 1.9.2.
1ddb9c532233995a9c277e4a3b3367a37c4a44e4 2014-05-07 * benchmark/driver.rb: add '--rawdata-output=[FILE] option to output raw results into FILE.
d4672274869816eb7ae3f336e3512bac9f0d21e6 2014-05-07 * benchmark/driver.rb: remove debug output and output results into specified file.
8be5c76f06478c3f342b3533680b4fcfaebc5d99 2014-05-12 * gc.c: count young object correctly and show it in GC.stat on RGENGC_AGE2_PROMOTION. * gc.c (RVALUE_PROMOTE_YOUNG): decrement young object count on YOUNG->OLD. * gc.c (obj_free): decrement young object count when young object freed. * gc.c (gc_marks): should not clear young object count. * gc.c (gc_stat_internal): GC.stat :young_object information.
b4d9f9ca1d8218d4a35bd361c363ebdba5165db9 2014-05-14 * gc.c (rgengc_rememberset_mark): promote remembered object earlier.
1b03f51f823a326164d0a8fb51e8270b8f28d327 2014-05-14 * gc.c: enable RGENGC_AGE2_PROMOTION.
7093a2cb5bdd85f84601815d08da90ef71c3322f 2014-05-14 * ext/openssl/depend: remove dependency from internal headers. [Feature #9612] * ext/openssl/ossl.c (ossl_fips_mode_set): ditto. * ext/coverage/depend: ditto. * include/ruby/thread_native.h: added. This header file only provides wrapper functions to control native threads. These wrapper functions are used by MRI implementation. * vm_core.h: use include/ruby/thread_native.h. * thread.c: ditto. * thread_pthread.h: ditto. * thread_win32.h: ditto. * thread_native.h: removed.
28a180ed2f94acc2bd08fb3943329a68f83efeec 2014-05-15 * gc.c: introduce macros to remove magic number. GC_HEAP_FREE_SLOTS_MIN_RATIO = 0.3: guarantee minimum empty slots ratio after sweep. GC_HEAP_FREE_SLOTS_MAX_RATIO = 0.8: allow to free pages 0.2 (= 1-0.8) of current existing slots.
8d81c976aae371002c604b44028fde07abb12534 2014-05-15 * gc.c (heap_extend_pages): calculate next growing heap size. * gc.c (heap_set_increment): accept addition pages instead of minimum pages. * gc.c (gc_after_sweep): use heap_etend_pages(). * gc.c (gc_heap_prepare_minimum_pages): add only 1 page. * gc.c (heap_ready_to_gc): add only 1 page.
bceb547077c545c103e6329bac879b1fed3ce9d7 2014-05-15 * gc.c (garbage_collect_body): move gc_heap_prepare_minimum_pages() from gc_sweep().
be5ed87c2f2f8d17665fde4c939ac1605d402ac4 2014-05-16 * gc.c (gc_before_sweep): heap_pages_swept_slots should contains heap_pages_increment. For example, GC by exceeding malloc_limit can remain heap_pages_increment.
a86d454538259e3269cbfc29ed01d1760676e5d0 2014-05-16 * gc.c (gc_marks, gc_marks_body): increase the counter of young objects at the major GC because AGE2Promotion changes all old objects into young objects at major GC.
7af941da15ab3663281f229740b68c3d30813eea 2014-06-02 * eval.c (rb_using_refinement): add write-barriers for cref->nd_refinements.
bbfe069ec1ffcf1519559632f2fd51fb01e251a0 2014-06-02 * vm.c (ruby_vm_destruct): remove useless call of rb_gc_force_recycle(). At this line, a VM object is already freed (is changed to T_NONE) by rb_gc_call_finalizer_at_exit().
d27a685b9545f365cbac04bb95c81c1aac96bda9 2014-06-03 * test/ruby/memory_status.rb: add $LOAD_PATH to load test/unit correctly for fiddle/import unavailable environments.
baff4dfef950989f34657d6ade26c990f50900e4 2014-06-03 * gc.c: count old/young objects more correctly. * gc.c (RVALUE_DEMOTE_FROM_OLD): decrement old object count. * gc.c (RVALUE_DEMOTE_FROM_YOUNG): decrement young object count. * gc.c (rb_gc_resurrect): increment old object count. * gc.c (gc_marks_body): should not add old object count. This code is completely my misunderstanding. * gc.c (rb_gc_force_recycle): decrement young or old object count correctly.
58390617efec4b13b8b2cd73015a49cbb56580b5 2014-06-03 * gc.c (check_gen_consistency): fix error message.
a0bbf948b52437f0a8becf23fc8fbbddc0d0dda8 2014-06-03 * gc.c (obj_free): fix spacing.
e7d8c473c17540dbc0b360efd689fbd2def69967 2014-06-03 * gc.c (objspace_live_slot): live slot count should not include final slot (contains T_ZOMBIE) count.
3d42f2295d63a16823aae864aa53a3a67adb5b6a 2014-06-03 * gc.c (rb_gc_force_recycle): we only need to know the result (0/1) of RVALUE_OLD_P(). clang fails to compile it because is_old is `int' but RVALUE_OLD_P() returns VALUE.
9d71a0ae331c137b8c736e6dca1b1c265053ebe4 2014-06-03 * gc.c: add verifying counters code in gc_verify_internal_consistency(). gc_verify_internal_consistency() counts all - live objects - young objects (if age2 promotion) - old objects in all pages and compares with objspace managing counters. * gc.c (gc_after_sweep): do gc_verify_internal_consistency() when RGENGC_CHECK_MODE >= 2.
2e437f8b45ac2399011b32c6bacb68603c6728a5 2014-06-03 * gc.c: change the counting method for young objects. clear counter at the beggining of every GC and count promoted (infant->young) objects. Some promotions (infant->young) are transition of promoting to old objects. We should not count such promotions. With this technique, we don't need to check young objects at obj_free().
75604b077e665cefe239db67033d521463798be6 2014-06-03 * gc.c (rb_gc_call_finalizer_at_exit): add gc_verify_internal_consistency() when RGENGC_CHECK_MODE >= 2.
29bee7e8ea26e9540b61add2c774860f4c61d4ff 2014-06-03 revert r46332 because RVALUE_OLD_P() returns int by r46334
a5fd4c45e37a53118e8385e9a91201fd6c99993c 2014-06-03 * test/ruby/test_gc.rb: allocate more objects to invoke GC by newobj. GC allows extending pages depends on heap_increment.
7ad125d7d216915b12ef3417b9a4f2b4a9305cff 2014-06-03 * gc.c (rb_objspace_free): should not rest_sweep() here. Some data structures are already freed.
2f73dbd084e64e8be1ced89c735d9d8b987ca94c 2014-06-04 * gc.c: introduce RZombie to manage zombie objects. Rewrite finalizing logics with this type. * gc.c (gc_verify_internal_consistency): verify zombie (finalizing) objects count.
0e3debf15b880e2620c9a64537e613d83dd196ea 2014-06-05 * gc.c (obj_free): check also FL_PROMOTED bit by RVALUE_OLD_P().
72a77c25e5f9837539d7af523971f0a2ef35d66f 2014-06-05 * gc.c (gc_page_sweep): refactoring. * gc.c (gc_page_sweep): should not set, but add final_slots into sweep_page->final_slots.
5b2a7458108fa13ac9ef194d544792a82243f5ff 2014-06-09 * gc.c: change full GC timing to keep lower memory usage. Extend heap only at (1) after major GC or (2) after several (two times, at current) minor GC Details in https://bugs.ruby-lang.org/issues/9607#note-9 [Bug #9607]
c8c99520668f4a92f620ede01e5af2827a29b3fa 2014-06-10 * gc.c: invoke GC before memory allocation (xmalloc/xrealloc) when GC.stress = true. [Bug #9859] * test/ruby/test_gc.rb: add a test.
ddae6a05d7442f25ac04eb3338ffa8a8b4895d3f 2014-06-13 * vm_trace.c: clear and restore recursive checking thread local data to avoid unexpected throw from TracePoint. [Bug #9940] * test/ruby/test_settracefunc.rb: add a test. * thread.c: adde * rb_threadptr_reset_recursive_data(rb_thread_t *th); * rb_threadptr_restore_recursive_data(rb_thread_t *th, VALUE old); * vm_core.h: ditto.
4945572f3cc6dcd55ffac4876ae23f27e19120ad 2014-06-13 * vm_trace.c: add new method TracePoint.stat to debug TracePoint mechanism. Ruby users should not use this method. So I don't note this method in the NEWS file. * test/runner.rb: detect zombie active TracePoints with TracePoint.stat.
3a1c08e58f805852c31287afab0efeb40e64d7dd 2014-06-16 * test/runner.rb: capture TracePoint stat before setup and compare it after teardown.
dbf2578656cf3dc5ce77170947a97065219ef227 2014-06-16 * test/runner.rb: failure message should be passed as an argument.
b905ac81a07bd6547f353ea30c163b47ac60b27d 2014-06-17 * gc.c (obj_memsize_of): memsize_of(T_ZOMBIE) returns 0, not a rb_bug. ObjectSpace.count_objects_size() uses memsize_of(T_ZOMBIE). This bug introduced at r46348.
59bdf7eac8dfaf740e2c87da93efdfc96b1c9469 2014-06-19 * vm_core.h: add VM_FRAME_MAGIC_RESCUE to recognize normal block or rescue clause. * vm.c (vm_exec): use VM_FRAME_MAGIC_RESCUE on at rescue/ensure. * test/ruby/test_settracefunc.rb: should not invoke b_return at rescue clause. [Bug #9957] * vm_dump.c (control_frame_dump): check VM_FRAME_MAGIC_RESCUE. * vm_dump.c (vm_stack_dump_each): ditto.
370212a8ae39939979cf0651bd98108316a8e535 2014-06-19 * vm.c (invoke_block_from_c): move call/return event timing for bmethod. It can invoke inconsistent call event if this call raises argument error. [Bug #9959] * vm_insnhelper.c (vm_call_bmethod_body): ditto. * test/ruby/test_settracefunc.rb: add a test.
bef2e29aab53d2d15006fad7de9e56f2f44c7778 2014-06-19 * vm.c (rb_vm_rewind_cfp): add new function to rewind specified cfp with invoking RUBY_EVENT_C_RETURN. [Bug #9961] * vm_core.h: ditto. * eval.c (rb_protect): use it. * eval.c (rb_rescue2): ditto. * vm_eval.c (rb_iterate): ditto. * test/ruby/test_settracefunc.rb: add a test. * vm_core.h (rb_name_err_mesg_new):
15397de07d599c17f6d6ffaaf02f84318247a3c0 2014-06-19 * vm_eval.c (rb_catch_protect): fix same problem of [Bug #9961]. * vm_eval.c (rb_iterate): ditto.
13f0b628d7520f7a1777e39fbc6ce7b075e4bd47 2014-06-19 * compile.c (rb_iseq_compile_node): put start label of block after trace (b_call). [Bug #9964] * test/ruby/test_settracefunc.rb: add a test. added assert_consistent_call_return() method check call/return consistency.
07413b1a5e535e103b3794f28a60b74e08202e0d 2014-06-19 * test/ruby/test_settracefunc.rb: rewrite tests with assert_consistent_call_return(). assert_consistent_call_return() is also modified to check consistency.
2aa6f9c2b7149e37d8610154cfd5ead3c0fdd994 2014-06-20 * test/lib/tracepointchecker.rb: add to check TracePoint healthiness. * test/runner.rb: use it.
4369806ff0ef10833f31897ae97527079d56897f 2014-06-30 * gc.c: support `USE_RGENGC == 0'. * test/ruby/test_gc.rb: ditto.
51ae29a3cb4ee5821b2cdbd3fbdbb910c803a847 2014-06-30 * gc.c (gc_stat_internal): return size_t value instead of VALUE and remove `out' parameter. * gc.c: add braces for `if' statements. * gc.c (gc_stat_internal): fix comment.
41fe52485793ff23590e7b760737b8390fd8cee1 2014-07-02 * gc.c (gc_heap_lazy_sweep): simplify logic. * gc.c (gc_page_sweep): return TRUE if empty slots are available.
3e8a898bfe3fc6b5bbfd39a2c12fbc1fabe7f7b2 2014-07-04 * parse.y: remove unused code srounded by `#if ENABLE_SELECTOR_NAMESPACE'
a227b16eba1cd836f12497d5b09f79dc6d89d6da 2014-07-04 * parse.y (must_be_dynamic_symbol): refactoring. * add `inline'. * use UNLIKELY(). * check only DYNAMIC_SYM_P(), otherwise it is a bug. * lookup_id_str() is not needed in second condition.
cc462eed98ef713574e50eef178ffce36df53a18 2014-07-04 * parse.y (rb_pin_dynamic_symbol): should be `static' function.
a99a88d49d39f7d007db34468554e5bc1093a49b 2014-07-04 * parse.y (must_be_dynamic_symbol): fix missed-condition.
336f65eb57f1723527aab1b8182b03cdfb3946d0 2014-07-04 * parse.y: rename symbols::sym_id to symbols::str_id. This table is not {Symbol => ID} table, but {String => ID} table. * parse.y (lookup_sym_id): also rename lookup_sym_id() to lookup_str_id() because key is not Symbol, but String.
a617afc643e17cea5c1960a60adcd5ffb25fdfe2 2014-07-06 * gc.c (rb_gc_register_mark_object): change data structure. From single array, to array of arrays. Each array only has 1024 entries. * vm.c (Init_vm_objects): change default capa from 1 to 128.
38943e80d6f5704853ea25aaebacc838da20ef76 2014-07-06 * gc.c: rename is_dead_object() to is_dying_object(). This function is not opposite against is_live_object() because is_dying_object() does *not* check object type. * gc.c (is_dying_object): change condition. * gc.c (is_live_object): use T_NONE instead of 0. * gc.c (rb_objspace_dying_object_p): added.
094949cb0a9d27a5e9575e22973a7640f33fd99d 2014-07-06 * gc.c (is_dying_object): fix missed condition. * gc.c (is_live_object): move frequent path first.
2006bfe2f42d0458e061a1798680cb78b80fdbe8 2014-07-06 * gc.c: rename is_dying_object() to is_garbage_object(). * gc.h: rb_objspace_garbage_object_p() as an exported function.
7ad35210a360db5a6b90eb3a9955636df930b133 2014-07-06 * string.c (fstr_update_callback): do not use rb_gc_resurrect() any more. Make new frozen string and replace with garbage frozen string. * common.mk: use gc.h from string.c.
a31219c91c2c345e8531be47dce63adcab0f1122 2014-07-07 * parse.y: do not use rb_gc_resurrect(), but create a new dynamic symbol for garbage dynamic symbol. * common.mk: use gc.h by parse.y.
2c551e4715bfb9d2dc213805dc551e62af73a861 2014-07-07 * parse.y: need to use updated (re-created) symbols.
2e225e2c8b1623f42937b68d5511379d2a73de4c 2014-07-07 * gc.c: revert miss-commit.
8572ed5c0d98a8edaee7e0e433d632c3ca3f5821 2014-07-07 * parse.y: remove global_symbols::pinned_dsym (and ::pinned_dsym_minor_marked). Mark pinned dsymbols by rb_gc_register_mark_object() because they are immortal. * prase.y (rb_gc_free_dsymbol): rename parameter name `ptr' to `sym'.
fd7073f7aab5c6433a4a64a5b98c04404bbd4c14 2014-07-08 * parse.y (dsymbol_alloc): set global_symbols.minor_marked to 0. * parse.y (dsymbol_check): set RSYMBOL(sym)->fstr to 0 because we should not touch fstr after that. * parse.y (rb_gc_free_dsymbol): skip deleting str and sym from tables if fstr == 0.
37f018fdf52d0f75d66d467055f992dee1c0a420 2014-07-09 * parse.y (symbols_i): delete garbage symbols for Symbol.all_symbols.
76a929a7fca3c84630574e4daa9dab7a96b04fc8 2014-07-09 * parse.y: change Symbol <-> ID relationship to avoid exposing IDs from collectable symbols. [Bug #10014] Now, rb_check_id() returns 0 if corresponding symbol is pinned dynamic symbol. There is remaining intern_cstr_without_pindown(), it can return IDs from collectable symbols. We must be careful to use it (only used in parse.y). I think it should be removed if it does not have impact for performance. * parse.y: add: * STATIC_SYM2ID() * STATIC_ID2SYM() rename: * rb_pin_dynamic_symbol() -> dsymbol_pindown() * internal.h: remove: * rb_check_id_without_pindown() * rb_sym2id_without_pindown() add: * rb_check_symbol() * rb_check_symbol_cstr() * load.c: use rb_check_id() or rb_check_id_cstr(). * object.c: ditto. * struct.c: ditto. * thread.c: ditto. * vm_method.c: ditto. * string.c (sym_find): use only rb_check_symbol(). * sprintf.c (rb_str_format): use rb_check_symbol_cstr().
96815f1ebe945a802ca2e35a1bb6e3b564339732 2014-07-09 * symbol.c: remove rb_gc_mark_symbols(). fstrings refered by static symbols and pinned dynamic symbols are registerd by rb_gc_register_mark_object(). frstring refered by dynamic symbols (not pinned symbols) are refered from global_symbols.dsymbol_fstr_hash (Hash object). Note that fstrings refered from dynamic symbols must live loger than symbol objects themselves because rb_gc_free_dsymbol() uses fstring to remove from symbol tables. This is why we can not mark fstrings from dynamic symbols. This technique reduces root objects for GC marking. * gc.c (gc_mark_roots): ditto. * internal.h: ditto.
9412551ee298619d827f892baad58c6a7687f017 2014-07-11 * benchmark/prepare_so_k_nucleotide.rb: use require_relative. * benchmark/prepare_so_reverse_complement.rb: ditto.
88722e6a5dc9881e7d4a54e4cd90f5b4ebbb609c 2014-07-16 * gc.c (gc_mark_roots): call rb_vm_mark directly. * vm.c: remove mark function for RubyVM object because RubyVM object marked manually.
20a9bd67636a82ca83c5cef4755a8206dc34eca7 2014-07-16 * iseq.c (rb_iseq_defined_string): use rb_gc_mark_object() instead of marking from vm_mark(). * vm.c (rb_vm_mark): ditto.
01dc0a7104d09f59e5c94e286adcac7c04574eab 2014-07-16 * vm_core.h: remove rb_vm_t::trap_list[RUBY_NSIG], but add rb_vm_t::trap_list_cmds (an array) and rb_vm_t::trap_list_safes[RUBY_NSIG] (separate to two different array). This modification reduce root objects. * signal.c: ditto. * vm.c (rb_vm_mark): remove marking code for rb_vm_t::trap_list.
239c98553dfe22ed77bb89e3b2c744eb279d9116 2014-07-16 revert r46834 because it does not pass tests
c90cd20cc42d3c4dcf0fb8610df42f517d074e4b 2014-07-24 * gc.c: fix major GC flags. * add GPR_FLAG_MAJOR_BY_FORCE, which indicates major GC by METHOD, CAPI and so on (see GC_BY). * remove GPR_FLAG_MAJOR_BY_RESCAN because not used. * remove GPR_FLAG_MAJOR_BY_STRESS, use FORCE instead. * test/ruby/test_gc.rb: catch up.
009bf7be44eb7f9019de23125a9238831ce90a82 2014-07-25 * gc.c (gc_mark_stacked_objects): fix error message.
61a28934578f067f36f632f5a386366143798a69 2014-07-25 * gc.c (rb_gc_writebarrier_remember_promoted): should remember only OLD objects on RGENGC_AGE2_PROMOTION.
41929aa6b60dd975bbb162a7d0a3cde11e2de6a8 2014-07-25 * gc.c: change objspace::rgengc::parent_object_is_old (boolean) to objspace::rgengc::parent_object (VALUE). Use Qfalse or RVALUE pointer instead of FALSE and TRUE. * gc.c (gc_marks_body): should clear parent_object just before gc_mark_roots() because there are no parents objects for root objects.
2cb8ee942c7951ac552ab03176f827cbcf6aace3 2014-07-30 * gc.c: remove unused macros.
b5e89e44f12a6e3a42e9515d1d3705d11f9442bf 2014-08-15 * array.c (rb_ary_tmp_new): added. This function creates internal use only array (which is completely hided by ObjectSpace.each_object) with filling nil. Otherwise, it can be incldues strange VALUEs. * internal.h: added. * node.h: use rb_ary_tmp_new_fill() for MEMO.
6f7366c2064eb42231500e17ee3b3e5d55701f3f 2014-08-15 * string.c (setup_fake_str): fake strings should not set class by RBASIC_SET_CLASS() because it insert write barriers to fake (non-RVALUE) structure. It can cause unexpected behaviour. Ruby 2.1 also have a same problem (setup_fake_str() in parse.y). * symbol.c (setup_fake_str): ditto.
3e759ed78d99193260ddda9b8dd80bc5710509fc 2014-08-15 * iseq.c (rb_iseq_clone): Should not insert write barrier from non-RVALUE data (to non-RVALUE data, of course). Ruby 2.1 also has a same problem.
32dcb81d5851035de6b47ccfd760ee5b78f58d93 2014-08-22 * string.c (rb_fstring, fstr_update_callback): simply delete garbage key first. Garbage keys can be swept by lazy sweeping invoked by creating new fstring. So that simply do: (1) delete garbage key and return `fstr_update_callback' immediately (2) try again `fstr_update_callback()' to create a new fstr. This bug can be cause memory corruption, reported by http://u64.rubyci.org/~chkbuild/ruby-trunk/log/20140821T220302Z.fail.html.gz
7bfaa467ce944bf9efbff2299865b5f4755473b3 2014-08-22 * string.c (rb_fstring): fix condition (easy to cause infinite loop!).
68f55c4b35a70f97c8d7ea6fde91f56a94d74f49 2014-09-04 * dir.c (glob_helper): use #ifdef instead of #if. gcc's -Wundef option shows warning for undefined macro. * numeric.c (flo_is_finite_p): ditto. * vm_dump.c (rb_vmdebug_thread_dump_state): ditto. * vm_core.h: define VM_DEBUG_VERIFY_METHOD_CACHE to 0.
123eeb1c1a904923754ce65148dbef045b56e083 2014-09-08 * gc.c: add incremental GC algorithm. [Feature #10137] Please refer this ticket for details. This change also introduces the following changes. * Remove RGENGC_AGE2_PROMOTION and introduce object age (0 to 3). Age can be count with FL_PROMOTE0 and FL_PROMOTE1 flags in RBasic::flags (2 bit). Age == 3 objects become old objects. * WB_PROTECTED flag in RBasic to WB_UNPROTECTED bitmap. * LONG_LIVED bitmap to represent living objects while minor GCs It specifies (1) Old objects and (2) remembered shady objects. * Introduce rb_objspace_t::marked_objects which counts marked objects in current marking phase. marking count is needed to introduce incremental marking. * rename mark related function and sweep related function to gc_(marks|sweep)_(start|finish|step|rest|continue). * rename rgengc_report() to gc_report(). * Add obj_info() function to get cstr of object details. * Add MEASURE_LINE() macro to measure execution time of specific line. * and many small fixes. * include/ruby/ruby.h: add flag USE_RINCGC. Now USE_RINCGC can be set only with USE_RGENGC. * include/ruby/ruby.h: introduce FL_PROMOTED0 and add FL_PROMOTED1 to count object age. * include/ruby/ruby.h: rewrite write barriers for incremental marking. * debug.c: catch up flag name changes. * internal.h: add rb_gc_writebarrier_remember() instead of rb_gc_writebarrier_remember_promoted(). * array.c (ary_memcpy0): use rb_gc_writebarrier_remember(). * array.c (rb_ary_modify): ditto. * hash.c (rb_hash_keys): ditto. * hash.c (rb_hash_values): ditto. * object.c (init_copy): use rb_copy_wb_protected_attribute() because FL_WB_PROTECTED is moved from RBasic::flags. * test/objspace/test_objspace.rb: catch up ObjectSpace.dump() changes.
628dac10d38e46341cf3f76361c130c45123f4b1 2014-09-08 * benchmark/bm_app_lc_fizzbuzz.rb: added. This program is described closely in "Understanding Computation" chapter 6 by Tom Stuart. <http://computationbook.com/> Japanese translation will be published soon. <http://www.oreilly.co.jp/books/9784873116976/>
f5ac3ea6e7c75d744fcb8222675ff76f960a423a 2014-09-08 * benchmark/bm_app_lc_fizzbuzz.rb: `answer.to_a' does not return a string, but an array.
2a0cca3c89f55912e7baea5137f550617e505c68 2014-09-08 * benchmark/bm_app_lc_fizzbuzz.rb: should skip output on benchmark.
dba3498944ff5533d8a5273e8317c8af779d6fdf 2014-09-09 * test/ruby/test_object.rb: extend timeout.
c5e13c3270dc26d59682fea7b2aac7c25daf1f97 2014-09-09 * gc.c: pack boolean values into rb_objspace_t::flags with bit fields to improve cache locality.
71990d0ed1735fb73627fe3286801fcf62c4a24e 2014-09-09 * gc.c (gc_sweep_rest): remove wrong modification of during_gc flag.
335ca560deb729bee3ab049af1bc7cedae3a869d 2014-09-09 * gc.c: rename gc_stat entries and check stat transition.
0c391a55d3ed4637e17462d9b9b8aa21e64e2340 2014-09-09 * gc.c: remvoe ruby_disable_gc_stress and add ruby_disable_gc to speed-up newobj_of(). * gc.c (ready_to_gc): check ruby_disable_gc. * signal.c: use ruby_disable_gc.
ddac04d2c279c9bf86d00157240f316a7f0bb34d 2014-09-09 * gc.c: add rb_objspace_t::flags::gc_stressfull and ruby_gc_stressfull macro. Rename objspace->gc_stress to objspace->gc_stress_mode. If objspace->gc_stress_mode is true (!nil and !false) then ruby_gc_stressfull becomes TRUE. ruby_gc_stressfull will speedup newobj_of() slightly. * gc.c: initialize ruby_gc_stress(full|_mode) by gc_params.gc_stress even if ENABLE_VM_OBJSPACE is false.
3238a4a729e39315168e126ae4c562cc203dad89 2014-09-09 * gc.c: move rb_objspace_t::flags::gc_stressfull after during_gc to make accesssing both parameters easy. * gc.c (heap_get_freeobj): add LIKELY() hint. * gc.c (heap_get_freeobj_from_next_freepage): ditto. * gc.c (newobj_of): check both parameters at once for exceptional case.
15e4903cbab45f84a0b13c8092652b9584a77864 2014-09-09 * gc.c: fix layout of rb_objsapce_t to improve cache locality. newobj_of() accesses: (1) rb_objspace_t::flags (2) rb_objspace_t::eden_heap::freelist (3) and rb_objspace_t::eden_heap::free_pages if freelist is NULL.
886e27995bd86327344e08314dc295182cf95a78 2014-09-09 * gc.c: continue layout changing. newobj_of() also touch: (4) increment total_allocated_object_num (5) check hook_events And gather fields related to marking phase.
8ee9071cbe0a3a51af11127f9e336e68758c1bc9 2014-09-09 * gc.c (rb_objspace_t::heap_pages): rename field names: * used -> allocated_pages * increment -> allocatable_pages * length -> sorted_length And remove unused `limt' field. * gc.c: rename macros: * heap_pages_used -> heap_allocated_pages * heap_pages_length -> heap_pages_sorted_length * heap_pages_increment -> heap_allocatable_pages * gc.c (gc_stat_internal): fix symbol names ref: [Feature #9924] https://docs.google.com/spreadsheets/d/11Ua4uBr6o0k-nORrZLEIIUkHJ9JRzRR0NyZfrhEEnc8/edit?usp=sharing Yellow color fields in this table are changed. * test/ruby/test_gc.rb: catch up this change.
727497607caa9aebbde51fb9b6d6892aba605e80 2014-09-09 * gc.c (gc_stat_internal): fix symbol names * heap_final_slot -> heap_final_slots * heap_swept_slot -> heap_swept_slots
97fef1cdfbdfb654bf39ec14e556cc792c75b750 2014-09-09 * gc.c: rename * total_allocated_object_num -> total_allocated_objects * total_allocated_object_num_at_gc_start -> total_allocated_objects_at_gc_start * total_freed_object_num -> total_freed_objects * gc.c (gc_stat_internal): * rename total_allocated_object -> total_allocated_objects * rename total_freed_object -> total_freed_objects
9b6bc26f878d96a25d4721396296266a22b2c05f 2014-09-09 * gc.c: rename rb_objspace_t::marked_objects to marked_slots. * gc.c (gc_marks_start): should be clear first. * gc.c (gc_marks_start): remembered shady objects are also marked. * gc.c (gc_stat_internal): add heap_marked_slots.
6b4a7aa2a6e1f9ac0ff1d84a7e22238e401f5606 2014-09-09 * gc.c: refactoring for RGENGC_PROFILE > 0. * rename rb_objspace_t::profile::..._count to rb_objspace_t::profile::total_..._count * rename promote_infant_types to promote_types * gc.c (gc_remember_unprotected): count remembered shady objects here.
6c6254274fdd37d0542b3a63654a2aacab69a73a 2014-09-10 * gc.c (objspace_total_slot): rename objspace_available_slots. * gc.c (objspace_live_slot, objspace_free_slot): rename ..._slot() to ..._slots(). * gc.c (objspace_free_slot): should subtract heap_pages_final_slots. * gc.c (gc_stat_internal): * add `heap_available_slots' field * rename heap_live_slot to heap_live_slots * rename heap_free_slot to heap_free_slots ref: [Feature #9924]
83f02b98b14afe116c12f2f90ca9565418c8ed05 2014-09-10 * test/ruby/test_gc.rb: catch up last fix.
2d581d6c2a7d93965b6e4679bb4b8a867feef7d8 2014-09-10 * gc.c (gc_stat_internal): support: * total_allocated_pages * total_freed_pages ref: [Feature #9924]
6b398398b90aa5adc9f18fd206b9f6f31af8a653 2014-09-10 * gc.c (gc_stat_internal): rename: * remembered_shady_object -> remembered_wb_unprotected_objects * remembered_shady_object_limit -> remembered_wb_unprotected_objects_limit * old_object -> old_objects * old_object_limit -> old_objects_limit ref: [Feature #9924]
ed729d398699aadb60ac79e19c276d4854083530 2014-09-10 * gc.c (gc_stat_internal): rename `heap_used' to `heap_allocated_pages'. ref: [Feature #9924] * test/ruby/test_gc.rb: add constraints test for gc stat information.
52c41f1e8f2d64f6435a2c6d9521c7973bd4500d 2014-09-10 * gc.c (gc_stat_internal): rename: * malloc_increase -> malloc_increase_bytes * malloc_limit -> malloc_increase_bytes_limit * oldmalloc_increase -> oldmalloc_increase_bytes * oldmalloc_limit -> oldmalloc_increase_bytes_limit ref: [Feature #9924]
c1b05c53b795fdb1137819bc2973d591af2712d0 2014-09-10 * gc.c (gc_stat): update rdoc.
cf692592dcb0dcafe460eb8bf4b21851ccea9721 2014-09-10 * test/ruby/test_gc.rb: fix condition.
6f7eda7b304388e640ec3164562ac5515364f84e 2014-09-10 * compile.c (rb_vm_addr2insn): rename to rb_vm_insn_addr2insn to clear what address.
cc3088ea519efa279e4aa71fb994328a9080483f 2014-09-11 * include/ruby/ruby.h: freeze nil/true/false. * gc.c (should_be_finalizable): check frozen after checkin FL_ABLE. * object.c (rb_obj_taint): check OBJ_TAINTABLE(obj). * object.c (rb_obj_freeze): remove immediate_frozen_tbl because all of immediate values are frozen. YAY! * object.c (rb_obj_frozen_p): ditto. * test/ruby/test_eval.rb: skip instance_variable_set for frozen objects. * test/ruby/test_weakmap.rb: check ArgumentError instead of RuntimeError.
8e3c057de880effb179d5c0aeb59e1d4c489eb09 2014-09-11 add reference to the ticket.
970d8cb6136837b78787c1d1744db5fca1348968 2014-09-11 * include/ruby/ruby.h, gc.c: add new internal events RUBY_INTERNAL_EVENT_GC_ENTER and RUBY_INTERNAL_EVENT_GC_EXIT. When invoking GC process, GC_ENTER event is called. When exiting from GC process, GC_EXIT event is called. Incremental GC (incremental marking and lazy sweep) can call these events many times. For example (minor marking): (1) GC_ENTER - (2) GC_START (minor GC) (minor marking) - (3) GC_END_MARK (start lazy sweep) (4) GC_EXIT (ruby process) (5) GC_ENTER (lazy sweep) (6) GC_EXIT (ruby process) (... repeat (5), (6)) (7) GC_ENTER (finish lazy sweep) - (8) GC_END_SWEEP (9) GC_EXIT 2nd example (incremental major marking): (1) GC_ENTER - (2) GC_START (minor GC) (start incremental marking) (3) GC_EXIT (ruby process) (4) GC_ENTER (incremental marking) (5) GC_EXIT (ruby process) (... repeat (4), (5)) (6) GC_ENTER (finish incremental marking) - (7) GC_END_MARK (start lazy sweep) (8) GC_EXIT (ruby process) (9) GC_ENTER (lazy sweep) (10) GC_EXIT (ruby process) (... repeat (9), (10)) (11) GC_ENTER (finish lazy marking) - (12) GC_STOP_SWEEP (13) GC_EXIT Thease internal events enable to measure GC pause time completely.
51101947bb964dde5808a8a9bd8b67879498f58f 2014-09-11 * gc.c (gc_mark_ptr): rename to gc_mark_set. * gc.c (gc_mark): add gc_mark_ptr() to skip is_markable_object() check. gc_mark_maybe() can use gc_mark_ptr() directly because passed pointer is checked by is_pointer_to_heap().
c653db51b0b32bea9a8469dbc236538b011cc0b1 2014-09-11 * gc.c (rb_gc_mark_values): added. This function is similar to rb_gc_mark_locations(), but not conservertive. * internal.h: ditto. * vm.c (env_mark): use rb_gc_mark_values() because env values should be Ruby VALUEs.
8c6c9c46d8aecccfa66e9e34a76e7768025671b1 2014-09-11 * vm.c (rb_vm_register_special_exception): make new function to make and register special exceptions. * vm.c (rb_vm_mark): do not need to mark special exceptions because they are registerd by rb_gc_register_mark_object(). * eval.c (Init_eval): use rb_vm_register_special_exception(). * gc.c (Init_GC): ditto. * proc.c (Init_Proc): ditto. * thread.c (Init_Thread): ditto.
e45fb73d7bc80b0f41b938279884bb4ea03c192e 2014-09-11 * vm.c (rb_thread_mark): use rb_gc_mark_values() to mark VM stack.
45246bc04daee213dbfa47a576d631a8a9b037f6 2014-09-11 update NEWS for new GC related features.
7b5b3eb3afa35ff0a57e963e57d7f1f7b1c6e837 2014-09-11 update NEWS for frozen nil/true/false.
c566990f0214bae62c10fdde9de5dfd58c7e35c1 2014-09-11 add revision number.
3edcd548f73846a98cb1a33057fa0019d4ef5cc0 2014-10-27 * gc.c: is_incremental_marking(), will_be_incremental_marking(): use `&&' with GC_ENABLE_INCREMENTAL_MARK intead of using #if/#else/#endif.
ed8da2d12ae041b0536d3303659dc98411c2ec4f 2014-10-27 * test/ruby/test_super.rb: add a test to check block passing.
90373dadfb1111420464d1c6fb80e83cdffe901d 2014-11-02 * gc.c (obj_info): show T_STRING more details.
16377c36b9ca280407d80948fbc904ed15179441 2014-11-02 * sample/simple-bench.rb: added to measure performance of simple lines.
fbebd502f9f374d1eef31c63c10c7d8adcd63280 2014-11-02 * rewrite method/block parameter fitting logic to optimize keyword arguments/parameters and a splat argument. [Feature #10440] (Details are described in this ticket) Most of complex part is moved to vm_args.c. Now, ISeq#to_a does not catch up new instruction format. * vm_core.h: change iseq data structures. * introduce rb_call_info_kw_arg_t to represent keyword arguments. * add rb_call_info_t::kw_arg. * rename rb_iseq_t::arg_post_len to rb_iseq_t::arg_post_num. * rename rb_iseq_t::arg_keywords to arg_keyword_num. * rename rb_iseq_t::arg_keyword to rb_iseq_t::arg_keyword_bits. to represent keyword bitmap parameter index. This bitmap parameter shows that which keyword parameters are given or not given (0 for given). It is refered by `checkkeyword' instruction described bellow. * rename rb_iseq_t::arg_keyword_check to rb_iseq_t::arg_keyword_rest to represent keyword rest parameter index. * add rb_iseq_t::arg_keyword_default_values to represent default keyword values. * rename VM_CALL_ARGS_SKIP_SETUP to VM_CALL_ARGS_SIMPLE to represent (ci->flag & (SPLAT|BLOCKARG)) && ci->blockiseq == NULL && ci->kw_arg == NULL. * vm_insnhelper.c, vm_args.c: rewrite with refactoring. * rewrite splat argument code. * rewrite keyword arguments/parameters code. * merge method and block parameter fitting code into one code base. * vm.c, vm_eval.c: catch up these changes. * compile.c (new_callinfo): callinfo requires kw_arg parameter. * compile.c (compile_array_): check the last argument Hash object or not. If Hash object and all keys are Symbol literals, they are compiled to keyword arguments. * insns.def (checkkeyword): add new instruction. This instruction check the availability of corresponding keyword. For example, a method "def foo k1: 'v1'; end" is cimpiled to the following instructions. 0000 checkkeyword 2, 0 # check k1 is given. 0003 branchif 9 # if given, jump to address #9 0005 putstring "v1" 0007 setlocal_OP__WC__0 3 # k1 = 'v1' 0009 trace 8 0011 putnil 0012 trace 16 0014 leave * insns.def (opt_send_simple): removed and add new instruction "opt_send_without_block". * parse.y (new_args_tail_gen): reorder variables. Before this patch, a method "def foo(k1: 1, kr1:, k2: 2, **krest, &b)" has parameter variables "k1, kr1, k2, &b, internal_id, krest", but this patch reorders to "kr1, k1, k2, internal_id, krest, &b". (locate a block variable at last) * parse.y (vtable_pop): added. This function remove latest `n' variables from vtable. * iseq.c: catch up iseq data changes. * proc.c: ditto. * class.c (keyword_error): export as rb_keyword_error(). * common.mk: depend vm_args.c for vm.o. * hash.c (rb_hash_has_key): export. * internal.h: ditto.
5d1f152fa342f6bb5fa9b546e3971843ee81c6b1 2014-11-02 * test/ruby/test_method.rb: r48239 makes this test green.
831e33c7809a92da6d14f0e518f960034c5dabd0 2014-11-02 * vm_core.h: change iseq parameter data structure. https://bugs.ruby-lang.org/issues/10440#change-49694 * change terminology `arg' to `param'. * move rb_iseq_t::arg_* to rb_iseq_t::param. * move rb_iseq_t::arg_size to rb_iseq_t::param::size. * move rb_iseq_t::argc to rb_iseq_t::param::lead_num. * move rb_iseq_t::arg_opts to rb_iseq_t::param::opt_num. * move rb_iseq_t::arg_rest to rb_iseq_t::param::rest_start. * move rb_iseq_t::arg_post_num to rb_iseq_t::param::post_num. * move rb_iseq_t::arg_post_start to rb_iseq_t::param::post_start. * move rb_iseq_t::arg_block to rb_iseq_t::param::block_start. * move rb_iseq_t::arg_keyword* to rb_iseq_t::param::keyword. rb_iseq_t::param::keyword is allocated only when keyword parameters are available. * introduce rb_iseq_t::param::flags to represent parameter availability. For example, rb_iseq_t::param::flags::has_kw represents that this iseq has keyword parameters and rb_iseq_t::param::keyword is allocated. We don't need to compare with -1 to check availability. * remove rb_iseq_t::arg_simple. * compile.c: catch up this change. * iseq.c: ditto. * proc.c: ditto. * vm.c, vm_args.c, vm_dump.c, vm_insnhelper.c: ditto. * iseq.c (iseq_data_to_ary): support keyword argument.
ef25be739196ce019f1918736151e0daa0e93f19 2014-11-03 * vm_core.h: change semantics of opt_num and opt_table. `opt_num' was the number of optional parameters + 1. `opt_table' has "opt_num" entries. Change them to: `opt_num' is the number of optional parameters. `opt_talbe' has "opt_num + 1" entries. This change simplify parameter fitting logics. * compile.c: catch up this change. * iseq.c: ditto. * proc.c: ditto. * vm_args.c: ditto.
af97388bc40d5f0ce2e9e3c452e9849f0f1166b1 2014-11-03 * iseq.c (iseq_memsize): catch up recent changes.
86e9a1c0056bdb2f6623bb5644297fff1b4e4e70 2014-11-03 * iseq.c (iseq_free): resolve memory leak.
a11aa75662f88ead04d340330c81bf243806ad57 2014-11-09 * gc.c (is_incremental_marking): use #if/#else because rb_objspace_t::flags::during_incremental_marking is not defined when GC_ENABLE_INCREMENTAL_MARK is 0. * gc.c (will_be_incremental_marking, is_full_marking): similar fix.
495548ace4587df43d30b021cfa6b2f84c9d9d44 2014-11-11 * string.c (sym_equal): use rb_obj_equal(). rb_obj_equal() is specially optimized in opt_eq_func()@vm_insnhelper.c. This fix is made from this discussion: https://www.omniref.com/ruby/2.1.4/symbols/Symbol/%3D%3D#line=8361.
b887f4fb45e091eb644313699192fff538a92934 2014-11-13 * gc.c: Tuning RincGC parameters. Before this patch, gc_marks_step() marks (white -> grey) fixed number objects. However, this strategy does not fit practical cases, for example too slow to make progres. This patch changes this strategy how many objects the gc_marks_step() should handle. We can estimate how many times gc_marks_step() is called during this major marking (== C) with the free slot number in pooled pages. We also can estimate the living object number (== L) using last marked_slots value. We can solve this problem (how many objects should be process in gc_marks_step()) by L/C. * gc.c (rb_objspace_t): add rb_objspace_t::rincgc::pooled_sltos and step_slots.
97c2eac2dfe48dcaddb7454035b5cec005976246 2014-11-13 * gc.c: refactoring. * gc.c: use GC_ENABLE_INCREMENTAL_MARK instead of USE_RINCGC. * gc.c (gc_start): check FORCE_MAJOR_GC.
4314ded83616c601de604f9b931251695d0bf087 2014-11-14 * gc.c: guard by #if/#endif with GC_ENABLE_INCREMENTAL_MARK to hide unused codes. * gc.c: similar to GC_ENABLE_LAZY_SWEEP.
5d5c95f28e9f40bbe867ce05feaa351d76fd53dd 2014-11-14 * gc.c (gc_stat_internal): add compatible layer. From Ruby 2.2, keys of GC.stat are changed [Feature #9924]. To provide compatible layer, GC.stat add a default_proc (if default_proc of given Hash object is not set). At first use of this compatible layer of interpreter process, show a warning message like that: program: GC.stat[:total_allocated_object] warning message: "warning: GC.stat keys were changed from Ruby 2.1. In this case, you refer to obsolete `total_allocated_object' (new key is `total_allocated_objects'). Please check <https://bugs.ruby-lang.org/issues/9924> for more information." Pleaes correct my English message :) * hash.c (rb_hash_set_default_proc): export (in internal). * internal.h: ditto.
a84b2a6afd1557829cd30843e0bee27e960adbe8 2014-11-14 * gc.c (gc_stat_internal): support comatible layer for GC.stat(symbol) type acess.
43a5972a3e85c6a5f5eed0cc5bb833d4ec9dfe24 2014-11-18 * gc.c (gc_record): add information for debug print.
d95aae32ce582b2116169836c8ac6fac7f9abe02 2014-11-25 * NEWS: add an "Implementation changes" section.
f0071d3b311ab5af39a83481ce2363cbe4aab1b2 2014-11-26 * compile.c (iseq_set_sequence): use "nop" insn instead of "jump to next insn". https://bugs.ruby-lang.org/issues/8543#change-50085
42a15516c05609dd2fc5a8c5863e453444c24761 2014-11-26 * test/ruby/test_gc.rb (test_latest_gc_info): do test separately to avoid mysterious behavior.
9c6deac2d1ea29002f4af33b9c1c15aa2d4c34b7 2014-11-27 * vm_core.h: add rb_thread_t::local_storage_recursive_hash to speed up Thread#[:__recursive_key__] access. [Bug #10511] * thread.c (threadptr_local_aref): add fast path for :__recursive_data__. * thread.c (threadptr_recursive_hash, threadptr_recursive_hash_set): add special accessor for recursive hash. * cont.c: store/restore local_storage_recursive_hash. * vm.c: init and mark local_storage_recursive_hash. * vm_trace.c (rb_threadptr_exec_event_hooks_orig): clear and restore local_storage_recursive_hash directly.
3a26241da3aec3d20dfc408a32de1c539455c89b 2014-11-27 * gc.c (objspace_malloc_increase): enable lazy sweep on GC by malloc() (malloc_increase) to make GC incrementally. This change can increase memory consumption. Report us if you find any problem.
6115f65d7dd29561710c3e84bb27180e5bab4380 2014-11-27 * vm_args.c: fix backtrace location for keyword related exceptions. For example, the following program def foo(k1: 1); end # line 1 foo(k2: 2) # line 2 causes "unknown keyword: k2 (ArgumentError)". Before this patch, the backtrace location is only line 2. However, error should be located at line 1 (over line 2 in stack trace). This patch fix this problem. * class.c (rb_keyword_error_new): separate exception creation logic from rb_keyword_error(), to use in vm_args.c. * vm_insnhelper.c (rb_arg_error_new): rename to rb_arity_error_new(). * vm_args.c (argument_arity_error): rename to argument_arity_error(). * vm_args.c (arugment_kw_error): added to fix backtrace. * test/ruby/test_keyword.rb: add tests.
ea290804891b259cce4a156790ba024c1d52ad27 2014-11-27 * compile.c (iseq_compile_each): remove duplicated line event. [Bug #10449] * test/ruby/test_settracefunc.rb: add and fix tests.
1de3e801c40e5a0121198ae08cd5b32dd92a42a2 2014-12-10 * vm_core.h: introduce new field rb_thread_t::local_storage_recursive_hash_for_trace to store recursive hash to avoid creating new recursive (nested) hashes for each trace events. [Bug #10511] * vm_trace.c (rb_threadptr_exec_event_hooks_orig): use it. * cont.c: catch up this fix. * vm.c (rb_thread_mark): ditto.
1b6aa03eb91c13a78d6a13158f04a5930fc9c3ef 2014-12-11 * class.c (class_alloc): Strat from age == 2. Class and Module objects can be living long life. * iseq.c: Same for ISeq objects. * gc.c (RVALUE_AGE_RESET): added. * gc.c (newobj_of): allow to generate (age != 0) objects. * gc.c (rb_copy_wb_protected_attribute): reset age for wb unprotected objects. * include/ruby/ruby.h: add RUBY_TYPED_PROMOTED1 as an unrecommended flag.
37b6f50ae51edf5793eb9f5d6a22b60cc8256dba 2014-12-12 * gc.c (gc_latest_gc_info): return :state field to show current GC state (none/marking/sweeping). [Feature #10590]
85b42fe17b67688143e26f72b47aad766744ac3a 2014-12-15 * ext/objspace/objspace.c: ObjectSpace.memsize_of(obj) returns with sizeof(RVALUE). [Bug #8984] * gc.c (obj_memsize_of): ditto. * NEWS: add a NEWS entry. * test/objspace/test_objspace.rb: catch up this fix. * test/ruby/test_file_exhaustive.rb: ditto.
97877237857a9603c13fcb867656af095436b950 2014-12-16 * test/ruby/test_process.rb (test_deadlock_by_signal_at_forking): extend timeout seconds to 60 for RGENGC_CHECK_MODE > 0 environment.
6eac885ebef2b5189bb68acadcba0530bcc4bfb1 2014-12-17 * compile.c (iseq_compile_each): check iseq->compile_data->option->specialized_instruction for opt_* insn. * test/ruby/test_iseq.rb: check no specialized_instructions option.
9c6eaad72372576a3d351bc6044e74814718c137 2014-12-24 * hash.c (rb_hash_delete): return Qnil if there are no corresponding entry. [Bug #10623] * hash.c (rb_hash_delete_entry): try delete and return Qundef if there are no corresponding entry. * internal.h: add rb_hash_delete_entry()'s declaration. * symbol.c: use rb_hash_delete_entry(). * thread.c: use rb_hash_delete_entry(). * ext/-test-/hash/delete.c: use rb_hash_delete_entry().
5d77730f69889d7357dc7235728c2d4db3721c80 2014-12-24 * gc.c: remove unused rb_objspace_t::rgengc::old_objects_at_gc_start.
37360f82aa3e41eed4497a945dbc80a81423aacf 2015-01-05 * test/fiddle/test_handle.rb: fix syntax.
c7124d811fbfcbc02a7d1e5cf0d79cb62de73016 2015-01-16 vm.c, vm_core.h: constify VM_CF_LEP, VM_CF_PREV_EP, VM_CF_BLOCK_PTR and rb_vm_control_frame_block_ptr.
513fefdd1f0feb68fe4bd9a233dd1cbfeb7390ba 2015-02-22 * gc.c (rb_objspace_call_finalizer): control GC execution during force firnalizations at the end of interpreter process. [Bug #10768] 1) Prohibit incremental GC while running Ruby-level finalizers to avoid any danger. 2) Prohibit GC while invoking T_DATA/T_FILE data structure because these operations break object relations consistency. This patch can introduce another memory consuming issue because Ruby-level finalizers can run after (2), GC is disabled. However, basically object consistency was broken at (2) as I described above. So that running Ruby-level finalizers contains danger originally. Because of this point, I need to suggest to remove these 3 lines (invoking remaining finalizers). And add a rule to add that finalizers should not add new finalizers, or say there is no guarantee to invoke finalizers that added by another finalizer.
fbc8841a8ff3ec72b640904f2a46166c46e4caec 2015-02-24 * vm_insnhelper.c (lep_svar_place, lep_svar_get): do not create additional T_NODE object (svars holder) when only getting svars.
ca6b174078fa15f33655be704d9409fdbc4f9929 2015-02-27 * vm_core.h: define vm_svar_index. * vm_insnhelper.c, vm.c, compile.c: use vm_svar_index names. * iseq.h: remove DEFAULT_SPECIAL_VAR_COUNT. use VM_SVAR_FLIPFLOP_START instead.
8f88ff4e37a5374e49025076905c57941379336a 2015-03-05 * internal.h: remove struct method_table_wrapper. struct method_table_wrapper was introduced to avoid duplicate marking for method tables. For example, `module M1; def foo; end; end` make one method table (mtbl) contains a method `foo`. M1 (T_MODULE) points mtbl. Classes C1 and C2 includes M1, then two T_ICLASS objects are created and they points mtbl too. In this case, three objects (one T_MODULE and two T_ICLASS objects) points same mtbl. On marking phase, these three objects mark same mtbl. To avoid such duplication, struct method_table_wrapper was introduced. However, created two T_ICLASS objects have same or shorter lifetime than M1 (T_MODULE) object. So that we only need to mark mtbl from M1, not from T_ICLASS objects. This patch tries marking only from M1. Note that one `Module#prepend` call creates two T_ICLASS objects. One for refering to a prepending Module object, same as `Module#include`. We don't nedd to care this T_ICLASS. One for moving original mtbl from a prepending class. We need to mark such mtbl from this T_ICLASS object. To mark the mtbl, we need to use `RCLASS_ORIGIN(klass)` on marking from a prepended class `klass`. * class.c: ditto. * eval.c (rb_using_refinement): ditto. * gc.c: ditto. * include/ruby/ruby.h: define m_tbl directly. The definition of struct RClass should be moved to (srcdir)/internal.h. * method.h: remove decl of rb_free_m_tbl_wrapper(). * object.c: use RCLASS_M_TBL() directly.
b4d1c024de88e305f761fcbe8e9e35a5ce60ceb6 2015-03-05 add Changelog
01c6f504959e180c769f1adc35a3f69161868ee3 2015-03-05 * gc.c (obj_info): show node name too.
4bb910816e98c5b059f263ab65ff8076349be9c2 2015-03-06 * test/ruby/test_beginendblock.rb: do not change directory. Run system command in the directory mounted by vboxfs on Windows 7 and get warning like that "warning: Insecure world writable dir...".
3859d767e11c09b2a824172af86204939e1a5c98 2015-03-06 * test/webrick/test_filehandler.rb: on vboxsf (on VirtualBox on Windows 7), file name and permissions are strange (can access by short file name and so on). Simply skip on such tests on such FS. To detect strange FS, this patch use a part of code `File.executable?(__FILE__)`. Please correct them if there are better ways.
d84f9b16946bca06ce0557ebe99152d7d445c9ec 2015-03-06 * fix namespace issue on singleton class expressions. [Bug #10943] * vm_core.h, method.h: remove rb_iseq_t::cref_stack. CREF is stored to rb_method_definition_t::body.iseq_body.cref. * vm_insnhelper.c: modify SVAR usage. When calling ISEQ type method, push CREF information onto method frame, SVAR located place. Before this fix, SVAR is simply nil. After this patch, CREF (or NULL == Qfalse for not iseq methods) is stored at the method invocation. When SVAR is requierd, then put NODE_IF onto SVAR location, and NDOE_IF::nd_reserved points CREF itself. * vm.c (vm_cref_new, vm_cref_dump, vm_cref_new_toplevel): added. * vm_insnhelper.c (vm_push_frame): accept CREF. * method.h, vm_method.c (rb_add_method_iseq): added. This function accepts iseq and CREF. * class.c (clone_method): use rb_add_method_iseq(). * gc.c (mark_method_entry): mark method_entry::body.iseq_body.cref. * iseq.c: remove CREF related codes. * insns.def (getinlinecache/setinlinecache): CREF should be cache key because a different CREF has a different namespace. * node.c (rb_gc_mark_node): mark NODE_IF::nd_reserved for SVAR. * proc.c: catch up changes. * struct.c: ditto. * insns.def: ditto. * vm_args.c (raise_argument_error): ditto. * vm_eval.c: ditto. * test/ruby/test_class.rb: add a test.
9113098e654b6601a86f60a91f7b2b61de1d3a3f 2015-03-06 * class.c (rb_prepend_module): need a WB for klass -> origin.
ae166317a4cceeaa195760f675f89a4afec0feee 2015-03-08 * internal.h: define CREF accessor macros. * CREF_CLASS(cref) * CREF_NEXT(cref) * CREF_VISI(cref) * CREF_VISI_SET(cref, v) * CREF_REFINEMENTS(cref) * CREF_PUSHED_BY_EVAL(cref) * CREF_PUSHED_BY_EVAL_SET(cref) * CREF_OMOD_SHARED(cref) * CREF_OMOD_SHARED_SET(cref) * CREF_OMOD_SHARED_UNSET(cref) This is process to change CREF data type from NODE.
2324c14d00c301467ac9a3a5fc95d812109e116f 2015-03-08 * vm_insnhelper.h (COPY_CREF_OMOD): fix translation miss.
8dced4d2c0f284bd17a3cb4a4fbed6d459cc71e0 2015-03-08 * internal.h: define rb_cref_t and change to use it. rb_cref_t is data type of CREF. Now, the body is still NODE. It is easy to understand what is CREF and what is pure NODE.
2262aba6a282aaad0ac7fedee9101e7927c48a4b 2015-03-08 * vm_insnhelper.c (lep_svar_set): add WBs.
5856347f16368783a1d9d6691e3d5e125f720897 2015-03-08 * vm_insnhelper.h: define struct SVAR for SVAR. This data type is also same layout of NODE (NODE_IF). * vm_insnhelper.c: catch up this change.
c5c5e96643fd674cc44bf6c4f6edd965aa317c9e 2015-03-09 * vm_insnhelper.c (ep_cref): rename to lep_cref() because it should be local ep.
04e348e61ad5cfde94311b38c9b4f8581e205c0d 2015-03-10 * thread.c (thread_join): Fixnum (except TAG_FATAL) and NODE should not be reached here.
46cdb8f18766383a9e11b5a6e9a0c010e7e8653a 2015-03-10 * vm_insnhelper.h: define struct THROW_DATA to represent throwing data. Also define accessor functions. * eval_intern.h: move related changes into vm_insnhelper.h. Now these MACROs (functions) are only used in vm*.c. There is only THROW_DATA_P(err) to check this data type or not. * vm.c: catch up these changes. * vm_eval.c: ditto. * vm_insnhelper.c: ditto.
ed130faf2878c383cab52fa5ed887837e04f303d 2015-03-10 * proc.c: use RUBY_VM_IFUNC_P() to recognize IFUNC or not. * vm.c: ditto. * vm_dump.c: ditto. * vm_insnhelper.c: ditto. * vm_core.h: use RB_TYPE_P() instead of BUILTIN_TYPE().
e2c50946986bd9ba29d21ecef9bd32831e760f4b 2015-03-10 * eval_intern.h (THROW_DATA_P): use RB_TYPE_P() instead of BUILTIN_TYPE(). * thread.c (thread_join): use THROW_DATA_P().
b8fa8865ee9e76b83cdd64d54d563ca3ef648831 2015-03-10 * vm_insnhelper.h: define struct IFUNC. * vm_eval.c (rb_iterate): use it. * vm_insnhelper.c (vm_yield_with_cfunc): ditto.
a74fe7546d0583d0b8e0f0dbc6ee19758888ad4a 2015-03-10 * vm_eval.c (rb_catch_protect): use THROW_DATA_VAL().
9f21759c53934597aa2db6a68fffc2edd662b3ed 2015-03-10 * vm_insnhelper.h (THROW_DATA_STATE): return int, not VALUE. * vm_insnhelper.h (THROW_DATA_STATE_SET): accept int value.
97e21517a3c79b9b144b7160afd545c283815413 2015-03-11 * internal.h: define struct MEMO. * enum.c: use MEMO. * enumerator.c: ditto. * load.c: ditto. * node.h: return (struct MEMO *) pointer.
5922c954614e5947a548780bb3b894626affe6dd 2015-03-11 * gc.c: fix memory leak by prepend method. It is easy to reproduce with such script: module M; def bar; end; end loop{ Class.new do def foo; end prepend M end } * gc.c (obj_free): free T_ICLASS::m_tbl if it is created by prepend. To recognize it, check RICLASS_IS_ORIGIN flag. * gc.c (gc_mark_children): T_ICLASS objects only need to mark T_ICLASS::m_tbl if RICLASS_IS_ORIGIN is set. * gc.c (obj_memsize_of): count T_ICLASS if RICLASS_IS_ORIGIN is set. * internal.h (RCLASS_SET_ORIGIN): add to set RCLASS_SET_ORIGIN. TODO: The word `origin' seems not good name. We need to invent another good name. * class.c: use RCLASS_SET_ORIGIN(). * class.c (class_alloc): zero clear rb_classext_t.
0952b43b9be23688702368f6fcae3fde2dd69fb5 2015-03-11 * include/ruby/ruby.h: introduce new type T_IMEMO. T_IMEMO is Internal Memo type, internal use only. T_IMEMO has same purpose of NODE_MEMO. To insert T_IMEMO, type numbers are modified a little. * internal.h: define struct RIMemo. Each RIMemo objects has imemo_type. We can observe it by the imemo_type() function. * gc.c (rb_imemo_new): added. * node.h: remove NODE_CREF and NEW_CREF(). * node.c (rb_gc_mark_node): ditto. * vm.c (vm_cref_new): use rb_imem_new(). * vm_eval.c: ditto. * vm_eval.c (eval_string_with_cref): * vm_eval.c (rb_type_str): * vm_insnhelper.c: use RIMemo objects for CREF. * ext/objspace/objspace.c: support T_IMEMO.
734146a459564e8b6aa221d8a5d4d55c8610d557 2015-03-11 fix ChangeLog entry
ac28b985bdc2f85eada8070d40f6de9f11dab7f8 2015-03-11 * vm_insnhelper.c: use T_IMEMO to create SVAR. * internal.h, vm_insnhelper.h: move definition `struct SVAR' from vm_insnhelper.h to internal.h. And rename it to strcut vm_svar. new imemo_type imemo_svar is added. * gc.c (gc_mark_children): mark imemo_svar. * node.c (rb_gc_mark_node): remove useless marking.
ce179b3d04e0875d7cb332f5b57c9df89bb4de07 2015-03-11 * vm_insnhelper.h: use T_IMEMO to create THROW_DATA. Add THROW_DATA_NEW(). * internal.h: move defnition of `struct THROW_DATA' from vm_insnhelper.h to internal.h. Rename `THROW_DATA' to `vm_throw_data'. * eval_intern.h (THROW_DATA_P): move to internal.h. THROW_DATA is no longer T_NODE, so check T_IMEMO. * gc.c (gc_mark_children): mark THROW_DATA. * vm.c: catch up these changes. * vm_eval.c: ditto. * vm_insnhelper.c: ditto.
48cb7391190612c77375f924c1e202178f09f559 2015-03-11 * internal.h, eval_intern.h: move CREF accessors. List IMEMO supported types in internal.h.
7790f37efdd8dd42a0a43c3206f6afdd43f8e86a 2015-03-11 * node.h: remove NODE_IFUNC, NEW_IFUNC. * internal.h: use T_IMEMO for IFUNC. rename `struct IFUNC' to `struct vm_ifunc' and move the definition from vm_insnhelper.h. Add imemo_ifunc. * gc.c (gc_mark_children): mark imemo_ifunc type T_IMEMO object. * compile.c: catch up these changes. * proc.c: ditto. * vm_core.h (RUBY_VM_IFUNC_P): ditto. * vm_eval.c (rb_iterate): ditto. * vm_insnhelper.c: ditto. * ext/objspace/objspace.c: ditto.
eabfb049f44bf498597c0319d23c794f4a90248c 2015-03-11 * eval.c (frame_called_id): it should use vm_ifunc type. * eval.c (frame_func_id): ditto.
08f3cfb5859332c0f7a9a574dc64a2a002c50354 2015-03-11 * internal.h: use T_IMEMO to represent `struct MEMO' value. memo->v1 and memo->v2 is WB protected values. So use MEMO_V1/V2_SET() macros to set these values. memo->u3 is ambiguous (sometimes a VALUE, sometimes an integer value), so use gc_mark_maybe() in gc.c to mark it. Rename NEW_MEMO() to MEMO_NEW(). Move MEMO_FOR and NEW_MEMO_FOF macros from node.h. Export a rb_imemo_new() function for ext/ripper. * node.h: remove NODE_MEMO. * enum.c: catch up these change. * enumerator.c: ditto. * load.c: ditto. * ext/objspace/objspace.c (count_nodes): ditto. * gc.c (gc_mark_children): mark imemo_memo type. * parse.y (new_args_gen): use T_IMEMO. (I'm not sure it is working correctly...)
fea779829b8d1a1d0901c33ca4ffe212fa4813ee 2015-03-11 * gc.c: RGENGC_CHECK_MODE should be 0.
146a259568da5f56b3e9a7ee29451a98ab8b16b9 2015-03-11 * load.c: removed unused header file "node.h". * method.h: ditto. * symbol.c: ditto.
f61df4b0a6e1a9b707f13961d77aebffe7644c9c 2015-03-12 * common.mk: remove unused dependency.
724012a23d8274543002eb42ef71d87308481d40 2015-03-12 * internal.h, node.h: move a definition of `struct rb_global_entry' and related functions from node.h to internal.h. * variable.c: remove unused include pragma. * common.mk: remove unused dependency.
f6e9452b23e4aeb84c2c3cd12eaa10d802115fa6 2015-03-17 * benchmark/bm_vm1_gc_wb_ary(_promoted).rb: separate fastpath and slowpath for WB. Before this change bm_vm1_gc_wb_ary.rb tried to check the performance for WB slowpath (making a reference from oldobj to newobj). However, from Ruby 2.2, 3 GCs are needed to promote new objects because only 3 age objects are promted objects. To compare fastpath and slowpath, introduce new "promoted" version benchmark. bm_vm1_gc_wb_ary.rb is for fastpath and bm_vm1_gc_wb_ary_promoted.rb is for slowpath. * benchmark/bm_vm1_gc_wb_obj(_promtoed).rb: ditto.
0db407836bf7871fdee9e32357bd90c3ddaa1e11 2015-03-17 * include/ruby/ruby.h: use rb_gc_writebrrier() simply. For incremental GC, we need to get a pointer to the objspace. We can share this pointer for the following WB process. And considering icache hit ratio, prcess in the GC. * gc.c (rb_gc_writebarrier): added. * gc.c (gc_writebarrier_generational, gc_writebarrier_incremental): make them NOINLINE because inlining them into rb_gc_writebarrier() makes a prologue code of rb_gc_writebarrier() longer (storing callee save registers). This patch improve the performance of WB on micro-benchmarks. name ruby 2.1 trunk modified vm1_gc_wb_ary* 0.511 0.632 0.532 vm1_gc_wb_ary_promoted* 0.578 0.701 0.674 vm1_gc_wb_obj* 0.419 0.575 0.492 vm1_gc_wb_obj_promoted* 0.537 0.664 0.618 (sec)
1e98a25e9fff7e4c9c858f67c9ca7c6b9ee793f8 2015-03-17 * string.c: introduce STR_FAKESTR to show string is FAKESTR or not. * string.c (STR_SET_SHARED): ignore FAKESTR because only Ruby objects can use write barrier.
89a603d2e69dfb791050ae276c565a6981f6ebbb 2015-03-18 * string.c: add a comment about RSTRING_FSTR.
683e823669caa8f42497de4dab4a173a664ee741 2015-03-18 * benchmark/bm_vm1_gc_wb_ary.rb: run GC to finish "marking" phase. * benchmark/bm_vm1_gc_wb_obj.rb: ditto. * benchmark/bm_vm1_gc_wb_ary_promoted.rb: add parameter full_mark: false to invoke only minor GC. * benchmark/bm_vm1_gc_wb_obj_promoted.rb: ditto.
3857777781e75a1638e914b8ed238a357a95aea9 2015-03-18 * gc.c (check_rvalue_consistency): do not need to check is_sweeping().
3b1e28036e318d06b5e2f4f65f709ad483aa40ec 2015-03-18 * gc.c (RVALUE_PROMOTE_RAW): rename to RVALUE_OLD_LONG_LIVED_SET() to make clear.
ec4624b0f47ee6a99036b1711bd5746cdd99da33 2015-03-18 * gc.c (gc_writebarrier_generational): add an alternative write barrier (WB) implementation. When finding reference from [Old obj] to [New obj] by WB, current implementation marks [Old obj] as remembered old objects and marks chilldren of [Old obj] at the beggining of marking. Added (but disabled) code changes current behaviour. This fix promote [New obj] to old and marks as a remembered old object. We can assume "new objects referred from old objects are maybe long-lived old objects". Disadvantage of added algorithm is we may promote unwilling short-lived objects. For example, consider many new objects push and pop to an old stack object. All of new objects (short-lived objects) promote to old objects unexpectedly. To compare these behaviour, I add this new code (but disabled it).
975c4179573ea1d3c661e7e6851ff5b104fbad06 2015-03-18 * gc.c: rename terminologies. * long_lived -> uncollectible: because this bitmap does not mean "long lived objects in past", but means "prohibit collection thse objects until next major GC". Uncollectible objects consist of two types objects, one is old objects (WB protected objects which age == 3) and another is uncollectible WB unprotected objects which are referred from old objects * remembered_wb_unprotected_objects -> uncollectible_wb_unprotected_objects: because uncollectible objects does not mean remembered objects.
92fa998ce7ae9238532f1a9447685441eecfe189 2015-03-18 * gc.c (check_rvalue_consistency): refactoring. * not inline on RGENGC_CHECK_MODE > 0. * check SPECIAL_CONST_P(obj) first. * add a check that remembered_bit is only TRUE when old (age == 3). * gc.c (RVALUE_DEMOTE): should clear RVALUE_REMEMBERED bit. remembered_bit should be TRUE only for old (age == 3) objects. Actually there are no effect because demoted objects will be uncollectible WB unprotected objects (marked at the begginig of every minor GC).
9c64155f30207cc14ea56af4a8258ad184453546 2015-03-18 * enum.c (enum_sort_by): add WBs.
33aaa89a79b4969655b1c4ee1ba52f6b22d17a4a 2015-03-18 * gc.c (RGENGC_OLD_NEWOBJ_CHECK): add check mechanism. If RGENGC_OLD_NEWOBJ_CHECK > 0, then create old objects (not new objects) periodically. Create one old objects per RGENGC_OLD_NEWOBJ_CHECK objects are created.
05704f51fb2d3e183535fa52fd43ac0b7227cdb7 2015-03-18 * internal.h (IMEMO_DEBUG): added. * internal.h: remove unused FL_IMEMO_MARK_V[0-3]. * gc.c (rb_imemo_new_debug): added. * gc.c (obj_info): show imemo type name.
4690e6228402bf045403e7d5eae9b44519c69c6b 2015-03-18 * iseq.c (iseq_mark): skip some marking if iseq->orig is available. * iseq.c (rb_iseq_clone): need WB for iseq1->klass = iseq0->klass (done in MEMCPY).
5f879f76d7e7a546fcf3ecb67de8d3cbe475b6c4 2015-03-18 * test/objspace/test_objspace.rb: flag name was changed (long_lived -> uncollectible).
6964df9a21633be9c77eba96e56f8a62db8901d1 2015-03-18 * object.c (rb_obj_clone): do not touch age (FL_PROMOTED[01]) because rb_obj_alloc() can return old object in debug.
38cfec906d1cc99a5743d66c44f3245eea90e56d 2015-03-19 * gc.c (rb_copy_wb_protected_attribute): need demote for old objects.
f537854ff33fce2723ac7ff46180a990b5b0df5d 2015-03-19 * gc.c (newobj_of): fix RGENGC_OLD_NEWOBJ_CHECK logics. * skip on incremental marking because not sure what happen :p * rb_gc_writebarrier_remember() is enough to mark children.
9546ba46052d82bcc771b173485b6e93ff7319c9 2015-03-19 * gc.c (obj_info): show allocation site if GC_DEBUG is not 0.
1643234fe3b513e03d1e4bd343fee5f9869b8b2d 2015-03-19 * gc.c, internal.h: export rb_gc_verify_internal_consistency().
531f775fd4ed171a1f297e1aa00940ce9f2a457b 2015-03-19 * gc.c (rb_copy_wb_protected_attribute): demote `dest' object.
8ed4c1a42042e66ecbafd65ed5602154c39b4e65 2015-03-19 * gc.c (rb_copy_wb_protected_attribute): `dest' can be WB unprotected.
77205540e0a1ff85b2441e3cbc3e16941fbc42a7 2015-03-20 * gc.c (obj_info): show class name and T_DATA type_name.
a38a1fbcc2e404c2ba7fc40699bd439ffdee8f61 2015-03-20 * gc.c (obj_info): obj_info() can receive internal objects. * gc.c (check_rvalue_consistency): obj_info() returns const char *.
1ab760bb51f7b51bf00ad8a6eb04a3fa5304385c 2015-03-20 revert r50031 because it includes unexpected patch
30da8b833c1cbfd4df8e008f685a522a2b1ff4c2 2015-03-20 * gc.c (obj_info): obj_info() can receive internal objects. * gc.c (check_rvalue_consistency): obj_info() returns const char *.
fce98c9e882f1ea8c4d73409e6b782701391204c 2015-03-24 * gc.c (gc_writebarrier_generational): fix messages for rb_bug(). Remove `rb_' prefix. * gc.c (gc_writebarrier_incremental): ditto.
633574eee5ed28367d868bbe6391b3e8f7bba08f 2015-04-06 * vm_args.c: protect value stack from calling other methods during complex parameter setting process (splat, kw, and so on). [Bug #11027] * vm_core.h: remove rb_thead_t::mark_stack_len. With this modification, we don't need to use th->mark_stack_len. * test/ruby/test_keyword.rb: add a test. * cont.c (cont_capture): catch up this fix. * vm.c (rb_thread_mark): ditto.
0d382f4878e176a286344fd6c8da27d0a6f91175 2015-04-08 * test/ruby/test_symbol.rb: fix syntax error.
93df5a0a906587244feff91e2bc1eecb11e31d28 2015-04-10 * vm.c (vm_exec): check other events when RETURN is thrown. [Bug #10724] * test/ruby/test_settracefunc.rb: add a test.
1a688f001c5f7ba76cba57e6433977c69f4ad620 2015-04-10 * ext/objspace/objspace.c (setup_hash): unify common routine.
7f75a1a810fa031bb6ff31166d8ada09a27e9f35 2015-04-10 * ext/objspace/objspace.c: add ObjectSpace.count_imemo_objects method to count imemo objects for each type. * test/objspace/test_objspace.rb: add a test. * NEWS: describe about this addition.
adabc801be4a6536c786ea5c6c858ba71a186336 2015-04-10 * test/objspace/test_objspace.rb: remove debug prints.
0e7889959191ba74307ef450817833164eddb9f4 2015-04-15 * vm_trace.c (rb_tracepoint_new): Add documentation for rb_tracepoint_new C level API [ci skip] Provided by @emilsoman. [fix GH-869]
3004c29afda80310da014d564d4ae7088c932e5b 2015-04-15 * vm_trace.c (rb_tracepoint_new): fix documentation. Commented by @emilsoman.
62c2b2e80a03c6f4e5a304bcf113e6f3a9d6cbee 2015-04-23 * gc.c (gc_mark_roots): fox to work PRINT_ROOT_TICKS.
87944f8e61f4686adc7fd69081e21f53ae863361 2015-05-12 * method.h: remove unused declaration.
08f923bdc16ae54dc01d421248f0d00e0ad27b7d 2015-05-20 * iseq.c (exception_type2symbol): show correct bug message.
8147bd1e491718521bea4aa97fe98010dbbb6625 2015-05-21 * proc.c (method_proc): rename to method_to_proc.
0dba10a47f8f1269eb90f1617ddfb484bd3d8229 2015-05-21 * proc.c (rb_method_get_iseq): rename to rb_method_iseq. * iseq.c: catch up this fix.
c0ce9a722767c085830eb4be06cbf2f35811a22a 2015-05-21 commit miss. iseq.h should be commit with last commit.
1cc326a35117dcd8fdb22e7cce4430df2c24b57f 2015-05-21 fix ChangeLog, too
f6e95240265ce9da8a8832125928bd9e31881124 2015-05-21 * proc.c: rename functions. * method_get_def() -> method_def() * method_get_iseq() -> method_def_iseq() * method_get_cref() -> method_cref()
928d89c77b81b7ef560c0f40b0119dfcd31f3605 2015-05-21 * proc.c: fix issues caused by binding created from Method#to_proc. [Bug #11163] * vm.c (vm_cref_new_toplevel): export as rb_vm_cref_new_toplevel(). * test/ruby/test_method.rb: add some assersions.
7239111ef5384ff9bde6139ba11c05e387dcb9b6 2015-05-21 * iseq.c: constify. * iseq.h: ditto. * method.h: ditto. * proc.c: ditto. * vm_method.c: ditto.
c722f8ad1d6bdf3b18ec8141751b0f8c9e6f6913 2015-05-21 fix indent
5ea16ea6de794451b8a9040eeb951b1b045c647c 2015-05-23 * debug.c (ruby_debug_print_id): use rb_id2name() for fprintf().
6abf7938bface30fe562eb612bfb0ed66c6ff8d7 2015-05-28 * ext/objspace/objspace.c: add two methods to debug internals. * ObjectSpace.internal_class_of: return RBASIC_CLASS(obj). * ObjectSpace.internal_super_of: return RCLASS_SUPER(cls). * NEWS: add information about both methods. * test/objspace/test_objspace.rb: add tests for both methods.
7fd053a01832a4899cca28f62af246592f8e3f59 2015-05-29 * tool/make_hgraph.rb: added.
9cf6751f8393dd28294b6ed0c40650f7b4235b20 2015-05-30 * method.h, vm_method.c (rb_free_method_entry): constify a parameter. * vm_method.c (rb_unlink_method_entry): constify a parameter. * vm_core.h: remove useless declaration about rb_unlink_method_entry().
744d63aacfa441fdbcd2541f477f3c1e057ad566 2015-05-30 fix ChangeLog message.
255c16b5989f218208a1d595e6a84f61a1e23204 2015-05-30 * vm_method.c (rb_unlink_method_entry): make it static.
f1d4e8b3b3be402621b043e858a8da5fc8797662 2015-05-30 * method.h: add VM_METHOD_TYPE_ALIAS rb_method_definition_t::type to fix [Bug #11173]. Now, inter class/method alias creates new method entry VM_METHOD_TYPE_ALIAS, which has an original method entry. * vm_insnhelper.c (find_defiend_class_by_owner): added. Search corresponding defined_class from owner class/module. * vm_method.c (rb_method_entry_get_without_cache): return me->klass directly for defined_class. Now, no need to check me->klass any more. * vm_method.c (method_entry_set0): separated from method_entry_set(). * vm_method.c (rb_alias): make method entry has VM_METHOD_TYPE_ALIAS. * vm_method.c (release_method_definition): support VM_METHOD_TYPE_ALIAS. * vm_method.c (rb_hash_method_definition): ditto. * vm_method.c (rb_method_definition_eq): ditto. * vm_method.c (release_method_definition): ditto. * vm_insnhelper.c (vm_call_method): ditto. * vm_insnhelper.c (vm_method_cfunc_entry): ditto. * vm_eval.c (vm_call0_body): ditto. * gc.c (mark_method_entry): ditto. * proc.c (method_def_iseq): ditto. * proc.c (method_cref): ditto. * proc.c (rb_method_entry_min_max_arity): ditto. * test/ruby/test_alias.rb: add tests. * test/ruby/test_module.rb: fix a test to catch up current behavior.
3da0f60bb9e6619e1ddbfb2d96e6dcdbff22f255 2015-05-30 * method.h: fix typo of comments.
9794af357e7b9dab52b62a62a2031d7e7903c5c2 2015-05-30 fix indent
c542165757c6978d57c077688f41e5c8ee1064ff 2015-05-31 * test/ruby/test_gc.rb: increase timeout seconds for GC stressful debugging.
3d410dde5c35e60fcfdcb3640ab3edcb40550055 2015-05-31 * gc.c , gc.h (rb_obj_info): export obj_info(VALUE) for debugging.
258131446c394684678736507723ab404c892301 2015-05-31 * class.c (rb_class_has_methods): added to reduce depenedency to internal class data structure. * internal.h: ditto. * hash.c (has_extra_methods): use added function.
ac6990c75f6850a845c4c7d09d96ebc5e17cea0a 2015-05-31 * vm_core.h (VM_FRAME_MAGIC_DUMMY): introduce new frame type to recognize dummy frame. * vm.c (th_init): use new frame type. * vm_args.c (raise_argument_error): ditto.
1611735b293128f8638f68b21d66e34817eb8f86 2015-05-31 * eval_intern.h, vm_method.c: move macros to functions. * SCOPE_TEST(f) -> rb_frame_visibility_test(flag). * SCOPE_CHECK(f) -> rb_frame_visibility_check(flag). * SCOPE_SET(f) -> rb_frame_visibility_set(flag). * load.c (load_ext): use it.
cd909b553f85cff810c5f588ece29994f68d1fe8 2015-06-01 * class.c: remove needless include pragmra for method.h. * struct.c: ditto. * vm_method.c: ditto.
105a2c079ddeb7ce425a32ab2bf557b4fe918180 2015-06-01 * internal.h: move class related definitions.
7221252ab1ab473f82eb8c2def387a2719a7fa19 2015-06-01 * vm_method.c (rb_method_entry_make): do not show warning message when method_entry is an alias.
4777bdce272e21f55df4dca7280c76ae706dac0c 2015-06-01 * gc.c (gc_mark_children): remove a garbage character introduced at the last commit.
57b817f4c550e54ff57642b50723cc7c92bdd2fe 2015-06-02 * method.h: make rb_method_entry_t a VALUE. Motivation and new data structure are described in [Bug #11203]. This patch also solve the following issues. * [Bug #11200] Memory leak of method entries * [Bug #11046] __callee__ returns incorrect method name in orphan proc * test/ruby/test_method.rb: add a test for [Bug #11046]. * vm_core.h: remvoe rb_control_frame_t::me. me is located at value stack. * vm_core.h, gc.c, vm_method.c: remove unlinked_method... codes because method entries are simple VALUEs. * method.h: Now, all method entries has own independent method definititons. Strictly speaking, this change is not essential, but for future changes. * rb_method_entry_t::flag is move to rb_method_definition_t::flag. * rb_method_definition_t::alias_count is now rb_method_definition_t::alias_count_ptr, a pointer to the counter. * vm_core.h, vm_insnhelper.c (rb_vm_frame_method_entry) added to search the current method entry from value stack. * vm_insnhelper.c (VM_CHECK_MODE): introduced to enable/disable assertions.
8ff3ab515cc291cd7309352836f73235597faaa5 2015-06-02 * proc.c (proc_curry): remove a debug line.
ac88162198a6b5f1b8f3e17eaac5fe4b0b411934 2015-06-02 * method.h: remove rb_method_iseq_t::iseqval. While making a r50728, iseqval is needed (to mark correctly), but now just iseqptr is enough. * class.c: catch up this fix. * gc.c: ditto. * proc.c: ditto. * vm_method.c: ditto.
721e096ffd0c853ec90252f4f88e1cd6438eca93 2015-06-02 * vm_method.c (rb_alias): rename parameter names.
15164bf33cf27f38cd5657e2b58acfd9a312f2ed 2015-06-02 * insns.def (defined), vm_insnhelper.c (vm_defined): move instruction body to the vm_defined() function.
5bcae57c6f0c5270763737c058f091fa86d1ce8a 2015-06-02 * vm_insnhelper.c (vm_defined): skip respond_to_missing? when a method is available. [Bug #11211] * test/ruby/test_defined.rb: add a test for this fix.
a54da1c05058d9f873f28c317677c5393d7327c9 2015-06-02 * vm_insnhelper.c (vm_defined): check respond_to_missing? at defined?(func()). * test/ruby/test_defined.rb: add a test for this fix.
d67641086b5739b3ffa12c155428eeeebb330008 2015-06-02 add a ticket number
18bbd05709a4d52704ac217f30c0d9f35830b7f0 2015-06-03 * method.h: split rb_method_definition_t::flag to several flags. `flag' contains several categories of attributes and it makes us confusion (at least, I had confused). * rb_method_visibility_t (flags::visi) * NOEX_UNDEF -> METHOD_VISI_UNDEF = 0 * NOEX_PUBLIC -> METHOD_VISI_PUBLIC = 1 * NOEX_PRIVATE -> METHOD_VISI_PRIVATE = 2 * NOEX_PROTECTED -> METHOD_VISI_PROTECTED = 3 * NOEX_SAFE(flag)) -> safe (flags::safe, 2 bits) * NOEX_BASIC -> basic (flags::basic, 1 bit) * NOEX_MODFUNC -> rb_scope_visibility_t in CREF * NOEX_SUPER -> MISSING_SUPER (enum missing_reason) * NOEX_VCALL -> MISSING_VCALL (enum missing_reason) * NOEX_RESPONDS -> BOUND_RESPONDS (macro) Now, NOEX_NOREDEF is not supported (I'm not sure it is needed). Background: I did not know what "NOEX" stands for. I asked Matz (who made this name) and his answer was "Nothing". "At first, it meant NO EXport (private), but the original meaning was gone." This is why I remove the mysterious word "NOEX" from MRI. * vm_core.h: introduce `enum missing_reason' to represent method_missing (NoMethodError) reason. * eval_intern.h: introduce rb_scope_visibility_t to represent scope visibility. It has 3 method visibilities (public/private/protected) and `module_function`.
419b0da453599835b007f6df54c23ab7badc1d7f 2015-06-03 fix typo in ChangeLog
b5cd6ba21412b24c5dc44971fe96812e2548cc7e 2015-06-03 * method.h: change fileds order to gather frequent acces fields. * vm_insnhelper.c (vm_call_method): add LIKELY().
5ac1972c1a7b56aa1aace73b30c1a8fcd8705ac8 2015-06-03 * vm_core.h: rename enum missing_reason to enum method_missing_reason. * vm_core.h: use enum method_missing_reason for rb_thread_t::method_missing_reason. * vm_eval.c: catch up this fix. * vm_insnhelper.c: ditto.
c3cc282f7f23abb36c10e4df489c04976b9b4004 2015-06-03 * class.c (clone_method): remove redundant check for me->def != NULL. Now, all `me` have `me->def`. * proc.c (rb_method_entry_location): ditto. * vm.c (rb_vm_check_redefinition_opt_method): ditto. * vm.c (add_opt_method): ditto. * vm_eval.c (vm_call0_body): ditto.
4ab762de21ecf321cf88b8f17750f6f4ea9ebf3f 2015-06-03 * vm_method.c: rename `rb_frame_...' to `rb_scope_...'. * eval_intern.h: move decl. of rb_scope_visibility_set() to method.h. * load.c: catch up this fix.
4e870d302b94d90513534ea68416df36dbe3ce61 2015-06-03 * vm_core.h (rb_vm_rewrite_cref_stack): rename to rb_vm_rewrite_cref(). * class.c (clone_method): use renamed name. * vm_insnhelper.c (rb_vm_rewrite_cref): do not use `node' in variable names.
93f88afbd6f126e753648d6f921595fe57aa45bd 2015-06-03 * class.c (clone_method): do not use me->klass, but use explicitly passed argument.
332210d4410b1b6aa520264e5f09bafa61626a73 2015-06-03 * class.c (method_entry_i): mtbl should not have `me' as NULL.
bd1e9d638ee3c7c61d0ed2cf2716460e78ced6fe 2015-06-03 * vm_insnhelper.c (def_iseq_ptr): `iseqval' is not available any more.
4ef6a68235fb8790d9b937569ba4deb2148b4c49 2015-06-03 add a fix to last commit
9e73d45e0f38fddc7a117c5bc2eab103573e5986 2015-06-03 * method.h: introduce rb_method_refined_t for refined method entry. * class.c (move_refined_method): catch up this fix. * gc.c (mark_method_entry): ditto. * vm_eval.c (vm_call0_body): ditto. * vm_insnhelper.c (vm_call_method): ditto. * vm_method.c: ditto.
3619a8b52d876469193b3cecaa80d7ff13f09002 2015-06-04 * method.h: constify rb_method_refined_t::orig_me. Also constify the following functions. * rb_resolve_refined_method() * rb_method_entry_with_refinements() * rb_method_entry_without_refinements() * rb_method_entry_copy()'s parameter. * class.c: catch up this fix. * vm_insnhelper.c: ditto. * vm_method.c: ditto.
0f419d39b4eebe9b3726bec19472de48bb23ad03 2015-06-04 * vm_method.c (rb_add_method_iseq): use intermediate struct to avoid initializing struct with variables. [Bug #11217] * method.h: add a comment about it.
54a9ac76559d7016fdcd9fdd7aab9b8217079779 2015-06-04 * vm_insnhelper.c (vm_defined): show additional messages on rb_bug().
63e1601049d084a6b1db7f2226ceed179dd21c09 2015-06-04 * vm_insnhelper.c (vm_defined): no need to use cast.
99ee18afcb50e454f00ea1ea85c14a2387ed101c 2015-06-04 * test/lib/envutil.rb (assert_no_memory_leak): change default value of limit from 1.5 to 2.0. It is ad-hoc fix to solve test failure in travis-ci.
b6b76e3a85130dc24dbacd60a82033c780581e9b 2015-06-05 * internal.h: move definition of rb_cref_t to method.h. * eval_intern.h: move definition of rb_scope_visibility_t to method.h. * method.h: change rb_cref_t::scope_visi from VALUE to rb_scope_visibility_t. [Bug #11219] * vm.c (vm_cref_new): accept rb_method_visibility_t directly. * vm_insnhelper.c (rb_vm_rewrite_cref): don't use 0, but METHOD_VISI_UNDEF. * vm_method.c (rb_scope_visibility_set): don't need to use cast. * vm_method.c (rb_scope_module_func_set): ditto.
eb774ceb222ff36f391313ff6fcebd3d9bcdcc02 2015-06-05 * class.c (ins_methods_push): change 3rd parameter's type from long to rb_method_visibility_t. * class.c (ins_methods_i): catch up this fix. * class.c (method_entry_i): cast to st_data_t instead of `long'.
ea67fb97d96b8439bd9ae035651063bdd1b4ddfb 2015-06-05 * gc.c: remove struct mark_tbl_arg and pass objspace directly to avoid indirect access overhead.
1f9af2a9530073951c6f63b1ab9d1d2c6f14c177 2015-06-06 * class.c (ins_methods_push): Change type and name of parameters to make more clear.
c9044a247286ac7b02964c80361c8acede98043f 2015-06-06 * class.c: ins_methods_push() needs rb_method_visibility_t type on 2nd arg.
c19d37375074987b36413af6bf83df7262ce227d 2015-06-06 * method.h: back to share rb_method_definition_t by rb_method_entry_t. r50728 changed sharing `def's to isolating `def's on alias and so on. However, this change conflicts future improvement plan. So I change back to sharing approach. * method.h: move rb_method_definition_t::flags to rb_method_entry_t::attr::flags. rb_method_entry_t::attr is union with VALUE because this field should have same size of VALUE. rb_method_entry_t is T_IMEMO). And also add the following access macros to it's fileds. * METHOD_ENTRY_VISI(me) * METHOD_ENTRY_BASIC(me) * METHOD_ENTRY_SAFE(me) * vm_method.c (rb_method_definition_addref): added instead of rb_method_definition_clone(). Do not create new definition, but increment alias_count. * class.c (clone_method): catch up this fix. * class.c (method_entry_i): ditto. * proc.c (mnew_internal): ditto. * proc.c (mnew_missing): ditto. * vm_eval.c: ditto. * vm_insnhelper.c: ditto. * vm_method.c: ditto.
0d3591f250bfe90805cac3c2d5bbfcadb720df37 2015-06-07 * gc.c (obj_info): print method id for T_IMEMO/ment.
62a81ad98c2421077acd637c11e06022e19a4977 2015-06-10 * vm_insnhelper.c (check_frame): check type of cref_or_me first.
85647d9f2b4b2da17827cc1d613f425748a39b3f 2015-06-10 * vm_core.h: define VM_ASSERT() for assertion enabled only when (VM_CHECK_MODE > 0). * vm_insnhelper.c: move definition VM_CHECK_MODE from vm_insnhelper.c to vm_core.h. * vm.c: remove <assert.h>
c7edd997e87d609feee894bf61b45f7f0a956eba 2015-06-10 * vm.c: use VM_ASSERT instead of assert(). * vm_args.c: ditto. * vm_insnhelper.c: ditto. * vm_method.c: ditto.
a5fa5f34b051e4d77ea0d768deb006a45acd9245 2015-06-10 * method.h: embed rb_method_entry_t::attr::flags (5 bits) into rb_method_entry_t::flags to make one word spare space. Add some macros to access these flags. * vm_method.c: use these macros. * internal.h: define IMEMO_FL_USHIFT and IMEMO_FL_USER[0-4] for T_IMEMO local flags.
5421cea25246b62fd86700777aa21469629a98b0 2015-06-11 * method.h (METHOD_ENTRY_BASIC_SET): should clear last bit.
0991d0a8ee73977ab3e2aed2fbe361985f6f0d0d 2015-06-11 * method.h (METHOD_ENTRY_BASIC_SET): fix last commit (unbalanced parens).
5a174881895346234523ea01ae9ebc528132c917 2015-06-16 * test/objspace/test_objspace.rb: relax pattern because uncollectible flag and marked flag can be false at major GC.
cbffea05bd83e8d546dcf05757e4dbad31e13643 2015-06-16 add ref to [Bug #10852].
37b38306e85c80c809db0cc0a61d0aa562ef5158 2015-06-18 * ext/objspace/objspace.c (count_imemo_objects): support imemo_ment.
c8590d60f1bc365cd462de7302351f6a15c9bf4e 2015-06-18 * method.h: constify rb_method_alias_struct::original_me and rb_method_refined_struct::orig_me. * class.c (move_refined_method): use RB_OBJ_WRITE() for me->def->body.refined.orig_me.
58ba24f8858ed4e9cae3dfe5aa8e62e0c6316878 2015-06-18 * vm.c (rb_vm_control_frame_id_and_class): remove usless codes. `me' knows ID and owner class.
c78e0d37130bdbbfd3169abb74bd1d9e473b9040 2015-06-18 * bootstraptest/test_method.rb: remove a test because $SAFE=2 was obsolete. Please check btest, too.
8b0cfe9042aa04a8f574fe4169ecea43b550b638 2015-06-24 * gc.c (gc_mark_ptr): add a check code for #11244. It should be removed later. But we can remain this check because it is only a branch.
4a8b0481069eb4b01d1a4da8ee5a2a4ae5aac319 2015-06-24 * gc.c (gc_mark_children): add additional debug code for #11244.
9a2638717c929a29247507a030f33777b7d11e98 2015-06-24 * gc.c (RGENGC_OBJ_INFO, obj_info): add a macro to enable/disable rich obj_info() output. At the default, the value of RGENGC_OBJ_INFO is (RGENGC_DEBUG | RGENGC_CHECK_MODE). * gc.c (RGENGC_OBJ_INFO): force enable it to debug #11244. * gc.c (gc_mark_ptr): print more details with obj_info(). * gc.c (gc_mark_children): remove useless debug prints.
988267d462efdb29c1d7c716cbc720e4bbd69bdc 2015-06-24 * vm_method.c (rb_method_definition_reset): need a WB for VM_METHOD_TYPE_ATTRSET.
04deaf5d516ba1b26d0e656aa029b913888a54f4 2015-06-24 * gc.c (obj_info): show more details for T_IMEMO/imemo_ment.
93a460f7742dd72b6c3f7667cde69417010c2f76 2015-06-24 * gc.c (obj_info, method_type_name): show method type name in a string instead of a number.
f4d71ad509c929444c43f37befc0f14571cec797 2015-06-25 * vm_method.c: make a rb_method_definition_t data (def) *after* making a rb_method_entry_t data (me). Normally, `me' points `def'. Some Ruby objects pointed from `def' and objects are marked by `me' (mark_method_entry() in gc.c). However, `def' is built before making a `me', then nobody can mark objects pointed from `def' before making (and pointing from) `me'. I hope this patch solve #11244. * vm_method.c: remove `rb_' prefix from some static functions. * method.h (rb_method_entry_create): constify * gc.c (mark_method_entry): add checking `def' and `def->body.iseq.iseqptr' availability because they can be NULL.
7bba6adc56b20606101131069ef8f1f96ff71fa2 2015-06-25 * vm_method.c (rb_method_entry_create): need to call method_definition_reset() if def is given. Actually, `me' is a new object, so we don't need to call it. It is just to make sure. * vm_method.c (method_definition_reset): remove duplicated insertion. * vm_method.c (rb_method_entry_clone): assgine dst->def here, not in method_definition_reset().
771fceba59dd3e39bacccf37cb42fe903bba2452 2015-07-02 * gc.c (rb_raw_obj_info): separated from rb_obj_info(). Fill internal object information into passed buffer. * gc.h: declare rb_raw_obj_info().
c36c43dcb7c1f13d2bcd34e99e1e05303d3572d8 2015-07-02 * gc.c: remove `#define RGENGC_OBJ_INFO 1' line introduced to debug Bug #11244.
5e8a147480f87f19a8b96ad3fb33a25fb4bb19b9 2015-07-03 * method.h: introduce rb_callable_method_entry_t to remove rb_control_frame_t::klass. [Bug #11278], [Bug #11279] rb_method_entry_t data belong to modules/classes. rb_method_entry_t::owner points defined module or class. module M def foo; end end In this case, owner is M. rb_callable_method_entry_t data belong to only classes. For modules, MRI creates corresponding T_ICLASS internally. rb_callable_method_entry_t can also belong to T_ICLASS. rb_callable_method_entry_t::defined_class points T_CLASS or T_ICLASS. rb_method_entry_t data for classes (not for modules) are also rb_callable_method_entry_t data because it is completely same data. In this case, rb_method_entry_t::owner == rb_method_entry_t::defined_class. For example, there are classes C and D, and incldues M, class C; include M; end class D; include M; end then, two T_ICLASS objects for C's super class and D's super class will be created. When C.new.foo is called, then M#foo is searcheed and rb_callable_method_t data is used by VM to invoke M#foo. rb_method_entry_t data is only one for M#foo. However, rb_callable_method_entry_t data are two (and can be more). It is proportional to the number of including (and prepending) classes (the number of T_ICLASS which point to the module). Now, created rb_callable_method_entry_t are collected when the original module M was modified. We can think it is a cache. We need to select what kind of method entry data is needed. To operate definition, then you need to use rb_method_entry_t. You can access them by the following functions. * rb_method_entry(VALUE klass, ID id); * rb_method_entry_with_refinements(VALUE klass, ID id); * rb_method_entry_without_refinements(VALUE klass, ID id); * rb_resolve_refined_method(VALUE refinements, const rb_method_entry_t *me); To invoke methods, then you need to use rb_callable_method_entry_t which you can get by the following APIs corresponding to the above listed functions. * rb_callable_method_entry(VALUE klass, ID id); * rb_callable_method_entry_with_refinements(VALUE klass, ID id); * rb_callable_method_entry_without_refinements(VALUE klass, ID id); * rb_resolve_refined_method_callable(VALUE refinements, const rb_callable_method_entry_t *me); VM pushes rb_callable_method_entry_t, so that rb_vm_frame_method_entry() returns rb_callable_method_entry_t. You can check a super class of current method by rb_callable_method_entry_t::defined_class. * method.h: renamed from rb_method_entry_t::klass to rb_method_entry_t::owner. * internal.h: add rb_classext_struct::callable_m_tbl to cache rb_callable_method_entry_t data. We need to consider abotu this field again because it is only active for T_ICLASS. * class.c (method_entry_i): ditto. * class.c (rb_define_attr): rb_method_entry() does not takes defiend_class_ptr. * gc.c (mark_method_entry): mark RCLASS_CALLABLE_M_TBL() for T_ICLASS. * cont.c (fiber_init): rb_control_frame_t::klass is removed. * proc.c: fix `struct METHOD' data structure because rb_callable_method_t has all information. * vm_core.h: remove several fields. * rb_control_frame_t::klass. * rb_block_t::klass. And catch up changes. * eval.c: catch up changes. * gc.c: ditto. * insns.def: ditto. * vm.c: ditto. * vm_args.c: ditto. * vm_backtrace.c: ditto. * vm_dump.c: ditto. * vm_eval.c: ditto. * vm_insnhelper.c: ditto. * vm_method.c: ditto.
b07e78fa32f842629bc058430dea89ae9fa820bd 2015-07-06 * method.h, proc.c (rb_method_entry_location): make it static and remoev prefix `rb_' because it is used only in proc.c.
c8854d2ca4be9ee6946e6d17b0e17d9ef130ee81 2015-07-06 * vm_insnhelper.c (vm_search_super_method): do not skip calling same methods in super. [Bug #3351] * test/ruby/test_super.rb: fix a test.
202643de00ee1a241aa4c082e74967eda02c4ebb 2015-07-06 * cont.c (fiber_init): initialize control frame correctly. This fix does not affect any ordinal execution, but affects debug prints.
02d5868962417298cf041ce723d406e16a635693 2015-07-06 * vm_core.h: remove rb_iseq_t::klass to reduce dynamic data. * internal.h, iseq.c (rb_iseq_klass): remove it because rb_iseq_t::klass is removed. * vm_insnhelper.c (vm_super_outside): do not see cfp->iseq, but check callable method entry on a frame. This fix simplify the logic to search super class. * test/ruby/test_method.rb: support super() from Proc. Now, [Bug #4881] and [Bug #3136] was solved. * proc.c (rb_mod_define_method): catch up this change. * vm.c (vm_define_method): ditto. * vm_backtrace.c (rb_profile_frames): now, each `frame' objects are rb_callable_method_entry_t data or iseq VALUEs. This fix introduce minor compatibility issue that rb_profile_frame_label() always returns rb_profile_frame_base_label(). * test/-ext-/debug/test_profile_frames.rb: catch up this change.
ce45744254edebad3265cfa75a3868023144cbfa 2015-07-06 * vm_core.h: remove a useless declaration.
5c4d7b9a9ed82ef09d483e02a49cf8578fd07c7a 2015-07-06 * vm_core.h: remove rb_iseq_t::defined_method_id because it is not needed. * eval.c (frame_func_id): simplify. rb_callable_method_entry_t has enough information. * eval.c (frame_called_id): ditto. * iseq.c (prepare_iseq_build): catch up this fix. * proc.c (rb_mod_define_method): ditto. * vm.c (vm_define_method): ditto.
57f2c60727bb856d1ace83d03045b03d11fb8768 2015-07-06 * vm.c (vm_define_method): remove an unused local variable.
16a68369d2c12dd6aae1b902aac5fe72b9ee9ec9 2015-07-07 * iseq.c, internal.h (rb_iseq_clone): removed because we don't need to clone iseq any more. * class.c (clone_method): share iseq between cloned methods. All of method dependent information are able to refer from method entry.
f395c5be87dac498debc538d2d57953a74f97cb0 2015-07-07 * vm_core.h: remove rb_iseq_t::orig because rb_iseq_clone() no longer exists. * iseq.c: don't use rb_iseq_t::orig.
c5dad98c41a720a15c9dcc96d3df570cd9e23df3 2015-07-07 * proc.c (rb_method_call): because data->me should be non-NULL, do not check data->me * proc.c (method_inspect): ditto.
135c75727d44d84422355465a42f8e9c485e8f79 2015-07-07 * cont.c (cont_free): remove mysterious fflush() introduced at r19890, maybe accidentaly.
548497d545b72aa3a73ee7514cc4aacbe1c7536e 2015-07-07 * vm_backtrace.c: remove debug flag introduced accidentaly.
dc2eb0c653bf3ae308b960ba7f2222fb35c6bcfc 2015-07-09 * vm_core.h (rb_control_frame_t): fix comments (layout index).
d53e1a7937b8c68ed5230fb3e7a1f9fb9524a898 2015-07-09 * vm_core.h: remove rb_call_info_t::klass because rb_callable_method_entry_t has information about defined class. * vm_insnhelper.c (vm_search_method): don't set ci->klass because it is removed. * vm_insnhelper.c (rb_equal_opt): ditto. * vm_insnhelper.c (vm_search_superclass): removed because it is too simple to write code directly. * vm_insnhelper.c (vm_defined): don't use vm_search_superclass(). This fix avoid searching current callable `me' twice. * vm_insnhelper.c (vm_search_super_method): ditto.
f23adf745943174cdd4ecd88789c69acec69ad77 2015-07-09 * vm_insnhelper.c (vm_search_super_method): use CI_SET_FASTPATH().
a82ce7c55626086ad264a0d26de63b7603956de9 2015-07-14 * vm.c: refactoring Proc/Env related code. * vm_core.h: remove blockprocval field from rb_proc_t and rb_binding_t. Instead of this field, mark given block in Proc at rb_env_t::env. * vm.c (vm_make_env_each): make an Env object with this layout. And also simplify parameters. * proc.c: catch up this fix. * vm_core.h: remove rb_env_t::local_size because it is not used. * vm_dump.c (rb_vmdebug_env_dump_raw): catch up this fix. * vm_core.h (rb_vm_make_env_object): remove rb_vm_make_env_object() because it is only refered from vm.c. * vm_eval.c (eval_string_with_cref): catch up this fix.
e07dad00ee37173a990cc8d4f147963d7f57a28c 2015-07-14 * vm_core.h, vm.c: remvoe rb_env_t::prev_envval because we can know it via env->ep. rb_vm_env_prev_envval(env) returns prev_envval via env->ep. * vm_core.h (rb_vm_env_local_variables): change parameter type from VALUE (T_DATA/env) to `const rb_env_t *' to make same as rb_vm_env_prev_envval(). * proc.c: catch up these changes. * vm_dump.c: ditto. * vm.c: rename macros. * ENV_IN_HEAP_P() to VM_EP_IN_HEAP_P() because it uses ep. * ENV_VAL() to VM_ENV_EP_ENVVAL() because it is too short.
994460c4db639d098ec72ca54b3442f5ea05336f 2015-07-14 * vm_core.h, vm.c: remove rb_proc_t::envval because we can know it via rb_proc_t::block::ep. rb_vm_proc_envval(const rb_proc_t *proc) returns an Env object which the Proc object use. * proc.c: catch up this fix. * vm_dump.c (rb_vmdebug_proc_dump_raw): ditto.
e262b29ed00fc09f64bd809d84233bdc56d21bab 2015-07-15 * vm.c (vm_make_env_each): add comments about env layout. Do not use `i' to specify `new_ep'. * vm.c (rb_proc_create, rb_vm_make_proc_lambda): envval is not used.
7b08338ab19b635a9da4584ba3ac0ebf845b051e 2015-07-16 * iseq.c (rb_iseq_disasm): rename rb_iseq_t *iseqdat to iseq and VALUE *iseq to code. * iseq.c (rb_iseq_disasm_insn): ditto.
c3e8cca95040dbae915cad793ccb72f56021bd4a 2015-07-16 * vm_core.h: constify rb_iseq_t::parent_iseq. rb_iseq_t::local_iseq is not constant data because local_iseq::flip_cnt can be modified (commentted). * compile.c: catch up this fix. * iseq.c: ditto. * vm_insnhelper.c: ditto.
c0c20ccb519071802e82341f0bb584c9d833b3de 2015-07-21 * compile.c: constify the first parameter (iseq). * iseq_add_mark_object() * iseq_add_mark_object_compile_time() * iseq.c, iseq.h (rb_iseq_add_mark_object): ditto.
46215c1e90183952be55bead4c04cc8b6a8b8ee5 2015-07-21 * gc.c (internal_object_p): Now a singleton classes appear by ObjectSpace.each_object. [Bug #11360] * test/ruby/test_objectspace.rb: add a test about it.
c5618920ed9cdfafc539a7b43f0911fbdff7bd19 2015-07-21 * method.h: constify rb_method_iseq_t::iseqptr. * proc.c (rb_method_entry_min_max_arity): catch up this fix. * vm_insnhelper.c (def_iseq_ptr): constify.
948bd807c3c564317e1c2e8d66ecaf85c49dead7 2015-07-21 * vm_core.h: constify rb_call_info_t::blockiseq and rb_iseq_t::iseq. * vm.c, vm_insnhelper.c: catch up this fix. * iseq.c (iseq_data_to_ary): constify the first iseq parameter. * vm_insnhelper.c (vm_make_proc_with_iseq): ditto.
684c449c361ab8c29ddca6d7e9a77fb7ea82864c 2015-07-21 fix ChangeLog
331fb4a2b3576ee364dc67f212b3c9c759fafdd8 2015-07-21 * vm_core.h: constify rb_call_info_t::kw_arg, rb_control_frame_t::iseq and rb_control_frame_t::block_iseq. * iseq.c (iseq_free): catch up this fix. * vm.c: ditto. * vm_dump.c: ditto.
6053426a669386353a6b7fe11f3d3ea8d3c11e7c 2015-07-21 * ext/objspace/objspace.c (total_i): no need to skip singleton classes.
e4198a73d406d9a9f61a6db2d2a243c0f5267679 2015-07-21 * make rb_iseq_t T_IMEMO object (type is imemo_iseq). All contents of previous rb_iseq_t is in rb_iseq_t::body. Remove rb_iseq_t::self because rb_iseq_t is an object. RubyVM::InstructionSequence is wrapper object points T_IMEMO/iseq. So RubyVM::ISeq.of(something) method returns different wrapper objects but they point the same T_IMEMO/iseq object. This patch is big, but most of difference is replacement of iseq->xxx to iseq->body->xxx. (previous) rb_iseq_t::compile_data is also located to rb_iseq_t::compile_data. It was moved from rb_iseq_body::compile_data. Now rb_iseq_t has empty two pointers. I will split rb_iseq_body data into static data and dynamic data. * compile.c: rename some functions/macros. Now, we don't need to separate iseq and iseqval (only VALUE). * eval.c (ruby_exec_internal): `n' is rb_iseq_t (T_IMEMO/iseq). * ext/objspace/objspace.c (count_imemo_objects): count T_IMEMO/iseq. * gc.c: check T_IMEMO/iseq. * internal.h: add imemo_type::imemo_iseq. * iseq.c: define RubyVM::InstructionSequnce as T_OBJECT. Methods are implemented by functions named iseqw_.... * load.c (rb_load_internal0): rb_iseq_new_top() returns rb_iseq_t (T_IMEMO/iesq). * method.h (rb_add_method_iseq): accept rb_iseq_t (T_IMEMO/iseq). * vm_core.h (GetISeqPtr): removed because it is not T_DATA now. * vm_core.h (struct rb_iseq_body): remove padding for [Bug #10037][ruby-core:63721].
0d775f2a3c402310b71a581e368f347c52af78e5 2015-07-22 * vm_core.h: separate rb_iseq_body into rb_iseq_constant_body and rb_iseq_variable_body (rb_iseq_t::variable_body). rb_iseq_variable_body can be modified after compilation. * compile.c: use rb_iseq_t::variable_body. * iseq.c: ditto. * thread.c: ditto.
6f8b0aeb3b6a7c8539dd3b4f09429ce2f459335f 2015-07-22 * vm_core.h: remove unused declaration of iseq_compile_data_ensure_node_stack.
c44360f62316f629441af47213a6c22ae1c3606b 2015-07-22 * vm_core.h: modify layout of rb_iseq_constant_body. Move frequent accesssing fields to upper part.
18f6978625fe8adc4fe6e414e73e97d52b566592 2015-07-23 * vm_core.h: constify rb_iseq_constant_body::iseq_encoded and rb_control_frame_t::pc. * compile.c (rb_iseq_translate_threaded_code): catch up this fix. * iseq.c: ditto. * vm_exec.c (vm_exec_core): ditto.
eed613f4b1fa65705fab0ce617ea370ac53b2dfa 2015-07-23 * vm_core.h: constify rb_iseq_constant_body::local_table and rb_iseq_param_keyword::table and rb_iseq_param_keyword::default_values. * compile.c: catch up this fix. * iseq.c: ditto.
8fbf5dd9e5bd38c2ade0384f8a7503f7cc1db8a4 2015-07-24 * vm_core.h: constify rb_iseq_constant_body::catch_table. * compile.c (iseq_set_exception_table): catch up this fix. * iseq.c: ditto. * vm.c (vm_exec): ditto.
efa31acaad8663602357fb193db8dd4320fa66d5 2015-07-24 * vm_core.h: constify rb_iseq_constant_body::param::opt_table and rb_iseq_constant_body::param::keyword. * compile.c: catch up this fix.
14428f09b1c75071b7bcd86fb6c7a92790301d17 2015-07-24 * vm_core.h: constify rb_iseq_constant_body::line_info_table. * iseq.c: catch up this fix.
22be6d06ab60ac22fbaa1cf29afa048a456d4319 2015-07-24 * vm_core.h: size should be unsigned. * rb_call_info_t::index * rb_iseq_constant_body::stack_max * rb_iseq_constant_body::local_size * rb_iseq_constant_body::param::size * rb_iseq_constant_body::local_table_size * rb_iseq_constant_body::is_size * rb_iseq_constant_body::callinfo_size * iseq.h: same for iseq_catch_table::size. * compile.c: catch up these fix. * iseq.c: ditto. * proc.c: ditto. * vm.c: ditto. * vm_args.c: ditto. * vm_eval.c: ditto. * vm_insnhelper.c: ditto.
747b7b7316e81a3a304938ef5de10ecb9afc2de3 2015-07-27 * template/id.h.tmpl (ID2ATTRSET): remove an unused macro.
033e093363b53024aa0f40599fc48d78418a61a9 2015-08-04 * proc.c (rb_block_clear_env_self): clear by Qfalse intead of Qnil. [Bug #11409] * test/ruby/test_eval.rb: add tests for this issue, written by @0x0dea. https://github.com/ruby/ruby/pull/988
91f209816f88288c6efacac783224bd3c9c56cd6 2015-08-04 * test/ruby/test_module.rb: should not expect a method table ordering. [Feature #11414]
c35ff11ae516421809e0d03c278576a70fda45c4 2015-08-12 * id_table.h: introduce ID key table. [Feature #11420] This table only manage ID->VALUE table to reduce overhead of st. Some functions prefixed rb_id_table_* are provided. * id_table.c: implement rb_id_table_*. There are several algorithms to implement it. Now, there are roughly 4 types: * st * array * hash (implemented by Yura Sokolov) * mix of array and hash The macro ID_TABLE_IMPL can choose implementation. You can see detailes about them at the head of id_table.c. At the default, I choose 34 (mix of list and hash). This is not final decision. Please report your suitable parameters or your data structure. * symbol.c: introduce rb_id_serial_t and rb_id_to_serial() to represent ID by serial number. * internal.h: use id_table for method tables. * class.c, gc.c, marshal.c, vm.c, vm_method.c: ditto.
408fa5e687dfc5548563bdb31d7ce2f280dd81ce 2015-08-12 * class.c, gc.c vm.c: use ID_TABLE_* instead of ST_* (such as ST_CONTINUE) for enum rb_id_table_iterator_result.
2e2bd1c26b21ab3298b32f881bccebc14c7cac3d 2015-08-12 * class.c (move_refined_method): same as the last commit.
e51491491986df97ecde29c3ef82036fe7c669d1 2015-08-12 * id_table.c (mix_id_table_insert): fix memory leak.
17613125778e1c73d69a339b35e6bd92cb0b7f02 2015-08-12 * id_table.c: IMPL() macro accept op as _opname instead of opname because jemalloc seems to replace the word `free' to `je_free'.
d22a09e189d772fe9c640aaf7b2c3fbbc5bcf039 2015-08-13 * vm_core.h (rb_call_info_kw_arg_bytes): move the definition to iseq.h because this function is shared with iseq.c and compile.c.
416aa4591859f20ba4c86a139c4855f1c8ea56f1 2015-08-21 * vm_insnhelper.c (vm_invoke_block): we should not expect ci->argc is stable after invoking a block. [Bug #11451] * test/ruby/test_yield.rb: add a test. This test script is given by Alex Dowad.
3af5298e8cc9d88fb0c763fb623b722a97912877 2015-08-21 * include/ruby/ruby.h, cont.c, vm_trace.c: add a new event fiber_switch. We need more discussion about this feature so that I don't write it on NEWS. [Feature #11348] * test/ruby/test_settracefunc.rb: add tests.
885d781abcfce71458b705d227cb719b8d045214 2015-08-21 * ext/objspace/objspace.c: add a new method ObjectSpace.count_symbols. [Feature #11158] * symbol.c (rb_sym_immortal_count): added to count immortal symbols. * symbol.h: ditto. * test/objspace/test_objspace.rb: add a test for this method. * NEWS: describe about this method.
7cf523c7db67c22ffc09b38a9c5bea057f578db2 2015-08-21 * vm_opts.h, iseq.c, iseq.h: add compile option to force frozen string literals. [Feature #11473] This addition is not specification change, but to try frozen string literal world discussed on [Feature #11473]. You can try frozen string literal world using this magical line: RubyVM::InstructionSequence.compile_option = {frozen_string_literal: true} Note that this is a global compilation option, so that you need to compile another script like that: p 'foo'.frozen? #=> false RubyVM::InstructionSequence.compile_option = {frozen_string_literal: true} p 'foo'.frozen? #=> false, because this line is already compiled. p eval("'foo'.frozen?") #=> true Details: * String literals are deduped by rb_fstring(). * Dynamic string literals ("...#{xyz}...") is now only frozen, not deduped. Maybe you have other ideas. Now, please do not use this option on your productions :) Of course, current specification can be changed. * compile.c: ditto. * test/ruby/test_iseq.rb: add a test.
0de5e1cb87c24c650a32dfb73ea6fdbd651929ca 2015-08-21 * ext/thread/thread.c: move definitions of Queue, SizedQueue and ConditionalVariables to thread_tools.c. In other wowrds, such classes are built-in. [Feature #8919] At first, I planned to embed only a Queue class. However, rubygems requires 'thread.rb' (rubygems are required at first, when launch MRI without --disable-gems). So most of people require 'thread.rb' as an embedded library. Now, ext/thread/thread.c is empty, only for a dummy for compatibility. * thread.c: move a definition of Mutex class to thread_tools.c. And define Mutex class under Thread (so now Mutex is Thread::Mutex). Because other thread related classes are also defined under Thread. We remain ::Mutex as Thread::Mutex. Only an inspect result is changed. * common.mk: add dependency from thread.o to thraed_tools.c.
fd7ac9f3c9e106a57869da762a383536636f0f3d 2015-08-26 * thread_tools.c: add Queue#close(exception=false) and SizedQueue#close(exception=false). [Feature #10600] Trying to deq from a closed empty queue return nil if exception parameter equals to false (default). If exception parameter is truthy, it raises ClosedQueueError (< StopIteration). ClosedQueueError inherits StopIteration so that you can write: loop{ e = q.deq; (using e) } Trying to close a closed queue raises ClosedQueueError. Blocking threads to wait deq for Queue and SizedQueue will be restarted immediately by returning nil (exception=false) or raising a ClosedQueueError (exception=true). Blocking threads to wait enq for SizedQueue will be restarted by raising a ClosedQueueError immediately. The above specification is not proposed specification, so that we need to continue discussion to conclude specification this method. * test/thread/test_queue.rb: add tests originally written by John Anderson and modify detailed behavior.
d995d98a08088974311cd3282ea97ff9d1310e6c 2015-08-27 * compile.c (iseq_set_sequence): rename variable names to make it readable.
868c98dccfb433772546e9abba935e0625ef310b 2015-08-28 * vm.c (hook_before_rewind): prevent kicking :return event while finishing vm_exec func because invoke_block_from_c() kick a :return event for bmethods. [Bug #11492] * test/ruby/test_settracefunc.rb: add a test.
15e48288fdb528e7ae6564b3e2fee00471bdff12 2015-08-31 * class.c (move_refined_method): should insert a write barrier from an original class to a created (cloned) method entry. * test/ruby/test_refinement.rb: add a test.
dcf6ac497505987033baebaf5a49f37ebfadb272 2015-09-01 * thread_tools.c: rename thread_tools.c to thread_sync.c.
c37c67cef8f9aef160b198db4b100d8343d0022f 2015-09-01 * thread_sync.c (queue_do_close): ignore multiple close to allow multiple producers. https://bugs.ruby-lang.org/issues/10600#note-14
7ef01f83ace2b3823940762b00e07f531f45bbfb 2015-09-01 * test/thread/test_queue.rb: catch up last commit.
0f35174060ff1d7910d257679090ecde20eb298e 2015-09-02 * vm_insnhelper.h (GET_PC_COUNT): remove unused macro.
e25f9ceddfb5315a4022de87e547d4a029e03818 2015-09-03 * gc.c (rb_raw_obj_info): should support IMEMO/iseq.
5f6dedda011f51de104dcaedf309bc0dad4cac45 2015-09-03 * gc.c (rb_raw_obj_info): iseq->body->location.first_lineno is Fixnum.
970399a9ae739cbb4babc94159abe3b523d53d0f 2015-09-03 * iseq.c (iseq_memsize): functions for wrapper object should have iseqw_ prefix.
eec17b718ae04b9bcff215114a156dcb25eb1458 2015-09-08 * vm_core.h: remove rb_call_info_t::blockiseq. * insns.def (send, invokesuper): pass blockiseq explicitly. * compile.c: catch up this fix. * iseq.c: ditto. * vm_args.c: ditto. * iseq.c (ISEQ_MINOR_VERSION): 2->3 because instruction spec was changed.
22ea03bb7e213d60e49a9cdd1ec1b221ef802e2a 2015-09-11 * iseq.c: disable ISeq.load. It enabled accidentally at r51794.
731c9288dab654a31e7ccbaf57072ff66c00cdf8 2015-09-11 * vm_core.h: remove rb_call_info_t::aux.opt_pc. * vm_insnhelper.c: introduce shortcut functions for opt_pc == 0 because opt_pc is always 0 on shortcut function.
163d436d428b1e72bc342c51ebc6add818101913 2015-09-12 * vm_insnhelper.c (vm_call_iseq_setup_normal): do not clear local variables here. vm_push_frame() clears. * vm_insnhelper.c (vm_call_iseq_setup_tailcall): ditto. * vm_insnhelper.c (vm_push_frame): move check code to vm_check_frame(). Reorder initialization timing to reuse same values (sp). * compile.c (rb_iseq_compile_node): use iseq_set_exception_local_table() for ISEQ_TYPE_DEFINED_GUARD.
d5ec9ec308dccaeea2a723e070a98df4159183de 2015-09-19 * vm_core.h: split rb_call_info_t into several structs. * rb_call_info (ci) has compiled fixed information. * if ci->flag & VM_CALL_KWARG, then rb_call_info is also rb_call_info_with_kwarg. This technique reduce one word for major rb_call_info data. * rb_calling_info has temporary data (argc, blockptr, recv). for each method dispatch. This data is allocated only on machine stack. * rb_call_cache is for inline method cache. Before this patch, only rb_call_info_t data is passed. After this patch, above three structs are passed. This patch improves: * data locarity (rb_call_info is now read-only data). * reduce memory consumption (rb_call_info_with_kwarg, rb_calling_info). * compile.c: use above data. * insns.def: ditto. * iseq.c: ditto. * vm_args.c: ditto. * vm_eval.c: ditto. * vm_insnhelper.c: ditto. * vm_insnhelper.h: ditto. * iseq.h: add iseq_compile_data::ci_index and iseq_compile_data::ci_kw_indx. * tool/instruction.rb: introduce TS_CALLCACHE operand type.
bffa617d364b768fe8ab040088ea7a6e2f0f5d25 2015-09-19 * iseq.c (rb_iseq_free): free rb_iseq_t::body::cc_entries.
9b77261a123ddd48b960a397f80b40b99d9f62b2 2015-10-05 * vm_insnhelper.c: solve goto spaghetti. Change all goto statement across blocks to tail call functions.
0018a71184edbc4b46bbfd2b3a56e4a5a585d4f3 2015-10-05 * proc.c: enable optimization of Proc#call. [Feature #11569] * NEWS: write about this optimization and incompatibilities. * test/ruby/test_backtrace.rb: catch up this fix.
a22d6f55e8d4e0dadea28c47dffd18d7ba1c0f4e 2015-10-05 * iseq.c (rb_iseq_free): free iseq::variable_body to avoid memory leak.
72cf24c813aa788366ef4a6fc0be0491cdcaaf95 2015-10-06 * method.h: remove METHOD_ENTRY_SAFE(me) and related code because $SAFE = 3 and 4 is not available. Now, $SAFE is not checked on method dispatch at all. * vm_eval.c, vm_insnhelper.c, vm_method.c: ditto.
2d855b08d0d91a987c305a21a83dff0bfb3fccf2 2015-10-06 * method.h: IMEMO_FL_USER3 and IMEMO_FL_USER4 is not needed any more.
7432df370ded89ba0bcac4f287e1620e41899182 2015-10-06 * proc.c (Init_Proc): Proc#call and others should be public.
603210060c08b2693bc9c597cf4200bf51efd362 2015-10-06 * vm_insnhelper.c (vm_call_method0): use switch() for visibilities (for readability).
daa13ad2af2d850ffc181ee341d51575f94f4e14 2015-10-06 * proc.c (rb_method_entry_min_max_arity): should support OPTIMIZED_METHOD_TYPE_CALL.
e5b941dfd7022402e16d8ef61a54ed458d7e6310 2015-10-06 * vm_args.c: remove an unused field args_info::calling.
31ee824ef45868c9891e91f5f9ea1d21e9da1d6b 2015-10-06 * gc.h, gc.c: introduce new debug function rb_obj_info_dump(VALUE obj) which prints the result of rb_raw_obj_info(..., obj).
e2cabc22be830ac2a1871dc6c8107cbd759da7ab 2015-10-07 * gc.c (newobj_of): divide fast path and slow path to avoid register savings for fast path. This idea is given by Kazuho Oku <kazuho@natadeco.co>.
e8ba0b7b0437fbb62c09d2fb2cbf83aed2df6a65 2015-10-10 * import a github pull request https://github.com/ruby/ruby/pull/1050 by Kazuho Oku <kazuho@natadeco.co>. This pull request has the following commits. * gc.c: reduce # of args to 6 (max. of register args on x86-64) so that the `newobj_of_slowpass` can be called via TCO. * gc.c (newobj_of), string.c (str_duplicate): for performance, the hot functions must be inlined. * gc.c: for performance, preceding arguments of `.*newobj_of.*` must be same, so that the arg registers can be reused in case of TCO.
a00fc76ce5059e504cbdc10e257624ac893f30c0 2015-10-10 * vm_insnhelper.c (vm_call_method0): do not propagate enable_fastpath, but pass dummy CC to prevent wrong caching.
f6e57af98d6c5bb80dd2bcca079ca871455322ef 2015-10-10 * gc.c (newobj_of_slowpass): fix typo (pass -> path). Pointed out by Yukihiro Matsumoto <matz@ruby-lang.org>. * gc.c (newobj_of_...): `of' is unnecessary.
cb223b7533d31f7388c835fa369af95a02b235d5 2015-10-10 * vm.c (invoke_block_from_c): split this function into several functions. * vm_insnhelper.c (vm_yield_callee_setup_arg): remove this function beacuse it is only delegation function.
ad45aea45631a451ae0b4b4a5592468d0c4617c0 2015-10-10 * vm_insnhelper.c (vm_call_iseq_setup_normal): setup sp first for performance.
0a40bcb20b27058f760ce855fc1860a540c49f43 2015-10-10 * vm_eval.c, internal.h (rb_yield_1): added for performance which doesn't check Qundef. * numeric.c (int_dotimes): use rb_yield_1.
930595cd353a90070f7833510d8499064857feaa 2015-10-10 * vm_insnhelper.c (vm_push_frame): initialize other than sp (and ep) first for performance.
9e1b06e17d27fb4ddf51e9244f205417e9c4dd5c 2015-10-23 * vm_core.h, vm_insnhelper.h: move definition of VMDEBUG from vm_insnhelper.h to vm_core.h.
1e0600324b651310396329343fd407507a533318 2015-10-23 * vm_core.h: define vm_call_handler.
f9697c5637f84d1ec9cb46a2115c76c7971aeb0f 2015-10-23 * vm_insnhelper.c: introduce new call handler for simple ISeqs.
54716fe7ebbf20b5e91fdbe9b65e0bedb0c4836a 2015-10-23 * ruby.c: introduce --enable-frozen-string-literal-debug option. If this option is enabled, the modify error will be: can't modify frozen String (RuntimeError) => can't modify frozen String, created at test.rb:3 (RuntimeError)
92d5da521dc68fc166009ce5796748993375c5f5 2015-10-23 * iseq.c (make_compile_option_value): include frozen_string_literal* in a made option value.
106f033b89fed268fe376ebaf16cb95fda655e6a 2015-10-29 * gc.c (gc_mark_ptr): remove debug code for #11244.
56eee285be2e18f727ef15d58e338b134c3ab210 2015-10-29 revert r52336 (commit miss)
1be5cb6371048a35d9fb2859ca8a865e982608cf 2015-10-29 * gc.c (gc_mark_ptr): remove debug code for #11244.
a3e88485b1aa37409cac5bef150431a5444e91eb 2015-10-29 * gc.c: add rb_objspace::flags::has_hook to represent hook availability.
ffa87b40576976f5ab0bfeb7c7eca81021841500 2015-10-29 * gc.c: introduce rb_wb_unprotected_newobj_of() and rb_wb_protected_newobj_of(), pass the WB_PROTECTED information explicitly.
5869f9a3baddf60def53d74f9be8b6afdd28aed1 2015-10-29 * gc.c (rb_imemo_new): should not pass FL_WB_PROTECTED flag.
f9ca636ae772bef04bb7f8ff7f899ad000f6c051 2015-10-29 * internal.h: export rb_wb_(un)protected_newobj_of() because some extensions include internal.h.
05b9b42918868a0a355a5cf9ce0d92baf4236328 2015-10-29 * encoding.c (rb_enc_check_str): add for performance. This function only accept T_STRING (and T_REGEXP).
bce116617afc1fe3c94535094b095228c8034015 2015-10-29 * gc.c (gc_mark_ptr): specify NOINLINE so that gc_mark() can return immediately when obj is not a markable object.
4b852f64da6872eea2f85e5f31eaf3c0452b310e 2015-10-29 * vm_insnhelper.c (vm_check_frame_detail): should require me for VM_FRAME_FLAG_BMETHOD type frame.
b08d139cc5dd1fe26212a93b869e6fbcdeb0d412 2015-10-29 * vm.c: add ifndef guard for VM_CHECK_MODE.
648aa500d60f48640e789ac6b478ad4e2cc54bb4 2015-10-29 * insns.def: nobody set ic->ic_value.value to Qundef.
8da9e6d5499486ae5500f01fd6c59aae4649965a 2015-10-29 use NULL instead of 0
15d735de1506e063b47ba1c4124a6b9cca316eda 2015-10-29 * vm_insnhelper.c (vm_env_cref): make it inline for performance.
f363bbdf1042562e40aaccbd1bdd7b783c096ff0 2015-10-29 * insns.def (getinlinecache/setinlinecache): compare ic->ic_cref and current cref only when cached CREF list includes singleton class.
b872ad5861ffc6585063bb9f045b825278fbc842 2015-10-30 * gc.c (newobj_slowpath): reduce 1 parameter to use only registers for performance.
e3e5d634f0334df6f2392150a31ec1c725498a0c 2015-10-30 * gc.c (heap_get_freeobj_from_next_freepage): not so UNLIKELY.
a96ae767acf13442e29b8f1f632403a2ee8fa286 2015-10-30 * gc.c (newobj_slowpath): do not need to use flags hack (commit miss).
f5b2da3a5325c1ccdca3042b1080639c82c00326 2015-10-31 * vm_insnhelper.c (vm_search_super_method): do not touch `ci' here.
abbe73bf028ce05949fde6c067df3a0f302f6d7f 2015-10-31 revert r52402
840e6b63077347be513037f083056886eaf90732 2015-11-01 * id_table.c (mix_id_table_insert): do not touch list during list->hash transition because GC can run during transition.
92861a11633b079c9dd50599baa6841a739c741d 2015-11-06 * include/ruby/ruby.h (RSTRUCT_PTR): need a close parenthese.
2d4bc584eef5dcd11dbae4c92fe8b404f054ff46 2015-11-07 * vm_trace.c (rb_threadptr_exec_event_hooks_orig): maintain trace_running counter on internal events.
1dd547fe5a3eca165488d6ac5951c61069b7f9c6 2015-11-07 * vm_trace.c (exec_hooks_precheck): check need_clean everytime to clean-up unused hooks.
dd4cec36ca0229e5dcc45393f59f2633d2e350bf 2015-11-13 * method.h: constify rb_cref_t::scope_visi;
25f5dd6799bbacc9f61d60b87b70ea6e6d815c20 2015-11-13 * vm.c (vm_define_method): do not use current CREF immediately, but check CREF in environment or methods. Methods defined in methods should be public. [Bug #11571]
b73e900f50e74504c48f05811dbfb2aabdf40cdc 2015-11-13 * vm.c (vm_define_method): refactoring. * get CREF in this function. * cbase is no longer needed (CREF_CLASS(cref) is enough).
32a96472648fac55ae5651f404de4c75e697409c 2015-11-13 * refactoring CREF related code.
f1028f5cf75a741409e8be5e2eae5742cc74beb6 2015-11-13 * node.h: remove old comments.
db1387905a5186aff6c29c9304ed4fe3af551372 2015-11-13 additional fix of comment line
fa4e516db95cb6a158ebb162688efbc17ff997a1 2015-11-17 * method.h: introduce rb_method_definition_t::complemented_count.
a2f72abb0f4b4c9ea2c805bb965d74f4054a4d91 2015-11-17 fix typo
551ae37ba3307fb982272413a02b3b94561bf39b 2015-11-17 * method.h (METHOD_ENTRY_COMPLEMENTED(_SET)): introduced to recognize complemented method entries or not. There are some cases that callabe method entries do not have defined_class.
6a533a3ecc23e6cb90e2616231f2b67d15ff3239 2015-11-17 revert r52614, r52615, r52617 because they cause serious errors
e2f0af57407859b1d094e6885c27dabff345c190 2015-11-18 * gc.c (rb_raw_obj_info): fix trivial issues.
3f7c0e9fd567fcfbcc8d2ac3ab8499cb321b3073 2015-11-18 * method.h: introduce the folliwing field and macros.
03efb7def95d9de325182e84813a0ce8e689a738 2015-11-18 * vm_method.c (prepare_callable_method_entry): use RCLASS_CALLABLE_M_TBL() instead of accessing a filed directly.
fa3affad9a7677cf0307fbb218b612e2626ee9f3 2015-11-18 * vm_method.c (rb_class_clear_method_cache): should clear all RCLASS_CALLABLE_M_TBLs of all sub-classes (T_ICLASS).
7ae65d012130249b24e3a88ee3cfd82d0f2ef735 2015-11-19 * compile.c (iseq_compile_each): T_IMEMO/iseq objects should be wrap with ISeq wrappers. [Bug #11676]
95273072a7d9675b6997791410a5fb3a244fd580 2015-11-19 * signal.c: should also clear ruby_disable_gc. [Bug #11692]
d5d997fa11cd6d6642904593f21a466cccf17710 2015-11-19 * gc.c: trivial performance improvements.
121b6e064a1b167dddbdc271d503ff96e7deb83b 2015-11-19 * gc.c (gc_start): force to invoke GC by GC.start even if it is GC.disable'd.
c267d24ef0b4955ee5d0538707ed47d1b6278699 2015-11-20 * vm.c (rb_vm_cref_replace_with_duplicated_cref): added.
ba772af0a6b36713077799e5c5cbcb375d4ee1c8 2015-11-20 * compile.c (iseq_compile_each): add debug information to NODE_STR strings as default. [Feature #11725]
e2609033ab07fb38fcaf1bf37382fb6dcc2d9985 2015-11-21 * thread_sync.c: reduce the specification of Queue#close. * Queue#close accepts no arguments. * deq'ing on closed queue returns nil, always. [Feature #10600]
628d9057e415a1eb989b06218f68e8871763e4f7 2015-11-21 add to NEWS about Queue#close
9b7d4d470965b8e750a80de4faf60ec892d1c99b 2015-11-25 add NEWS entry about --debug=frozen-string-literal
7afefea564bc6520962c9eaa457d85c19b64d13c 2015-12-02 * iseq.h: introduce ISEQ_COMPILE_DATA() macro.
417240b7fb987e364421d4c4bfd77dd5bfea10c4 2015-12-02 * iseq.h: introduce ISEQ_COVERAGE() and ISEQ_COVERAGE_SET() macro.
a9c0cf4ff06ecbda16b1fcf9d16cb252becd9453 2015-12-02 * iseq.h: introduce ISEQ_FLIP_CNT_INCREMENT() macro.
cfd1157f1123998bde7b93212bdb111a65b82414 2015-12-02 * iseq.h: introduce ISEQ_ORIGINAL_ISEQ() and ISEQ_ORIGINAL_ISEQ_ALLOC() macro.
2962b6e063e4e6e8bd4b8be5c45166972caf41c2 2015-12-02 * vm_core.h, iseq.h: remove rb_iseq_t::variable_body. Fields in rb_iseq_t::variable_body are contained by rb_iseq_t::body::mark_ary (hidden Array object).
6d8bf54c440fd38eb12b3780556d6f7b88beb1ba 2015-12-07 * string.c: introduce String#+@ and String#-@ to control String mutability. [Feature #11782]
56367e25ee9ae99694a2e69f6c2de0dfa9956211 2015-12-07 add a NEWS entry for r52917
6757d13ee17b737464de68eea3d914390ee2787b 2015-12-07 * iseq.c (iseq_translate): at the end of constructing an iseq, call RubyVM::InstructionSequence.translate(iseq) if this method is defined. If the return value is also an object of RubyVM::InstructionSequence, then use it instead of created one.
21366b17a5009d13b9f0ebf78e5a248494835847 2015-12-07 * compile.c (rb_iseq_build_from_ary): do not allocate table if table_size is 0.
8dce6b15cc9eaa12d89926570cffd7ac7634fb83 2015-12-07 * iseq.c (iseq_load): disable peephole optimization option because apply it multiple times change the sequence. (iseq != peephole_optimize(load(iseq.to_a)))
7476be4defe09d951bdb28b2925be5b461baed5d 2015-12-07 * test/lib/iseq_loader_checker.rb: add iseq dumper/loader checker. If you enable this checker (remove `#' in test/runner.rb), you can see comparison results between an original iseq disassembed result and dumped and loaded iseq disassembed result.
3dbb390180a0e9f98623b6db0d71b0213359c541 2015-12-08 * introduce new ISeq binary format serializer/de-serializer and a pre-compilation/runtime loader sample. [Feature #11788]
23124ffbe845b9e8bec665159c584f09c7dc4491 2015-12-08 * iseq.c (iseq_s_load): fix mysterious bug.
b8574cdcffc656e5d6f8f613f6bad6e2f531e561 2015-12-08 * compile.c (iseq_ibf_dump): fix for clang type checker.
d0d0898c0ac29fa6debf0fa0e18844e83a63f831 2015-12-08 * compile.c (ibf_setup_load): rename to ibf_load_setup().
34cfdd2f67dca44cb677d9a06b8687cfc6172892 2015-12-08 * compile.c (ibf_load_setup): cast to int.
ddba2014c642b886fc9ae3bf44d6a8a10af58be5 2015-12-08 * compile.c (iseq_ibf_dump): dump extra data just string length.
e78bf7976c0269e8b54165c374fcba7ee68a4d2b 2015-12-08 * compile.c (ibf_dump_memsize): should check NULL.
a78023c1180b496a60b21b5328dd5736df60a65d 2015-12-09 mark as experimental
2f5b8f05299731e1187475ff4bd6b1618bac3a1a 2015-12-09 * *.c (*_memsize): do not check ptr. NULL checking is finished Before call of memsize functions. See r52979.
dff42b0ea0e6ef368ebbe0a666ff9be8d708c6df 2015-12-09 * ext/**/*.c (*_memsize): same as r52986 for extensions.
eef8beb695477bdadbf25a87adf973143c366156 2015-12-09 add documentation for RubyVM::InstructionSequence#to_binary_format and RubyVM::InstructionSequence.from_binary_format
71a4d189bd470182d98c397940a9ac44a1374089 2015-12-09 update NEWS [ruby-core:71970]
e48adae2b3e7dfab79fb5a72467a559749edebd5 2015-12-09 * gc.c (gc_mark_stacked_objects): fix typo. reported by XIE Zhibang. [Bug #11763]
303cd88d408b7f8b79b0580cf3d552d6e291f5df 2015-12-09 * vm.c (rb_vm_cref_in_context): Module#define_method in non-class expression should be public. [Bug #11754]
4b8da4b9c8494635a4fcdf3a14ba1dc3fece6842 2015-12-09 * iseq.c: rename methods RubyVM::InstructionSequence#to_binary_format -> #to_binary RubyVM::InstructionSequence.from_binary_format -> .load_from_binary RubyVM::InstructionSequence.from_binary_format_extra_data -> .load_from_binary_extra_data
6fb2ec53949c149323d2b0f264bf4c68be558b8f 2015-12-09 * compile.c (iseq_compile_each): do not add debug information without --debug or --debug=frozen-string-literal option because String#dup slows down with debug information. [Feature #11725]
10f7ad626422aeaef6b15a50437cbd9e2b98f485 2015-12-10 * test/ruby/test_gc.rb (test_expand_heap): relax condition (1->2).
5dc676a5cf6b7201f78e4622c0aad4982f4e3db0 2015-12-16 * vm.c: fix mark miss for proc given as passed block. [Bug #11750]
5a6c48980a123f674952d1c9c66cafbfaacf8dfa 2015-12-16 * vm_insnhelper.c (vm_call_method_each_type): should not set fastpath with keyword arguments for VM_METHOD_TYPE_ATTRSET type methods.
70dea9ef28e8986d361e1b387afa2306b9e4b015 2015-12-16 * vm.c (vm_make_env_each): should not compare with Qfalse and FALSE. Pointed at http://d.hatena.ne.jp/nagachika/20151216/ruby_trunk_changes_53128_53163
f64238e777722861bd504c81dccc9fedb2d81be4 2015-12-18 * vm_core.h: define USE_LAZY_LOAD if it is not defined.
dd5fd65eef79637a951a766f5488724c87937c41 2015-12-18 * compile.c (ibf_load_setup): check tainted string argument.
9d30ef596c3b6830cbb19bf00dd8072f43c3014d 2015-12-18 * compile.c (ibf_load_object_string): use fstring if frozen string.
c46ff1bb271afc2375b9b6786a0384426777e551 2015-12-20 * proc.c (proc_new): fix notation.
3b8730058e8dc7fbbb5b888ae5623739f80702c4 2015-12-20 * proc.c (rb_mod_define_method): fix notation.
a8b0c2529301df76a1ea8c03ead3d0d163ab56bc 2015-12-20 * proc.c (rb_mod_define_method): should check Symbol or not. [Bug #11850]
1bcee938d5f4a0a70d492c1c1c13ec29f24980ea 2015-12-21 * gc.c (internal_object_p): should not expose singleton classes without a metaclass. [Bug #11740]
800607aa7ebde919bb9183b451a03ae3b390515f 2015-12-21 revert r53228 because this patch breaks rubyspec
11f4334f754d535b221fee0c3150e5bae8e68ce3 2015-12-22 * vm_insnhelper.c: move vm_callee_setup_block_arg() (and related functions) to the latter location. This moving recovers performance a little. [Bug #11829]
43b2144254a6cdc2e583e1041ba6eb9b42c9efaa 2015-12-24 * NEWS: rename "Implementation changes" section to "Supported platform changes" section.
e5e37c20c9ce4f37773ca905b8fef7ab99d835eb 2016-01-08 * gc.c: remove heap_page::heap. This field is only used to recognize whether a page is in a tomb or not. Instead of this field, heap_page::flags::in_tomb (1 bit field) is added.
3ccafdb02764af61d399b51ff0ec42f9b685078d 2016-01-08 * gc.c: rename rb_heap_t::page_length to rb_heap_t::total_pages.
b6261054cda125869a481d8e51cc86fd3631b9d6 2016-01-08 * gc.c: remove heap_page::body. Instead of this field, heap_page::start field works well.
f8827cef6af2e242cd99a89a3da64600709c0a16 2016-01-08 * gc.c: rename constant names HEAP_* to PAGE_*.
1f1f3112dc762fc31a204de123bf23c505a75780 2016-01-08 * gc.c: PAGE_BITMAP_PLANES (the number of bitmap) is 4, not 3.
fca0cf6e6b8ab8882f3403e5909c8eb91c5c351e 2016-01-08 * gc.c: rename PAGE_* to HEAP_PAGE_* because PAGE_SIZE is used in Mac OS X.
befcbc2cb98c05b16e4b99de3f6386d277aceb56 2016-03-04 * gc.c: rename "enum gc_stat" to "enum gc_mode" because there is a same name (no related) function gc_stat().
d04ee29e77891f1981dbf4d5a1d2c27a626fb52c 2016-03-04 * gc.c: use 2 bits with unsigned int for rb_objspace::flags::mode because it always returns 0 to 2 (non-negative value).
b06514105056ebaf60804749bfba2c56fe4a6a69 2016-03-09 * benchmark/driver.rb: exit benchmarking if a benchmark process receives signals.
1228d134dd6969c0091174062673fea6ccfc521f 2016-03-09 * benchmark/bm_vm3_gc_old_full.rb: add GC.start benchmark.
61aa2685d3ccfd500a2cbbed258d003ed1771d31 2016-03-09 * benchmark/driver.rb: support memory usage benchmark. use `--measure-target=[target]'. Now, we can use the following targets: * real (default): real time which returns process time in sec. * peak: peak memory usage (physical memory) in bytes. * size: last memory usage (physical memory) in bytes.
a036c0265033e54e9323f527d9897e19d01400f2 2016-03-09 * benchmark/driver.rb: fix output messages.
dc39baa9c97ec8b2b62d6ed1311f9fb5c50e8055 2016-03-09 * benchmark/driver.rb: fix my last commit (syntax error).
f46b5bcfaf2c7a905f2e625bd9c44b391b5b40ef 2016-03-31 * gc.c (gc_page_sweep): return free slots count.
9a008c58657a973d9cd1e5b13441f7d099364b22 2016-03-31 * gc.c (gc_verify_heap_page): check the number of zombies.
555f6cb089a63204587fb7555ce92751d28ec89f 2016-03-31 * gc.c: add GC parameters to configure the following values: * RUBY_GC_HEAP_FREE_SLOTS_MIN_RATIO: allocate additional pages when free slots is lower than the value (total_slots * (this ratio)). * RUBY_GC_HEAP_FREE_SLOTS_MAX_RATIO: allow to free pages when free slots is greater thatn the value (total_slots * (this ratio)).
49369ef17316cd5d5819b038f286e1d951972b52 2016-03-31 * gc.c: simplify allocate/free detecting logic at the end of marking.
9bb740d2eca29e590275ef97dbd3c5bd26acb2f1 2016-03-31 * gc.c (gc_marks_finish): fix syntax error.
867693fe3d803486e8571d024169ed5c2a251662 2016-03-31 * gc.c: change additional allocation policy.
5951bbecb09ce4fa6327ccc6f612f27a518d2c42 2016-03-31 * gc.c: need to set initial value of GC_HEAP_FREE_SLOTS_GOAL_RATIO.
eddbebcb19db65c0f426c9c45756dbe5e0dd3fd8 2016-04-04 * vm.c (Init_VM): should pass tokens.
3287bad257e01a01632535743c94c0a5328ce926 2016-04-04 * gc.c (get_envparam_double): take an upper_bound.
02f7507453f8b7d5e053620d06609ce4bc089a53 2016-04-04 * gc.c: change deafult value of RUBY_GC_HEAP_FREE_SLOTS_MIN_RATIO 0.3 -> 0.2 RUBY_GC_HEAP_FREE_SLOTS_MAX_RATIO 0.8 -> 0.65
6278420729d063c82eaca5478e42fb807fc76471 2016-04-11 * vm_backtrace.c (frame2klass): filter only for imemo_ment. T_IMEMO/imemo_iseq can be passed here.
9d258137458ddabeeeb99882022b4da5c54e645c 2016-04-13 * test/ruby/test_basicinstructions.rb: add a test to check access instance variables on special const objects.
bebb62e01b6d752756c8cb51794119c490cde77c 2016-07-13 * vm_method.c (method_entry_get_without_cache): check undefined method even if ruby_running is FALSE.
d8c3672b012ec6eb55e097162c6c638e8d932471 2016-07-13 * iseq.c (Init_ISeq): undef ISeq.translate and ISeq.load_iseq to prevent calling super classes' methods.
d7eb7bbccef6da8951c8a2427354f87156918909 2016-07-13 * gc.c (gc_mark_roots): should mark the VM object itself to mark singleton class of the VM object. Before this patch, we only set mark bit for the VM object and invoke mark function separately. [Bug #12583]
e5c6454efa01aaeddf4bc59a5f32d5f1b872d5ec 2016-07-25 * debug.c (ruby_debug_printf): use rb_raw_obj_info() instead of rb_inspect() because it is more robust way to see object internal.
225915ef45447edce824d11dc94bd0fc7a4cfec0 2016-07-26 * gc.c (gc_mark): add `inline' explicitly. I expected to inline this function implicitly at the loop (ex: marking T_ARRAY objects) but sometimes it remains as normal call.
78e86f75ed7ba5b7cd0cbdd85b27c98e271fd2fc 2016-07-26 * gc.c (rb_raw_obj_info): support to show Proc obj.
be5564a178ee453b7d6fedc7c312bec01e29dde2 2016-07-26 * vm_insnhelper.c: introduce rb_vm_pop_frame() and use it instead of setting rb_thread_t::cfp directly.
9f60791a0412cae804f13ed3e746a634c7a0731b 2016-07-28 * vm_core.h: revisit the structure of frame, block and env. [Bug #12628]
e06698d257cf03e3c42f87029821c077f5f6f0e6 2016-07-28 * vm.c, internal.h: remove RubyVM::Env class and all of env objects are imemo objects (imemo_env).
78c1041a8214931924fe7e60feee62f59e0b4866 2016-07-28 * vm_core.h (VM_ENV_LOCAL_P): return truthy (0 or not) value.
7a1d1163ad9a4e1481d340668582072d077adcc6 2016-07-29 * vm_core.h (VM_LOCAL_P): should return an integer value. reported at http://d.hatena.ne.jp/nagachika/20160728/ruby_trunk_changes_55764_55770
26de0b131e57952d29664de4453e2f04ec3df2bc 2016-07-29 * proc.c (env_write): remove unused function.
e3120e1a99b71b54eda06dc8eaeee3c646fff6c5 2016-08-03 * vm_core.h: introduce VM_FRAME_FLAG_CFRAME to represent cfp->iseq type.
0cd7f5fe87fb2d047a5423cd24c24f9fea530502 2016-08-03 * vm_core.h: rename macros and make them inline functions.
03cad835932205e9ca9e11bed1e6394272ca3f5c 2016-08-03 * vm_core.h: introduce VM_FRAME_RUBYFRAME_P() and VM_FRAME_CFRAME_P(). Most of case, RUBY_VM_NORMAL_ISEQ_P() is no longer needed.
d4faa1013efb81b55bd52ca3907d5cf295a0ef90 2016-09-13 * test/ruby/test_exception.rb: fix thread issues. * use Queue instead of a local variable for synchronization. * join created thread to soleve leaking threads warning.
0b8ab5b0a86bb6039dee2ed31501c9d135ee2fed 2016-11-04 * gc.c (heap_page_resurrect): do not return tomb_pages when page->freelist == NULL. [Bug #12670]
b0569e3dde14df7b9acc703c6a4c7325573094f5 2016-11-05 * vm_insnhelper.h: rename REG_(CFP|PC|SP|EP) to VM_REG_.... [Bug #12527]
75775157ea68efdd0b71345a37a6930e5bf1d2ef 2016-11-07
807f3f97b795a9d80a108106708a886115b511d7 2016-11-07 fix NEWS message
4c2d014e921609c50f83bc23acb5968105bb10bf 2017-01-25 swithc id_table data structure.
a4bc6c277a4fd8363fadbbea510de544b96d3040 2017-01-26 * vm_dump.c: enable to compile with VMDEBUG == 3.
8fa99e64585a545ada07c9adba5441adeb217de3 2017-01-26 skip T_IMEMO for VMDEBUG
f7015c968c19b198ad54c31e755e87385f8b65d3 2017-01-30 add a ticket number.
919a9d9e02e5f1dcb10ae10e9deb68aba11a4660 2017-01-31 use TRUE/FALSE.
6897b3b9854eb54afd6898830e9935ce68a276de 2017-01-31 define rb_thread_sleep_deadly_allow_spurious_wakeup().
bfdfc99cc2ea49f15b1380516bd341f4e7b425b6 2017-01-31 allow Queue operation in trap.
361edea73d9051ef50c8f7156c93776367fe9913 2017-02-07 remove compare with enum value.
950d15bc97a57252edcef98ff83c07c87757095e 2017-02-07 TRUE is not defined here...
470564331d2aadee9b045949c187e28f6a193d78 2017-02-08 remove warning about enum and int comparison.
38bc085f71ad2056f259ec60e4920acab392506b 2017-02-10 check thread deadness correctly.
a17384301bc06aa9b62c36fe337fdacfbaf97b42 2017-02-16 use rb_iseq_check() for USE_LAZY_LOAD.
ccc388d806b50999d1780b3aa7bce521644b8bf9 2017-02-16 use rb_iseq_check() for USE_LAZY_LOAD, too.
56c38a648b8c2028b8c7f99ce90d50819f76a94f 2017-02-20 remove harmful declaration.
76c4cca19c0c27b1c3ca6f597384707cccf3de06 2017-02-21 add performance counting mechanism for MRI debug/tuning purpose.
3651c0aa00747c584fadeeae2d9bf50da4ed675a 2017-03-14 Fiber also has same issue. [Bug #13313]
10b800133ed9913dc7725d0ff801f2792178d4a4 2017-03-15 add several counters to analyze ivar inline caches.
e2fc01efa54a8df00c19de0b7f9dfc2f26e62e86 2017-04-06 fix TracePoint#return_value with non-local exits
7519688ed86cb8b423fd24d4e27964056e78bc9b 2017-04-07 introduce imemo_type_p(v, imemo_type)
a0035eb62094c25bbda312a5941fbda2177e4333 2017-04-07 insert assertions for THROW_DATA_* macros.
4032f45dc2674a55398e10c4456cc54de874fe69 2017-04-13 Terminate created threads.
197ebcb083d1a58448e3971cdfa6867794f22bd6 2017-04-13 fix last commit
3c547e11298e9b51e1952e47202afe3a6d7bc0d4 2017-04-14 increase timeout seconds.
c50afaa1c94c150222d684fbc7fc8b79aa62e0c2 2017-04-14 disable rewind hooks.
2ad7a741c092d9b4c9a9035ef132de23145bd8e9 2017-04-14 more explicit synchronization.
db2822a5bc58a2c02e657b00e551f66c9f1e2577 2017-04-14 sync certainly.
c29e8a0271388c9957db1c2b256925ef04cf5bc9 2017-04-17 should not return.
37d2f9724cbf5f61df7d37caa25d1aaab339653f 2017-04-18 fix compile error.
fbc1deca89595e60af21e58b7e164f376e4bd2fc 2017-04-20 add a debug function.
1721dfa0ea963a85d4ac1e3415eb18ef427d4d36 2017-04-20 release monitor correctly.
8934082ec4cf45df46409f093c93266ca001dd4e 2017-04-20 * vm_dump.c (rb_vmdebug_stack_dump_all_threads): cast to `void*`. Pointed out at <https://github.com/ruby/ruby/commit/fbc1deca89595e60af21e58b7e164f376e4bd2fc#commitcomment-21839826>
8b31febd1536d821ef2c0e41cba21204ceb0fa80 2017-04-20 use correct synchronization.
a7db63208833d69ba02ef5ad21d32017f148bc46 2017-04-21 mark created frozen strings.
5f5bc068ed7358be7975d0887d48d2c26e7f9847 2017-04-21 insert WB correctly.
9e1ab6cee4c7e7363a67af5129b7b18e484981f7 2017-04-22 use $(srcdir).
a6f0ec21e9d07a7a10f5a2fe06728fdad5b4d1d6 2017-04-23 mark Hash keys correctly.
de1a9d65653d9053fdc7dc2b8e7068446dddfdf3 2017-04-25 revert r58478 and r58479 because they do not support not in-place build
301d669a3150762c51473fde9c486169241e2ec0 2017-04-25 add timeout.
895954ef91c974ceff829e0d06132853e87377ea 2017-05-15 add information for debugging.
f033cfa3816e0138906aeaf8adcd3c18a623d16a 2017-05-15 refresh Gem at the end of `teardown`.
a9b001a4eb924cb3f0517e55ef941adcffd1f4b0 2017-05-16 skip openssl related tests.
975d1cb3d18da9e35694dff7bb308f011fabd320 2017-05-16 restore yes-test-rubyspec
95d3671e94515fa83de975604fd1a03fa79f081b 2017-05-17 skip some tests on vboxsf.
8ffc4094a42feb49f6dc740af2657fc32ca72353 2017-05-17 modify r58771.
37da94857a2cdc42ac213cd9760adba82ef883ba 2017-05-19 specify unsigned (fix r58784).
9e1624cfe8880fc018e34327c77669f2f4e5b100 2017-05-24 Add debug counters.
7d52ed594ecc0fe4587b2a9132f5b4a8e39cf2e9 2017-05-25 use timeout scale.
ad0f8ff76cb6c698e75dbde6011a9251d5efd13b 2017-05-26 Symbol support for opt_eq_func.
b3a9fd0d1f64680cc95bf6f26285e399306c3f1f 2017-05-27 apply timeout scale
492c88dc3bdc34b089be525ab0c2b3d2519b1b52 2017-05-30 add parameter names.
cc50ed4a5044133ef1ef79d31aa7d850bf3ca83b 2017-05-31 add debug counters for local variable (lavr) access.
478003f6df40dc79d33c6ec86919f2dde07284be 2017-06-01 rename absolute_path to realpath internally and introduce pathobj.
648e0a977557ab6a587028437f4e3b7bfd9f0b54 2017-06-01 fix failure on r58981
9301ef5d0eac8fda440b021445a09c17397db5d1 2017-06-01 make Binding object WB protected.
b4621c9aaed7e18e377b2e36f41b61f0960997d8 2017-06-01 make Dir object WB protected.
26864584d269b6141a27c783cf8b751c067c7dbe 2017-06-03 * vm_core.h: remove VM_FRAME_MAGIC_LAMBDA and introduce VM_FRAME_FLAG_LAMBDA. So that lambda block frame is VM_FRAME_MAGIC_BLOCK | VM_FRAME_FLAG_LAMBDA.
1dc7906b17ddd17a2ec2af9c1f2e44c6fb7d22e8 2017-06-05 remove arg_setup_lambda.
ff18933b72bbe2a232bb8a96877364e836dd8465 2017-06-05 rename functions and clean parameters.
424b4ffe300e2e10bd39df3dab24732d33b0df8b 2017-06-05 do not inform ``is_lambda".
1a6e648075c92a128c3a814af43390c2b50fff2f 2017-06-05 revert r59017 it fails ruby/test_lambda.rb
b0c9215f72c571c095bf82c4233af6ff848d48d2 2017-06-06 revert r59020 because it may fail some tests sometimes on some environment (http://ci.rvm.jp/). This revert is to check the reason of failures.
e9c440815ef2db47854fe3a3e282e33d7d209c03 2017-06-06 revert r59023 because it contans unrelated developping code
7d041e87c6c5d77c8546b3a5d3878c3beb5f4a03 2017-06-06 re-revert r59020
0318de23d40c2de90f4b2126ff41f1b0dbcb5325 2017-06-08 use NULL instead of 0.
7d8a415bc2d08a1b5e9d1ea802493b6eeb99c219 2017-06-08 check break target correctly.
269b795556d1befc13fc2e44e3a1dd5ec2fb7950 2017-06-08 vm_block_handler_verify() should not return any value.
fccbc2d278226a2dfe5cffe4918724b0110c5781 2017-06-12 * proc.c (get_local_variable_ptr): return found env ptr. Returned env will be used by write barrier at `bind_local_variable_set()'. [Bug #13605]
6c3f1461cd8052486f8e124f8f899447f653505b 2017-06-12 remove ruby_kill() introduced for [Bug #7951].
f06daf167b6182d5ee30236695c0ba8d9159c703 2017-06-12 remove rb_blocking_region_buffer::oldubf.
3b405a8912b5762197cdec9f78f040956640830b 2017-06-12 add a comment for rb_thread_mark()
eb0777e86533f999d90f679469174056158d3f30 2017-06-13 fix to free unallocated memory.
d7e7f051e4ed8d0f69078f2d861d874a52ecc414 2017-06-14 remove OPT_CALL_CFUNC_WITHOUT_FRAME.
70d6d8ac811b2bb6d796469c5a4eb1020d41b43a 2017-06-14 simply call xfree().
e64e3c4c21361565fa03c49292e6918e0eb7f693 2017-06-15 Prohibit SystemStackError while GC.
ab8e756de0f88f1841510a4043558c0f4d28c5cc 2017-06-16 require 'bigdecimal'
4d932a68ffd0da0267a9ecf33d480e2d355fd60b 2017-06-20 skip unresolved issue.
f736cf327457a12189d5d3d43dee968a884ceb02 2017-06-22 introduce GC_ASSERT().
a48fecd3b9be58911182af073a6ac17528e0e68d 2017-06-22 catch up frozen_string_literal: true.
de2ae27bd843893804ba97da0541c0684193ede2 2017-06-22 introduce heap_allocatable_pages_set().
dc44df8a06cca6bd372505093b4f28ca70c24eb5 2017-06-22 try to fix symbol duplication.
eb3ca699351c56ca736641ba12b69a2e63e4b628 2017-06-22 use --dump option for parse rule.
25566b05fc24d793b7a83941ac96971a03daba0b 2017-06-23 skip on other threads.
23206859bc2365543a1b941351fde051977ee4e1 2017-06-23 revert r59151 which introduce failures.
931cc441e5e062b7dd9fe8ef3cd4a12a80c2967e 2017-06-23 skip on other threads (again).
1d248f04294bf5916f54168ee28cc42471132c54 2017-06-23 use NULL instead of 0.
2108e55c0b8fd31cec8968868a56876a22f3104c 2017-06-23 use "enum ruby_tag_type" and TAG_NONE.
a90c696b8bb67eecc5b415d58f55705c0bf3f8f8 2017-06-23 rb_catch_protect() accepts enum ruby_tag_type *.
a64801c1e95e127ad47de1d6d8fdb3f3390a9687 2017-06-23 rename th->state to th->tag_state.
4a4627fb0d770269f876c711b642b7f7275b22d2 2017-06-23 move "state" to rb_vm_tag.
facd0883cb7523b6ff67f3a2bfa0a2627f1d5ba5 2017-06-26 Do not store/restore Thread#status on fiber switching.
e8a80f80ac164f3cc1577f70eb068ede69e3993e 2017-06-26 add "FIBER_" prefix.
043523adc5275b640f5bb33bd05513194dabf61d 2017-06-26 copy ec on Fiber.
1939d097e650a60557eafbd89a6684f4626e0ad5 2017-06-26 move several fields from rb_thread_t to rb_execution_context_t.
d98afe3ae2bfcef9ca5765e72f159d863b113e3b 2017-06-28 move storages to ec.
249790802db62ff22c79830d4054c449fa3c243b 2017-06-28 introduce rb_thread_ptr() to replace GetThreadPtr().
3462dd360968c2186bd54a2035acf2d525295130 2017-06-28 fix to check thread type
957d1ccdf91941e57a62eeb695cf79e1af87876a 2017-06-28 move fields to ec.
8dd9c12c585375cc9d89441d7518a7846044deb0 2017-06-28 move fields to ec.
5041f548ddc88f8a48d8f4e099dc2c5790a17d00 2017-06-28 introduce rb_fiber_t::first_proc.
5168fb54e327be6414e53af54c149948a94e623b 2017-07-11 tainted string should be tainted.
fb29a4dcda2b9c4fde85c6cf237d5158c0fe583e 2017-08-01 should not copy promoted flags.
92f7813ae27ca7037f9ab6e5744675c01b3fa574 2017-08-02 release VM stack properly.
46085e913a90e2c9b3c7b01d8aea91cd43e76224 2017-08-02 fix stack storing for root fibers.
41e1670a64405133e3d25b73e5cab9456ccb364e 2017-08-04 use stable sort.
57199f2125ce8e2043420af6ccc3354e1d411c0f 2017-08-10 refactoring Fiber status.
43384ae9788be243746849ee54d9f5c8f7e0412b 2017-08-10 Fiber#to_s (#inspect) return richer information.
93fd7e5639b2aba5ada1ebcbc77e1a88df6e0e04 2017-08-10 remove additional newline.
27535987bedec229294a8f6f7d1d6668b7a3e697 2017-08-10 Define Thread#to_s (as Thread#inspect) and make alias `inspect` as `to_s`.
d3650ccc7e78e434a30290aa4cd312f382ca9728 2017-08-10 constify some variables.
6881279149bb452ed1787cdf60c8e614178c0b6a 2017-08-10 rename rb_execution_context_t::stack(_size) to vm_stack(_size).
404284674a5f68527947d893d4525e95dc2adc33 2017-08-10 introduce fiber_restore_thread.
c9bb3cae315aa7d17f620e9bcaa9223b1e6d2c07 2017-08-10 use VM_UNREACHABLE() instead of rb_bug().
da4ce796d2aeef0d18165de93d8548c1042b5ec1 2017-08-22 split out struct cont_saved_vm_stack.
e553df868c3f9ae9db3212cec73529dd9e8cd9a2 2017-08-23 remove debug code.
480c84e1afbe54d4b63da64d26fab2d39819557a 2017-08-29 fix error message.
7e8cdaa6c34a1b8d6e6e78c61997a5f863f6c3cc 2017-08-30 to_str -> to_s
ed740754bd96e845bc86f070b90267efc1ad5136 2017-09-01 skip unless PLATFORM is darwin.
366157d32eacef7db8e5c57d0b492657d2b8a905 2017-09-06 rb_execution_context_mark.
b95d9e664de6b7dd07c6de7249ad460fcb5b67bc 2017-09-06 thread_context -> execution_context
e413909516eaa5416a33d9dd8011d2310a74f5bf 2017-09-06 th is not defined
7119de47c7124f4f6ab1966ddf501c1700d51a73 2017-09-06 accept ec instead of th.
8e037913733b49a788586c24fd97d2d616e42e42 2017-09-08 move th->fiber to ec->fiber.
4f0c9a5cc49cf36f15af85f644982fbb847f0dca 2017-09-10 move th->machine to ec->machine.
525532ff43a6c3ce4195ce4a21f4b7cb589d32a6 2017-09-10 clear `stack_end`.
2a01ac897d98e1794666782ece6673185613171a 2017-09-10 avoid false positive on fiber_verify().
b53b37758d61e0367b6ca38d16011833cf95c0b1 2017-09-10 store ec instead of thread in rb_context_t.
3fe69a0da484c277c4bcfc07e72e5843d56e83df 2017-09-12 Use mutable strings for mutation tests.
9ea2102e57114d4c722b90355ab8ffe197938012 2017-09-14 remove an unused variable (sometimes it fails test).
d0566062f97e0df9637fd78f5c6eef7f5e57991f 2017-10-02 catch up r60088 for DOSISH.
da4f041ea2671e25fdc209eb24255f776583f127 2017-10-02 use `ra` instead of new variables.
8ae178683f6abba8485573d7eb5dcc2232aee29c 2017-10-11 check a thread on TracePoint.
1a63e72770d50a7b274c903be3b4c97a51db6dda 2017-10-11 revert a part of r60163.
293b9d66af15b2f14f2e278a32a5aa29b7c396d1 2017-10-21 add RUNRUBY_USE_GDB envvar for runruby.rb.
2ab99609e0968200c5b6ef41a1d3894c94d2d267 2017-10-21 imemo_mask (enum) -> IMEMO_MASK (immediate value).
62c68b4c93d3b8d11c1b8b701223c8b4902263fb 2017-10-21 do not need to clear by NULL because of last commit
4c6eb271ddecc8534d10449ec2ca40df6bea2e58 2017-10-21 fix r60281
5ee9513a7104078d9d2f51aecc354ae67f1ba002 2017-10-24 Lazy Proc allocation for block parameters [Feature #14045]
a0fc5fbfd25be98d3456a5117fb807b93d3538bc 2017-10-24 add NEWS entry about [Feature #14045]
837fd5e494731d7d44786f29e7d6e8c27029806f 2017-10-26 Use rb_execution_context_t instead of rb_thread_t to represent execution context [Feature #14038]
e95de48f1d7719517400d0beaa4d7f4f295abbf7 2017-10-26 some functions accept `ec` instead of `th`.
e6309f0d50ae498fe259866c8d5bbb7829ddcec5 2017-10-26 fix comments
a8735ed2061adb06c725d62e4c79de504c7b9975 2017-10-26 A function accepts `ec` instead of `th`.
32c41f0c7c9d47a38c73ec12dc80ec5263a5335d 2017-10-26 A function accepts `ec` instead of `th`.
f3400dfd81e6c1b44acdaadce9fb180bc238353a 2017-10-26 use GET_EC()
9adf6064ce7e5672cd7a91fd597e21917608a0c8 2017-10-26 vm_push_frame() accepts `ec` instead of `th`.
284d4c08d66d15b299c9b483a80131d73a617af4 2017-10-26 vm_pop_frame() accepts `ec` instead of `th`.
24044b2f6311f4cef41e7509018823c2dfd26577 2017-10-26 backtrace_each() accepts `ec` instead of `th`.
4552f747159ad3ead5827bd17c006784163a38f2 2017-10-26 introduce EC_*_TAG() instead of TH_*_TAG()
8afee516beddd2042585d69dc7a1ae4b02460902 2017-10-26 fix freeing `th->ec` bugs.
d717dafc0e928228dcdc42242b2b8e7d3881cd22 2017-10-26 skip test_fiber_transfer_segv because it cause error with previous commit
d77305fc9cdf295bee3d6d6148dfc602291ad91f 2017-10-26 make root fiber at switching.
f56288d7a8b0972a0ceacd359dd0b7438f7540d0 2017-10-26 replace `GET_THREAD()->ec` to `GET_EC()`.
a8868b3fe56384d9f57ff5803bd843b26afa1584 2017-10-26 rb_vm_bh_to_procval() accepts `ec` instead of `th`.
a399badeebb988eea055373f69789112e59da238 2017-10-27 move decl.
e47a687c83ab7d1084a573e9d12cc82b36f4c63d 2017-10-27 vm_get_ruby_level_caller_cfp() accepts `ec` instead of `th`.
9d41e743987553183a6ef1df8913d3fc5423c2e0 2017-10-27 refactoring (rb_|)threadptr_stack_overflow.
34ff953e37b9a96be57d73bb3c73d8c22c2ac98e 2017-10-27 Some functions accept `ec` instead of `th`.
84e6a3d31c08d2302f8592ee07cc3bacb1f47d9d 2017-10-27 ec->th for vm_cref_push() and constify.
2f4e6b6c4f49533cc905420be3e1810517078ac1 2017-10-27 vm_throw* accept `ec` instead of `th`.
c96f809729aabb9a91a20dd1bf53154b004fa8f8 2017-10-27 `vm_call_handler` and related functions accept `ec` instead of `th`.
b5101cbb23b9ddb24565c5c5512aea2b82af422a 2017-10-27 vm_get_ev_const() accepts `ec` instead of `th`.
ac58719ab322b04a96067d46cd30068e0f0c1a2b 2017-10-27 vm_search_super_method() accepts `ec` instead of `th`.
4c961b38618beaff222dbb7bae0dce1c64a5d0c3 2017-10-27 remove duplicated definition.
7267a79a7f702f785e88952bafe1eeb5176460b8 2017-10-27 vm_defined() accepts `ec` instead of `th`.
f37049ec054763168691c9c6bd70c75f00cbf89e 2017-10-27 `ec` -> `th`
91f3700296bd881942125477f142693e97fb4392 2017-10-27 should use `th`.
88910e94a83e3360619685b6535081e9c6f81d12 2017-10-27 `th` -> `ec` for block related functions.
04dc3a0ca655011fc775d58a7bd933b8ed644ef7 2017-10-27 vm_exec_core() accepts `ec` instead of `th`.
5f50a56efcff722192fd30c3f11c2c36768a101b 2017-10-27 skip tests temporarily
baa849443f6e1cd91ab48f17d5967e4a60bfc93f 2017-10-27 `th` -> `ec` for `rb_insn_func_t`.
7e9aca40711ac3a72576bd397481fa1ba037b98c 2017-10-27 catch up recent changes for call threaded code VM.
6b0b79caee7f1b28e08a1d40107371388e96ecdd 2017-10-28 fix compile error.
456327390983ebf05712f9707cf01adb4803d40a 2017-10-28 skip machine stack marking for current ec.
f8a9d044f416e04e0c340fe77bf5c603fc753ff2 2017-10-28 move fields from `th` to `ec`.
9c4542dbaa0808de63fed5681a0e514d47d5d10f 2017-10-28 `th` -> `ec` for vm_set_*_stack.
796e1990beb5134e445606298fd86d9552a06f69 2017-10-28 `th` -> `ec` for vm_exec().
9ca50884282cb91e0d6dba6a8dfcfd4fc0eceea5 2017-10-28 `th` -> `ec` for rb_vm_rewind_cfp.
5a7bd5349cd15bf662b949e8510570d3929c35fb 2017-10-28 `th` -> `ec` for some functions.
e6956c048a5c082fc643096e32e37cf1f6d77db1 2017-10-28 `th` -> `ec` for some functions.
874d6b329ec85d9109e79e3caca4ab15a4ec0638 2017-10-28 `th` -> `ec` for vm_iter_break().
c12897cbea435f39ceef1e26be2676835aa02d04 2017-10-28 * vm.c (REWIND_CFP): use `ec` directly.
6d803d4391a27708903bbd12fb6fdb3e865c3a8e 2017-10-28 * vm.c (vm_define_method): don't use `th` any more.
2317b5da2ae2bab490c91773dad27115d3342bea 2017-10-28 rename a function.
4cd402ae1f5bf127ed16c7f5c84b5193e595cf35 2017-10-28 `th` -> `ec` for rb_vm_make_binding().
abfdaf20a6cada238c6bfd352c5375ed56b18bdc 2017-10-28 check `ec` instead of `th`.
0c6e5c7880b048deb7174275418602881f637ccd 2017-10-28 use `ec` directly.
b1890fa136ee7002b82e174de78d4fb6a2661467 2017-10-28 `th` -> `ec` for rb_longjmp() and related functions.
7df94b0f3d5bccd92d7736e876a7a0ad746bfa77 2017-10-28 * proc.c (proc_new): use `ec` directly.
42d137ff19f440bd4c771d0623b679b2636ab7e7 2017-10-28 * proc.c (rb_block_arity): use `ec` directly.
ed21061f21392b45a101d2ab6b859d7a08899c8c 2017-10-28 `th` -> `ec` for rb_vm_call()
7fa4beba91d37a91dbacb5faa5e12202202ba2d8 2017-10-28 `th` -> `ec` for method management functions.
ad1b64d35d7ca980a0398f09cff527d7420cd5c1 2017-10-28 `th` -> `ec` for backtrace functions.
382aa678d093904762f352063689577b3269a51c 2017-10-29 `ec` has `thread_ptr`.
3fd1b00528ad9209acd60c5badcdc0b374c50000 2017-10-29 `rb_trace_arg_t::ec`
a288b87c4c4469b98d75125d3f24eb904d02ca28 2017-10-29 EXEC_EVENT_HOOK(ec, ...)
e80ef4e6ce746d4fed988581a9dd4b5ef6181c22 2017-10-29 use `GET_VM()` directly.
cb81d0ecb1f3948bde2e8ac079c7cf78e92db7a7 2017-10-29 use `GET_EC()` directly.
248d3d54a3ea81aaf319b1926a270e7f889aefbe 2017-10-29 rb_ec_stack_check()
aafa4ebff234a4cdadf00c893369edb4b4a4ab38 2017-10-29 use `GET_EC()`.
5256f7752763249288662c6c5ffc5686d244a535 2017-10-29 remove rb_threadptr_during_gc().
a93c650312c11fd22e146ec51d3208da28595152 2017-10-29 `rb_ec_error_print()`.
8702a33dd20542262b31e42f2f83c7219e7a55ff 2017-10-29 `th` -> `ec` for VM dump related functions.
b0d79e1072a72b6d23c70bec313d36c9cb8f8124 2017-10-29 use `GET_VM()` directly.
bcdb02c8f46db3266d985eef906e8cdaa2bf31e7 2017-10-29 `th` -> `ec` for vm_call_super().
01a935d478d67235ac3e243580150ae83a2dd6b6 2017-10-29 * vm_eval.c (rb_current_receiver): use `GET_EC()`.
2ffa4d23941e22379fe5ade55f2541bdb807ca64 2017-10-29 `rb_call0()` accepts `ec`.
cf28dbc5431900bdc9a8d11e8f9f68b421c83dfd 2017-10-29 `th` -> `ec` for rb_raise_method_missing().
881ac0a5655a20272e3b23de42131a7be180e8df 2017-10-29 `th` -> `ec` for `rb_iterate0`.
502d8d7ccbe7489180d01b6afb5fb3b879ab6745 2017-10-29 use `GET_EC()`.
d95acd784e6aaab471a182a96d1b079b73b623ec 2017-10-29 use `GET_EC()`.
9ffc0d19b73be82f77210ce8fb8d3eb10646fe82 2017-10-29 * vm_eval.c (vm_catch_protect): accepts `ec` instead of `th`.
ac13e92e492886ca6fcc35dc325de4307e997b89 2017-10-29 use `GET_EC()`.
c7c173a6185f8fe3c9cf5116a2362af95247a5f7 2017-10-29 remove unused functions.
6d5636cdac33359b732c13e8a2a5c086f1006e72 2017-10-29 constify `rb_vm_bh_to_procval()`
4d4f23d8c33aa6adaecd587f459c971cb7fc4bd2 2017-10-29 use given `ec`.
484cd5a13e6608cc620f4b1871fb528491f5e7c5 2017-10-29 * vm_eval.c (current_vm_stack_arg): accepts `ec`.
735129aa90f6e5675fd0b11f2354fc0d61817fd5 2017-10-29 * vm_insnhelper.h (GET_SP_COUNT): removed because nobody use it.
6d11719b0ea795f572207429c56f54f4de25fa49 2017-10-29 call `rb_vm_stack_to_heap()`
ad8bc4493d1b44b5189bc780e66d30736c96f403 2017-10-29 * eval_jump.c (rb_exec_end_proc): use `GET_EC()`.
85fcaf025defe5f84880d111663218aa42d0d158 2017-10-29 * node.h (ast_t): renamed to `rb_ast_t`.
d51de2bd61a60a0fae647605f1b362dc82f12321 2017-10-29 * vm_dump.c (vm_stack_dump_each): accepts `ec`.
27be4d5adcf493465ed56cf6cfa55ea83f969526 2017-10-30 stop refine_spec because it causes double free error
76d4fa8d15fb4e5a84e276b10ecbef22da38d681 2017-11-01 revert r60596 because it cause faulure on TestFile#test_realpath_taintedness
e5e735549db7f678cf0174d4103df8c98651da36 2017-11-06 renmae ec::fiber to ec::fiber_ptr.
5845bd6a718573da5f0f7e53368d2a1dda52f420 2017-11-06 show the location at intterrupted
5dfdaa92994096ac7c6713ebd77413271ff4bc41 2017-11-06 move rb_thread_t::interrupt_flag and mask to rb_execution_context_t.
49d0bbe73f22132773e9a6053d8fcbc16b261008 2017-11-06 use `GET_EC()` directly.
8244d10f6bf4af6a237125af93634ee09578623d 2017-11-07 prepare local variables (th and vm).
b6ecdf5fc8071f66d267c904a9c7888b59fef165 2017-11-07 th->ec: rb_threadptr_reset_raised()
f3482ddabff7b2b069de76e1270576aef9aa9014 2017-11-07 rename because it doesn't receive `th`.
001eb22c759b6d6e822937c72e3609497e2ba341 2017-11-07 remove `rb_postponed_job_t::th`.
af8a7df3b66019043907fa066934e81a4ef2072f 2017-11-07 move `rb_thread_t::method_missing_reason` to ec.
da9869625a7d73c844db27dfe09e574b43481877 2017-11-07 * vm_backtrace.c (rb_debug_inspector_t): `th` -> `ec`.
4049ffb58e13be7e8d84a12254dcdf2df60a4491 2017-11-07 use GET_EC() directly
d1013f2ab85006da94f7af04f97961bb9e9da38d 2017-11-07 use GET_VM()
ee189904f0e3e0263adcbcc844947f6ccddfb7ad 2017-11-07 rename to rb_ec_set_raised().
48ce4cb414be48be1a73d2530203469b3b98281c 2017-11-07 * eval_intern.h: rename macros rb_thread_raised_* to rb_ec_raised_*.
f1ad90a5e360752e3f7ab0a7641ca416be9e0b03 2017-11-07 * vm_eval.c (rescue_funcall_args): th->ec
7e9c5aca4c0643afe8356b970008e5650174892a 2017-11-07 * eval_intern.h (rb_threadptr_tag_state): rename to rb_ec_tag_state.
8d8e339d763eefa6ed9ccc23513d5d52e2db9eef 2017-11-07 fix comment
8b7f06d2d66695b3997fb5588cad1d55da402960 2017-11-07 th->ec: rb_load_internal0
7285177c9700c7176c767047f1f788997623cbd0 2017-11-07 * vm_trace.c (rb_exec_event_hooks): accepts pop_p.
2d71889b6b48f55780e2d97e4a159469427c94da 2017-11-07 fix prefix `ruby_...()` to `rb_...()`.
f6c102e6a58cfd5f6ab2144e13727a074aef0b46 2017-11-07 th->ec: rb_threadptr_setup_exception
8ea78d66a1cf671a9067edb727fb01df7437fd3d 2017-11-07 th->ec: vm_once_dispatch.
8dbaf1bbdd92ebac7fd186f072cd35bbf7f6458f 2017-11-07 `rb_execution_context_t *` should not be `th`
0c2746a7bbb02f8417b892408371dba5c4cff222 2017-11-07 th->ec: dtrace
a95f4ace397d145d490de428c864ec55afda18f4 2017-11-07 `th` is not used.
17f9ad40f64b0a7d54210964b5341f9c44fa4613 2017-11-07 disable GC.
976b6df9596a2077f09f6bed1796a02a229498d1 2017-11-09 fix peephole optimization.
3b7373fd00a0ba456498a7b7d6de2a47c96434a2 2017-11-09 fix backtrace on argment error.
1c5ae5a16343fe8e32876ad38fd4093962dd02c2 2017-11-09 insn_info/insns_info
61e4c999622d7f028a15379b5cd91ad1a25c2799 2017-11-10 refactoring about source line.
77c301073b4fe9497ed96f0062b0017f57141811 2017-11-14 use RUBY_API_VERSION as ISEQ versions.
665ba24b446971fdf652a9c57c32b176d0018636 2017-11-14 remove `trace` instruction. [Feature #14104]
b000b1d93041f8466439709da7b71e1f3122d530 2017-11-14 fix prefix.
19ae98d5ce12cd29d5bd276afbfd0a365265121f 2017-11-14 rewrite only if changed.
1d7247e6941ed1630ad172834bbaaf25b968be02 2017-11-15 fix uninitialized memory reference.
a3071ea4e38eeccc4d7e7eba3394ef7483b3cbcc 2017-11-15 remove rb_thread_t::event_hooks.
23e452b17b604c35339265b480b900581abc2ce3 2017-11-16 cleanup hook cleanup code.
e8ccf9f758a98348a3f35bb746b0d9b963dbb07b 2017-11-16 avoid duplicated-cond compile error.
c761514c768d8a1bdae8f1e71657af251ea6d132 2017-11-16 fix up r60782 and r60783.
ea665dcd8cb817c859f7f87a7d1a457cc823b4e7 2017-11-16 add `ec` as first parameter.
b3cab0dc74da4349a4b478ed0de2b4578da542bc 2017-11-16 remove an unused function.
7a666c67664053df9e749cc81d17a2312881d436 2017-11-16 rb_source_location() may return nil.
15abb96177f389efb5edbae1bf5fc7e39787610c 2017-11-16 fix r60789.
360b78e4dccf19971d7dc46a31fc55a2759e8762 2017-11-16 `rb_source_loc` -> `rb_source_location_cstr`
1ae69a20645d7be556fd0ecd001b0bb5f3959330 2017-11-16 fix r60792.
2fb4c36c44ab390b48a96985e6b0010e4e866992 2017-11-16 accepts `ec` as first parameter.
4d6e899a27eaad2df5746f6c732de8ac56fad2a8 2017-11-16 remove unused function.
003fd99ab3172a0428e83e64a95bc51f97aa81f7 2017-11-16 provide rb_vm_make_proc/lambda().
686e54f7052de070efa4276c9832b1697eea677b 2017-11-16 make it static.
3936aaa59b4fcbc1592337f5b64d37295e99f8c2 2017-11-16 make a func static.
aaa43037c21bf8fdb3348e111fd60e11a8536b79 2017-11-16 export rb_tracearg_callee_id().
d4a69bb48e4bd66a3d52759e7c7b14c600120f27 2017-11-16 make a func static.
8184cb2bc7caea30a86a9a0a1217680569e17676 2017-11-16 remove unused function.
1a7af9d0cdceb061255434f9cf321a695a67b02d 2017-11-16 make a func static.
2c7e974e4ffc2596c8da8c74c8c2d4fc1f39876c 2017-11-16 make a func static.
16ec72e56c915d31a4672b3991c6cdd9b70a5efd 2017-11-16 remove unused func.
0de6da0ee5c012c6956d6f33976ad8baab0f1b5a 2017-11-16 make a func static.
8798822564c499a0d3e67dc757635298dfa09915 2017-11-16 make funcs static.
f4cb93adca71ac2a9b813003e8bfa2e5680ec51e 2017-11-16 make funcs static.
b453fc2cb91eec4527f4039a965f27cc7715c365 2017-11-16 make a func static.
a52603a8ea0fa31fd567d42efcbad256bb48e2b5 2017-11-16 make a func static.
ea4b535579a77fc7f49bc00bc8d95f802b1d9ad4 2017-11-16 remove an unused function.
1a960576262223e6ea1a2ead214cfaf90fc304e6 2017-11-17 remove `trace_` prefix insns lazily.
c7ae8af92faf7c5566aaa2c0831a51e6b5f16e72 2017-11-17 reuse gvar value.
d2bb08ecf02fccbe8e5d9723af21cfe454c3cf29 2017-11-17 remove a wrong assertion.
8a664f0c9626b3bf57615021b3a549f5b68534ab 2017-11-17 don't use `goto`.
26451ab3bab3aff8cee0113405b3c542c2d59b37 2017-11-18 introduce `trace_events' info for iseq.
fb826d58ee187ac754d67fc048eef09e8c97171a 2017-11-18 call only with ISEQ_TRACE_EVENTS.
eb3e32480d65efe19493d2f3b63dd31ada7eb354 2017-11-21 check invariant.
9f1c00ce65ed8762d5ab9f133145e19d1951a7f3 2017-11-27 Relax `rb_bug()` condition.
33201294eb59f10ccb98752207c2cc9d1c8757cc 2017-11-27 Ignore failures related to threading.
5286a89624855418c548c4b5e60bc67e4b07f380 2017-11-28 check ruby_vm_event_flags everytime.
0e34638f792ef908e59590266ed9edac5ce411f1 2017-12-06 remove `PUSH_TAG`/`EXEC_AG`/`POP_TAG`/`JUMO_TAG`.
104ca9f4df386721476e0bfe107b323b68f3e0a5 2017-12-06 remove unsupported RUBY_EVENT_SPECIFIED_LINE.
ec1d41ba0e119089ec4df4b58e5c12eb17aedc79 2017-12-06 fix last commit
b5d5cce11b6980e963d84a7ee16a3d9a04a682da 2017-12-11 vm_exec.h: introduce macros for abstarction.
975e3a19a7ef725f6358d74f5bf7fd20d4403587 2017-12-11 do not disable `trace_` prefix insns.
568c0a2dff72459d65e58c0c828144cc5a19438c 2017-12-11 remove vm_opt_binop_dispatch().
a1061f557ba50ecffc7c835f88826f6340b1e471 2017-12-12 catch up r61131.
6c49079ea2205119a0130c8d69e7f7a23f45b608 2017-12-12 ignore lines (to catch up r61155).
c740951f250c4c4ad3b93e01aed92ec370e36e41 2017-12-18 check EOPNOTSUPP.
cc2f982852248b56ddc44d5895de6fd7cf950aad 2017-12-20 extend timeout limit.
b895c402a5c27f8b4604bc2293cf616c89dc41f2 2017-12-20 fix threading bug.
e9a184ed63e7bdc121b482b7c08bcca670343821 2017-12-21 add experimental API.
85277d5be0b24638ea4bf84c422e71a1219465e7 2017-12-21 revert r61371 for [Bug #14214]
14d44c8997c5e1b0d81f6e7ace2c7a5e5ba1e84b 2017-12-22 fix a test for debugging.
919fa894f5e0fed105ad1513cb8be0748ae46295 2017-12-23 revert line number spec of *return events.
eb8c2773cb57628c09b36243d74cb752327819a6 2017-12-23 RubyVM::InstructionSequence#each_child.
3044138bd734cf94e09250ac1bcb0886c26cdb27 2017-12-23 RubyVM::InstructionSequence#trace_points.
0c8e6ae0b87d5e180385e4c46d83384e9eb7d28f 2017-12-23 fix last commit
cbac40b3e53efce7740899c77eb979008dc96ff5 2017-12-24 Remove "trace_instruction" compile option.
360c00572feb09da9d1575f667348773acfdcefd 2017-12-25 Set first line numbers for empty iseqs.
d7c6776f7c8c94d0a5443fc1c5290561ef527f5b 2017-12-25 Disasm output contains code range.
f8fac84c7ba232166fdacdcff026e6ea0570075b 2017-12-27 fix concurrent test.
c39bdb798d838d58126b548465908243c41bb1fb 2017-12-28 `$SAFE` as a process global state. [Feature #14250]
a9170f0dc1d2a4882022c48a47d1afb54fa4b12d 2017-12-30 increase test timeout.
fb112a8c4debb4220eaa5a75fbb10afb39672b20 2017-12-31 fix reset order.
cff48e4456ed67f1debadea38ae1041598b04222 2018-01-02 check an existence of block.
4493657582d1dfd203f7b6c02d7006094242e525 2018-01-05 check array for zsuper. [Bug #14279]
0268c85e85602f346ebfbb363702b14e13899840 2018-01-05 * insns.def (invokeblock): `calling->recv` is not used.
0d2346f9a1bec6824863404cb371492336c673e4 2018-01-05 Speedup `Proc#call` [Feature #14318]
7fd11834676eb4df34f7160aed1cdf798e60d0b9 2018-01-07 Speedup `block.call` [Feature #14330]
adc0bf933e1232b43e01e79c8c676ba9420ab5ad 2018-01-08 fix mark miss of Env (which is pointed by prev_ep).
b4960648bf524605f87e5a5562c3a4b68d2a08bd 2018-01-08 fix a bug only on assertion.
8a83cd100bb932f47ecc7e214e9d89cb8ec3beae 2018-01-08 use `getblockparamproxy` to pass blocks.
39c214984072280723f4c30efa3a2eeff7c13629 2018-01-09 `signed` is required for Rasbian (x86_64).
6a87d5161f136a9e008c034dfe0684cf3455581c 2018-01-09 use binary search for insns_info.
f8fa8dd9de59733315ff96fb8d4f6c3fbace1050 2018-01-25 revert r62032 because it refers to a undefined variable
68e2a2e5cea3204f935988a8b3b49d54e8dc43be 2018-01-30 skip EINVAL on unsupported platform
381650ea5821b62c0f559f62b1f445d644666e13 2018-02-14 skip "TestException#test_thread_signal_location" as a known bug [Bug #14474]
633b463854e14e584f17a9255bb43b757b9b1f6c 2018-02-21 add NEWS entries about [Feature #14318] and [Feature #14330].
19a189947035c6e6f4785f27032392fa10a017d0 2018-02-21 use `--version`.
4542d61628acb2de05a319fe4f5da9b3450260e3 2018-02-28 skip a test if another Thread is running.
8d9c6e32335b2ae98b3391bccfeef985798dd500 2018-03-05 add prefix to the function name.
38895e5c105f75cebd1dffc83667bbf04b0e22d0 2018-03-15 use SIGUSR2 to debug.
8f2d5e58a3aa67c0a2eb3ba07ce5d60af09a6883 2018-03-28 fix regexp introduced at recent RDoc update (r62924).
db3cc675f3c4e832028b67a202991fa78aa0a694 2018-04-03 Fix Fiber with Thread issue on Windows [Bug #14642]
1751ea76a4583a1796324135fa5d30fef6abfc24 2018-04-03 repatch r62966 and r62969.
c5632105323a2ed48cb319de74d7e938e62b0a21 2018-04-04 use Queue for inter-thread synchronization.
51d227e3a5e6ae3e5d796a9e5fac35ad00a85e16 2018-04-04 refactoring r63073.
dd45691dbcb2ffec790761c1b970fae91375a56d 2018-04-22 Skip some tests to make CI healthy.
532464d1784598a2d86cacd59e2adde528760ff9 2018-04-22 Same as the last commit (comment out tests for CI).
76daf51c36038fde7405c379b3b77924dc3dfe3e 2018-05-08 fix type mismatch.
e6ad53beaa8f61c784d7e6c9cace5bd6ecc4d5c8 2018-05-23 remove VM_ENV_DATA_INDEX_ENV_PROC.
37ea653080579e30a912d32c50b76b8c1a5619a7 2018-06-06 fix r63587 with temporal patch to pass the tests. please re-fix it.
3b43173c64a15d291a30fced4d87762c32869fa5 2018-06-13 add "print_flags" gdb command.
2e5aa3fba8fe96331ab420694aacf710dd995f43 2018-06-18 hidden objects should not be pushed.
7f4fbc1f09e04a6d3c8e28f20835ebd4c43ef998 2018-06-18 remvoe assertion because rubyspec hit this assert
61391616f422bb95baff5ce6992044d2d9c7b2bd 2018-06-19 NULL class Data_Wrap_Struct is not allowed.
07a5e55f1126695457353cde5f7aeceec6cff07a 2018-06-20 Introduce `USE_GC_MALLOC_OBJ_INFO_DETAILS`. [Feature #14857]
331f46a25063c8320ac6f6ad023c3edacedb36f1 2018-06-20 add assertion to vm_search_method()
cbbe2fab8255223f2898489365b16a72d2c02946 2018-06-27 remove assertion for hidden objects.
d0fb73a0f0b82ebc0d3eb931c28686a2b9c40fef 2018-06-28 check enc_capable.
38e05ff3e194268fd2f38ac7c9530298e464f07b 2018-07-09 Don't copy FL_USER* on Kernel#clone. [Bug #14847]
b2f9deee3ee0ee602fb5f062a4d0774b1ddc5bfc 2018-07-23 increase timeout seconds. * test/ruby/test_io.rb (test_select_leak): increase timeout seconds to pass this test on a high-load machine.
b85b10c11f9846908a319e72c92e779e46c2217f 2018-08-23 check trace flags at loading [Bug #14702]
8752a1ff4e87c226a4dfd966bc10c083a81f8605 2018-08-23 remove `const` warning.
1f4efb9aedfb8f537630f7c13e431bb230bebd31 2018-08-28 rest parameter optimization [Feature #15010]
a810a1a78c6ed91debffc37d9f8e6bea07decbcf 2018-09-21 fix typo.
ac4b2d990c8484af7a214381e61d3494b6b858b1 2018-09-21 escape all env properly.
cdc614cd0a21b2e72d953438438c78bafdfd9f80 2018-09-25 refactoring debug_counter.
fa3d1ca0f4c29c0f740233ebd5bcdc9d2ddc24d5 2018-09-26 fix "initialize miss".
ee819b0ddb0cbeb9c587e743204988b2e05e7c5d 2018-09-26 add some debug counters.
d3a9ebeb1c49e1cf8dd6accec6485dee32ccff17 2018-09-26 fix OPT_CALL_THREADED_CODE issue.
e0b3e5e12fae0527cbdb5af41a851c4cffe84711 2018-09-26 fix use-after-free in obj_free.
df5ec4107d6c91fba05fb7cadac82c2371aec152 2018-09-28 add debug counters more.
cebd2c4aba1c68939de6e2c6aaedcaccf7860873 2018-09-28 add small utility for benchmarking.
aa1023edc43fc73200349b2f0f87741918c459cd 2018-09-28 add debug counters more.
f251ce9f48e7bfb8a5f72f12c8c00d0b6a137899 2018-09-28 don't use GC::Profiler on default.
f0eecb15a3cad13e1000c3784173abe342b782d5 2018-10-01 remove old VM profile counters.
daf194745bc8a9b3b5a1b802beaf0a5f0c81ac1e 2018-10-04 check argument type.
f8f77d84233ff50a5d1cd48f1852ad97a4fa7758 2018-10-04 use RARRAY_AREF().
e94ede5a85f98c353f3e9f6a6d78d870237a98ad 2018-10-09 use `should include`.
165b446166c65f4dd905569981d188cc3eee8a17 2018-10-10 revisit `RARRAY_PTR()`.
4ed087b0db4c11d743762615e2d3759b8c2aaf66 2018-10-10 revisit `RARRAY_PTR()`.
eed1deecbad200c0b79da719fd83147a9ef6cf77 2018-10-10 revisit `RARRAY_PTR()`.
228fc417ceb7d2618b125e10c6d15fd588297895 2018-10-10 revisit `RARRAY_PTR()`.
2d4a268cd36c753e80320558699071581d816f4b 2018-10-19 check before access.
b710785f1aaaa06bd5cd2e7a584c24aff20c9ab4 2018-10-20 add disabling MJIT features option.
0b19e15a1239bff9ae854f522f954206ec910cf8 2018-10-20 rename configure option `--disable-mjit` to `--disable-mjit-support`
3845a506046502f2f5e704cab87b66c6988f7229 2018-10-20 skip tests if --disable-mjit-support.
7eecc7b8b4c790d07322bdb31d7baf93eb194729 2018-10-20 require 'rbconifg' earlier.
ecac8d0c34aaf34a049aa913876f83051e599e90 2018-10-20 fix MJIT_SUPPORT on win32.
9f5d9d31693e6f7413c22b6d7e828454e9e773b6 2018-10-20 fix macro-name.
b4766a4d9ee5dca0d9491ae320131f065242b574 2018-10-20 support --disable-mjit-support on mswin32/64.
543acfabdc10420c1076dafb01c2a125e5fa7174 2018-10-21 fix a warning message.
f3c5239b16b983f1cea6c7710aae052f54e94ff8 2018-10-24 introduce new YARV insn newhashfromarray.
434207e84da3ba5208d5e29baa153c3e017170b1 2018-10-24 need a cast
6fa2b5e8d481045e222649661e0311e26f30c123 2018-10-24 newhashfromarray should be a leaf insn.
f8dbff557af75c0347f271cf5a1a557eea9f9eed 2018-10-24 add new debug_counters for GC.
85173be41f27871cb36ae77b8abfa1e3c0ae2565 2018-10-25 add new counter about GC.
2d46695c7ca7d35b5ab79a2ec92ca985673a57e2 2018-10-28 use a rb_ function instead of st_ directly.
d3edfdc7d9cadd6c8e7f7b7c93729da5c5cf4542 2018-10-29 use RARRAY_AREF() instead of RARRAY_CONST_PTR().
1ac67ec41678f021482be09033ca6e179e29be91 2018-10-29 use `rb_hash_new_compare_by_id()`.
54726befc3eb52bf06640bfb07664dace3721d14 2018-10-30 use RARRAY_AREF() instead of RARRAY_CONST_PTR().
90ac549fa6bf6c5df38302bf1198a119f12a60ba 2018-10-30 introduce TransientHeap. [Bug #14858]
efe869c0e5e53807c4d4a9becffad9f62e73c71d 2018-10-30 support theap for T_OBJECT.
7d359f9b6955908954e56cab78bf16d9f0e93d24 2018-10-30 revert r65444 and r65446 because of commit miss
312b105d0e263a36c129a14f2681fe16905c0244 2018-10-30 introduce TransientHeap. [Bug #14858]
873d57347fca4fc7f407c2bca45f90797ab6f864 2018-10-30 support theap for T_OBJECT.
198ff42258d9bfde8b2056d923510c52c957b5a1 2018-10-30 support theap for T_STRUCT.
8f675cdd00e2c5b5a0f143f5e508dbbafdb20ccd 2018-10-30 support theap for T_HASH. [Feature #14989]
870363886f8b5d6ee0700ff8a1b70081515b0fa8 2018-10-30 fix type.
3bdd8e74f3b54b55be122bcc4a86e8bb25461cf4 2018-10-30 update NEWS about theap
357967567066099d22480b54422f175de8b24160 2018-10-30 fix type.
c608b2707ba30cf99ae4b1fb6c9a150a88598269 2018-10-31 add casts.
ce9911c4831cf09a7c35c04a7cc65ac24bbedec2 2018-10-31 remove '//' style comments.
2c62beb6b61e5c66ac165e6d759750e9340f5f62 2018-10-31 remove '//' style comments.
0b16758b049d10715e3861ae208c65fcf290013e 2018-11-01 fix WB miss.
dcd0346265bfd346133e75c701b97fcb31c0ae6d 2018-11-01 add dependencies to transient_heap.h.
c39797e8724683e91618168bd993ac467b81eda8 2018-11-01 introduce USE_TRANSIENT_HEAP to enable/disable theap.
728afecc5549dec604e2ad9933ed99154e47c491 2018-11-03 expose `rb_ary_detransient`.
05711c45af45f19ce570863786ee2ed7cc6aabc2 2018-11-05 use `RSTRUCT_CONST_PTR` carefully.
09821dd2a5b59024976b01ac7aa445b6fc14b681 2018-11-06 Fix TracePoint for nested iseq loaded from binary [Bug#14702]
26081169e0a227a6ccf477c7fade17b90f266e23 2018-11-08 separate Thread type (func or proc) explicitly.
8634e62a621fc50ffb29344425a558115bebd3bc 2018-11-08 initialize VM postponed_job first. [Bug #15288]
3cb6952f12335ce0a84d612cdbebbc358c430e81 2018-11-09 fix passing wrong `passed_bmethod_me`.
191108a6d0ec2c2b1c1fd89b8ccb3e4b53e5314d 2018-11-09 There is a path to use bmethod with ifunc.
96990203b71184003cf8a9bad5cc177645820fd4 2018-11-26 Support targetting TracePoint [Feature #15289]
f6fea2b227f4c537a72728d169b906cd9174482b 2018-11-26 fix type error.
d35bfdac74ceae1c70781667a1efc3378163fe1b 2018-11-26 fix for ansi-pedantic compile option.
6e33c16ffdabf6b8c64a49344f830a25a2b5bccf 2018-11-26 Give up support for cross-callcc set_trace_func.
72e60a04372c03e40d3954063e6e520541d5ca2d 2018-11-26 `TracePoint#enable(target_line:)` is supported. [Feature #15289]
b0ba0595fa162b1a63dc497ef1bf1c81f5d06b1c 2018-11-27 to debug https://ci.appveyor.com/project/ruby/ruby/builds/20566898/job/hda29416yal9h6hn use binary search
eea3fe0a3bd128b559babd764563097a61360b0b 2018-11-27 enable at least one behavior
33dc8a5c23cc647b42648596b5c77b3b8de6d39a 2018-11-27 `RubyVM::ISeq.of` accept ISeq.
2b44228d6f4e504bbadc576efedbf26b9c12ecc8 2018-11-27 fix for ISeq.of(method).
a9ace57505c1430889f3e3eefa0e3f6f5294756a 2018-11-27 enable another assertion
b02f3731b64555457c608f93d2f6d61e0e4e75c6 2018-11-27 restore using_spec.rb
66e9bfd4be3ddd149ba46b1b0f0074a0b244083d 2018-11-29 use __builtin_setjmp on mingw64 [Bug #15348].
a763e3460f594f60a5d2e8eba5f7da981d717a55 2018-11-29 clear dst Hash on Hash#replace. [Bug #15358]
d80bf2f1e7dfe2c9719a9d68c87214fcef7cb40d 2018-12-02 fix last commit (r66135)
1e9896ae314d23ce813d86796ed3f29669c9db9b 2018-12-03 use RARRAY_AREF instead of RARRAY_PTR_USE.
5e11de658511efd346ed8bb0fac8a49e7c0eb963 2018-12-03 make `RARRAY_PTR_USE` more conservertive.
5ce533520eb7bc797cee18848d1f7076b7f40a62 2018-12-03 add a NEWS entry of TracePoint#enable
3e1f06da5de2c402077db07703432e4f674521d6 2018-12-05 fix C90 error.
eb79191f16dea9547ded38413b38f4de3fa78569 2018-12-05 Introduce "COLDFUNC" function attribute.
d3aad1592213ed2c6ade84b09119c9fce46d185e 2018-12-06 Return same ISeq object for one src.
5ac990e83eb4399b38542d788622c8069c7c4192 2018-12-06 `script_compiled` TracePoint event [Feature #15287]
69914cd80f5bc51dbc02dc530fd4313a87e91258 2018-12-06 add tests for script_compiled TP event.
1692ccaf9f49c001b18de8b7296ede3f68190ab8 2018-12-06 add NEWS entries about script_compiled event
ed2ad8fc1e42687109ed54788d605ce58e460d61 2018-12-11 remove unused (redundant) chapter names
7510eef7484aa620d7dd16f191147c9b877b59b7 2018-12-12 remove `compiled_` prefix. [Feature #15287]
8f0a0f4018f8c82815e7afb2ec999089ee2b8fc3 2018-12-12 restore `catch_except_p` flag.
447b4dae6ff9ecf6240249bbcf7266df7e6e6712 2018-12-12 param.flags.has_kw flag should be FALSE before setting param.keyword.
103e8d5bc757c88c9e2b0a567b830fbe36991816 2018-12-12 skip a test.
e4c79d0d10429ac7d48641a66091f0292d807a9d 2018-12-14 rename li_table->ar_table (and related names).
bb0eb3bf1f8c7d4da734eb9dec684adbf89b1b14 2018-12-14 separte NULL and EMPTY check.
542e63b95346b5709871a4e9cc3c98a35146c0ed 2018-12-18 rb_raw_obj_info() support T_MODULE and T_ICLASS.
2103333e783b525f5d31195aa771d4bc91443e82 2018-12-18 should use defined_class.
2a70f68c05118775da45e630a96e89f6f57ceb39 2018-12-20 hide iseq operand object for duphash. [Bug #15440]
4c9f3ce7b1a35ac891550ccd7b3de1be7475f2d4 2018-12-23 fix marking T_NONE object bug.
ff8a775c57dc9a5640fb26b5e061bcdf01292c29 2018-12-23 move checking code.
a976acd6039bafea26fa5b2d3a1b69c508e84013 2018-12-24 remove "deprecated" for rb_frame_method_id_and_class [Bug #15300]
83515c6c32ce02f6360107e4be1c558c8586b425 2018-12-25 fix a test by restoring value checking.
496267023c490e717ad0598bf1e3364835b734a4 2018-12-27 fix missed script_compiled events. [Bug #15471]
da8830e3de84717ca5dbb659b60dc94557f7258c 2018-12-28 fix r66599 to sucess install. please refix this patch @nobu
8ee0a8e91a2dfcde0381949348268961b0f81393 2018-12-29 hide ar_table internals from internal.h.
94f4a0e91ee7077bcb4391a6f754c6ec58e78a15 2018-12-29 `TracePoint#enable(target_thraed:)` [Feature #15473]
ba4672c2cb90c85bfeb7cac3295c68b116c7c6f5 2019-01-04 ar_table_entry::hash should be `st_hash_t`.
87e628d66b7bf98f276dbd38b810f0197f821081 2019-01-04 skip to calculate hash value on empty Hash ar_table lookup.
3a144485fc450465ba370cdf0d5501813d5962d7 2019-01-04 refactoring usage of ar_lookup().
23801110085a691095fc9a8eb164880418b2215d 2019-01-05 call functions directly.
0c0d181e0fc9947b4d64b9bb3fcafcc65c3ec8bb 2019-01-05 fix trivial indentation.
70caae18f26fb305b73ca33e71c46f370c3e0d20 2019-01-05 add ar_ prefix for ar_table functions.
93583166c8cc9b28d36d8f4f8e23fe968849498c 2019-01-05 refactoring.
fc7f99066608286f70fabcdec221e1502d40695b 2019-01-05 fix last commit.
e3dbe84e12b3ebe95187edc3a5e9fe2f373a0388 2019-01-09 add setter of iter_lev.
07298ea2094bca6f847e7b0c82e3c7059ff745e3 2019-01-17 support btest on older ruby.
367fdd1aee07bd856612e9d796f301e1f1d5a30b 2019-01-17 reset bound if the size is 0.
b4ab9c0e3214c619f2025fb19ff8e010d99112eb 2019-01-18 support older BASERUBY for btest.
0c18a3d9826d59c3d02fbd49f84c9d69a706b670 2019-02-04 add debug code
8bda94f78c959fbbcc17a99553b0c22396cabb96 2019-02-04 For this may be a syntax error (instead of LocalJumpError) in Ruby 2.7 [Fix GH-2078]
0fc597f29c663bd785d3a7868a95340eecc7dc03 2019-02-04 check and show a warning for incorrect yield.
91cb5c1a70b2f659b6ee1dad4ca7c658fe1e00f9 2019-02-12 fix empty Hash memsize.
74b19e330adbdae2d8e53b58f1a2a7b725e69c8d 2019-02-13 fix imemo entry description.
c6a2de302900784dd74106091c723862119bdeca 2019-02-13 check return value of `write` to suppress warning.
5e80e9144f88bac3e2d8890c9e2fc22f5e391aff 2019-02-20 revert r67093 because it breaks tests
e487e86e982a56ded6e5070aeef0d77655043216 2019-02-20 fix r67097 with cast
8ed170961601a1becec56ffc0f0e7da1f9e56892 2019-02-20 fix rubyspec test to pass tests. please revisit it @nobu?
4e15be8bade0a6a75c209eff3b96b4c4f03019a9 2019-02-21 refactoring compile.c.
b1c1ee7183f6c9b6f585d35a5a8786594e1e7733 2019-02-22 change `cfunc->invoker` type for opt.
19a8bbafd8ef8b48a9d2832e605fb00b3284630e 2019-03-03 close opened files explicitly to fix a test failure like http://ci.rvm.jp/results/trunk-theap-asserts@silicon-docker/1804207
2e9d4b9f0bd0cae89e75a7a16b2cf0c55aeb9c0e 2019-03-03 do not close FSs explicitly.
24e03d7e268f5b89367d495ee2b4aac0b700e6e1 2019-03-20 optimize method dispatch for lead/opt params.
df2af1147fc250cee73853cd9c78d5afeb9e2591 2019-03-20 fix a type error with a cast for clang.
e8e1f72d8fae3d010a1a5bec90c897aee9f08ce0 2019-03-20 remove redundant check.
79ddbe9deebc5af0f08e52cd056f58b49e486ea6 2019-03-22 optimize method dispatch for lead/kw params.
c671f836b4d123bf86bce6defe42c87caef582f8 2019-03-22 add debug counters to count call cache fastpath.
8dd0fb9039bbe6152ea5542e6bc70de152871e23 2019-03-25 use cfp->bp more.
35e677dd0ab6b042cb52e9f98e35a2d8d7dc5e14 2019-03-29 use GET_CFP() instead of access reg_cfp directly.
2b5bb8a0875b75f18e628c8b2df22760536bdad9 2019-04-05 add definemethod/definesmethod insn.
b2311c67671c69df8c390f22b3cb961f7be39a75 2019-04-05 `rb_add_method` is void function.
2a5ea43507564739be53af511c9b3a4891db9700 2019-04-21 add ensure to restore $stdout correctly.
2ef66737081ec029f9c82e11671de36bb70a9e3b 2019-04-24 force 10 chars SHA1 display.
4dc5d3c5dd43b4cc54517e604c16ecfc808e5481 2019-05-07 add new debug_counters about is_pointer_to_heap().
88449100bc6d23a00dbf3addb97665f4f606f2b8 2019-05-16 don't need to sweep rest.
32e8b42852fc59a7064ec9ad642774c562b69c21 2019-05-17 skip tests for GC.compact to pass CI.
b165bedcbd41d791a85fc1ce90b57a0d0525f319 2019-05-18 skip a test to pass CIs.
ab0f2deab11a3203f9af3af1a27dfea1f4a882f3 2019-05-20 skip a test for CLOCK_MONOTONIC_RAW.
0b9a7b35287e7c4db37e0f49612faeff29752108 2019-05-21 do not use RARRAY_SET() directly in array.c.
7ff4abe650038ec4a9fa5fa9e0fbc16ceff7714e 2019-05-21 unify normal and verify ver.
8c004c71235c5ee8b2d4846672788d3089f3e884 2019-05-21 enable test for GC.compact to reproduce an issue on CI
3f6b5f447caf8f8ca06d5c170e9266ef20945834 2019-05-21 re-skip tests of GC.compact.
0eff21af8d03a9d2b881b9cce963262da3d952dc 2019-05-23 update Array's length correctly.
136ae55892ae120bb94e4ff2d025c745fdaa1091 2019-05-23 Do not kick finalizers on rb_gc().
02973d3ba8020f494ad2d627284f9bc45db48f9c 2019-05-23 pin `maybe` pointers.
4814f173615f8f9f2f3429fe788089479490fe10 2019-05-23 skip zombies.
6be0ab73c3f2cc95d76ca21203adf6a73c8705e7 2019-05-23 gc_pin() doesn't check is_markable_object().
dc95b57a68da6999ce6a1542b3ad81c51429cc99 2019-05-23 add verifier before compact
10927b59256aeb196d164e8a8e75180a72768e97 2019-05-24 add separation char on rb_obj_info(imemo obj)
712c027524e3a03500b3098d950fc2f0608ce897 2019-05-24 check it in eden or tomb.
b0a4d81fc3c9195f7462a096a50e857669c47918 2019-05-24 check RVALUE on verifier.
61da57c76a9e32a4154dac8f24f9b860d65b320d 2019-05-27 is_pointer_to_heap() checks also tomb or not.
6c1a07555c7fb37a5cd36f08489d33d779b4d41b 2019-05-27 fix GC.verify_internal_consistency.
b3a6469e46b3c9c10176b066e5076ddcc5f96939 2019-05-27 add a line break for each error message
35146c436820f35733982bac870e409c57888575 2019-05-27 add a space between type and others
b3602f1d20baa4e5f29b2baff2c265461af78f56 2019-05-27 check the object is in tomb_heap.
cfd839c140707852340a840e9e164e0f211fbb42 2019-05-27 Suppress warning (uninitialized variable).
7f211bfe6c5e4a763412406e5e257ea275ca53da 2019-05-28 use only eden_heaps on GC.compact.
2229acaa54e1011ae77710e10f8c9e7933403127 2019-05-28 should use heap_eden->total_pages.
f9401d5d44dd4ae69b6a14fcccd41c2810033986 2019-05-28 should skip T_ZOMBIE here.
f3bddc103d6a9d6e679ab35d1d3e8ab7aa2f3ae4 2019-05-28 use malloc() instead of calloc().
8a2b497e3b8d9c9be27278081526cace50490140 2019-05-28 remove obsolete rb_gc_finalize_deferred().
8187ffa461be6c1ee198c0b8f2c3a22ca2681d9a 2019-05-29 Revert "Colorize error part more"
e15de865837262122cc64705440d00efac4b8c71 2019-05-30 introduce `during_compacting` flag.
dd63d7da61c472809c5e6a1dba81b7dea5aa1c1b 2019-05-30 move pinned_bits[] position in struct heap_page.
5fc9f0008f824936c667970593df1b6663f0ae24 2019-05-30 reorder bitmap clearing.
c2805192561ad9690b55c14aaccece1804b61a21 2019-05-30 remove `rb_objspace_pinned_object_p()`
f1043090a2361019ea4f6832512ef47de3627cb2 2019-07-02 Revert "Add a missing tests for Logger::Period module"
712a66b0741605f5b2db670a292b9bb352f8a716 2019-07-02 Revert "Avoid corrupting VM stack on inlined setlocal"
47b04557b01dc109ccafc33db8e80148f07457a9 2019-07-14 Method#inspect with source location.
47e571c9510a6d6e3f7d98a8a8800f391694bd19 2019-07-14 complement '.rb' on `test-all TESTS=test_xxx`
223854ebe858a96560faac239f4c0e40d1af3943 2019-07-15 catch up e8ddbc0239.
f6f09cbc76c3e47aec23898e024ff5bb5f061bc4 2019-07-15 introduce RUBY_ASSERT_ALWAYS(expr).
f326b4f4af4963e252d24c4f7d7099fc607db859 2019-07-15 simplify around GC_ASSERT()
c23e5976744f1984b309f0af724fbd8ddea2c56a 2019-07-15 respect RUBY_DEBUG.
8ac1c6eb4837f5d088b7fc0a6ee51a5723f728a9 2019-07-15 respect RUBY_DEBUG too
3dc212896c422add43c850ee1d1a613c7cc96737 2019-07-15 check return value of blocking_region_begin().
d40d8b3caf40e0b1769bb4a196aa7740aef4737e 2019-07-18 check saved_ec.cfp
4ec5b39ce8bd3b13dec0ac290b2d7d29c640b304 2019-07-18 initialize only Fiber's cfp.
63160a84b42cd3a7924e5abe94bbb08bb566f24b 2019-07-19 respect NDEBUG.
182ae1407b3f6597cdbf6872f788c1ed3aa22a35 2019-07-19 fix shared array terminology.
ae750799c1b28b06d02e50cd26450b9903516526 2019-07-19 Use FL_TEST_RAW() to check flags.
fba3e76e3fded3534a34b21412c17af2b02a5f3d 2019-07-19 fix debug counter for Hash counts.
f75561b8d455e1cf92dac8ac8838fdafc88cba71 2019-07-22 constify RHash::ifnone.
1feda1c2b091b950efcaa481a11fd660efa9e717 2019-07-22 constify again.
c25ff7bb5d8e8d2985ec8fd32a7211a06ad4eca0 2019-07-23 check iseq is executable
df317151a5b4e0c5a30fcc321a9dc6abad63f7ed 2019-07-23 should not free local hook_list here.
82b02c131ee1a87ac1b95443c85c6c8f7b30644f 2019-07-26 pass to obj_info().
ebd398ac5a4147a1e652d6943c39a29a62f12e66 2019-01-16 remove RHash::iter_lev.
72825c35b0d8b9d566663de961fddbf4f010fff7 2019-01-17 Use 1 byte hint for ar_table [Feature #15602]
312879693ffa88c0778baba2b6697f6e5f2f6116 2019-07-31 move macro to internal.h for documentation.
e83ec207cd5fda973c41d6629d8504b515522b12 2019-07-31 add debug code
efac0a2384ed6cb1572490b36566e2e37509d7df 2019-07-31 Revert "add debug code"
cac44def0b0f0fdcd1aa8cf610e16a5506d2726b 2019-07-31 backtrace can be nil.
5f95edb7af68ce03732da4d49eee8d6ee87ef544 2019-07-31 check SystemStackError
40651cf1f567ae728c8d2cc908017c31e1000b6e 2019-07-31 delete a check on bad assumption.
a1a198d03af6b285dbee552da5e40e7c3061e6c9 2019-07-31 File.realpath can raise ENOTDIR
43d74776a1465095ab6b420809cc278d4f95f7bc 2019-07-31 check hash_hint is different.
deddc8047647792e27e1b9829bc917ef73504320 2019-07-31 HASH_ASSERT() respects HASH_DEBUG
bd1052d55da94b5503ff00c10e1cdcc04a6f9608 2019-07-31 use hash_ar_table_set() directly
117241b3c73f8f7f1bcfee34e9d627c41bb19cc9 2019-07-31 make inline functions from macros.
746386710646f93a5b9e0c408b00408041645091 2019-08-01 use internal_id.
3a6f51ee35da5d49973aba8f7d8128a65a9d8c4a 2019-08-01 introduce ar_hint_t.
e03b3b4ae046785278b9188c83b2338f0f550526 2019-08-02 add debug_counters to check details.
b004d3e8300ba803d4a499148fa4fc6a690149e6 2019-08-08 solve "duplicate :raise event" [Bug #15877]
71efad1ed391ee0c5398a76306fdbaaadd4dc52e 2019-08-09 introduce RCLASS_CLONED flag for inline cache.
a9fd57056cdbf041f8f0ad1350846a175028542a 2019-08-09 double memory limit on MJIT.
37eefb11fbadca6198b081a0a89d5b265fe45de4 2019-08-09 remove useless include and dependency
6bf8db9a07e95820705f7ec119f4038a529182ef 2019-08-09 add rp() and bp() in internal.h.
3b39cc6b038d419081a3d302a3cd73c3859613c7 2019-08-09 gc.h is required on mswin build.
26cf4c91ad357fe6c8fc2247abe980dbf9a5b331 2019-08-09 extend timeout to debug.
3cbd56d574a3ce6d5ddeb748462eb4dcdce4d166 2019-08-09 complement `test_` prefix.
63384591e2c72b89f9d69d9acc6c8b80ca8432c3 2019-08-09 restore timeout
182a408c2c4113eb316c2a87e35880144afb4498 2019-08-14 change Proc#to_s format ('@...' -> ' ...') (#2362)
1cffd5b4f0b88669bc2daff025ab0b1650961a43 2019-08-14 fix last commit.
53a55aeff3d409b4894d077f2b3b874fac53e387 2019-08-15 introduce RUBY_ON_BUG envval. (#2331)
88b1f2dac430d7b10fc98c5a072c4edfeb51b27a 2019-08-20 `rp(obj)` shows func, file and line. (#2394)
2da6b328bb5124793a6420c55325f3106b615bb4 2019-09-13 introduce IBF_(MAJOR|MINOR)_VERSION.
3deeb3fd914bc5604e84e7a41ec2b5193a560479 2019-09-25 introduce `obj_ary_extracapa`.
6d578164f5da815fb71d23ad186e841359384f25 2019-09-25 check `ARY_SHARED_ROOT_P()`.
8ba48c1b8509bc52c2fc1f020990c8a3a8eca2c9 2019-09-30 rb_method_attr_t::location should be 0 or others.
bf8d7d9c1d89a62537566ea6dd43db175a892dbd 2019-09-30 show RUBY_ISEQ_DUMP_DEBUG envval if given.
88f38c187e3171f8f351f3198247d20ea9f016ee 2019-09-30 Emulate method_list (chkbuild) on test-all.
c3b84f2de83a27acc638f99743bfa2c44bac621c 2019-09-30 introduce debug check.
945560008ffbb768df3a6e9f0814f2d117993a5e 2019-09-30 Revert "introduce debug check."
671ca21254a60d967570c8c973f5f2f17beb4931 2019-09-30 remove `unused var` warning
84cbce3d880f0d6a51ccf3622b8d1e79132b9a0e 2019-10-02 Enable checkers on parallel test.
9759e3c9f09ec442b2aa0d0cc299ac791e516a01 2019-10-02 fix assertion number.
ddf5020e4fcae5ed28a064af10124a032590452f 2019-10-06 Revert "tailcall optimization again (#2528)"
caac5f777ae288b5982708b8690e712e1cae0cf6 2019-10-19 make monitor.so for performance. (#2576)
a0a3c701816c2fe4ab6e940c6cf5638756ceb6dc 2019-10-20 delegate synchronize method
a236eaa762137d7cb32b8311e0ef9a74bbb0f385 2019-10-20 Native MonitorMixin::ConditionVariable#wait
9e07dfd253f5086b306d5e32d3ef4238a8510bc2 2019-10-20 show BASERUBY version at configure.
8b8b9c1a1fdb26f9b0470391234d8c935b083577 2019-10-21 add a NEWS entry about [Feature #15602]
0f0d05a3b11e6fe933c52e018900bac2bb6c9fc6 2019-10-21 fix NEWS entry about unbundled gems
9bbc28340e62a732d1fad3676b7a81019bda2db6 2019-10-21 add a NEWS entry about Proc#to_s change
ee302f54a0b32352faac30758cf91f502997fe1f 2019-10-21 add an NEWS entry about [Feature #15575]
4c3e3b8028ca76fcaedc0e40d9ac678e3ac79ee9 2019-10-24 Revert "Fix Fiber#transfer"
38e931fa2ceac6d922f3eabedb8f35f211de0bdb 2019-10-24 show "transferred" attribute on Fiber#to_s
e8f90e73978c0321021c177fe3fa2623a8b3a4de 2019-10-24 check T_ICLASS for Method#inspect.
58b363bf0d1f31ae9bcbaf301f9abedb99fa90f6 2019-10-24 respect `param.flags.ruby2_keywords` at to_binary.
88135845f10f4b8ea3b67584a2c899ad365fd6bb 2019-10-25 enable assertion for debug.
d8d581bfc4cee87a59e40eac20e51fe199eb44bf 2019-10-28 add assertion for mutex_lock.
46acd0075d80c2f886498f089fde1e9d795d50c4 2019-11-07 support builtin features with Ruby and C.
e2a45cb984ba75083a577b38ee9643800579a280 2019-11-07 use builtin for TracePoint.
a47d058ebf6890f4ad81c9c3419e767b4f093815 2019-11-07 use builtin for RubyVM::AbstractSyntaxTree.
46b9ca6c54ad7c4bb43df6a45854c5ffed980168 2019-11-08 fix type
08ff9edb533301cf1622d541832938577dbcd993 2019-11-08 fix line break code (fix to LF)
dad2abc69fdd1af52df353b8604017bd6a5c6a99 2019-11-08 do not use __func__.
365557f111b453289a5e2ce0cdda0899ae248c71 2019-11-08 Define IO#read/write_nonblock with builtins.
eaa011ffdb55a315a6b35a52c3636c673f9ea836 2019-11-08 Change requirements of BASERUBY.
2eb02dfd3b650b54d6f3f5a63541e8165c997edd 2019-11-08 Stop compiling if type mismatch was found.
8fa41971c204555b889c9722586b8baee55a0ca8 2019-11-08 use builtins for GC.
054cb6d389da6a260830e4bd262aab2ee8fe2cb2 2019-11-08 forget to add gc.rb
0b29662606bb80762d58938e847441020301406f 2019-11-08 fix line break code (fix to LF)
83c563cfa403af1141fc0080d2b6eec344db6726 2019-11-08 cstr -> bytes
dfac2e9eb3d697e56d91151584f1d3cf9d2c79c9 2019-11-08 don't embed full-path.
b5d884922053962c955df1ce54d9dabc98888272 2019-11-08 Revert "don't embed full-path."
21f7cca2c6394aaaec9189a7cb08a9ad8a2196e3 2019-11-09 initialize kw special local var.
43ceedecc0b9990b5bac2e65de5e439c41a9996b 2019-11-09 use STACK_ADDR_FROM_TOP()
9142f802f1126d65abb1aad5e2bc91b5b833fe7e 2019-11-09 rewrite comment.
05a5c69e1a06a3853afb3744fa9925910b78904f 2019-11-09 add deps for miniprelude.c
31416423809f64d4b5ea6b9651cced3179cc5ced 2019-11-11 __builtin_inline!
99be207c2acabe0030c376fd731608d9cd7c69b6 2019-11-11 add a NEWS entry about builtin features.
a815053a3ea16382bea8b420a3070b4da3c3bb94 2019-11-11 check monitor is owning for debug
4be1e84d7894751799cc9d8ae2dec720952a02a3 2019-11-11 more messages
b8d242d221641752a495ca43f8f211a3ad73d467 2019-11-11 release RUBYGEMS_ACTIVATION_MONITOR correctly.
4a30fabfcfd72bd61bf1dad61f168eaba6100f12 2019-11-12 Monitor owner state check correctly.
fef4370b409c990228cded2c425a6afb3bec2906 2019-11-12 check more.
fd6445b7e8bab9d340be6f76688a8b96f1b52029 2019-11-12 Monitor#exit: check monitor ownership.
3a408aff578bcde428ebdd4560d819c1ba792f2c 2019-11-13 try to remove vm_core.h
179062dd808c0a48e16269a2c42b10235cbbacd8 2019-11-13 move rb_vm_lvar_exposed() correctly.
9c1abe2a6c5e6288ed208000fbf811d145af9355 2019-11-14 load prelude.rb by builtin features.
93ce4f1cd7c96f0fdbeebc87a9fa64d07cede729 2019-11-18 update deps.
71fee9bc720ba7a117062bf3f78b6086527b656c 2019-11-15 vm_invoke_builtin_delegate with start index.
c3693bbaaa39d36210060fb4478751d66c0052ad 2019-11-18 catch up last commit.
5e34ab5406942d43b4c0fbccfc153409d0386d1e 2019-11-18 add casts.
57cd4623cfb56d12eb308eaf5fb09612e4572c19 2019-11-18 should not use __func__
a5fe08fdd9d11f12a6837291ee588ab933a823b6 2019-11-19 care about TAG_FATAL.
ae818b589efcb5dca47d9ceb888cb658ef56e286 2019-11-20 add a NEWS entry for Method#inspect
1197a036ae1c48ac0842bb2a0dc8af213def47d7 2019-11-20 Add a proper cast to pass JIT tests on mswin.
e27acb61485189fd7647741b6ca19920989dec03 2019-11-25 add fast path for argc==0.
a3e6f52c17061f012c4e638b3343b57752ed7603 2019-11-26 rename __builtin_inline!(code) and introduce others.
dd723771c118da71aa58bb74537cacaec425542a 2019-11-28 fastpath for ivar read of FL_EXIVAR objects.
2e6f1cf8b264f4c8499c4e5f18bf662fdade04ff 2019-11-28 export for MJIT
e4e41840ad378ccd3144fe84ffd3aa55f6610ca5 2019-11-28 Revert "* remove trailing spaces. [ci skip]"
f38b6d197f84ba8890daf4d708c0d17c1d339700 2019-11-28 Revert "export for MJIT"
6b460a79489bf65dee0a4c9f42324d3836888dd3 2019-11-28 export func for MJIT
36da0b3da1aed77e0dffb3f54038f01ff574972b 2019-11-29 check interrupts at each frame pop timing.
56faa13a1c5261a0d046a4c0203e88fccfafae17 2019-12-01 remove spaces to pass a test.
c6e3db0c66312af1e932c21006437419efa9ac75 2019-12-04 new_cond before mon_initialize
c88afd532895a8527f7c9fffb2c635805d01f626 2019-12-05 fix parameter
edb80dfe3e6086fb9d5d905a40cdd6ec61a2e1ee 2019-12-05 add additional CF info for CI env
ee579200082329db66e153c465cb8332e55bacb2 2019-12-05 move an interrupt point.
943f3e5fd463bf2a4a3a4e92b5134e238b9c931d 2019-12-09 add include guard
2c5c60754cafe9895b7a7421cd0552eaa2ae8b09 2019-12-10 use compiled binary for gem_prelude.rb.
9c2807b2df14984e3c81d72a381d9a4d288b3fbe 2019-12-10 remove prelude.c
40026a408df5e3576380f6c1d8bf6c119fa2e32b 2019-12-10 support cross-compilation.
bbbf451bffbc5605b53726c5977d96bffc10d162 2019-12-11 Update tool/mk_builtin_binary.rb
fe8caf0ab93e69b743470d16f6cf7416fe9c98da 2019-12-11 add depenency pointed by update-deps
6025783a3b0b37517728c635250669449bb21a53 2019-12-11 fix for old MRI versions
7f5014e6e884d7fa091e3e6462827b910417267c 2019-12-11 rely on sorted compiled binary array.
1269157a6e46895c0eda2ea202d44790bbe815c8 2019-12-11 Thread#to_s is not same as #inspect on old version.
eb9c0070535bc088ab2921613830ba983bfe07a1 2019-12-11 skip continuous failure test.
79eb5e1acac2339c6ec71db723298bdfcd92b233 2019-12-11 call GC.compact after each test.
27ac034f196967f54edf00474880886624d30245 2019-12-11 support gc_compact_checker on parallel test.
54e089df9e37d438687effd092feda2442116c62 2019-12-12 show self on control frame dump.
97a17a51b8e6eca31fd6421511f1907e6e95b415 2019-12-13 readable function names for inline functions.
fbe229906b6e55c2e7bb1e68452d5c225503b9ca 2019-12-17 add debug counter to count `call` reusing cases.
9d3ffcfbfc742ed5053b59678dbf97773a7dddc1 2019-12-17 disable assertion.
644336eef54c8ee2aeb7fd6c55fcd5620bcfa5b4 2019-12-21 add a NEWS entry for [Feature #16163]
cf59e1476d01be27dc88cbee5f6c6cf87f007043 2019-12-21 fix a thread test.
a96f8cecc2488126d7298ea304da8bad3dde1792 2019-12-23 ObjectSpace._id2ref should check liveness.
9eeaae432b9a894e28e3906435f3d454d8fd025c 2019-12-23 add more debug counters to count numeric objects.
100fc2750b8f2c4dbe0aaa6c622bbf5f6d61e3c0 2019-12-23 fix wmap_finalize.
f201700051cc107b55c425bf331ce6d7ad3ef22b 2019-12-23 move a NEWS entry about inline method cache
360f153fcaab637486aa2669d354d53e0eb1c3d2 2019-12-24 remove "experimental" from numbered parameter.
47ad57f2450251f47b3f8e1f744d782269bbcdeb 2019-12-24 Revert "Scale sleeping times"
5220145ea289d9eb955b373f31773fab2d4f0271 2019-12-24 add debug_counter access functions.
227c3d642631262acfbf140c566a7841c32b372f 2019-12-25 add ref to NEWS entry
d9bf9c572f461c282fa6e65833e98bc7d453a66f 2019-12-25 take care of USE_LAZY_LOAD=1.
9808e010907bb16068497d9f0f8593a7165fa42d 2019-12-25 export a function for MJIT.
27fae1d4adfef26d30d43f2d0d6653e99aaaba3d 2020-01-02 disable ccache if $CC is in /usr/lib/ccache/$CC.
6f5ee1f092414e4d60a403d82a57cf023b38c0b9 2020-01-02 modify MJIT_CC only on RUBY_DEBUG=ci
9f460e017b341fc8378f00315b0776e300107ccd 2020-01-02 move internal/debug.h definitions to internal.h
ce072fe5689184cba5e4a86968367c525cb22a72 2020-01-06 script_compiled event on compile error.
33d866558b4792d877e7735d2239b1337d334c6c 2020-01-06 support RUBY_ON_BUG envval on assert failure.
350dafd56a9cff58d36303aeb7515ab41c5dbbb3 2020-01-12 reload AR table body for transient heap.
eb4c86a698e1be9fa2a79f4edb1c891396e6074e 2020-01-15 Add option hash doc for GC stats.
8113f3fee4a962321b6107e58496afc6733c299c 2020-01-21 add default break points
8dbd5c76a0ed26d4adb440fee97c3f25ee6bdcf9 2020-01-28 support multiple run for test/ruby/test_array.
b17bab7472a0491071c7da9e8b41305d3687a341 2020-01-28 support multi-run for ruby/test_autoload.rb
501e7f4959a1193c82adc1b661a85621952121b8 2020-01-28 support multi-run for ruby/test_basicinstructions.rb
14759e6907eaecc86ab06a3ddf107426c00cb2c5 2020-01-28 support multi-run for ruby/test_const.rb
5f7be6243a5b0cdbf1abc8967a512e48c2f1489e 2020-01-28 support multi-run for test/ruby/test_encoding.rb
962c7abb1373ee1ff7d5ce443b2872deac452b9d 2020-01-28 support multi-run for test/ruby/test_eval.rb
251930cea0e935494b1e8cbbe851e63b978dbc80 2020-01-28 support multi-run for test/ruby/test_iseq.rb
ac2b945bc0182859ea538dc6b02ad6945a5cf212 2020-01-28 support multi-run for test/ruby/test_marshal.rb
cc2fe6936c0e9b815d43a942d2bb7dff0363ccf6 2020-01-28 support multi-run for test/ruby/test_method.rb
1bc731cb65cfd9baae718b9a8588e668dd1c75e0 2020-01-28 support multi-run for test/ruby/test_module.rb
56b0300f24bc2bce6309279e2c07e8a1f08044e4 2020-01-28 support multi-run for test/ruby/test_proc.rb
9b65bfdc9e5eb8a36fdd464ed7534ed2a9557ea7 2020-01-28 support multi-run for test/ruby/test_refinement.rb
0f03c1433ef6a17acd64f4dc4a539b4630e975aa 2020-01-28 support multi-run for test/ruby/test_primitive.rb
4df0819c5d8b7d11e3fa1d2ba45fe7da68a0e064 2020-01-28 support multi-run for test/ruby/test_settracefunc.rb
9552262bb2e293efa6e8f535d68623f2ecd13360 2020-01-28 support multi-run for test/ruby/test_struct.rb
151533e4bc9dff8efefb251dd25b1d57d3082d19 2020-01-28 support multi-run for test/ruby/test_autoload.rb
20c1c240145b7db66014020e233b23d12574efae 2020-01-28 Minitest::Unit.current_repeat_count
dd64c34682bfcb976ec6fb0c6182fb09d9d790d3 2020-01-28 support multi-run for test/ruby/test_time.rb
471a9693118d0e6897b50dbbd935a237ad637398 2020-01-28 use Minitest::Unit.current_repeat_count to skip multi-run.
4d132fa130e16eeb4af4177cfaccc00e05e2f864 2020-01-28 srand() should not run in tests.
65768c80beb64a14c3e918f8ed5e41e9349025d0 2020-01-28 remove debug code.
7882c43fc306c1100be8e1648f3d1caa48d50a8a 2020-01-28 refactoring: use Proc and Constant.
e7571f163b791d8ca5df389ba97e7d4acadbf480 2020-01-28 restore $LOADED_FEATURES.
0cfba9cdd9c18b0245b088ed5b460f0d6f90d586 2020-01-28 Revert "remove debug code."
650f152d2f5ed929c76cd7e7cf17270e53ac346c 2020-01-28 Revert "srand() should not run in tests."
534536c7cc69970fead43df048d55efe518a03f3 2020-01-28 fix test cleanup.
46173eeb64245ff533dafddd3d74338763c0bb35 2020-01-29 support multi-run for test/ruby/enc/test_regex_casefold.rb
7b4b01424fe7448133c63e9415edf075a3c760b9 2020-01-29 skip SEGV (BUG) tests if ENV['RUBY_ON_BUG'] is given.
a635c93fdebeda6347b8654af1a191e214ad7ccf 2020-02-03 support MJIT with debug option.
99a8742067ba262eb324615bfac770d1aea53b07 2020-02-12 should be compared with called_id
53a8b1486b0e020858aa04f004aa22f4396a1bd0 2020-02-12 skip SEGV test if RUBY_ON_BUG is specified
a1eb1fabef1bca0696449cd358d93f5a644d5914 2020-02-21 use RUBY_FUNCTION_NAME_STRING instead of __func__ for rp()
f2286925f08406bc857f7b03ad6779a5d61443ae 2020-01-07 VALUE size packed callinfo (ci).
b9007b6c548f91e88fd3f2ffa23de740431fa969 2020-01-08 Introduce disposable call-cache.
31748e69c84894ac8f042a67d1320db8593c9ce1 2020-02-22 CI can be NULL.
f744d80106ad236cb517c3a6eae5e591562e2377 2020-02-22 check USE_MJIT
7ec23593746c8ccabd6c005cc34dde77d564c6c9 2020-02-25 prevent GC from mjit worker.
670b7be6c5fb9c3438fb6e36070401f25806f725 2020-02-25 should count only string.
84d1a99a3fc76b4bcd5fc382e5b30a466b124493 2020-02-25 should be initialize jit_unit->cc_entries.
116c6320956ce80efcb1db849a190ebd7f8c8ad3 2020-02-26 don't ignore `--seed` option
7c1553e91db07fed4fed3287b50304f1c69a685d 2020-02-26 `srand($seed)` at the beginning of each test
f9d314245b1b088555253f5b653a801031cdc1e6 2020-02-26 Revert "`srand($seed)` at the beginning of each test"
14f179080713012251e1faecccefebf2f33ecd86 2020-02-26 `srand($seed)` at the beginning of each test
6b30638bdb729c73a05190587123e43e2ffd69f3 2020-02-26 MiniTest::Unit.options has default :seed
18674aef0d8199958dbda21eff5167dfc4a5de9a 2020-02-27 check imemo_type
28399e4e0f8036b03d7e626b0071de0f59ac7bc0 2020-02-27 respect --test-order=random
6787ccf23837c50e51cb82813bb713fda052131e 2020-02-28 setup Other class.
f7be85a2b7b2f1e3485c6da8fb990ac47059ae12 2020-02-28 support random order test.
cb681c20c09431d1cd441328fd7b27abdec93299 2020-02-28 restore server[:DocumentRootOptions] setting.
b3983c68dd74ba013f7ac41a3df67ad2e4fdcc23 2020-02-28 should not expose hidden object.
413c98003bc936dd29e40aebad68b43fbe6a527f 2020-02-29 show backtrace.
356e032e1a622c9e34c1c48b516861db10b3b31b 2020-02-29 require enc/trans/single_byte in advance.
0bfee2397ba59112902d2b49f08461db3a637b46 2020-03-02 show debug info.
31c55b672501a843d3db88e7a792f0edbb646607 2020-03-02 need to restore $stdin.
fb377e8f3a9ddd89099248ee4b512023451935c4 2020-03-02 Revert "show debug info."
d348b4adefd0f570686640335e183d8a96d626c6 2020-03-02 skip test if Reline.completion_proc is nil.
4fd51f848a59b999427d3b941d8777ec00f0431c 2020-03-02 vm_cc_fill() need to clear aux.
648eb31b9ae1c8adc0acaf192ba1d033d16a308b 2020-03-02 Reset Reline.point
91de0daaa239e9ceb40f1a69b04b373b71477b43 2020-03-02 method_missing_reason should be set.
aa9a38c0ed114edded28a2a26e8dd507f7e1547f 2020-03-03 Ignore incompatible convert of symbols
1ad9364440f6685d2df3b855f5e22f644e9f1f43 2020-03-03 add debug code for Solaris
cf52f37caec8cd1955af4ccb32933828aa330854 2020-03-04 Narrow the check target.
6e271e4cbbe6a8bc4d4f75dc553ce054eae7af00 2020-03-04 Run major GC to make sure the minor GC next time.
02705b27be207fce57bd0253251f81108c7ed57b 2020-03-04 Run major GC to make sure the minor GC reason
ce586107d8da0d6dff1a62d500be1bc2c1cbe9b4 2020-03-04 fix 6e271e4cbbe6a8bc4d4f75dc553ce054eae7af00
4c019f5a626523e99e2827ed917802e3097c380d 2020-03-06 check ar_table after `#hash` call
c3584dfacce4d0f2058d8403de6fdce4fd4d686b 2020-03-06 check ar_table first.
dff69bb46204cf9d0d1abfe9d6e76a1768fb9734 2020-03-08 Cast properly for shift operand
d9135743c0ae464f39330684b8c6d35917fd6b22 2020-03-10 add debug method RubyVM::mtbl2 (disabled)
ec78b8b62a84fd57eb93d7b5de5b83ea517ad7c4 2020-03-10 show method entry with iseq details
2943ff9d4441485a18773aa745bab7f47767dde2 2020-03-10 fix bug on method cache invalidation.
d05455d08374b795b079f3ceaf034f2be1f11a08 2020-03-10 fix type cast
21d8e6924844d592ff2d5a2e7309457eb92e66f6 2020-03-23 disable to show the maximum number of threads.
ff98931daca1265e5bd33025d160c77e452c399e 2020-03-25 check flags passed to rb_nogvl()
fd0222caedf1be56faa004656bbf145522abbe68 2020-04-08 should check pending interrupts correctly.
443389effc37308ce1a3c3a840082a344fc6af56 2020-04-10 reduce duplicate include.
d94960f22ec2de3a3855305cb51343806d2b46c7 2020-04-10 update dependencies
8119bcbfc04772fe4012b5ed396a68f02e312316 2020-04-22 rb_method_entry() returns valid me.
e89b87508160868bd431218872d0d5b7b15bc57b 2020-05-15 fix for multi-run test.
67d259c5dccd31fe49d417fec169977712ffdf10 2020-05-19 Use __bultin_assume() from clang-7
cbd45af2a9bec871ee023e6be57c5f32b22280fe 2020-05-21 fix memory leak of ccs
21991e6ca59274e41a472b5256bd3245f6596c90 2020-05-20 Use RUBY_DEBUG instead of NDEBUG
4ac42874bc5b39b82199d9d86eea1c64efe4d73d 2020-05-20 Update include/ruby/assert.h
c9fe4ebd29f71805648a048d2cc431c94039ceaa 2020-05-25 cause SEGV for the test.
68e987c315815d9fbbc0c9967127be58c14655b5 2020-05-26 GH actions with RUBY_DEBUG (#3144)
a809caa4b3f9fc5503c0e81cdb02c167d1ad1dee 2020-05-26 remove duplication.
eb20d2f449d299b9281abd2426878deeb8ebcdad 2020-05-26 include debug option in slack notification
6ba2d3e4c6958a214e13ac07c7bdb160b9c3f21f 2020-05-29 export debug utility functions
03d7f3cdb2550449bcf1c0c1b5529b5197dfb418 2020-05-29 add indent for debug disasm output
d300a734414ef6de7e8eb563b7cc4389c455ed08 2020-05-29 RUBY_ASSERT_NOASSUME
3591703b31658f8e97eb0677e2261e6e7551307b 2020-06-01 send SEGV to show backtrace.
7b9527ce74de11afc8e890db83f2a13a6ed5dc91 2020-06-01 add more 2 sec.
56ca006784d8737463857776a807c6f656ca8455 2020-06-02 run lldb to investigate the stuck process.
195075e8f5f2220a0a1f00f5cfd2ad98681e71d5 2020-06-09 disable GC on a test
e2678781c739edb17f1744d35a9958146e880996 2020-06-12 prevent memory allocation for GC tests
b06d7c5521bd55d82eef96efcc2c7df1c29a3e5d 2020-06-16 ISeq created with callback is special, translation cannot be applied
8070cb56db18966b7186255d46eef869e7fdd9cb 2020-06-26 fix return event and opt_invokebuiltin_delegate_leave (#3256)
8655c2e69041cc812d30c2e951a8ac9ea7a60c47 2020-07-03 RUBY_DEBUG_LOG: Logging debug information mechanism (#3279)
a0f12a0258e4020bd657ee80b7d8f22bd33ea223 2020-07-03 Use ID instead of GENTRY for gvars. (#3278)
74e1bca79d703f2658ac9cfa6d990e7e77c59757 2020-07-04 support all locals for cexpr!, cstmt!
95f5fd9a55cf9d885ec01d50de6eddada4379839 2020-07-05 fix up Primitive.cinit! code
c87ee8005b496e6c676076afabc962077e799c49 2020-07-15 rubygems is needed to run solo-file test
fc220b129dff62c1aba7dcf9851519ed6e57f75d 2020-07-15 rubygems is needed to run solo-file test
c25d249e63e74499a017330e4281d934911365d4 2020-07-15 RBasci::flags (VALUE) doesn't match int.
dd6f5aba0e07c6e65cad026317d1a77dbb72f56e 2020-07-29 add debug output.
ed22bf47cc551bb26f17fbaebadd06d1ff2b8948 2020-07-29 display stderr output even if core dump files
f7cf600c8ba483d389ea400071aa2aea2e5a57e0 2020-08-01 fix mark bit operation.
b4f58ea3008e3e86bdc931407c68c6e0497ef078 2020-08-01 support multiple filters by RUBY_DEBUG_LOG_FILTER
a1246270c55051413ef5830684baff94e1139814 2020-08-01 remove accidentally introduced debug code
bc00e6aa909631c995473bc2f3d62fbe60b16ffe 2020-08-17 Disable debugging test.
a137874e67b0b3f815be3ba322ed8925860bc673 2020-08-31 add RUBY_DEBUG=ci envval for GH actions
79df14c04b452411b9d17e26a398e491bca1a811 2020-03-09 Introduce Ractor mechanism for parallel execution
b52513e2a1ede39eef094e9e2cfa8710ce26e1f1 2020-09-03 skip Ractor tests on Compiler tests
3f922f3b77f343394475c4603d4b885126ce6437 2020-09-03 don't use toplevel return
3b0bcaf2872e5ab6d2475e9cd6dd5c374d93ae0b 2020-09-03 check multi_ractor mode at main_p
ea78960ee5cb78c6aaaaa7091b85066a011c51e9 2020-09-10 sync callable_method_entry()
ccb944fcfe43aa9274b6d386d131a006e5a00b07 2020-09-14 add NEW entries about Ractor and new method cache.
f7ccb8dd88c52b2294742c3abb87098ee4076799 2020-09-14 restart Ractor.select on intterupt
74ddac1c822697b442646f433d60e2c099db3c3b 2020-09-11 relax dependency
e81d7189a09155344b3135903300dce450232402 2020-09-11 sync fstring pool
889bbbaf527372c5cc229b56dca9a2322e325f26 2020-09-16 skip on RUBY_ISEQ_DUMP_DEBUG=to_binary
dd5db6f5fed359efc85cff25d326b5fc3de66614 2020-09-16 sync fstring_table for deletion
b189dc6926fffe1cdb04422c5116ad3ca1425cb7 2020-09-16 rb_obj_info() shows more info for T_SYMBOL
b416a7640278fbcb82d0ac37c0b71cf6e0dc4a36 2020-09-16 add debug log on enabling multi-ractor mode
06e9b94d40a3c9f086fbdfe932b6614e18d10846 2020-09-16 show object info to debug purpose.
3b159374a2daa101b419ebf6f4a7fe01bbe9dc55 2020-09-16 sync ruby_global_symbols
4a588e70b88028b3121babc43a26de0d13bdbb03 2020-09-24 sync rb_gc_register_mark_object()
29ed16ff4ad5a0d3057d2f24c44ff488584df251 2020-09-24 add GC_GUARD
7ad3aff48dc8309542704b2212b3c3d1df8155d0 2020-09-24 Ractor#close_outgoping cancel Ractor.yield
fde136152eacca454bfb978347abfa67bd73ac4d 2020-09-25 should not check taint flag on rubyspec.
52865263467b48c0f5af6d9548972dd1f9e5bee1 2020-09-24 frozen T_OBJECT can be shareable.
d247dedade684d8ba04da4af891791e5ab5878ef 2020-09-25 Ractor.yield should raise if out-port is closed
6081ba4a871f857eabdcb1e51b68f11bb10c49af 2020-09-25 refactoring a test code.
96739c422206d55acab4aee917d9d965c27b6fff 2020-09-25 Frozen Struct can be shareable.
25cfb0c04007137e2dc6d82c2dadea067498f39a 2020-09-25 Range is based on Struct.
caaa36b4e6d0d59f0aa21049c063b140aa5aae4f 2020-09-25 prohibi method call by defined_method in other racotrs
0096d2b895395df5ab8696d3b6d444dc1b7730b6 2020-09-25 freeze all Range objects.
5e91b4bdb3e2889cc485b77c4ef29c4f5c364895 2020-09-27 fix typo [ci skip]
bc23216e5a4204b8e626704c7277e9edc1708189 2020-09-30 stop Ractor test in test-all
8d76b729a180c47d8edf4392d84a02ec00aeb37b 2020-09-25 Put same frozen Range literal if possible
0406898a3f1d157db0ccf039fe9844c221c65f95 2020-10-03 add NULL check.
a770b9c87e5f0c5bdffaad09bf73fb45760896e8 2020-10-09 remove debug code
bf3b2a43741e4f72be21bc6acf24d37e7fcff61c 2020-10-07 relax Fiber#transfer's restriction
fc8b68a52ad45a1fd5affa6d08ceea2ef729a25c 2020-10-13 remove useless semicolons
c3ba3fa8d01aa3970dc1f4e3dc0090ae171e9e35 2020-10-13 support exception when lock_rec > 0
11c2f0f36ccc50899a8dd69a260e85451f68b5ba 2020-10-13 sync enc_table and rb_encoding_list
102c2ba65f1fa2a6cdbaaa7d2b466aabfc50e5d7 2020-10-13 freeze Encoding objects
ae693fff748c68ca2500bbc2c0a8802d50f269dc 2020-10-14 fix releasing timing.
fad97f1f96caf11005a5858a29d32c66203913e8 2020-10-14 sync generic_ivtbl
278450de803c59137fff69c4db03cd40c5b5d08a 2020-10-14 ruby_vm_global_method_state is no longer needed.
2e8b5968e13139510bd169cc33fdaa8a4b0676fc 2020-10-14 remove uneffective test
91ec5f9e39cf54dd7a157addb778293853571f13 2020-10-14 remove rb_obj_iv_index_tbl
f6661f50854e0cdccb03ee516a21ce62adf6c802 2020-10-16 sync RClass::ext::iv_index_tbl
de17e2dea137bc5ba9f00e3acec32792d0dbb2eb 2020-10-17 reduce lock for encoding
319afed20fba8f9b44611d16e4930260f7b56b86 2020-10-19 Use language TLS specifier if it is possible.
a76a30724dfdfd26938960d2f756b4d97f8d855e 2020-10-19 Revert "reduce lock for encoding"
9ced5fae6df9e70506ddad822e15745884e365fd 2020-10-20 add a NEWS for Fiber#transfer
99310e3eb56fbc85bb45119285812eb959448d0c 2020-10-20 Some global variables can be accessed from ractors
2bdbdc1580f52dc8d70a71b824238e0f20342dca 2020-10-20 add Ractor.shareable?(obj)
ade411465dc054af5ff025531649b69134d74b56 2020-10-20 ObjectSpace.each_object with Ractors
67c25a34a7c70e3cec868472517b699b1e881857 2020-10-20 skip `echo foo` on Solaris
512752ba19c960daf1d866f96fb33f3c0b2d7a75 2020-10-20 fix condition
2f50936cb913b7458cbaa03dc4652f1127a7631a 2020-10-20 Ractor.make_shareable(obj)
b59077eecf912a16efefc0256f6e94a000ce3888 2020-10-21 Ractor-safe rb_objspace_reachable_objects_from
441403173595ddf80d11c99ebe70d4c7ccd49188 2020-10-21 extend timeout of rbs test on rbs tests
631eaa85109e4d6fa31eaeed393858e1e63300a4 2020-10-21 check main-ractor or not first
af2471365fedaf89759eb00f87164fbaa0afaa39 2020-10-21 refactoring rb_ractor_confirm_belonging()
89f6644de71b7dfbdbdba216a8667b9c3348203b 2020-10-21 refactoring rb_obj_traverse()
3a97d361576d1cc198047d502c5165aa37b7f86e 2020-10-21 refactoring frozen_shareable_p
0c0d0752f1fefd9b085f191b62946a811763ef1b 2020-10-21 allow to access ivars of frozen shareable objects
603fb940c0d334f399d77b56d7e62ee85edb91e0 2020-10-21 refactoring obj_traverse_i
1c6ebe14fbdb2bc23878133cbf7a99ea856e3d89 2020-10-20 freeze Process::Status
7ad56fd87b35abf4933e0146761df91e9ec9890a 2020-10-20 freeze dynamic regexp literals
07c03bc30984a496558d9e830bc4fb2f8cfb1854 2020-10-23 check isolated Proc more strictly
5d97bdc2dcb835c877010daa033cc2b1dfeb86d6 2020-10-29 Ractor.make_shareable(a_proc)
08ddc335ea34829df756c164ceb13c56f0377d37 2020-10-30 sync vm->waiting_fds correctly.
89c8ca32d0a8542c9360f45734c799d81c4738ad 2020-10-30 add a test of define_method with shareable Proc.
fd089276999393a6f6bb2a0b614ac76ca6151ab2 2020-10-30 Ractor's "will" doesn't need copying.
0e33028d69a25c512df1a44f930652c9a5c5b153 2020-11-01 use one-line pattern matching for warning tests
db7a3b63bae810a03b19b5577ded1403bb789185 2020-11-01 suppport Ractor.send(move: true) for more deta
5fefb532493bc0e80db78322d5fe0eb49b940e31 2020-11-01 Copy for Ractor.send() without marshal.
7718e9588b4d7d83c8f9a89dce10b06b9f97bddb 2020-11-05 a part of T_DATA object can Ractor#send
b557c5768c7642d232a6a0268d6876651d40204b 2020-11-10 refactoring.
1e8abe5d03ae386af82e2c95ef05170cd9791889 2020-11-11 introduce USE_VM_CLOCK for windows.
db31ace934e8b900e90853bd875f23195837b398 2020-11-10 Threads in a ractor will be killed with the ractor
deed21bb08170431891b65fda26f4a3557c9ffd4 2020-11-10 ignore yield_atexit if outgoing port is closed
fa3670e6e48a8553ad1f37bbfbd112911da497d1 2020-11-11 remove Ractor#close
084e7e31b257f6ac859769553b4c1c6ca2930152 2020-11-16 remain enabled and line specified trace points
5e3259ea7490a2542d78c433eb8c9d44c7819e61 2020-11-17 fix public interface
a79fe07db6c2de7a477613f8cd5c9c51322367bf 2020-11-25 show the error message before Ractor.yield
d43d4acf2638ed50ab1542769c5d032c1aa8fb31 2020-11-25 fix error message
7aaf6676c416e773b0b3053de2e250a73c2b2e77 2020-11-25 should stop other ractors on transient_heap_evacuate
2db2fb9f6c742d5bd0019ccd11c7a375e1b12c0b 2020-11-25 per-ractor Random::DEFAULT
5496415d3165e57e3ade16238a4cc9ec2c3a81f6 2020-11-27 mark default_rand
77936ad679d63a6d0e7b585db4c31db5507f5586 2020-11-29 support SIGSEGV/BUS while read_barrier_handler()
e79f1941b29738d95b42f8cb5bdb159e7138cf49 2020-11-30 tune parallel test
67693d8d806e67d6e50b303dd0be6ec06b81c853 2020-11-27 ractor local storage C-API
d2cfb5228a89678a712efd381e049391800373e1 2020-12-01 show with sharing info
8247b8eddeb2a504a5c9776d1f77d413c8146897 2020-12-01 should not use rb_ary_modify()
182fb73c40351f917bf44626c44c1adb6cb1aa5a 2020-11-30 rb_ext_ractor_safe() to declare ractor-safe ext
764de7566ffa3fe828abf13ec93d76515ba27dd1 2020-12-01 should not use rb_str_modify(), too
1f71c7dc81628bfd141bb91ee10bd8ca44ccaf07 2020-12-02 add GC guard
82bbce826f7f170270856bec8ef852667028d143 2020-12-04 fix index
e8cee4915b280dab57ca4f916f36bea4eb7ebdf1 2020-12-04 fix initialize order
b67b24d0f5e78481e6a306881b6858f0dec996ba 2020-12-01 ruby_single_main_ractor for single ractor mode
307732ccee7f9f28f8422bab2f839da021d8cdec 2020-12-04 cancel theap on multi-ractors
23f9447429a1bbb262aa19afd9a2a1ad0eba8ca6 2020-12-04 show ractor info on non-single ractor mode
554a7180a0aad85bee5cb8ed41d99d16dab304e7 2020-12-01 RB_VM_LOCK_ENTER_CR_LEV
1d0bf3d8dd8de40d498a7c2784a84aa566d290b9 2020-12-04 log for the beggining of vm_lock_enter
91d99025e4776885ceea809123a129cb31cd1db6 2020-12-03 per-ractor object allocation
59ddb88da6bf483eeec7b85b8a85cf3719edf440 2020-12-06 RB_EC_NEWOBJ_OF
344ec26a99e09c2d2f756fa6384e75ffa48f415f 2020-12-06 tuning trial: newobj with current ec
bef3eb544025cc4bd4c9c7b87a8ffe4966db6faa 2020-12-06 fix decl of ruby_single_main_ractor
8dd03e5cf0d583ffb836cf27be5645a7d88ac736 2020-12-07 skip assertion on multi-ractor
0ebf6bd0a26b637f019d480ecd7f00a73c416b58 2020-12-07 RB_VM_LOCK_ENTER_NO_BARRIER
1ba05f5b2d7b1701242023b5ac156b169f1ded90 2020-12-07 need more lock in finalize_list()
c2fa024e0220aca6e2437e56df2abf1a2368cbdf 2020-12-07 fix Thread's interrupt and Ractor#take issue
ee194af2aa170c0cb1bfd5fed4e84259a8150ece 2020-12-07 re-layout rb_ractor_t
45b29754cfba8435bc4980a87cd0d32c648f8a2e 2020-12-09 need the lock for debug checking.
eafe000af3d363f6cb65be99edcfccedf35d801c 2020-12-10 lazy sweep tries to collect 2048 slots
554c0949777cd495e5a1296bd6719fcf508a70d0 2020-12-10 set min/maximum free slots relative to ractor cnt
da3bca513f437b05b3953c3712ff48621fc5e008 2020-12-10 cache free pages per ractor
72f1c43584df714a011864ca9fafc6e15ace392c 2020-12-10 ObjectSpace._id2ref should not support unshareable
974e89ae0743e591f0034de6c8dfc41a81d6429d 2020-12-11 revert da3bca513f437b05b3953c3712ff48621fc5e008
ad6573163f4a7b7eedb904f2f6f730c3cd2669e3 2020-12-11 add RUNOPT and RUNOPT0 for dev rules.
b53ccb9c69abd24e3bdad66cbe4c7e7480eaef16 2020-12-11 show deprecation warning correctly for lambda(&b)
d741c77b5fd976300815c1ea987e76e92b71122f 2020-12-11 fix ivar with shareable objects issue
124321e0c7ab8dac1ffce78c653cc677f878d5b0 2020-12-11 fix lambda's warning and tests
70a311fdeb66ce80b562ccc4459c409cea64b74c 2020-12-11 trap on non-main ractor
fa63052be19b26d39b22689ad9969aa83909809e 2020-12-12 create ccs with 0 capa
967040ba59799e6b7891168ffbf37cc646988d84 2020-12-12 Introduce negative method cache
a8aa169b8f1f89660037c874e8fc2feaf596a43a 2020-12-14 add cc_invalidate_negative debug counter
0362b4c689e319e233691ee052cd703bf8d2baa1 2020-12-14 add tests for method cache.
53edb27baccaffe919c2885a9c86312cc51ea9fb 2020-12-14 use method cache on Object#respond_to?
da3be76cb017c188d1a99d8aa14d13c15d93f9d1 2020-12-14 add debug counters to survey the IMC miss
c37ba2c5478c8fa81f3cb26d7ddb9b79d681147d 2020-12-14 add ccs_not_found debug counter
7060d6b721092d56f1cbc084940db960e01671fd 2020-12-14 fix condition and add another debug counter
aa6287cd26582e64c19e37dea3fd90b380b85d5b 2020-12-14 fix inline method cache sync bug
72a73691bd069c20f07a42bbd2740ada319ee001 2020-12-15 add several debug counters
dff67c809f786c94933583a450dbd9398fa07039 2020-12-16 fix duplicated name
171f0431e766ba5b1a326386fff34a30f6cbc4c5 2020-12-16 fix typo
0b678cc9e5a5149e40765562142ed1dc05d09b53 2020-12-16 add vm_sync debug counters
5499651ee75538a4d8a3bb4a7442f5f59f36acd8 2020-12-16 tuning ivar set
1e11c12a066036e85177104a9f8f5469063858a7 2020-12-16 remove unused function
98dca855736c9fb8d4edef8b33a5df1cfe67ebb7 2020-12-16 tuning vm_setivar_slowpath() more.
0a521618723e5e602c1288b4185b869e94332172 2020-12-16 fix Ractor#receive by other ractors
a9a7f4d8b8ec30abc7a47ce700edc7209ae12279 2020-12-08 Ractor#receive_if to receive only matched messages
b29c0fadeca7bd7d00d9fe17345fe88bf968312f 2020-12-16 add HAVE_RB_EXT_RACTOR_SAFE macro
24f018972b958d6287c71a4682ea1dcc8d1fa16e 2020-12-16 fix timing bug
c58142134cccdd31811f12aabf4f9dd3ce6a17f7 2020-12-16 make RB_DEBUG_COUNTER_INC()_thread-safe
2a3324fcd2f9681e167b2619563a5c26e1a362fe 2020-12-16 No sync on ASCII/US_ASCCII/UTF-8
93ba3ac03681a2a65ca28b4c5aaba72da9e16f97 2020-12-16 RGENGC_PROFILE=0
92137718170118030a1f56303764d08201bf5c33 2020-12-17 encourage inlining for vm_sendish()
c42948d78463d7e38f04070236985dcda895efd5 2020-12-17 add debug counters for gc start events
99b91453809be68c604f94416030addfff3d6142 2020-12-16 relax synchronization on WB
7f11c8086a4b5924737223322e24be23e9ff34c5 2020-12-17 reduce barrier counts for GC events
da3438a50454706cce2e5b06bdad498b42977f8f 2020-12-17 sync obj_to_id_tbl
6538c89f1c9d1af95c0fb3e58ac0e807a5fe47f4 2020-12-17 gc_verify_internal_consistency() needs barrier
29e42b8bfdfc7a2d879a4ddb1db3d4453d66143a 2020-12-17 add explicit check
51c2725dc646030283d01ce23a32c06f0f1c8bf6 2020-12-18 use eval to create different Regexp objects
a07f2498031d5f4c53ddc03d61a8a41a6b77baca 2020-12-18 socket is ractor-safe.
b44f7151c71011460877bdba549453aaeada88fe 2020-12-18 zlib is ractor-safe
cfa124ef05e1b899c1953888c0fb3076388a0d8e 2020-12-18 acquire VM lock on gc_verify_internal_consistency()
61236770e6cc41f1364dc04249d845def03d9f37 2020-12-18 need to sync gc_finalize_deferred
74ab2c3b463da4d98803fe694acad831938a97e5 2020-12-18 finalizing should be checked before VM lock
b5588edc0a538de840c79e0bbc9d271ba0c5a711 2020-12-18 openssl is ractor-safe
e76b56f58e44cb54497d93526d649950f5bdd1c0 2020-12-18 support Ruby 2.x for openssl
04d62e6f6202684c57f2fcf71bbfcb891cd4ddd9 2020-12-18 fix method cache debug tool
cee02d754d76563635c1db90d2ab6c01f8492470 2020-12-18 fix refinements/prepend bug
80cb9165fa34185b601970da407a295a78ec9eff 2020-12-18 add "copy: true" option for Ractor.make_shareable
76e88480371469400346fca609efe67096813915 2020-12-18 unfreeze Ractor::MovedObject
c1461c927b123468ba83713676dcda48e51c8ec1 2020-12-19 cgi/escape is ractor-safe
846c4b03b8e9ff788f355f1bcd12e75715288e95 2020-12-19 ext/monitor is ractor-safe
bcf4b236e424ce0e6055f4a9651b5369a830866a 2020-12-19 ext/racc/cparse is ractor-safe
7f8108eeff8ffa66c93efb07d4bead1baf7153a8 2020-12-19 fix indent
f70b894b8829c064e39646c9b5f6d304d13bb16d 2020-12-19 sync RCLASS_CONST_TBL()
730f314171e67d981887c061d5dabf927ff5efd5 2020-12-20 fix Ractor.make_shareable() with Class/Module
7600f69a8e7955fc2ba3ef83d0c9fa019114216e 2020-12-20 rename to rb_ractor_make_shareable_copy()
6be61ab264c98c96e26b5d3398cf80b49197ba29 2020-12-20 should use owned_p instead of locked_p
dca6752fecc6733575145185764d7b6a218cee96 2020-12-21 Introduce Ractor::IsolationError
91e2f08a6a296acb7debb184ffe1229c5c25bb0c 2020-12-21 export rb_eRactorIsolationError for MJIT
a2950369bd8a5866092f6badf59b0811653a6092 2020-12-18 TracePoint.new(&block) should be ractor-local
02d9524cdaca1754718bf1d591408d377e6b383a 2020-12-19 separate rb_ractor_pub from rb_ractor_t
35471a948739ca13b85fe900871e081d553f68e6 2020-12-21 add Ractor#[]/#[]= for ractor local storage
d0e4ccbefcdd6032d0ae70bc54c9a4fb55d92576 2020-12-21 add Ractor.main
520dcbd6009b07458d67309ae33a602d77062975 2020-12-21 reset cache before iterating
c34c6a89cb7524050dc6f174da53a8159a7bbd64 2020-12-21 fix ractor's doc. [ci skip]
2e1cdf36ba950fef3f7d6fc215835ce3027699f4 2020-12-22 add a NEWS entry about ractor C API
7204b81bcb13f84ca3cc34384d205565fd5ad381 2020-12-22 fix to use rb_ractor_id()
cae8bbfe6271a15cf212a83a9c3ac3fedcdc7718 2020-12-22 pp is ractor-ready.
7e44ade5658bc6ae16e9838c64ff9e90d4fd805e 2020-12-23 ruby_single_main_ractor should be clear before warn
0dd4896175f95c4c2a26d91a97b9fcb9a74cc0c6 2020-12-23 need to clear blocking cnt at fork (child process)
e052d0716325bcb499c57b1de0c6e3eb9effb299 2020-12-23 Revert "need to clear blocking cnt at fork (child process)"
b32ed8aa41795e3b153b423ae14d2699060d73db 2020-12-23 remove method__cache__clear
7fcb6b3dbe7517fe5426fdb6871cd4940a71b7e8 2020-12-23 fix ractor-locking around rb_ractor_thread_list()
7340e7f82780f529d80490045f5ea3e2559d563c 2020-12-23 introduce rb_ractor_atfork()
9aca51e8a597fb4689c058b4e6b215ae87434e1b 2020-12-24 add about Ractor into extension.rdoc [ci skip]
6f29716f9ffb710af7f344839ec67ef2b8a48ab2 2020-12-24 shareable_constant_value: experimental_copy
e43b5aa52dcd1eaded1141ab85a30bc8c7c4a6e4 2020-12-24 remove redundant example.
8664c3ddef548b53c4f5c5264cccd24ae08f174f 2020-12-24 update doc/ractor.md
45f3d481064c64e3fa1a9c75d215d12d5c7d729e 2020-12-25 USE_RUBY_DEBUG_LOG is not defined !devel build
888cf28a7e3a07fc0a41688777a40910654005ad 2020-12-25 define RGENGC_DEBUG_ENABLED() as 0
e7fc353f044f9280222ca41b029b1368d2bf2fe3 2021-01-04 enable constant cache on ractors
e91160f7579a572e198067b9c0697c91be1876e7 2021-01-05 set RUBY_ON_BUG on runruby rule.
442bd0e92cb8ca8e54f8121fc33adeb6b2b53e73 2021-01-06 show more info about imemo_callcache
954d6c743219c11c84dd107d059001752f186a27 2021-01-06 remove invalidated cc
d968829afa19c31e9461fd545cbd21250778ce6e 2021-01-06 expose some C-APIs for ractor
55e52c19e74d5df90560ea1cc4f2a2b9f5d7a5c4 2021-01-07 simplify assertion
abdc634f64a440afcdc7f23c9757d27aab4db8a9 2021-01-08 remove unused decl
d4b7e967b6dc0c4b971cbb3b5444c7fbe93a3f86 2021-01-08 should use `assert_include` here.
f4ce78d5c139a8825ee2d09f39aef03ef762dfc6 2021-01-13 delete negative cache from the table correctly
a7d933e5021d1028d64a055b6dcf8631ea6a52c3 2021-01-18 fix conditon of vm_cc_invalidated_p()
03d1850bfaa1c279fe5cc79f4bb2128f50c5b9e5 2021-01-21 use ractor_wakeup()
d0d6227a0da5925acf946a09191f172daf53baf2 2021-01-21 alen should be actions number on ractor_select()
fff1edf23ba28267bf57097c269f7fa87530e3fa 2021-01-21 fix Ractor.yield(obj, move: true)
e586345b7753e942c2946905c5acdc666fb0d47e 2021-01-22 check is_incremental_marking() again
1ecda213668644d656eb0d60654737482447dd92 2021-01-20 global call-cache cache table for rb_funcall*
98e27016c93455d4e9e208d0666d85929cb62857 2021-01-29 refactoring rb_method_call_status()
be1486568abac364c12e36d8dc49018ba8918c73 2021-02-02 add debug code for timer_posix
6f727853cee41195b67ee5d793c1ac23fe1a6ae0 2021-02-02 only main thread can modify vm->ubf_async_safe
583f364f7187337b284061b78a47b29875398e33 2021-02-03 use goto intead of recursion on vm_call0_body()
b2674c1fd725b43adf51af7935c780359d70c2a4 2021-02-05 unblock thread is only for main ractor.
813fe4c256f89babebb8ab53821ae5eb6bb138c6 2021-02-12 opt_equality_by_mid for rb_equal_opt
969b824a0c7605e0e570631d967ad0de0c37d0bf 2021-02-18 sync GC rest if needed
100e464bee46ae71ef048ed85a9bdd012935a3f7 2021-02-18 clear RVALUE on NEWOBJ event.
07ab172ebef28bb82c2650694548d123802d6c22 2021-02-18 sync check_rvalue_consistency_force()
7b9476fbfab738d1eb01b4b4c4af9a1680513019 2021-02-18 Ractor.allocate should not be allowed
d260cbe2950392c41e263c82ab753e5faa12468c 2021-02-19 show more information about imemo_ment
9c769575bfa2a5c9e7078eb2840bba640dc46077 2021-02-19 invalidate negative cache any time.
1fac99afdae2671a9ca86bead5bde4d0e2eff1b4 2021-03-31 skip marking for uninitialized imemo_env.
1ac68bba4ef9e51c383ad9bad21d41a5ec8c0869 2021-04-01 [ruby/irb] SIGINT should raise Interrupt after IRB session
ecfa8dcdbaf60cbe878389439de9ac94bc82e034 2021-04-01 fix return from orphan Proc in lambda
609de71f043e8ba34f22b9993e444e2e5bb05709 2021-04-22 fix raise in exception with jump
c647205c3eb1f17409a859149bb7d2ea38b43bed 2021-04-26 disable shareable_constant_value for CI
3df7c967bb5fca8767f384374710b1a1529ee37a 2021-05-12 suppress warnings on repeat tests.
5a6af44e204ed03616c0b0f43a7aeeeb79f4d0ce 2021-05-12 skip test for debug.
523a6998dd45eb910ccd3fe6a8d9d008f7a12cf2 2021-05-12 Use another class for the comparison.
2420119f47a6c5d478c721b2f30565d5a074dd32 2021-05-13 skip rb_bug for inconsistent zombies count
817764bd82513e2a0a672f5958f65854ea172c08 2021-05-18 simple rescue+while+break should not use `throw`
fb4cf204a662a8cd9dafef6f31f2bd0db9129abe 2021-05-12 use me->def instead of me for opt_table
fa0279d947c3962c3f8c32852278d3ebb964cb19 2021-07-28 should not share same `def` for specialized method
228b3e43be5e01e204751be2035fee3576a7ab74 2021-08-05 check GC.enable'd status
42b6dc84d3e0abb19432a1cf24f327b37b176fa8 2021-08-10 add some lines to delete unused TracePoint
3d4207f9bb4f39dd06eb419cc0bf185c8f03375f 2021-09-10 Need `#`
ae1da7e1f76cabc6c2d9b45a6c56b1607200147a 2021-09-30 remove lib/debug.rb
bc96a45f12503956e323e6c2a47aa550ca1da3dc 2021-09-30 introduce debug.gem
0553494ad7ccbc75ac954c2cb0e7ea50443bad0c 2021-10-05 debug.gem 1.2.3
f2ca65266f203da8a8c3afa734bb6e76a088c581 2021-10-05 debug.gem v1.2.4
07b87f79797c8716f0ee36f3c32879194717ccd6 2021-10-20 add NEWS entries about debug.gem
c7550537f11dcf6450a9d3df3af3fa1f4fe05b15 2021-09-30 `RubyVM.keep_script_lines`
7185c00fcc330db8951b684f548ba3d10983bb92 2021-09-30 freeze (make shareable) script_lines
598382f686ef1a9687fbc814f8cf1c5ef5c97cfe 2021-10-22 debug.gem 1.3.1
6b9285e8d45e88c5b014b8428520ffa2401789ad 2021-10-22 'uri/https' is needed
acb23454e57e1bbe828e7f3114430cab2d5db44c 2021-10-22 allow to access ivars of classes/modules
a7776077be7b1754b4306f00694a8f4d42009159 2021-10-22 add vm_ivar_of_class_set
df9fac5ccd905d57251ffa89f28959c1b2a294eb 2021-10-22 update doc/ractor.md about ivars
199ba9c377be894d407d27fb1ab2defe119398d7 2021-10-22 update NEWS about last commits.
7864efa105921eb3900c843126f2e0db02b9c6ae 2021-10-25 introduce check code for mysterious EBADF
a1c4cab11d613d7df037a81a770ee44a23a2e9be 2021-10-25 check other IO#close calls
5c2b6441660cdabf1efc745c25f2b1a41bb3b087 2021-10-26 fix random EBADF problem
d1424f7f7e0903c4b9c676edda02ecddd4333fef 2021-10-26 Revert "check other IO#close calls"
8a49c7e4812a3f6d027dac1a574f47f125886935 2021-10-26 Revert "introduce check code for mysterious EBADF"
77544caaf46503b8e56d5b37703bfd1e9fb3cbc6 2021-10-28 add `make runirb` rule
cbf2078a25c3efb12f45b643a636ff7bb4d402b6 2021-10-28 need to mark script_lines
5680c38c75aeb5cbd219aafa8eb48c315f287d97 2021-11-08 Use valid `ec` for postponed job.
b5531adf4160304ca62b7d128af458704c9beb4e 2021-11-11 quick fix for `test_initialize_HEAD`
38c555a3150b6c22be650dc5c89ed5927c640e8c 2021-11-13 show encoding for each path
1ab6f2b4a232d41199268c6ae019941459ad5e33 2021-11-15 `rb_vm_lvar_exposed()` is PUREFUNC
b1b73936c15fd490159a9b30ab50b8d5dfea1264 2021-11-12 `Primitive.mandatory_only?` for fast path
a24eeee5567a14841b37d9a3428e14e4f3c45c07 2021-11-12 Use `Primitive.mandatory_only?` for `Array#sample`
dde010c97432de8ac2336eeeb4f6b99daf832b61 2021-11-15 add benchmark/array_sample.yml
2a3d5d661ce2cadad50aa5d72b54e134da54f5f3 2021-11-12 Use `Primitive.mandatory_only?` for `Time.at`
f943264565f3072a30616fa93ffa3da3790294b0 2021-11-15 add benchmark/time_at.yml
2d1a7bed03540257b32fd87ce1c78d2f5ad3d075 2021-11-16 a variable is not needed.
84aba250315d7fea728a6708e33ae8bf11f607b2 2021-11-16 assert `cc->call_ != NULL`
b2255153cf2fe9d7b851c59cc09b358c0630e0a2 2021-11-16 `vm_empty_cc_for_super`
8d7116552dace6d0a9a8f0bbe2fe0f02fcff6532 2021-11-16 assert `cc->cme_ != NULL`
7ec1fc37f4c87c691555e76d51b6590761b3ec64 2021-11-16 add `VM_CALLCACHE_ON_STACK`
b95d7d2099e0d9df68c08f23991ba35db6126bf5 2021-11-16 no need to check `cme == NULL`
349a1797828a1fa6acc3c0d30a2a24e884d02907 2021-08-19 support `GC.stat(:time)` take 2
c347038d4ea246d686fcd4ddc8761a91e4dd25ab 2021-11-10 GC measurement feature
6c64013978e77637995a0348f7e232068b9f61b4 2021-11-11 use ULL2NUM directly.
be71c95b88019a1ca7a030a757ce343b743d8aff 2021-11-17 `rb_method_optimized_t` for further extension
82ea2870188d66aa75a99f03b4e7fdd1750aa196 2021-11-18 optimize `Struct` getter/setter
ca21eed6ebbceca68daa7b2a88e69a58b8d56806 2021-11-25 fix assertion on `gc_cc_cme()`
e984c2a9ea29fa17c5f55d324d181f8eaa677d69 2021-11-25 fix to choose correct callcache
7f7c3a0a75c48b45ce186c9e2b229ab3edf1473d 2021-11-26 initialize allocated memory by VWA for assertions
660687e6fa60ff4d84805b0ef89fb19ad1b0b8f6 2021-12-06 add NEWS about the improvement of `Struct`
87664b5cc8f945ed0c5611b27179913585ec2326 2021-12-06 add a NEWS entry about GC.total_time
4c39fae4de375107f24095f4b4412efcefcf2a08 2021-12-06 add a NEWS entry for `mandatory_only?`
9c269316357a1a5b6ef27794f3c9412b2e33a6cd 2021-12-08 [ruby/ostruct] `Proc`'s self should be shareable.
cce331272b07636d536c8227288ab3fbcf24e2aa 2021-12-08 `Ractor.make_shareable` checks proc's sefl
9873af0b1a343dff6d1a8af4c813aa2c9ecc47d5 2021-12-08 `TracePoint.allow_reentry`
4d0cb1a54ba5e8e053e6acc860fd1cb9ca5e1b19 2021-12-12 add `method_def_aritry()`
6659253cc6c807641e23d469b425ddcf18de7af4 2021-12-12 Struct setter's parameters == `[:req, :_]`
fdfb43b2b129afb78c352c95776118eeceb245a2 2021-12-12 fix Struct's setter arity
5164c2b36f66e7b1d2e0f908663ee3f3a3830605 2021-12-12 Pass UnboundMethod to 2nd arg of define_method
0ee127e5bb1a5c8f7ac74b9912bc758446afbd8a 2021-12-13 add a NEWS entry for `TracePoint.allow_reenter`
1578421962024f7fafc94418da9e1ecab31c49b2 2021-12-14 reduce `rb_clear_attr_ccs()` call
2e6e2fd9da18b74aa9555d09a871b24895e42773 2021-12-12 fix local TP memory leak
397a509b6d0d1470df8c290d7c4adef78f1532ee 2021-12-14 prohibit load by `autoload` on non-main Ractor
0eafba36103f5526c489fc5dd3d958d97e11a2c2 2021-12-14 use `RB_VM_LOCK_ENTER()`
04aab3c2592a2234921fb715c1ff9f36a58828ca 2021-12-14 fix test
13c37835d5dbda3493f54baf13f75ed5b59fc507 2021-12-14 ucrt can raise `Errno::EINVAL`
37bd795cf8bc9681fccaf9b2d42292b14610a310 2021-12-17 `ENV` ivars should not be accessible from ractors
c8f2766ae2312eedbcf947b189a8629696bb8bb3 2021-12-17 `RUBY_DEFAULT_FREE` is not needed.
ce6fc20f973e307071533bfd9699da88986c67a3 2021-12-17 data type should be `static`
dbb5abc45b54e8f0ba2edd509fe2ae4be57451a5 2021-12-17 debug.gem 1.4.0
45de4025f522f5148f0fc730aa0a1695a87daca2 2021-12-18 skip -v spec on MJIT
89a02d8932774f740013fe2a829faa9c40a1cfd1 2021-12-18 add `rb_iseq_type()` to return iseq type in Symbol
dd29ba076439375c6e235218ce5a0a3f01d41b29 2021-12-18 `iseq_type_sym()` -> `iseq_type_id()`
6bef1ac62850be6d83a069ac3d3be0b8e2f3afcf 2021-12-18 `rb_iseq_update_references()` cares `script_lines`
df48db987da2bd623d29d06419f2fbc8b7ecb38a 2021-12-20 `mandatory_only_cme` should not be in `def`
ad450c9fe51c51626dd07f6e766f47d839cae3ba 2021-12-21 make `overloaded_cme_table` truly weak key map
779039a4e00f6d1bd2ccae405fe165ca9026fdc1 2021-12-21 add ref to the ticket
ca032d5eeaf81692f89f35c55450dcb97df59e16 2021-12-23 undef `rb_vm_lookup_overloaded_cme()`
2da53b14686d07369486bf435c5de932bf26a9fd 2021-12-23 `finalize_deferred` doesn't need VM lock
6050e3e2a6ce2269c56fa74bc5b75a94d064b61f 2021-12-24 @@cv is not accessible from non-main ractors
38b3adc4cb8c40bdbcd0ac8989e4ecb6c03080e9 2021-12-24 add a NEWS entry about cvar inline cache
c9af8a32a05b26d45c5c8967902b3a724f3c1be6 2021-12-28 `USE_RUBY_DEBUG_LOG` doesn't check `RUBY_DEVEL`
7e21b77dc6bfefaf331a0dbf89782303b8cda05d 2021-02-18 T#dup (T < Proc) should return T's object
9de380860d8dc78963cabb5247c6e4a93a2fc5a9 2022-01-13 add a NEWS entry of `Proc#dup`.
53a4e101465a4d2ae38ea3bfd3cb7dd3c9f12f61 2022-01-14 clear `@result` after `setup_message`
308fe1eb858fd8029f67510a18bedfe0e850a87f 2022-01-19 Do not create core file if it is intentional abort
374904b25f0cd399b800d9b822659fbff382b23c 2022-01-19 remain `RUBY_ON_BUG` for child processes.
5e3a32021849718ae483eaaa9fbf155f91828039 2022-01-21 respect `--quiet` option for btest
a51e1cd682daeb76f201e62eaedcf6d51a18cffe 2022-01-25 enable `RUBY_ON_BUG` on release build
cac6fe90236c8541059edc74080d50c49be7ea87 2022-01-25 add `--stderr-on-failure` option to test-all
e953d6865724d8b7e79aa30c445d986f28f5e1c9 2022-01-25 refactoring btest output
cc8064ba2e046f384f446889c8525bf976733918 2022-01-26 Do not need to print to stderr
e75bd8df51648a35442649fd3e4b9ac4e223752a 2022-01-30 pend some tests while using to_binary
603ab709615dd35fa8ebe53087c27631f5b07812 2022-02-04 support concurrent btest execution
8e0899919b1d543399f124092c16780467155f39 2022-02-14 extend timeout for mjit
76e594d5157bd763636adb096d4aa06688ac03ac 2022-02-14 fix GC event synchronization
1ae630db2682831cc0f2d381ff46e7b8cd3c2174 2022-02-16 `wmap#each` should check liveness of keys
00c7a0d491504b0b2b1b8723d4b70e5c24ec649c 2022-02-16 fix parallel test timeout retrying
fdf0f8d81487560f5837dc7e3888a96f7c2b4ec9 2022-02-17 btest-ruby OPTS=-v should disable quiet
fc6e4ce62bfa95b6a0d4d4898e1128c1fce4db8a 2022-03-16 Allow `.0` version mismatch to pass the tests
b3a05827c716bbb6a54cb6924f5840324806c42c 2022-04-01 debug.gem v1.5.0
798e21637f28d308bf0d52081fedd1a49cd1f851 2022-04-08 sync `vm->constant_cache`
c77a31df5ed17231b2ddd213899716b900181ad2 2022-04-08 call `const_added` after `autoload`
9b8ce6d34c49a869ee3fcbd87923a6414396738f 2022-04-14 fix to use `node.gvl` instead of `node.ubf`
1c4fc0241d125879e1e5169f267f26637772f3a7 2022-04-16 rename thread internal naming
702dc116c4fd8906cc65c4ac2a991a2e0df54a63 2022-04-22 refactoring thread inits in vm.c
03d21a4fb099da7c52e6591e17704c297871b7db 2022-04-22 introduce struct `rb_native_thread`
eab99b1d4b61fb85d994534826922f96cd14ae58 2022-05-20 `rb_thread_t::serial` for debug
37ea07d59be53bd447d2d87d9cd56f94d41a40dd 2022-05-20 setup vm->main_ractor before `Init_native_thread()`
a97fbc108bd23e669a27356be83c1a515d469af0 2022-05-20 extend `RUBY_DEBUG_LOG_FILTER` to reject words
37ccf91bfb73a225cc60413645788ea55e5e852a 2022-05-23 cleanup by `RUBY_DEBUG_LOG2` and `VM_ASSERT`
741ac503309f32b5c39073f46a205c99a31d4b0e 2022-05-23 `native_tls_get()`' should not check results
d9984f39d32f4cd692a35f4d803f7754ea262805 2022-05-23 remove `NON_SCALAR_THREAD_ID` support
f3235ac09582c764086da28245a86753a100ba58 2022-05-23 add `rb_th_serial()`
4111028a5cc229c314c2b93271d205206b207088 2022-05-23 use `RUBY_DEBUG_LOG` instead of `thread_debug`
2d1e7dfc36d048003ec2cb09b30f850032fd9c42 2022-05-23 remove `-DTHREAD_DEBUG` rule
62e08d4b844a3f4f7a6dadc6083cd0585485931b 2022-05-24 remove `DEBUG_OUT()` macro
08cee2bf804d22dc51002b0df023aea7ec044d8d 2022-05-24 altstack is native thread's attr
5a4f997b2e8e819ed40731cd769826112072a9d4 2022-06-08 func: and file: prefix for `RUBY_DEBUG_LOG_FILTER`
1e528e8cbef3231e1ffd908c9e1fb90b6b14173c 2022-06-10 small fix on `setup_debug_log()`
a5420b6fc13ede3ed96cd3196265e7919f1146d1 2022-06-30 use latest debug.gem
5df20a5da57bfce736a6fd7de26c1110e3154b44 2022-06-30 stop CI failures.
156da55c164e5463edf15bae05021b7d1477e4de 2022-07-13 debug.gem 1.6.1
5bbba76489628f4509495ebf4ba0a7aad4c0b560 2022-07-29 respect current frame of `rb_eval_string`
fcf861a138c39dbbf83091e5dd018cbf847a327b 2022-09-12 Try latest debug.gem
a28e7871e54d7a87afbfd686291c500d71edb7cb 2022-09-16 Update bundled_gems
e35c528d721d209ed8531b10b46c2ac725ea7bf5 2022-10-17 push dummy frame for loading process
67766cd55c3a05f9888c8e2b9e34051a44b3e3fc 2022-11-25 add debug context APIs for debuggers (frame depth)
6f3c8fdab46872ccece3bf512adac95b64e29111 2022-12-02 debug.gem v1.7.0
59e389af2893c0fcf8b2cfa008c9a16825bf56ff 2022-12-02 UnboundMethod only refer defined_class
87a1fb9ac306769d74edf7d99aa7860c1e8e07e5 2022-12-06 NEWS: `UnboundMethod#==`
ae19ac5b5ba1e613a788addeb6d4d67fa65f6518 2022-12-15 fixed encoding table
dbf77d420d49e541c59f4c14b8e56d3e7af689aa 2022-12-16 surpress warning
7d700a9f5df32718a9376d53e023a5a9787c0afa 2022-12-22 debug.gem v1.7.1
970b26fb713205ad663467ede98cb18fb640763e 2022-12-23 NEWS.md: add 2 functions for debuggers [ci skip]
c182d46d2477da9283661c8b4544d7da095835b4 2022-12-26 check `NO_COLOR` envval
393192160726d6b299ca1f66fad9414e4bf8109a 2022-12-28 add debug print for the failure
8c2b6926d2c6ba0317fcccb08c8b6657d4f0730c 2023-01-11 Skip unfixed assertion about objspace/dump_all
2e7bceb34ea858649e1f975a934ce1894d1f06a6 2023-01-12 Do not use VM stack for splat arg on cfunc
7e8802fa5bc08de3d210860a6fa10625a8586428 2023-01-13 fix `unused variables` warning
0a82bfe5e18ac86da72c27389db6eb8da156a0b5 2023-02-02 use correct svar (#7225)
be94808282e50d3ecaa1392ffc38c9ec89e3438b 2023-02-10 use correct svar even if env is escaped
1f936d654ac49dff1a6d55aa079aaf1ebba24042 2023-02-15 `ractor_queue_enq/deq` doesn't need `rq` param
0d415a322f5dd7158efcbc6c3226266e312620c7 2023-03-01 Enable DEBUG_LOG feature on USE_RUBY_DEBUG_LOG
a4421bd73c286253311c2cdf8c78ed258f8cff44 2023-02-24 Rewrite Ractor synchronization mechanism
6207a3f588ae0d0f7eb6303f7cccbe19f37ba6d1 2023-03-02 Enable flaky ractor test
5875fce6ce678c444456cc7eed6f28ef000dac24 2023-03-02 `Ractor::Selector#empty?`
941d36d195691949afe2ce464b0d0aa20208e637 2023-03-02 fix timing bug
883871d722374b11b0bdd293a027609e8b891ba9 2023-03-04 add a test for Ractor
e87d0882910001ef3b0c2ccd43bf00cee8c34a0c 2023-01-13 Change bytecode of `f(*a, **kw)`
262254dc7dd9b503ca01ab701eb5cdd96bce4c4d 2023-03-09 rename `defined_ivar` to `definedivar`
6462c1a042fec4017f7e3bf2c13ec6a29efd23d6 2023-03-13 `Hash#dup` for kwsplat arguments
f29c9d6d36ebeb3e768a514cbfa00cd2ab35fcbc 2023-03-16 compile branch body if needed
e5a5e43c36443e06756aba6de95c94b41b910a82 2023-03-17 should not restore builtin_inline_index
c9fd81b860b5ec193ba57c73c740955937452497 2023-03-09 `vm_call_single_noarg_inline_builtin`
0112a5b3423ddb2ddf46c4392f23f9b75128568e 2023-03-09 `Array#first` and `Array#last` in Ruby
f89c34823423f5e1fb69f1896e956a8a61b8c54a 2023-03-29 enable GH actions on `USE_RUBY_DEBUG_LOG=1`
ba72849a3f5d2369821dfecbb5bf60b9a0e7cd4e 2023-03-29 cosmetic change
94e41822679ebd269564ad10d366596e1514d4ef 2023-03-29 `rb_current_ractor_raw(b)`
30b43f4f1a37641edc0b146b8a648686a65a3aef 2023-03-29 `rb_ractor_thread_list()` only for current ractor
f5b824c745782d02b9420f8626f633e3de748d73 2023-03-29 show debug log for `ractor_terminal_interrupt_all`
83667008b925c32b3ab70fb6ec70f7398e960d1e 2023-03-30 dump `RUBY_DEBUG_LOG` logs into `/dev/null`
2093e4c2db1e19991e601bf5191eddb4652de35d 2023-03-30 `nt->serial` for `RUBY_DEBUG_LOG`
fbc6661a725f0aa594b55bbce1d861928a3373fc 2023-03-31 Revert "dump `RUBY_DEBUG_LOG` logs into `/dev/null`"
66755164aa91ae0ec2712ab159d8acd8fa646574 2023-03-31 add `RUBY_DEBUG_LOG` fo `each_machine_stack_value`
fdfd50d006b80c459537a0c8e5dcc7d409cb7789 2023-03-31 reorder `thread_pthread.c` functions
369bdff9ca0d50e845b9623ec2d3e3f14e079248 2023-03-31 add debug log to `rb_ractor_thread_switch`
95dafb53cde279c32cfcab9e42ea63e31ea5f861 2023-03-31 relax assertion
ad7362db074e3dfe7c5d62b42edbef87c25eb24c 2023-03-31 rename `rb_thread_t::locking_native_thread`
4c0f82eb5b13e436a93497eaf23d965efa35a39e 2023-03-31 remove "\n" for `RUBY_DEBUG_LOG()`
f803bcfc872b31faeb1b894e315175e410024cd5 2023-03-31 pass `th` to `thread_sched_to_waiting()`
1d19776c7f4daf30f7dae3ffb9c762ccd3669176 2023-03-31 cosmetic change
9720f5ac894566ade2aabcf9adea0a3235de1353 2023-03-31 use `sleep_forever()` on `thread_join_sleep()`
b2e848193aad70cffd972b15fcc6cbf6be843d94 2023-04-03 fix deadlock on `Thread#join`
f3acaf312c2a0069acd279edc0ceafcc34ddfdc3 2023-04-04 `rb_th_serial(th)` allows `th == NULL`
29e01c6f5f8901bdaab818dfd4699cfa2a86b8e6 2023-04-15 skip if `DidYouMean.formatter=` is not defined
628e432739e1d2578d357420aa652a97eb8c2649 2023-04-19 fix `NameError` message
457824e2d3ddebef6435d43e0a4b22f738f9fae4 2023-04-26 `RUBY_DEBUG_LOG_PID` for `RUBY_DEBUG_LOG()`
06b68db7cfd194de2c7c0bd45e18692f6f8a7b87 2023-04-26 show a separator even if `ec` is NULL.
ffce3117b6b615666cab8f92a7fc32ecefc0121c 2023-04-26 add new debug log line on `rb_ractor_terminate_all`
bcf823fddbe38e0503805a7ba6ded53c1bc1e19d 2023-07-28 Revert "[rubygems/rubygems] Set thread configurations inside block"
6dc15cc8895b28800d5c187929d846ac4eb7cd3f 2023-07-28 do not clear cme but invalidate cc
7a7aba755d8da34555445510dc568380d0d96791 2023-07-29 check liveness of cc->klass and cc->cme_
087a2deccfb9d99961f1ce8526b80c5f72ee9a5d 2023-07-29 check `cc->*` liveness strictly
36023d5cb751d62fca0c27901c07527b20170f4d 2023-07-31 mark `cc->cme_` if it is for `super`
280419d0e0ba3e96e19551c70cba789fbedd80e1 2023-07-31 `calling->cd` instead of `calling->ci`
cfd7729ce7a31c8b6ec5dd0e99c67b2932de4732 2023-07-31 use inline cache for refinements
6a5c548218035bfdaf226c7ab1d0af37c9480900 2023-08-01 remove strange line event
d68c01fd314ebd6dc1d89c95a2734fad4f0953b0 2023-08-01 support `rescue` event for TracePoint
802ca3a1023e8018599d36fda250cbe64e77013c 2023-10-11 `RUBY_DEBUG_LOG` supports `%p` for pid
be1bbd5b7d40ad863ab35097765d3754726bbd54 2023-04-10 M:N thread scheduler for Ractors
10ba3fc302d68f977ce958b27a46ce0dab537f0c 2023-10-12 Use `sysconf()` to get PAGE_SIZE
2dca02e273489c802a9860284a17333ddf67f161 2023-10-12 disable MN scheduler on !`USE_MN_THREADS`
cdb36dfe7ddb7cbd7ed95e84b24114c8869a7e5e 2023-10-12 fix `native_thread_destroy()` timing
d8a74207e7a4e4ae92b33b0a12a5351270ebbe75 2023-10-13 use `uint32_t` instead of `__uint32_t`
62dfaeec2c3f6be255f48419307e69bfcfb3d849 2023-10-13 disable MN schedulers for some platforms
275c18525c5bd48529fd676cde710f1dedf91b4d 2023-10-13 Allow `NON_SCALAR_THREAD_ID` machines
eb79b0319bc9b04067bd9c795f9447dd03615df2 2023-10-13 release sched_lock before VM lock
55c5ebe0a02eee319eb6a965a08bb53c5dcc7feb 2023-10-14 disable MN threads on s390s-linux
c9990c8d0fdec0f79791ac3096ee6925fab0be7c 2023-10-17 "+MN" in description
46b8846b5c40cf4053f678dae1684f1c6eb52673 2023-10-18 Show backtraces when failed
7c731b5f7990d452dbda8dd88e401577c24e3153 2023-11-08 NEWS entry for new TracePoint event `rescue`
c2a8141634d15000c420676cb5045ea78a72c1e1 2023-11-08 NEWS entry for M:N thread scheduler.
352a885a0f1a4d4576c686301ee71ea887a345e5 2023-11-16 Thread specific storage APIs
c4c39082af3520cd96aefc2219a7037865f3f710 2023-12-09 add `flags` to `rb_postponed_job_preregister`
687d29f93ce45bd6721fc06530015a147e4057f0 2023-12-10 try modified tests.
7ba2506232d3fa6c4e82e3708c0ff746a1a8de5c 2023-12-14 check modifcation whil ar->st
406d4bb59905903cf7b9fa62c2d590e963edda5c 2023-12-15 add a test
9b4cb69a88163340cac7c0a350eaf18832edb28f 2023-12-15 support `skip` in bootstraptest
c9a9b8036c71974ab938a8bb3d6f095d4a318a8e 2023-12-15 remove `Ractor::Selector` from Ruby level
9c9e6d5b91f23c15357d88036382d68ae3c77d97 2023-12-15 [DOC] NEWS entries for C APIs
6c4b04de5cba36077f86b08d54c4c316f3df1d87 2023-12-18 clear `sched->lock_onwer` at fork
f9a48548cf3ef54fc0a385ccd78c708737055ecc 2023-12-19 restore the stack pointer on finalizer
2fe5fc176b31ce132e05a91b2c96b4a935e46ceb 2023-12-19 setup `waiting_fd` for `thread_sched_wait_events()`
ec51a3c8183d555b6ccaa37834fac855ded3af88 2023-12-19 declare `rb_thread_io_blocking_call`
7a0dfdea8c92d2393d624bc7961f36e082c43471 2023-12-19 use `rb_thread_io_blocking_call()` more
054f56fd3e5bf84e5443896fd1f4e439c2773c60 2023-12-19 moved object should not have a shape ID
4927f251481df57a209284bb2ad2b237468e7792 2023-12-20 skip `MAP_STACK` on FreeBSD
cae11dd8576d9ddb9bead2e5340677c5d05b03f5 2023-12-22 debug.gem v1.9.1
bbfc262c994f84801abfb1302cf6142dfee50adf 2023-12-22 MN: fix "raise on close"
c974ee1abe5df5a4bb97264e608afbd134c77652 2023-12-22 ensure to restart antoher thread
a4b737213eb1d8f352f1f148c27e96a3f09f5d08 2023-12-22 MN: ceil timeout milli seconds
2fe9e08578689adec0be8a36d0ae49541551d357 2023-12-22 MN: skip RUBY_DESCRIPTION spec on MN enabled
beec3d07c907ec875e05fe2d22cea2263857b499 2023-12-22 MN: skip waiting on `read_nonblock'
fa5de8f68d51e4fbc91190061e3ce3817bd68964 2023-12-22 MN: skip waiting on fiber schedulers
82015496b924744ae3999987ba679978beb153c7 2023-12-24 MN: access `timer_th.waiting` with lock
541371e286d2f139c49e7805f6f229618eb63144 2023-12-24 accept `RB_WAITFD_IN | RB_WAITFD_OUT` for waiting events
a87ae242bb460c7643d0f974b96489b5f73a2d45 2023-12-24 Use noinline version of accessing current ec
d65d2fb6b5c56c495f2f98f8e6ac5994ad5d93dd 2023-12-28 Do not `poll` first
41dd15944f8843539a070a6aa1b01a71421ce4d0 2024-01-08 fix `rb_thread_wait_for_single_fd` on non MN case
b3c13de858d0dbe4e3965485d47da58b6960cb64 2024-02-20 skip a test on non-UTF-8 locale
d578684989fd2d75f086a259719e3eb0fe57ccb2 2024-02-20 `rb_thread_lock_native_thread()`
3680981c7b71df8c3a426164787ccefe5296bb25 2024-03-26 skip `test_gc_stress_at_startup`
5d9fd674c9ceefd6baffdd05d33c5b60a7c64e42 2024-04-10 put empty `rb_gc_force_recycle()`
9180e33ca3a5886fec3f9e0a2f48072b55914e65 2024-03-26 show warning for unused block
145cced9bcb6a52fccfa0c669121bd07d3b3ff74 2024-04-15 fix incorrect warning.
9a57b047033034c30a3351d08ad648735299c8cf 2024-04-15 `super{}` doesn't use block
f9f301800199e7b5b9a6e92cf726cd0214d417a4 2024-04-17 `ISeq#to_a` respects `use_block` status
7bc66a366ded3ae2d07a418e17a9da6ee24612fd 2024-04-17 skip on Prism generated iseq
e9d7478dedbd2b57530bc17efe8a9db9b8b2f280 2024-04-17 relax unused block warning for duck typing
662ce928a7fb31117bc584aad10d9c5c82689abd 2024-04-19 `RUBY_TRY_UNUSED_BLOCK_WARNING_STRICT`
448efa90af19a680f740aeb86e85782e868e7ae7 2024-06-10 respect `RUBY_TEST_TIMEOUT_SCALE`
528a23b53c07001461e35aad30deabd736bb417c 2024-06-10 Check current file on TracePoint
6086bae5c85cc297003012afc9cf5966fc75746a 2024-06-11 check `SPEC_TEMP_DIR` is world-writable or not
39c9d99f6ccb81479c077e5cf1623572ade226a1 2024-06-12 'SPEC_TEMP_DIR` should not be world-writable
e4385baaa2bfe4c0a6540f4c996df4ccff71cdca 2024-06-13 avoid recursive calls on `check_rvalue_consistency`
fc33559c40e08e4ae0a98821a679abddc4bb247c 2024-06-13 clear `kw_flag` if given hash is nil
513520a1735d0d980bb74f9eac20f29225c91427 2024-06-13 do not call `check_rvalue_consistency` here
420ef906bd13e1dd403047d85207690e1af0db54 2024-06-13 respect `--error-output stderr` on parallel mode
b182f2a04520a0138992b27f9e6bfd15bdfd6f96 2024-06-20 fix sendfwd with `send` and `method_missing`
bd583ca645ea348a2894f4227fcb1af650ee8dec 2024-06-21 retry on cancelling of `getaddrinfo`
92f2cf1bf9430514a182f6e7bb8c2090b8285cbd 2024-06-24 With ASAN `EC_REPUSH_TAG` doesn't work
30a8dbc861a03d881b7f058cd1a111c1222b66d6 2024-06-28 maximum showing line number on btest failure
685a4e5be77ec376f29a180c7ed9fbee23e05bac 2024-07-03 VM barrier needs to store GC root
ffc69eec0a5746d48ef3cf649639c67631a6a609 2024-04-27 `struct rb_thread_sched_waiting`
e500222de1a8d5e7a844209a7e912b03db8cdf76 2024-07-08 fix last commit
43aee3393d70f8893e312b38a9a30c1dba295c41 2024-07-10 fix `defined?(@ivar)` with Ractors
d5afa2cc95710f34d5547efdcfc1562305248590 2024-08-09 do not show unused block on `send`
a838f980f599d95ccf344157f7074e997af31f48 2024-10-09 `me->defined_class` should be T_CLASS/T_ICLASS
583587dfbf524b96593f5469d68c844c7297ba98 2024-10-30 [ruby/error_highlight] use `instance_method` to get method object
783dde2159a3689ad2d3ef6b7d0005a7cf80adba 2024-10-31 `alias` should not set `defined_class` for Modules
ab7ab9e4508c24b998703824aa9576fb2e092065 2024-11-05 `Warning[:strict_unused_block]`
c8297c3eed571e978dded34dd2036a53d6f28bb3 2024-11-04 `interrupt_exec`
f0d0c030c04c1c3949ac85a37b7d4bf8acebface 2024-11-04 `Ractor.main?`
075a102c937969c62a6798b32b3c3188df91a075 2024-11-04 `Ractor.[]` and `Ractor.[]=`
aa63699d10e489bc6d9c13406fc47f581001568b 2024-11-04 support `require` in non-main Ractors
8d88d35fc1ae183cee48f3819ac6cd709c96d285 2024-11-05 correct dependencies
4886a54d74338c8a9c57312b51331296a2d506df 2024-11-05 fix rjit-bindgen info
0d63b9b4a49d7477b5201f5d40ecd64916cd0e43 2024-11-05 check closing flag
97aaf6f760259c639dc3ceb3a80fe82411649569 2024-11-05 introduce `rb_ec_check_ints()`
78064d0770c40af89f9a57eb111a27fba00b2ec8 2024-11-06 skip `SystemStackError`
1615996067b91f7e7e2b9c239b25247b4471e8b9 2024-11-07 specify NOINLINE for LTO
2f870b651aae5bb42a76b5d067a9f27f5864516b 2024-11-28 add NEWS entries about Ractor related changes.
da2c083fca8c0477fd5fd99dc1725d1c4dc5fa3c 2024-11-28 add a NEWS entry about extra rescue/ensure frames
0bdb38ba6be208064a514c12a9b80328645689f8 2024-12-12 `Ractor.set_if_absent(key)`
e09c23433e2a7f4e2410b46c8dc79496f0453307 2024-12-13 followup 0bdb38ba6be208064a514c12a9b80328645689f8
c194b26132eb7babe8a98d3fc61b9a8ac15a23d0 2024-12-18 debug v1.10.0
c695536cc8ea4be69849394b0c64c974d52c603a 2024-12-20 use `st_update` to prevent table extension
bd569cb7081e11628ee637ce9364d56c653c932c 2024-12-23 add back quotes for method/class names
ab8fd5bb6cdb9c661673f2edf0546ff3a63fe189 2024-12-24 not a incompatbile, but a feature
ce66eea167847d4300150791bde4932b907b0cc0 2025-03-04 try to show timeout sec
46f3d82f40535235f9fcda2d804fc564314f4e87 2025-03-04 Revert "try to show timeout sec"
1ce10f3fbb037bc8383d0cf7fe72d9f261669246 2025-03-04 do not reset `EnvUtil.timeout_scale`
64c520fc25278c653cb19cd88633c3f112301e8c 2025-05-23 skip the test now we couldn't fix
ef2bb61018cd9ccb5b61a3d91911e04a773da4a7 2025-05-26 `Ractor::Port`
70131741851aa703b4e7a334d947ffdbe875ec31 2025-05-29 fix for test-bundled-gems to catch up new API
49b7a092fa42341faf98d53fee11cfb776201ff0 2025-05-30 skip tests for BigDecimal 3.2.0
7924296844fe616b24935018d82f2c65424c4156 2025-05-30 skip flaky test
c0c94ab183d0d428595ccb74ae71ee945f1afd45 2025-05-30 skip failing test in a week
57d10c6e806c4572eb75084462ecdf883591f4ea 2025-05-31 NEWS entries for `Ractor::Port`
e8b31c273c205d6e5482c9cf1832fbe8fdc97f5b 2025-05-31 rake 13.3.0 -> 13.2.1
7b75b1f2da85b3862d4cebe176f41cf044ed6e7f 2025-05-31 prepare IDs for `Ractor::monitor`
8070d5d97d0b1ff4f2457326d7af325560ac9ec7 2025-06-04 `Ractor#take` and warn
0ca80484aca180762f0a17db53981a3e69c0f7f9 2025-06-03 mark main Ractor object
a62166e28efeb13d309bc4b7dc04371a5b62b3cc 2025-06-03 support nested VM barrier synchronization
1baa396e21c272cc9cc1fea4e5d372ae1979fb9f 2025-06-05 fix `rp(obj)` for any object
16057041178d3084884693937d6f02e0680e0657 2025-06-06 ignore confirming belonging while finrializer
98ac3f1fe451789c2676956d09cdda6dee78f947 2025-06-07 increase timeout for high load env
d0b5f3155406e8243b78e4cedd3a38710c7c323c 2025-06-07 record load average at fail