aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* introduce USE_TRANSIENT_HEAP to enable/disable theap.ko12018-11-019-21/+107
| | | | | | | | * include/ruby/ruby.h: intrdocue `USE_TRANSIENT_HEAP` macro to enable/disable transient heap. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65492 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* add dependencies to transient_heap.h.ko12018-11-011-0/+5
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65491 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * properties.svn2018-11-010-0/+0
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65490 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* TestDelegateClass.rb: skip test_frozen for --jit-waitk0kubun2018-11-012-9/+11
| | | | | | | | | for now. Investigating. https://app.wercker.com/ruby/ruby/runs/mjit-test2/5bda979a191eda000655a8d2?step=5bda9fe4591ca80007653f64 wercker.yml: improve parallelism again. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65489 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Fix call-seq of OpenSSL.fips_mode and WIN32OLE_METHOD#name [ci skip]kazu2018-11-012-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65488 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Fix call-seq of Encoding::Converter#putback [ci skip]kazu2018-11-011-1/+1
| | | | | | | | [Fix GH-1999] From: Takayuki Matsubara <takayuki.1229@gmail.com> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65487 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* wercker.yml: improve parallelism morek0kubun2018-11-011-28/+28
| | | | | | mjit-test2 is taking more time now. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65486 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Remove wrong spec.usa2018-11-011-9/+0
| | | | | | | [Bug#15067] [ruby-core:88828] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65485 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* wercker.yml: improve CI step message [ci skip]k0kubun2018-11-011-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65484 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* wercker.yml: change pipeline namesk0kubun2018-11-011-2/+2
| | | | | | because the name "-wait" is no longer distinguishing these pipelines git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65483 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* wercker.yml: delete obsoleted test definitionk0kubun2018-11-011-24/+0
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65482 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* wercker.yml: improve parallelism of test-mjit and test-mjit-waitk0kubun2018-11-011-35/+67
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65481 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test_win32ole_event.rb: retry #test_s_new_loop with sleepk0kubun2018-11-011-1/+17
| | | | | | | It seems to fail randomly: https://ci.appveyor.com/project/ruby/ruby/builds/19963142/job/8gaxepksa0i3b998 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65480 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix WB miss.ko12018-11-011-0/+4
| | | | | | | * hash.c (linear_copy): remember a hash object to mark pointing objects. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65479 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* wercker.yml: harder test-mjit-wait testingk0kubun2018-11-011-6/+201
| | | | | | | Currently TracePoint enablement may cancel all JITs. So for now, separating test executions would reveal more failures. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65478 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* mjit_worker.c: emphasize free_list of compact_units [ci skip]k0kubun2018-11-011-1/+1
| | | | | | | In https://bugs.ruby-lang.org/issues/14867#note-98, it's considered useless at once. So I emphasized the necessity of it in the comment. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65477 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * 2018-11-01svn2018-10-311-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65476 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* mjit: get rid of rb_mjit_unit_node and use ccan/listnormal2018-10-312-131/+80
| | | | | | | | | | | | | rb_mjit_unit can either exist in unit_queue or active_units, but not both. This will make state transitions for event-based MJIT process management easier. v2: recheck unit->iseq after GC wakeup The iseq may be GC-ed while we were waiting for it since we delete the unit from unit_queue during get_from_list git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65475 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Revert "revert r65471 and include Eric's patch as well"k0kubun2018-10-312-73/+130
| | | | | | | | This reverts commit ff5dc2cbbf9e7b67c8579ef166bf6a4755507304. Deadlock: http://ci.rvm.jp/results/trunk-mjit@silicon-docker/1438883 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65474 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* revert r65471 and include Eric's patch as wellk0kubun2018-10-312-130/+73
| | | | | | | | | https://bugs.ruby-lang.org/issues/14867#note-112 I wanna touch similar places. To avoid our conflict, let me merge Eric's patch earlier. Let's watch trunk-mjit / trunk-mjit-wait CIs. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65473 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Use C90 commentsnaruse2018-10-311-5/+5
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65472 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Revert "mjit: get rid of rb_mjit_unit_node and use ccan/list"normal2018-10-312-66/+130
| | | | | | | | | This reverts commit c5177fa8464ac304547e384583f9c287e124d34a. r65468 Many CI failures like: http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/1438415 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65471 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Merge upstream from rubygems/rubygems master branch.hsbt2018-10-318-41/+91
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65470 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* explicit cast to void* required for %pshyouhei2018-10-311-8/+8
| | | | | | | | | No automatic type promotion is expected for variadic arguments. You have to do it by hand. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65469 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* mjit: get rid of rb_mjit_unit_node and use ccan/listnormal2018-10-312-130/+66
| | | | | | | | | | rb_mjit_unit can either exist in unit_queue or active_units, but not both. This will make state transitions for event-based MJIT process management easier. [ruby-core:89654] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65468 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: last node of NODE_ARRAYnobu2018-10-312-0/+6
| | | | | | | | * parse.y (heredoc_dedent): manage the last node of NODE_ARRAY, when concatenating dedented literals. [ruby-core:89649] [Bug #15272] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65467 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* remove '//' style comments.ko12018-10-311-1/+0
| | | | | | | | * variable.c (obj_ivar_set): remove '//' style comments pointed out by the following build log: https://travis-ci.org/ruby/ruby/jobs/448551951 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65466 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* thread_pthread.c (ubf_select): avoid deadlock on contentionnormal2018-10-311-4/+10
| | | | | | | | | | | vm->gvl.lock can be held by another thread, we must not wait on it when called by the MJIT worker thread when it migrates work to another thread. ubf_select is designed to do retrying anyways, so it has no obligation to wake up a timer thread. cf. http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/1437880 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65465 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* remove '//' style comments.ko12018-10-311-4/+2
| | | | | | | | * hash.c: remove '//' style comments pointed out by the following build log: https://travis-ci.org/ruby/ruby/jobs/448551951 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65464 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* add casts.ko12018-10-311-2/+2
| | | | | | | | * gc.c (rb_raw_obj_info): fix type mismatch specified by the following build log: https://travis-ci.org/ruby/ruby/jobs/448634481 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65463 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* .travis.yml: mandate -ansi checkshyouhei2018-10-311-3/+2
| | | | | | | | | | Seems it is failing to compile right now; make it mandatory so that other devs can be aware of it. Will revert this change once the source code gets stable. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65462 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Removed control characters from gemspec.hsbt2018-10-311-0/+0
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65461 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: last location from bisonnobu2018-10-302-2/+7
| | | | | | | | * parse.y (command): set the last location from the location managed by bison, so that other nodes are not needed. [ruby-core:89648] [Bug #15271] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65460 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* revert r65441k0kubun2018-10-301-1/+2
| | | | | | | | | | I could collect 2 test failure information: https://app.wercker.com/ruby/ruby/runs/test-mjit-wait/5bd8a253191eda0006545d47?step=5bd8a29387436a0006842ef0 https://app.wercker.com/ruby/ruby/runs/test-mjit-wait/5bd8c6e0191eda0006547273?step=5bd8c71a591ca8000756f4a3 I'll skip this again to make it functional as CI git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65459 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix type.ko12018-10-302-9/+6
| | | | | | | | | | | | | | | | * internal.h (RHASH_ARRAY_SIZE_RAW): should be `int` because it returns n<=8. * hash.c (RHASH_ARRAY_BOUND_RAW): ditto. * hash.c (RHASH_ARRAY_SIZE_RAW): remove a duplicated definition. * hash.c (linear_keys, linear_values): return `long`. * hash.c (linear_keys): fix initialize expression of `key_end`. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65458 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* update NEWS about theapko12018-10-301-0/+5
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65457 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix type.ko12018-10-301-3/+1
| | | | | | | * string.c (rb_str_format_m): should pass `int`. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65456 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * remove trailing spaces, expand tabs.svn2018-10-309-155/+155
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65455 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* support theap for T_HASH. [Feature #14989]ko12018-10-3022-247/+1395
| | | | | | | | | | | | | | | | | * hash.c, internal.h: support theap for small Hash. Introduce RHASH_ARRAY (li_table) besides st_table and small Hash (<=8 entries) are managed by an array data structure. This array data can be managed by theap. If st_table is needed, then converting array data to st_table data. For st_table using code, we prepare "stlike" APIs which accepts hash value and are very similar to st_ APIs. This work is based on the GSoC achievement by tacinight <tacingiht@gmail.com> and refined by ko1. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65454 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * expand tabs.svn2018-10-301-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65453 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* support theap for T_STRUCT.ko12018-10-306-26/+84
| | | | | | | * struct.c: members memory can use theap. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65452 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* support theap for T_OBJECT.ko12018-10-306-59/+170
| | | | | | | | | | * variable.c: now instance variable space has theap supports. obj_ivar_heap_alloc() tries to acquire memory from theap. * debug_counter.h: add some counters for theap. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65451 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * expand tabs.svn2018-10-304-31/+31
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65450 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* introduce TransientHeap. [Bug #14858]ko12018-10-3017-126/+1371
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * transient_heap.c, transient_heap.h: implement TransientHeap (theap). theap is designed for Ruby's object system. theap is like Eden heap on generational GC terminology. theap allocation is very fast because it only needs to bump up pointer and deallocation is also fast because we don't do anything. However we need to evacuate (Copy GC terminology) if theap memory is long-lived. Evacuation logic is needed for each type. See [Bug #14858] for details. * array.c: Now, theap for T_ARRAY is supported. ary_heap_alloc() tries to allocate memory area from theap. If this trial sccesses, this array has theap ptr and RARRAY_TRANSIENT_FLAG is turned on. We don't need to free theap ptr. * ruby.h: RARRAY_CONST_PTR() returns malloc'ed memory area. It menas that if ary is allocated at theap, force evacuation to malloc'ed memory. It makes programs slow, but very compatible with current code because theap memory can be evacuated (theap memory will be recycled). If you want to get transient heap ptr, use RARRAY_CONST_PTR_TRANSIENT() instead of RARRAY_CONST_PTR(). If you can't understand when evacuation will occur, use RARRAY_CONST_PTR(). (re-commit of r65444) git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65449 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * expand tabs.svn2018-10-308-88/+88
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65448 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* revert r65444 and r65446 because of commit missko12018-10-3016-652/+184
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65447 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* support theap for T_OBJECT.ko12018-10-304-50/+152
| | | | | | | | | | * variable.c: now instance variable space has theap supports. obj_ivar_heap_alloc() tries to acquire memory from theap. * debug_counter.h: add some counters for theap. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65446 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * expand tabs.svn2018-10-305-33/+33
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65445 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* introduce TransientHeap. [Bug #14858]ko12018-10-3015-134/+500
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * transient_heap.c, transient_heap.h: implement TransientHeap (theap). theap is designed for Ruby's object system. theap is like Eden heap on generational GC terminology. theap allocation is very fast because it only needs to bump up pointer and deallocation is also fast because we don't do anything. However we need to evacuate (Copy GC terminology) if theap memory is long-lived. Evacuation logic is needed for each type. See [Bug #14858] for details. * array.c: Now, theap for T_ARRAY is supported. ary_heap_alloc() tries to allocate memory area from theap. If this trial sccesses, this array has theap ptr and RARRAY_TRANSIENT_FLAG is turned on. We don't need to free theap ptr. * ruby.h: RARRAY_CONST_PTR() returns malloc'ed memory area. It menas that if ary is allocated at theap, force evacuation to malloc'ed memory. It makes programs slow, but very compatible with current code because theap memory can be evacuated (theap memory will be recycled). If you want to get transient heap ptr, use RARRAY_CONST_PTR_TRANSIENT() instead of RARRAY_CONST_PTR(). If you can't understand when evacuation will occur, use RARRAY_CONST_PTR(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65444 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* mjit.c (free_list): clear .lengthnormal2018-10-301-0/+1
| | | | | | | | | For robustness against future changes. There should be no impact at the moment,here, but we may call mjit_finish more than once in a process lifetime in the future (implementing "stop" instead of just "pause") git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65443 b2dd03c8-39d4-4d8f-98ff-823fe69b080e