summaryrefslogtreecommitdiff
path: root/gc.h
Commit message (Collapse)AuthorAgeFilesLines
* Expand tabs [ci skip]Takashi Kokubun2022-07-211-8/+8
| | | | [Misc #18891]
* Use `size_t` for `rb_raw_obj_info`Nobuyoshi Nakada2022-07-101-1/+1
|
* Add the size pool slot size to the output of ObjectSpace.dump/dump_allMatt Valentine-House2022-02-031-0/+2
|
* gc.h: move rb_objspace_garbage_object_p to internal/gc.hYusuke Endoh2021-11-101-1/+0
| | | | ... to allow class.c to use the function
* Enable inline assembly of SET_MACHINE_STACK_END on AIXRei Odaira2021-10-041-1/+3
|
* Remove printf family from the mjit headerNobuyoshi Nakada2021-09-111-3/+3
| | | | | Linking printf family functions makes mjit objects to link unnecessary code.
* Introduce Ractor mechanism for parallel executionKoichi Sasada2020-09-031-0/+7
| | | | | | | | | | | | | | | | This commit introduces Ractor mechanism to run Ruby program in parallel. See doc/ractor.md for more details about Ractor. See ticket [Feature #17100] to see the implementation details and discussions. [Feature #17100] This commit does not complete the implementation. You can find many bugs on using Ractor. Also the specification will be changed so that this feature is experimental. You will see a warning when you make the first Ractor with `Ractor.new`. I hope this feature can help programmers from thread-safety issues.
* Enable arm64 optimizations that exist for power/x86 (#3393)AGSaidi2020-08-141-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Enable unaligned accesses on arm64 64-bit Arm platforms support unaligned accesses. Running the string benchmarks this change improves performance by an average of 1.04x, min .96x, max 1.21x, median 1.01x * arm64 enable gc optimizations Similar to x86 and powerpc optimizations. | |compare-ruby|built-ruby| |:------|-----------:|---------:| |hash1 | 0.225| 0.237| | | -| 1.05x| |hash2 | 0.110| 0.110| | | 1.00x| -| * vm_exec.c: improve performance for arm64 | |compare-ruby|built-ruby| |:------------------------------|-----------:|---------:| |vm_array | 26.501M| 27.959M| | | -| 1.06x| |vm_attr_ivar | 21.606M| 31.429M| | | -| 1.45x| |vm_attr_ivar_set | 21.178M| 26.113M| | | -| 1.23x| |vm_backtrace | 6.621| 6.668| | | -| 1.01x| |vm_bigarray | 26.205M| 29.958M| | | -| 1.14x| |vm_bighash | 504.155k| 479.306k| | | 1.05x| -| |vm_block | 16.692M| 21.315M| | | -| 1.28x| |block_handler_type_iseq | 5.083| 7.004| | | -| 1.38x|
* Rename RUBY_MARK_NO_PIN_UNLESS_NULL to RUBY_MARK_MOVABLE_UNLESS_NULL0x005c2020-01-231-1/+1
|
* decouple internal.h headers卜部昌平2019-12-261-1/+1
| | | | | | | | | | | | | | | | | | Saves comitters' daily life by avoid #include-ing everything from internal.h to make each file do so instead. This would significantly speed up incremental builds. We take the following inclusion order in this changeset: 1. "ruby/config.h", where _GNU_SOURCE is defined (must be the very first thing among everything). 2. RUBY_EXTCONF_H if any. 3. Standard C headers, sorted alphabetically. 4. Other system headers, maybe guarded by #ifdef 5. Everything else, sorted alphabetically. Exceptions are those win32-related headers, which tend not be self- containing (headers have inclusion order dependencies).
* gc.h: Add SET_MACHINE_STACK_END specific for Powerpc64 (#1767)Breno Leitao2019-12-161-0/+2
| | | | | | | | | | | | | | | Currently we are not able to grab the correct end/top of the stack on powerpc64 due to the fact that it uses the fallback function. The fallback function does not return the correct top of the stack because it adds a new frame and the returned top of the stack contains this frame overhead that could be something around 112 bytes on Powerpc64. This patch simply gets the correct top of the stack pointer, which is always on r1 register according to both ABI v1 and ABI v2 (Little endian). Signed-off-by: Breno Leitao <leitao@debian.org>
* Rename rb_gc_mark_no_pin -> rb_gc_mark_movableAaron Patterson2019-08-121-1/+1
| | | | | | Renaming this function. "No pin" leaks some implementation details. We just want users to know that if they mark this object, the reference may move and they'll need to update the reference accordingly.
* add rp() and bp() in internal.h.Koichi Sasada2019-08-091-1/+0
| | | | | | | | debug utility macro rp() (rp_m()) and bp() are introduced. * rp(obj) shows obj information w/o any side-effect to STDERR. * rp_m(m, obj) is similar to rp(obj), but show m before. * bp() is alias of ruby_debug_breakpoint(), which is registered as a breakpoint in run.gdb (used by `make gdb` or make gdb-ruby`).
* * remove trailing spaces.git2019-07-121-1/+1
|
* Add note about `STACK_GROW_DIR_DETECTION`.Samuel Williams2019-07-121-0/+8
|
* don't need to sweep rest.Koichi Sasada2019-05-161-0/+2
| | | | | | | | `transient_heap_evacuate()` disables GC using `rb_gc_disable()` to prohibt GC invocation because of new allocation for evacuated memory. However, `rb_gc_disable()` sweep all rest of unswept pages. We don't need to cancel lazy sweep so this patch introduce `rb_gc_disable_no_rest()` which doesn't cancel lazy sweep.
* Add `GC.compact` again.tenderlove2019-04-201-0/+4
| | | | | | 🙏 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67620 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Reverting compaction for nowtenderlove2019-04-171-4/+0
| | | | | | For some reason symbols (or classes) are being overridden in trunk git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67598 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Adding `GC.compact` and compacting GC support.tenderlove2019-04-171-0/+4
| | | | | | | | | | | This commit adds the new method `GC.compact` and compacting GC support. Please see this issue for caveats: https://bugs.ruby-lang.org/issues/15626 [Feature #15626] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67576 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Reverting all commits from r67479 to r67496 because of CI failureskazu2019-04-101-4/+0
| | | | | | | | Because hard to specify commits related to r67479 only. So please commit again. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67499 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Adding `GC.compact` and compacting GC support.tenderlove2019-04-091-0/+4
| | | | | | | | | | | This commit adds the new method `GC.compact` and compacting GC support. Please see this issue for caveats: https://bugs.ruby-lang.org/issues/15626 [Feature #15626] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67479 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* remove rb_threadptr_during_gc().ko12017-10-291-1/+0
| | | | | | | * gc.c (rb_threadptr_during_gc): removed because nobody use it. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60544 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Drop to support NaCl platform.hsbt2017-10-231-2/+2
| | | | | | | | | | | Because NaCl and PNaCl are already sunset status. see https://bugs.chromium.org/p/chromium/issues/detail?id=239656#c160 configure.ac: Patch for this file was provided by @nobu. [Feature #14041][ruby-core:83497][fix GH-1726] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60374 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* thread.c: during GC for threadnobu2017-04-121-0/+3
| | | | | | | * thread.c (ruby_thread_stack_overflow): check if the given thread is during GC. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58328 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * gc.h, gc.c: introduce new debug function rb_obj_info_dump(VALUE obj)ko12015-10-061-0/+1
| | | | | | | | which prints the result of rb_raw_obj_info(..., obj). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52066 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* gc.h: evaluate the macro argument only oncenobu2015-07-141-1/+4
| | | | | | | * gc.h (RUBY_MARK_UNLESS_NULL): evaluate the argument only once to get rid of inadvertent side effects. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51247 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * gc.c (rb_raw_obj_info): separated from rb_obj_info().ko12015-07-021-0/+1
| | | | | | | | | Fill internal object information into passed buffer. * gc.h: declare rb_raw_obj_info(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51107 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * gc.c , gc.h (rb_obj_info): export obj_info(VALUE) for debugging.ko12015-05-311-0/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50699 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * gc.c: rename is_dying_object() to is_garbage_object().ko12014-07-061-0/+1
| | | | | | | | * gc.h: rb_objspace_garbage_object_p() as an exported function. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46726 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * gc.c, gc.h (rb_objspace_each_objects_without_setup):ko12014-04-021-0/+4
| | | | | | | | | | 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. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45505 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * gc.c, gc.h (rb_objspace_marked_object_p): added.ko12014-02-081-0/+1
| | | | | | | | | | | 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. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44886 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * gc.h (rb_objspace_reachable_objects_from_root): added.ko12013-10-151-0/+1
| | | | | | | | | | 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(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43294 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * gc.h (SET_MACHINE_STACK_END): Add !defined(_ILP32) to a definingakr2013-05-101-1/+1
| | | | | | | | | condition to avoid compilation error on x32. https://sites.google.com/site/x32abi/ git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40636 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* defines.h: RUBY_SYMBOL_EXPORT_{BEGIN,END}nobu2013-04-051-6/+2
| | | | | | | * include/ruby/defines.h (RUBY_SYMBOL_EXPORT_{BEGIN,END}): visibility control macros. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40122 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * gc.h (SET_MACHINE_STACK_END): use __volatile__ instead of volatile.kosaki2013-02-101-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39186 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * gc.h (SET_MACHINE_STACK_END): add volatile for preventingkosaki2012-12-011-2/+2
| | | | | | harmful optimization. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38134 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/objspace/objspace.c (ObjectSpace.reachable_objects_from):ko12012-10-241-1/+3
| | | | | | | | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37307 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/objspace/objspace.c: add ObjectSpace#reachable_objects_from.ko12012-10-051-0/+3
| | | | | | | | | | | | | | | | | 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(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37094 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* gc.h: IS_STACK_DIR_UPPERnobu2012-06-101-0/+1
| | | | | | | * gc.h (IS_STACK_DIR_UPPER): utility macro. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36015 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Imports Ruby's port to NativeClient (a.k.a NaCl).yugui2012-05-171-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Patch by Google Inc. [ruby-core:45073]. * configure.in (RUBY_NACL): New M4 func to configure variables for NaCl. (RUBY_NACL_CHECK_PEPPER_TYPES): New M4 func to check the old names of Pepper interface types. (BTESTRUBY): New variable to specify which ruby should be run on "make btest". NaCl can run the built binary by sel_ldr, but it need rbconfig.rb. So this variable is distinguished from $MINIRUBY. * thread_pthread.c: Disabled some features on NaCl. * io.c: ditto. * process.c: ditto. * signal.c: ditto. * file.c: ditto. * missing/flock.c: ditto. * nacl/pepper_main.c: An example implementation of Pepper application that embeds Ruby. * nacl/example.html: An example of web page that uses the Pepper application. * nacl/nacl-config.rb: Detects variants of NaCl SDK. * nacl/GNUmakefile.in: Makefile template for NaCl specific build process. * nacl/package.rb: script for packaging a NaCl-Ruby embedding application. * nacl/reate_nmf.rb: Wrapper script of create_nmf.py * dln.c (dln_load): Added a hack to call on NaCl. * util.c (ruby_getcwd): Path to the current directort is not available on NaCl. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35672 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (ruby_cleanup): use rb_ary_free to free internal object.nobu2011-02-111-1/+1
| | | | | | | * gc.h (RUBY_FREE_UNLESS_NULL): get rid of double free. [ruby-core:35192] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30840 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * gc.h: parenthesize macro arguments.akr2011-01-181-11/+11
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30593 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * gc.h (rb_objspace_each_objects): used in objspace.nobu2010-08-141-2/+15
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * cont.c (stackgrowdirection): removed duplicated code, usenobu2010-05-081-0/+8
| | | | | | | | | STACK_UPPER macro instead. * gc.h (STACK_DIR_UPPER): moved from thread_pthread.c. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27682 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * gc.c (GET_STACK_BOUNDS): fixed macro argument names. a patch fromnobu2010-04-141-1/+1
| | | | | | | | | | | | Satoshi Shiba <shiba AT rvm.jp> at [ruby-dev:40973]. * gc.h (ruby_get_stack_grow_direction): fixed prototype. * thread_pthread.c (get_stack, ruby_stack_overflowed_p): both side should be same type. [Bug #3145] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27338 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * gc.h (SET_MACHINE_STACK_END): use __i386.akr2009-10-271-1/+1
| | | | | | | | | Some compiler may not define __i386__. Solaris 64-bit Developer's Guide: http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25511 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * gc.h (SET_MACHINE_STACK_END): use __i386__ instead of __i386,nobu2009-10-271-3/+3
| | | | | | | and explicit size qualifiers. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25508 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * gc.c (SET_MACHINE_STACK_END): add x86_64 version by nobu.naruse2009-10-271-1/+3
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25507 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * gc.h (rb_gc_debug_body): constified.nobu2009-10-161-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25366 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * gc.h (STACK_UPPER): moved from gc.cnobu2008-06-141-1/+15
| | | | | | | | * thread.c, thread_{pthread,win32}.c (ruby_init_stack, ruby_thread_init_stack): moved stack initialization from gc.c. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17155 b2dd03c8-39d4-4d8f-98ff-823fe69b080e