1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/include/ruby
ko1 312b105d0e introduce TransientHeap. [Bug #14858]
* 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
2018-10-30 21:53:56 +00:00
..
backward * include/ruby/backward/util.h: Good-by Borland-C. 2015-10-18 05:41:34 +00:00
backward.h backward.h: removed stale declarations 2018-09-05 20:02:32 +00:00
debug.h Revert "vm_trace: implement postponed_jobs as st_table" 2018-10-23 03:47:45 +00:00
defines.h include/ruby/intern.h: don't modify MJIT_FUNC_EXPORTED 2018-10-07 14:00:04 +00:00
encoding.h rb_enc_alias 2018-06-28 23:46:59 +00:00
intern.h include/ruby/intern.h: don't modify MJIT_FUNC_EXPORTED 2018-10-07 14:00:04 +00:00
io.h add 'x' mode character for O_EXCL 2018-08-09 08:49:09 +00:00
missing.h include/ruby/missing.h: defined(__cplusplus) before using __cplusplus 2018-06-05 14:16:50 +00:00
onigmo.h Update to Onigmo 6.1.3-669ac9997619954c298da971fcfacccf36909d05. 2017-12-01 13:50:13 +00:00
oniguruma.h Merge Onigmo 6.0.0 2016-12-10 17:47:04 +00:00
re.h re.c: rb_reg_region_copy 2014-12-01 21:30:58 +00:00
regex.h
ruby.h introduce TransientHeap. [Bug #14858] 2018-10-30 21:53:56 +00:00
st.h export rb_hash_bulk_insert 2018-05-22 07:31:36 +00:00
subst.h
thread.h
thread_native.h
util.h util.h: remove my_getcwd 2017-11-26 01:36:33 +00:00
version.h version.h (RUBY_VERSION): 2.6.0 development has started. 2017-12-25 14:05:59 +00:00
vm.h use https:// instead of http:// 2018-07-28 10:00:27 +00:00
win32.h undef previous definition of SIZEOF_STRUCT_STAT_ST_INO 2017-12-11 16:06:41 +00:00