by making .revision.time PHONY. Prior to this commit, RUBY_DESCRIPTION
has been updated only when version.h (or tool/file2lastrev.rb) is updated.
.revision.time (REVISION_H) target internally has IFCHANGE to update
revision.h. So it doesn't touch revision.h when it's not updated,
and thus it's safe to run every time.
defs/gmake.mk: drop obsoleted reference to REVISION_FORCE
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65692 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* bin/*, lib/bundler/*, lib/bundler.rb, spec/bundler, man/*:
Merge from latest stable branch of bundler/bundler repository and
added workaround patches. I will backport them into upstream.
* common.mk, defs/gmake.mk: Added `test-bundler` task for test suite
of bundler.
* tool/sync_default_gems.rb: Added sync task for bundler.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65509 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
because r64849 seems to fix issues which we were confused about.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64850 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This reverts commit r64829. I'll prepare another temporary fix, but I'll
separately commit that to make it easier to revert that later.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64838 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
not optimizing Array#& and Array#| because vm_insnhelper.c can't easily
inline it (large amount of array.c code would be needed in vm_insnhelper.c)
and the method body is a little complicated compared to Integer's ones.
So I thought only Integer#& and Integer#| have a significant impact,
and eliminating unnecessary branches would contribute to JIT's performance.
vm_insnhelper.c: ditto
tool/transform_mjit_header.rb: make sure these instructions are inlined
on JIT.
compile.c: compile vm_opt_and and vm_opt_or.
id.def: define id for them to be used in compile.c and vm*.c
vm.c: track redefinition of Integer#& and Integer#|
vm_core.h: allow detecting redefinition of & and |
test/ruby/test_jit.rb: test new insns
test/ruby/test_optimization.rb: ditto
* Optcarrot benchmark
This is a kind of experimental thing but I'm committing this since the
performance impact is significant especially on Optcarrot with JIT.
$ benchmark-driver benchmark.yml --rbenv 'before::before --disable-gems;before+JIT::before --disable-gems --jit;after::after --disable-gems;after+JIT::after --disable-gems --jit' -v --repeat-count 24
before: ruby 2.6.0dev (2018-09-24 trunk 64821) [x86_64-linux]
before+JIT: ruby 2.6.0dev (2018-09-24 trunk 64821) +JIT [x86_64-linux]
after: ruby 2.6.0dev (2018-09-24 opt_and 64821) [x86_64-linux]
last_commit=opt_or
after+JIT: ruby 2.6.0dev (2018-09-24 opt_and 64821) +JIT [x86_64-linux]
last_commit=opt_or
Calculating -------------------------------------
before before+JIT after after+JIT
Optcarrot Lan_Master.nes 51.460 66.315 53.023 71.173 fps
Comparison:
Optcarrot Lan_Master.nes
after+JIT: 71.2 fps
before+JIT: 66.3 fps - 1.07x slower
after: 53.0 fps - 1.34x slower
before: 51.5 fps - 1.38x slower
[close https://github.com/ruby/ruby/pull/1963]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64824 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* defs/gmake.mk (commit): pass CONFIGURE and fix dependency of
`reconfig` target, not to try to make config.status newer than
the source directory. and remove configure_args in common.mk,
which is a garbage argument.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64257 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk (MJIT_HEADER, MJIT_MIN_HEADER): added hook to separate
intermediate headers per archs.
* defs/gmake.mk: build mjit headers per -arch options, and then
merge the headers with `#ifdef`s.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62245 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* defs/keywords (struct kwtable): shrink since members do not
exceed 16bit. lex_state needs to be int (or enum lex_state_e)
when EXPR_MAX_STATE reaches it.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62001 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* defs/gmake.mk (commit): update source files under the sources
directory after commit.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61703 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
I faced a big issue about Bundler with ruby core.
I have no time to resolve it issue before 2.5 final release.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61416 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tool/gperf.sed: comment out arguments part only, to keep the
following declarations static. [Feature #13883]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61282 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tool/gperf.sed: extracted sed commands to a script. ANSI-C code
produced by gperf 3.1 declares length arguments as `size_t`. it
causes conflict with existing declarations, and needs casts for
a local variable and return statements.
[Feature #13883]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61076 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* defs/gmake.mk (ORDERED_TEST_TARGETS): order test-bundler too to
get rid of mixing outputs.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59985 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* defs/gmake.mk (extract-gems): should wait for update-gems to
finish when doing both.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59350 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* defs/gmake.mk (TEST_DEPENDS): check and more tests targets need
all to be built.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58762 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* defs/gmake.mk (TEST_DEPENDS): remove targets expanded as
TEST_TARGETS, to get rid of circular dependencies.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57695 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* defs/gmake.mk (mflags): override the definition in common.mk
without -jN option.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57635 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* defs/gmake.mk (gnumake_recursive): do not invoke tests if -n
option is given.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57612 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* defs/id.def (predefined): add keywords `and` and `or`.
* parse.y (log_op): unify parser and ripper, and use tokens
instead of node types and symbols.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57610 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk (mflags): pass make flags to sub-makes, for nmake
which cannot pass them by the environment variable.
* defs/gmake.mk (mflags): filter out -j option for sub-makes.
* template/exts.mk.tmpl (MFLAGS): extract MFLAGS from sub extmk
files for nmake.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57594 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* defs/id.def: remove idDSTAR and idCOLON3.
* parse.y (tCOLON2): make same as id.h.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57578 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* defs/separated_version.mk (RUBY_VERSION_DLDFLAGS): move linux
specific option.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56444 b2dd03c8-39d4-4d8f-98ff-823fe69b080e