aboutsummaryrefslogtreecommitdiffstats
path: root/object.c
Commit message (Collapse)AuthorAgeFilesLines
...
* Optimize dynamic string interpolation for symbol/true/false/nil/0-9Jeremy Evans2021-11-181-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This provides a significant speedup for symbol, true, false, nil, and 0-9, class/module, and a small speedup in most other cases. Speedups (using included benchmarks): :symbol :: 60% 0-9 :: 50% Class/Module :: 50% nil/true/false :: 20% integer :: 10% [] :: 10% "" :: 3% One reason this approach is faster is it reduces the number of VM instructions for each interpolated value. Initial idea, approach, and benchmarks from Eric Wong. I applied the same approach against the master branch, updating it to handle the significant internal changes since this was first proposed 4 years ago (such as CALL_INFO/CALL_CACHE -> CALL_DATA). I also expanded it to optimize true/false/nil/0-9/class/module, and added handling of missing methods, refined methods, and RUBY_DEBUG. This renames the tostring insn to anytostring, and adds an objtostring insn that implements the optimization. This requires making a few functions non-static, and adding some non-static functions. This disables 4 YJIT tests. Those tests should be reenabled after YJIT optimizes the new objtostring insn. Implements [Feature #13715] Co-authored-by: Eric Wong <e@80x24.org> Co-authored-by: Alan Wu <XrXr@users.noreply.github.com> Co-authored-by: Yusuke Endoh <mame@ruby-lang.org> Co-authored-by: Koichi Sasada <ko1@atdot.net>
* Improve performance Kernel#Float with using Primitive.mandatory_only? method ↵S.H2021-11-171-0/+6
| | | | [Feature #18344] (#5133)
* Add Class#descendantsJeremy Evans2021-10-261-0/+1
| | | | | | | | Doesn't include receiver or singleton classes. Implements [Feature #14394] Co-authored-by: fatkodima <fatkodima123@gmail.com> Co-authored-by: Benoit Daloze <eregontp@gmail.com>
* Deprecate include/prepend in refinements and add Refinement#import_methods ↵Shugo Maeda2021-10-211-0/+2
| | | | | | | | | | instead Refinement#import_methods imports methods from modules. Unlike Module#include, it copies methods and adds them into the refinement, so the refinement is activated in the imported methods. [Bug #17429] [ruby-core:101639]
* Add comments about special runtime routines YJIT callsAlan Wu2021-10-201-0/+2
| | | | | | | | | | | When YJIT make calls to routines without reconstructing interpreter state through jit_prepare_routine_call(), it relies on the routine to never allocate, raise, and push/pop control frames. Comment about this on the routines that YJTI calls. This is probably something we should dynamically verify on debug builds. It's hard to statically verify this as it requires verifying all functions in the call tree. Maybe something to look at in the future.
* Fix a typo [Bug #17048]Nobuyoshi Nakada2021-09-191-1/+1
|
* Removed Module.allocate [Bug #17048]Nobuyoshi Nakada2021-09-171-0/+2
|
* Already initialized modules cannot be replaced [Bug #17048]Nobuyoshi Nakada2021-09-171-15/+9
|
* Using RB_FLOAT_TYPE_P macroS-H-GAMELINKS2021-09-121-1/+1
|
* Using RB_BIGNUM_TYPE_P macroS-H-GAMELINKS2021-09-111-1/+1
|
* include/ruby/ruby.h: add doxygen卜部昌平2021-09-101-11/+0
| | | | Must not be a bad idea to improve documents. [ci skip]
* include/ruby/internal/arithmetic/double.h: add doxygen卜部昌平2021-09-101-7/+0
| | | | Must not be a bad idea to improve documents. [ci skip]
* include/ruby/internal/intern/object.h: add doxygen卜部昌平2021-09-101-216/+12
| | | | Must not be a bad idea to improve documents. [ci skip]
* include/ruby/internal/core/rbasic.h: add doxygen卜部昌平2021-09-101-20/+0
| | | | Must not be a bad idea to improve documents. [ci skip]
* include/ruby/internal/core/rclass.h: add doxygen卜部昌平2021-09-101-7/+0
| | | | Must not be a bad idea to improve documents. [ci skip]
* include/ruby/internal/fl_type.h: add doxygen卜部昌平2021-09-101-4/+0
| | | | Must not be a bad idea to improve documents. [ci skip]
* include/ruby/internal/globals.h: add doxygen卜部昌平2021-09-101-9/+9
| | | | Must not be a bad idea to improve documents. [ci skip]
* include/ruby/internal/newobj.h: add doxygen卜部昌平2021-09-101-8/+0
| | | | Must not be a bad idea to improve documents. [ci skip]
* Using RBOOL macroS.H2021-08-021-15/+9
|
* Use predefined IDsNobuyoshi Nakada2021-07-271-2/+2
|
* Use RB_INTEGER_TYPE_PNobuyoshi Nakada2021-07-201-2/+1
|
* Make boolean expected messages more consitentNobuyoshi Nakada2021-07-181-1/+1
|
* Constified a local tableNobuyoshi Nakada2021-07-181-1/+1
|
* Add Integer.try_convert [Feature #15211]Nobuyoshi Nakada2021-07-161-3/+13
|
* Move rb_str_escape function declarationS-H-GAMELINKS2021-07-111-1/+1
|
* Specify version to remove as bare numbersNobuyoshi Nakada2021-06-301-7/+7
|
* rb_warn_deprecated_to_remove_at [Feature #17432]Nobuyoshi Nakada2021-06-301-7/+7
| | | | | At compilation time with RUBY_DEBUG enabled, check if the removal version has been reached.
* Share freeze option handlingNobuyoshi Nakada2021-06-281-7/+7
|
* Adjust styles [ci skip]Nobuyoshi Nakada2021-06-171-1/+1
| | | | | | | | | * --braces-after-func-def-line * --dont-cuddle-else * --procnames-start-lines * --space-after-for * --space-after-if * --space-after-while
* Implemented some NilClass method in Ruby code is faster [Feature #17054] (#3366)S.H2021-06-021-33/+1
|
* Object whats here (#4503)Burdette Lamar2021-05-181-0/+84
| | | What's Here section for class Object.
* What's Here for BasicObject (#4499)Burdette Lamar2021-05-131-0/+25
| | | | * What's Here for BasicObject
* What's Here for Kernel (#4488)Burdette Lamar2021-05-131-0/+133
|
* Eagerly allocate instance variable tables along with objectAaron Patterson2021-05-031-13/+22
| | | | | | | | This allows us to allocate the right size for the object in advance, meaning that we don't have to pay the cost of ivar table extension later. The idea is that if an object type ever became "extended" at some point, then it is very likely it will become extended again. So we may as well allocate the ivar table up front.
* [Doc] Update to FrozenError from RuntimeError in Object#freezeKenichi Kamiya2021-04-011-1/+1
|
* [DOC] Modified prefixes to get rid of conflictsNobuyoshi Nakada2021-02-071-14/+14
|
* [DOC] make individual names so that rdoc can find each documentsNobuyoshi Nakada2021-02-071-11/+22
|
* [DOC] Module#method_undefinedNobuyoshi Nakada2021-02-071-0/+26
|
* [DOC] Fix typosMarcus Stollsteimer2020-12-241-4/+4
|
* rb_cData: no longer exists卜部昌平2020-12-221-1/+0
| | | | | | | | | | | Commit 8918a9cf6c65409ae1ffcdea324a1b97c6e5bb70 introduced macro `#define rb_cData rb_cData()`. This deleting `VALUE rb_cData;` declaration was then macro-expanded into `VALUE rb_cData();`. This worked by accident because the expanded expression happen to be a K&R style function declaration. This is rather complicated and I guess unintended. Just delete the line to keep things simple straight forward.
* Removed rb_cData entityNobuyoshi Nakada2020-12-221-22/+0
| | | | | | | * Use the wrapper of rb_cObject instead of data access * Replaced rest of extentions * Updated the version guard for Data * Added the version guard of rb_cData
* Data: delete卜部昌平2020-12-221-9/+21
| | | | | | | | Has been deprecated since 684bdf6171b76f5bc5e4f05926a5ab01ec2b4fd5. Matz says in [ruby-core:83954] that Data should be an alias of Object. Because rb_cData has not been deprecated, let us deprecate the constant to make it a C-level synonym of rb_cObject.
* Use rb_id_attrset without intermediate stringsNobuyoshi Nakada2020-12-191-1/+1
|
* Feature 17314: update docs and NEWS about attr* methods returning array of ↵Radosław Bułat2020-12-191-12/+12
| | | | symbols
* Revert "Revert "Use rb_id_attrset without intermediate strings""Yusuke Endoh2020-12-191-4/+3
| | | | | | This reverts commit 41c208d4a463183fddca250026e5f1cd759d2604. Reintroduce 66090b9d10cdaed917b525225e59d1c19e399248.
* attr_reader, attr_writer, attr_accessor and attr methods returns array of ↵Radosław Bułat2020-12-191-9/+30
| | | | | symbols (#3935) Co-authored-by: Yusuke Endoh <mame@ruby-lang.org>
* Use category: :deprecated in warnings that are related to deprecationJeremy Evans2020-12-181-2/+2
| | | | | | | | | | | | | | | | | Also document that both :deprecated and :experimental are supported :category option values. The locations where warnings were marked as deprecation warnings was previously reviewed by shyouhei. Comment a couple locations where deprecation warnings should probably be used but are not currently used because deprecation warning enablement has not occurred at the time they are called (RUBY_FREE_MIN, RUBY_HEAP_MIN_SLOTS, -K). Add assert_deprecated_warn to test assertions. Use this to simplify some tests, and fix failing tests after marking some warnings with deprecated category.
* Revert "Better cooperation between public/protected/private with attr* and ↵Yusuke Endoh2020-12-181-41/+20
| | | | | | alias_method" This reverts commit 81739ad4fdfcc86a769056fec352f27c686fba1b.
* Revert "Use rb_id_attrset without intermediate strings"Yusuke Endoh2020-12-181-3/+4
| | | | This reverts commit 66090b9d10cdaed917b525225e59d1c19e399248.
* Use rb_id_attrset without intermediate stringsNobuyoshi Nakada2020-12-181-4/+3
|