1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/internal
John Hawthorn 0b81a484f3 Initialize new T_OBJECT as ROBJECT_EMBED
Previously, when an object is first initialized, ROBJECT_EMBED isn't
set. This means that for brand new objects, ROBJECT_NUMIV(obj) is 0 and
ROBJECT_IV_INDEX_TBL(obj) is NULL.

Previously, this combination meant that the inline cache would never be
initialized when setting an ivar on an object for the first time since
iv_index_tbl was NULL, and if it were it would never be used because
ROBJECT_NUMIV was 0. Both cases always fell through to the generic
rb_ivar_set which would then set the ROBJECT_EMBED flag and initialize
the ivar array.

This commit changes rb_class_allocate_instance to set the ROBJECT_EMBED
flag on the object initially and to initialize all members of the
embedded array to Qundef. This allows the inline cache to be set
correctly on first use and to be used on future uses.

This moves rb_class_allocate_instance to gc.c, so that it has access to
newobj_of. This seems appropriate given that there are other allocating
methods in this file (ex. rb_data_object_wrap, rb_imemo_new).
2020-09-02 14:54:29 -07:00
..
array.h RARRAY_AREF: convert into an inline function 2020-08-15 12:09:26 +09:00
bignum.h include/ruby/backward/2/r_cast.h: deprecate 2020-08-27 15:03:36 +09:00
bits.h Fix a typo [ci skip] 2020-05-18 17:42:50 +09:00
class.h RClassDeprecated: delete 2020-08-27 15:02:52 +09:00
compar.h add #include guard hack 2020-04-13 16:06:00 +09:00
compile.h sed -i 's|ruby/impl|ruby/internal|' 2020-05-11 09:24:08 +09:00
compilers.h sed -i 's|ruby/impl|ruby/internal|' 2020-05-11 09:24:08 +09:00
complex.h include/ruby/backward/2/r_cast.h: deprecate 2020-08-27 15:03:36 +09:00
cont.h add #include guard hack 2020-04-13 16:06:00 +09:00
dir.h add #include guard hack 2020-04-13 16:06:00 +09:00
enc.h add #include guard hack 2020-04-13 16:06:00 +09:00
encoding.h add #include guard hack 2020-04-13 16:06:00 +09:00
enum.h add #include guard hack 2020-04-13 16:06:00 +09:00
enumerator.h add #include guard hack 2020-04-13 16:06:00 +09:00
error.h Merge pull request #3047 from mame/suppress-backtrace 2020-05-15 01:22:56 +09:00
eval.h add #include guard hack 2020-04-13 16:06:00 +09:00
file.h add #include guard hack 2020-04-13 16:06:00 +09:00
fixnum.h sed -i 's|ruby/impl|ruby/internal|' 2020-05-11 09:24:08 +09:00
gc.h Initialize new T_OBJECT as ROBJECT_EMBED 2020-09-02 14:54:29 -07:00
hash.h include/ruby/backward/2/r_cast.h: deprecate 2020-08-27 15:03:36 +09:00
imemo.h include/ruby/backward/2/r_cast.h: deprecate 2020-08-27 15:03:36 +09:00
inits.h add #include guard hack 2020-04-13 16:06:00 +09:00
io.h add #include guard hack 2020-04-13 16:06:00 +09:00
load.h add #include guard hack 2020-04-13 16:06:00 +09:00
loadpath.h add #include guard hack 2020-04-13 16:06:00 +09:00
math.h add #include guard hack 2020-04-13 16:06:00 +09:00
missing.h sed -i 's|ruby/impl|ruby/internal|' 2020-05-11 09:24:08 +09:00
mjit.h sed -i 's|ruby/impl|ruby/internal|' 2020-05-11 09:24:08 +09:00
numeric.h include/ruby/backward/2/r_cast.h: deprecate 2020-08-27 15:03:36 +09:00
object.h ROBJECT_IV_INDEX_TBL: convert into an inline function 2020-08-19 14:30:57 +09:00
parse.h add #include guard hack 2020-04-13 16:06:00 +09:00
proc.h add #include guard hack 2020-04-13 16:06:00 +09:00
process.h Allow Dir.home to work for non-login procs when $HOME not set 2020-05-23 23:16:28 +09:00
random.h add #include guard hack 2020-04-13 16:06:00 +09:00
range.h add #include guard hack 2020-04-13 16:06:00 +09:00
rational.h include/ruby/backward/2/r_cast.h: deprecate 2020-08-27 15:03:36 +09:00
re.h sed -i 's|ruby/impl|ruby/internal|' 2020-05-11 09:24:08 +09:00
sanitizers.h sed -i 's|ruby/impl|ruby/internal|' 2020-05-11 09:24:08 +09:00
serial.h sed -i 's|ruby/impl|ruby/internal|' 2020-05-11 09:24:08 +09:00
signal.h add #include guard hack 2020-04-13 16:06:00 +09:00
static_assert.h sed -i 's|ruby/impl|ruby/internal|' 2020-05-11 09:24:08 +09:00
string.h sed -i 's|ruby/impl|ruby/internal|' 2020-05-11 09:24:08 +09:00
struct.h include/ruby/backward/2/r_cast.h: deprecate 2020-08-27 15:03:36 +09:00
symbol.h add #include guard hack 2020-04-13 16:06:00 +09:00
thread.h Move declarations to private internal/thread.h header. 2020-07-20 13:20:58 +12:00
time.h sed -i 's|ruby/impl|ruby/internal|' 2020-05-11 09:24:08 +09:00
transcode.h sed -i 's|ruby/impl|ruby/internal|' 2020-05-11 09:24:08 +09:00
util.h sed -i 's|ruby/impl|ruby/internal|' 2020-05-11 09:24:08 +09:00
variable.h Use ID instead of GENTRY for gvars. (#3278) 2020-07-03 16:56:44 +09:00
vm.h Expose ec -> backtrace (internal) and use it to implement fiber backtrace. 2020-08-18 00:56:35 +12:00
warnings.h sed -i 's|ruby/impl|ruby/internal|' 2020-05-11 09:24:08 +09:00