summaryrefslogtreecommitdiff
path: root/common.mk
AgeCommit message (Collapse)Author
2020-03-22Disable run_without_tabs when there's no -ggdb3Takashi Kokubun
in debugflags, as requested by nobu I actually wanted to check debugflags directly rather than MJIT_DEBUGFLAGS because debugflags is always used but MJIT_DEBUGFLAGS may not be always used. But I couldn't find a better way to check debugflags.
2020-03-22Expand tabs for rb_mjit_header.h (#2975)Takashi Kokubun
This is necessary to avoid converting a hard tab to just 1 space in preprocessor to generate rb_mjit_header.h, which is helpful when using gdb or perf report. See also: [Misc #16112] This reverts commit 91acdd17c4b4bb69a8fa3ada46e09dad46b9362e. Fixed permission failure on Travis, encoding, and added SKIPPED_FILES. Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2020-03-22Revert "Expand tabs for rb_mjit_header.h"Takashi Kokubun
This reverts commit 57119dd561418c917b885db5f5af7f129a96d1ec. Temporarily reverting for Travis failures
2020-03-22Expand tabs for rb_mjit_header.hTakashi Kokubun
I can't live without this when using gdb or perf report. See also: [Misc #16112]
2020-03-17support builtin for Kernel#cloneS.H
Notes: Merged: https://github.com/ruby/ruby/pull/2954 Merged-By: nobu <nobu@ruby-lang.org>
2020-03-14Use a human-readable funcname with --jit-debugTakashi Kokubun
for perf output like: Samples: 100K of event 'cycles:ppp', Event count (approx.): 1007750000 Children Self Command Shared Object Symbol + 81.58% 1.47% ruby ruby [.] rb_vm_exec + 81.06% 7.61% ruby ruby [.] vm_exec_core + 80.16% 0.00% ruby ruby [.] vm_sendish (inlined) + 75.03% 0.00% ruby ruby [.] mjit_exec (inlined) + 74.37% 0.00% ruby ruby [.] mjit_exec (inlined) + 73.42% 0.22% ruby _ruby_mjit_p11277u42.so [.] _mjit42_rack_method_override_rb_call + 73.25% 0.10% ruby _ruby_mjit_p11277u41.so [.] _mjit41_sinatra_show_exceptions_rb_call + 73.19% 0.22% ruby _ruby_mjit_p11277u44.so [.] _mjit44_rack_head_rb_call + 73.03% 0.15% ruby _ruby_mjit_p11277u45.so [.] _mjit45_sinatra_base_rb_call + 72.87% 0.26% ruby _ruby_mjit_p11277u49.so [.] _mjit49_rack_logger_rb_call + 70.56% 0.11% ruby _ruby_mjit_p11277u40.so [.] _mjit40_sinatra_base_rb_call + 68.70% 0.11% ruby _ruby_mjit_p11277u39.so [.] _mjit39_sinatra_base_rb_call + 68.39% 0.29% ruby _ruby_mjit_p11277u56.so [.] _mjit56_rack_protection_frame_options_rb_call + 67.89% 0.18% ruby _ruby_mjit_p11277u37.so [.] _mjit37_sinatra_base_rb_block_in_call + 67.04% 0.16% ruby _ruby_mjit_p11277u34.so [.] _mjit34_sinatra_base_rb_synchronize Reverting deb1c7b97d, fixing `sprint_funcname`'s argument in `compact_all_jit_code`. Also updating common.mk.
2020-03-14Fix bundled gems installation on a fresh cloneDavid Rodríguez
Notes: Merged: https://github.com/ruby/ruby/pull/2951
2020-03-13Update and extract for each gemNobuyoshi Nakada
2020-03-12Add prepare-gems to download and extract bundled gemsNobuyoshi Nakada
2020-02-28Prevent unloading methods used in root_fiber while calling another Fiber (#2939)Takashi Kokubun
Fixing SEGVs like: http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/2744905 http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/2744420 http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/2741400 Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2020-02-25Share extracted bundled gems with gems for bundlerNobuyoshi Nakada
Extract bundled gems under ".bundle/gems" and get rid of duplication which cause constant redefinition warnings at `test-all` after `extract-gems` and `test-bundler`. Notes: Merged: https://github.com/ruby/ruby/pull/2922
2020-02-24Fixed symbol misused as IDNobuyoshi Nakada
`rb_funcallv_public` and `rb_respond_to` require an `ID`, not a `Symbol`. [Bug #16649]
2020-02-23Revert "Prefer `exe/ruby` to execute from it"Nobuyoshi Nakada
This reverts commit c7b71af9e21b3f0b8fe413a3c20cf4bd633c40d0, as an example in bundler expects untouch PATH.
2020-02-22Prefer `exe/ruby` to execute from itNobuyoshi Nakada
2020-02-22Introduce disposable call-cache.Koichi Sasada
This patch contains several ideas: (1) Disposable inline method cache (IMC) for race-free inline method cache * Making call-cache (CC) as a RVALUE (GC target object) and allocate new CC on cache miss. * This technique allows race-free access from parallel processing elements like RCU. (2) Introduce per-Class method cache (pCMC) * Instead of fixed-size global method cache (GMC), pCMC allows flexible cache size. * Caching CCs reduces CC allocation and allow sharing CC's fast-path between same call-info (CI) call-sites. (3) Invalidate an inline method cache by invalidating corresponding method entries (MEs) * Instead of using class serials, we set "invalidated" flag for method entry itself to represent cache invalidation. * Compare with using class serials, the impact of method modification (add/overwrite/delete) is small. * Updating class serials invalidate all method caches of the class and sub-classes. * Proposed approach only invalidate the method cache of only one ME. See [Feature #16614] for more details. Notes: Merged: https://github.com/ruby/ruby/pull/2888
2020-02-22VALUE size packed callinfo (ci).Koichi Sasada
Now, rb_call_info contains how to call the method with tuple of (mid, orig_argc, flags, kwarg). Most of cases, kwarg == NULL and mid+argc+flags only requires 64bits. So this patch packed rb_call_info to VALUE (1 word) on such cases. If we can not represent it in VALUE, then use imemo_callinfo which contains conventional callinfo (rb_callinfo, renamed from rb_call_info). iseq->body->ci_kw_size is removed because all of callinfo is VALUE size (packed ci or a pointer to imemo_callinfo). To access ci information, we need to use these functions: vm_ci_mid(ci), _flag(ci), _argc(ci), _kwarg(ci). struct rb_call_info_kw_arg is renamed to rb_callinfo_kwarg. rb_funcallv_with_cc() and rb_method_basic_definition_p_with_cc() is temporary removed because cd->ci should be marked. Notes: Merged: https://github.com/ruby/ruby/pull/2888
2020-02-15Workaround for bison provided by scoop on mswin environmentHiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/2909
2020-02-12Fixed a potential memory leakNobuyoshi Nakada
`rb_str_new_cstr` can raise a `NoMemoryError`.
2020-02-09Check if bindable against the refined target [Bug #16617]Nobuyoshi Nakada
2020-01-28Fix file dependency in makeAlan Wu
2020-01-27Fixed missing dependency on array.rbNobuyoshi Nakada
2020-01-26Moved Array#shuffle and Array#shuffle! to rbincNobuyoshi Nakada
2020-01-22Remove special handling of $SAFE and related C-APIsJeremy Evans
These were all deprecated in Ruby 2.7. Notes: Merged: https://github.com/ruby/ruby/pull/2845
2020-01-21add default break pointsKoichi Sasada
2020-01-18Update clean-local [ci skip]Nobuyoshi Nakada
* Remove builtin_binary.inc which is generated for each time miniruby is built. * dSYM is a directory, not a file.
2020-01-17Update dependenciesNobuyoshi Nakada
internal/rational.h needs internal/warnings.h with Apple clang, for `UNALIGNED_MEMBER_ACCESS`.
2020-01-17Update dependencies in makefiles againKazuhiro NISHIYAMA
patch from https://travis-ci.org/ruby/ruby/jobs/638231960
2020-01-17Update dependencies in makefilesKazuhiro NISHIYAMA
patch from https://travis-ci.org/ruby/ruby/jobs/638226493
2020-01-12Clean generated ChangeLog [ci skip]Nobuyoshi Nakada
2020-01-12Ignore existing ChangeLog file and generate always [ci skip]Nobuyoshi Nakada
2020-01-12Added make target to export the ChangeLog fileNobuyoshi Nakada
2020-01-11Let execution context local storage be an ID tableLourens Naudé
Notes: Merged: https://github.com/ruby/ruby/pull/2814
2020-01-10Update dependencies for c6b26f5ccf9296f7fbb23c055401c4f55d32efa0Nobuyoshi Nakada
2020-01-02Bump benchmark-driver to v0.15.7 (#2811)Lourens Naudé
2020-01-03move internal/debug.h definitions to internal.hKoichi Sasada
Debug utilities should be accessible from any internal code.
2019-12-31Updated dependencies on internal/warnings.hNobuyoshi Nakada
Needed for `UNALIGNED_MEMBER_ACCESS` using `COMPILER_WARNING_`* macros. Notes: Merged: https://github.com/ruby/ruby/pull/2799
2019-12-26update dependencies卜部昌平
Notes: Merged: https://github.com/ruby/ruby/pull/2711
2019-12-25update-bundled_gems: drop branch name on github [ci skip]Nobuyoshi Nakada
2019-12-13Create backtrace location array directlyNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/2739
2019-12-13Moved Kernel#warn to warning.rbNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/2739
2019-12-11add depenency pointed by update-depsKoichi Sasada
2019-12-11* remove trailing spaces. [ci skip]git
2019-12-11support cross-compilation.Koichi Sasada
On cross-compilation, compiled binary can no be created because compiled binary should be created by same interpreter (on cross- compilation, host ruby is used to build ruby (BASERUBY)). So that cross-compilation system loads required scripts in text. It is same as miniruby. Notes: Merged: https://github.com/ruby/ruby/pull/2735
2019-12-11remove prelude.cKoichi Sasada
prelude.c is an automatically generated file by template/prelude.c.tmpl. However it does not contain any required functions. So remove it from dependency. Also miniprelude.c is included by mini_builtin.c and does not need to make miniprelude.o. Notes: Merged: https://github.com/ruby/ruby/pull/2735
2019-12-11use compiled binary for gem_prelude.rb.Koichi Sasada
`gem_prelude.rb` is not compiled yet. This patch compile it to compiled binary. Notes: Merged: https://github.com/ruby/ruby/pull/2735
2019-12-04Add missing dependencyTakashi Kokubun
https://travis-ci.org/ruby/ruby/jobs/620972117
2019-12-02Revert "builtin_binary.inc needs miniruby itself for RubyVM.each_builtin"Nobuyoshi Nakada
This reverts commit 2615030c521afc822c66a7e139ccba3d2365ab56, which doesn't work when cross compiling, except for mingw.
2019-12-02builtin_binary.inc needs miniruby itself for RubyVM.each_builtinNobuyoshi Nakada
2019-11-29fastpath for ivar read of FL_EXIVAR objects.Koichi Sasada
vm_getivar() provides fastpath for T_OBJECT by caching an index of ivar. This patch also provides fastpath for FL_EXIVAR objects. FL_EXIVAR objects have an each ivar array and index can be cached as T_OBJECT. To access this ivar array, generic_iv_tbl is exposed by rb_ivar_generic_ivtbl() (declared in variable.h which is newly introduced). Benchmark script: Benchmark.driver(repeat_count: 3){|x| x.executable name: 'clean', command: %w'../clean/miniruby' x.executable name: 'trunk', command: %w'./miniruby' objs = [Object.new, 'str', {a: 1, b: 2}, [1, 2]] objs.each.with_index{|obj, i| rep = obj.inspect rep = 'Object.new' if /\#/ =~ rep x.prelude str = %Q{ v#{i} = #{rep} def v#{i}.foo @iv # ivar access method (attr_reader) end v#{i}.instance_variable_set(:@iv, :iv) } puts str x.report %Q{ v#{i}.foo } } } Result: v0.foo # T_OBJECT clean: 85387141.8 i/s trunk: 85249373.6 i/s - 1.00x slower v1.foo # T_STRING trunk: 57894407.5 i/s clean: 39957178.6 i/s - 1.45x slower v2.foo # T_HASH trunk: 56629413.2 i/s clean: 39227088.9 i/s - 1.44x slower v3.foo # T_ARRAY trunk: 55797530.2 i/s clean: 38263572.9 i/s - 1.46x slower
2019-11-23Show include directive differences only when under gitv2_7_0_preview3Nobuyoshi Nakada
When building from tarballs, the source directory is not a git repository.