Граф коммитов

125 Коммитов

Автор SHA1 Сообщение Дата
Takashi Kokubun 4e0db2f753 mjit_c.rb doesn't need to be an erb 2022-09-23 06:44:28 +09:00
Takashi Kokubun f2bea691cd Builtin RubyVM::MJIT::C 2022-09-23 06:44:28 +09:00
Takashi Kokubun f8dad616c2
YJIT: Show --yjit-stats of railsbench on CI (#6403)
* YJIT: Show --yjit-stats of railsbench on CI

* YJIT: Use --enable-yjit=dev to see ratio_in_yjit

* YJIT: Show master GitHub URL for quick comparison

* YJIT: Avoid making CI red by a yjit-bench failure
2022-09-20 06:07:28 +09:00
Takashi Kokubun 0e816e6d30
Demote mjit_instruction.rb from builtin to stdlib 2022-09-18 14:04:20 +09:00
Takashi Kokubun 3767c6a90d
Ruby MJIT (#6028) 2022-09-04 21:53:46 -07:00
Matt Valentine-House f1ccfa0c2c [ci-skip][Feature #18910][lldb] Provide class framework for lldb commands
`lldb_cruby.py` manages lldb custom commands using functions. The file
is a large list of Python functions, and an init handler to map some of
the Python functions into the debugger, to enable execution of custom
logic during a debugging session.

Since LLDB 3.7 (September 2015) there has also been support for using
python classes rather than bare functions, as long as those classes
implement a specific interface.

This PR Introduces some more defined structure to the LLDB helper
functions by switching from the function based implementation to the
class based one, and providing an auto-loading mechanism by which new
functions can be loaded.

The intention behind this change is to make working with the LLDB
helpers easier, by reducing code duplication, providing a consistent
structure and a clearer API for developers.

The current function based approach has some advantages and
disadvantages

Advantages:

- Adding new code is easy.
- All the code is self contained and searchable.

Disadvantages:
- No visible organisation of the file contents. This means
  - Hard to tell which functions are utility functions and which are
    available to you in a debugging session
  - Lots of code duplication within lldb functions
- Large files quickly become intimidating to work with - for example,
  `lldb_disasm.py` was implemented as a seperate Python module because
  it was easier to start with a clean slate than add significant amounts
  of code to `lldb_cruby.py`

This PR attempts, to fix the disadvantages of the current approach and
maintain, or enhance, the benefits. The new structure of a command looks
like this;

 ```
 class TestCommand(RbBaseCommand):
    # program is the keyword the user will type in lldb to execute this command
    program = "test"

    # help_string will be displayed in lldb when the user uses the help functions
    help_string = "This is a test command to show how to implement lldb commands"

    # call is where our command logic will be implemented
    def call(self, debugger, command, exe_ctx, result):
        pass
  ```

If the command fulfils the following criteria it will then be
auto-loaded when an lldb session is started:

- The package file must exist inside the `commands` directory and the
  filename must end in `_command.py`
- The package must implement a class whose name ends in `Command`
- The class inherits from `RbBaseCommand` or at minimum a class that
  shares the same interface as `RbBaseCommand`  (at minimum this means
  defining `__init__` and `__call__`, and using `__call__` to call
  `call` which is defined in the subclasses).
- The class must have a class variable `package` that is a String. This
  is the name of the command you'll call in the `lldb` debugger.
2022-08-18 13:25:32 -04:00
Hiroshi SHIBATA 563f0d0a48
Ignore rubyspec_temp fot Git 2022-05-09 07:29:37 +09:00
Yuta Saito f72f01abd8 [wasm] add unit test suite for fiber, register scan, sjlj in platform dir 2022-01-19 11:19:06 +09:00
Nobuyoshi Nakada 1c4f529364
Ignore preprocessed C++ files [ci skip] 2021-11-21 16:23:44 +09:00
Hiroshi SHIBATA ccaa7957df
Ignore extentions of bundled gems for testing 2021-11-15 16:52:10 +09:00
Aaron Patterson 41f405c486 Remove the scraper
Now that we're using the jit function entry point, we don't need the
scraper.  Thank you for your service, scraper. ❤️
2021-10-20 18:19:38 -04:00
Jose Narvaez 4e2eb7695e Yet Another Ruby JIT!
Renaming uJIT to YJIT. AKA s/ujit/yjit/g.
2021-10-20 18:19:31 -04:00
Maxime Chevalier-Boisvert e4c65ec49c Refactor uJIT code into more files for readability 2021-10-20 18:19:26 -04:00
Alan Wu 07dd5f22a5 Scraper touch-ups
- Support older Ruby versions
- Catch rip-relative jmp. Happens in -O0
2021-10-20 18:19:22 -04:00
Nobuyoshi Nakada 3ce5434fec
Ignore static-ruby [ci skip]
static-ruby is statically linked against libruby, even when
configured with --enable-shared.
2020-11-24 08:38:06 +09:00
Nobuyoshi Nakada 9fc564cfef
Ignore rbenv version file, and moved dot files [ci skip] 2020-07-04 22:04:46 +09:00
David Rodríguez 7a5da7d55d Allow hidden files with a hyphen to be source controlled
Latest bundler includes a file named `.gitlab-ci.yml.tt`. Because of
this too specific .gitignore entry, it was failing to be properly
imported.
2020-07-04 13:41:17 +09:00
Nobuyoshi Nakada df275179bd
Revert "Moved aclocal.m4 to macro directory"
This reverts commit 4a6571dbc1,
because chkbuild does not follow.
2020-04-05 11:53:07 +09:00
Nobuyoshi Nakada 4a6571dbc1 Moved aclocal.m4 to macro directory 2020-04-05 09:26:57 +09:00
Hiroshi SHIBATA 66e636ab24
ignore revision.tmp with in-place build 2020-02-11 14:05:34 +09:00
Nobuyoshi Nakada a93d0a4e62
Check -1 arity for C++ 2019-11-22 18:42:49 +09:00
Yuichiro Kaneko b42656b9c4 Ignore *.rbinc files 2019-11-11 09:22:46 +09:00
Nobuyoshi Nakada 04075305d3
Ignore timestamp file for the expected failure [ci skip] 2019-10-22 21:33:24 +09:00
Samuel Williams 9e7a8a4351 Only ignore build directories. 2019-06-20 23:12:48 +12:00
Samuel Williams a6a4e86029 Ignore `/build*`. 2019-06-19 20:39:10 +12:00
Nobuyoshi Nakada 14778125b1
Removed and ignore symlinks by in-place build [Bug #15870] 2019-05-24 14:24:38 +09:00
Nobuyoshi Nakada dfc21a0467
Ignore generated files by in-place build [Bug #15870] 2019-05-24 12:23:26 +09:00
Nobuyoshi Nakada 2f0f9115d3
Ignore ChangeLog 2019-05-01 20:27:51 +09:00
Kazuhiro NISHIYAMA 7a34d8902a
Merge .time 2019-04-30 00:28:00 +09:00
SHIBATA Hiroshi c697bade0f
Ignore VSCode configuration from git. 2019-04-22 20:01:07 +09:00
nobu 2301054a99 Use BUILDDIR in ruby-runner.h from config.status
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66279 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-08 01:49:02 +00:00
nobu 54c979e979 Ignore goruby wrapper
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66168 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-03 13:12:29 +00:00
nobu ec9e886b63 Ignore more DLEXT files [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65936 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-23 12:12:10 +00:00
kazu 1d5b52c35a .gitignore: add mjit_build_dir.c [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65917 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-22 06:08:50 +00:00
kazu 15e37da621 .gitignore: add .time under coroutine [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65916 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-22 06:08:49 +00:00
kazu a3bf7a19d0 .gitignore: revert r65834 partially [ci skip]
and exclude under coroutine only.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65915 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-22 06:08:47 +00:00
samuel 07a324a0f6 Native implementation of coroutines to improve performance of fibers
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65834 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20 09:59:10 +00:00
k0kubun cdf72ddc3b win32/Makefile.sub: build precompiled header
See the comment in win32/Makefile.sub.
Not only .pch, but also .obj needs to be installed and used on runtime.

.gitignore: ignore .pch that will be built by this.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64188 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-08-04 23:53:41 +00:00
k0kubun 3293322a39 benchmark: introduce benchmark_driver.gem
Makefile.in: Clone benchmark-driver repository in benchmark/benchmark-driver
  `make update-benchmark-driver`, like simplecov.
win32/Makefile.sub: Roughly do the same thing.
.gitignore: Ignore the cloned repository.
common.mk: Trigger `make update-benchmark-driver` to run `make benchmark`
  and adjust arguments for benchmark_driver.gem.

benchmark/require.yml: renamed from benchmark/bm_require.rb, benchmark/prepare_require.rb
benchmark/require_thread.yml: renamed from benchmark/bm_require_thread.rb, benchmark/prepare_require_thread.rb
benchmark/so_count_words.yml: renamed from benchmark/bm_so_count_words.rb, benchmark/prepare_so_count_words.rb,
  benchmark/wc.input.base
benchmark/so_k_nucleotide.yml: renamed from benchmark/bm_so_k_nucleotide.rb, benchmark/prepare_so_k_nucleotide.rb,
  benchmark/make_fasta_output.rb
benchmark/so_reverse_complement.yml: renamed from benchmark/bm_so_reverse_complement.rb, benchmark/prepare_so_reverse_complement.rb,
  benchmark/make_fasta_output.rb

I'm sorry but I made some duplications between benchmark/require.yml and benchmark/require_thread.yml,
and between benchmark/so_k_nucleotide.yml and benchmark/so_reverse_complement.yml.

If you're not comfortable with it, please combine these YAMLs to share
the same prelude. One YAML file can have multiple benchmark definitions
sharing prelude.

benchmark/driver.rb: Replace its core feature with benchmark_driver.gem.
  Some old features are gone for now, but I'll add them again later.

[Misc #14902]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63888 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-07-08 14:38:05 +00:00
nobu 95208d59ca Ignore rb_mjit_min_header- instead of rb_mjit_header-
[Fix GH-1822]

From: hkdnet <satoko.itse@gmail.com>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62526 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-22 07:34:43 +00:00
nobu 8a1706a4b0 Ignore /mjit_config.h
[Fix GH-1822]

From: hkdnet <satoko.itse@gmail.com>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62525 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-22 07:34:42 +00:00
k0kubun 4651988d41 .gitignore: ignore min header for in-place build
In some revision, the build directory of minimized header is changed,
and then it's no longer ignored.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62282 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-07 13:27:42 +00:00
k0kubun 0af44e7261 common.mk: install a single header file for JIT
compilation which is created by transforming a preprocessed vm.c.
This file will be used by JIT compiler's generated code which we are
going to have from succeeding commits.

Makefile.in: generate MJIT header for UNIX environments.
win32/Makefile.sub: generate MJIT header for mswin environments.
At initial merge, we're going to support only MinGW for Windows. So the
header installed by this file won't be used for short term, but we'll
add mswin support in a half year or so, for sure.

tool/transform_mjit_header.rb: New. This script was originally written as
minimize_mjit_header.rb by Vladimir N. Makarov <vmakarov@redhat.com> for
Feature 12589.
Then I refactored a little so that it can conform CodeClimate CI which is
currently set for Ruby's GitHub repository, and fixed some bugs and ported
it to work on Windows.

Also, as original minimize_mjit_header.rb takes too long time to run,
this is modified to skip minimization step because having *static*
unused definitions does not waste compilation time on -O2 since compiler
can skip to compile unused static functions. So this does no longer
"minimize" the header and is renamed.

This header installation does NOT include a header to automatically
export symbols used by MJIT. That's because original MJIT code was
failing to export symbols in the import header in macOS environment.
But I would like to have the functionality for maintainability in the
future. I'll manually export things but it would be just an intemediate
solution.

Patch by: Vladimir N. Makarov <vmakarov@redhat.com>
Part of: Feature 12589 and 14235.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62187 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-04 05:49:21 +00:00
k0kubun f77fc95cf2 .gitignore: ignore dlntest.dll
This was generated with in-place build on MinGW and not ignored.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60746 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-11-12 15:25:56 +00:00
hsbt 06000a03a8 Removed obsoleted gitignore for test dependency.
Follow up r60458.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60459 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-10-26 23:02:18 +00:00
usa 29e1688917 Ignore .bundle
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60458 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-10-26 17:16:30 +00:00
hsbt 6faa0e12b0 [EXPERIMENTAL] Added test-bundled-gems task.
`test-bundled-gems` invoke test suite of bundled gems with
  build environment.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60247 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-10-21 09:50:36 +00:00
sonots 9bad616b33 * .gitignore: ignore exe/ruby and exe/.time instead of bin/ruby
because bin/ruby was renamed as exe/ruby at r59937.

follow-up: [Bug #13911]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60166 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-10-11 11:39:15 +00:00
nobu 86888f9cec rename ruby-runner as bin/ruby
* Makefile.in, configure.in, tool/runruby.rb: rename ruby-runner
  executable file as $(RUBY_INSTALL_NAME) under bin, to mimic
  dirty `#!/usr/bin/env` hack.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59927 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-15 17:42:00 +00:00
mame 0919c05501 Support LCOV visualization for both C and Ruby code
`./configure --enable-gcov && make exam && make lcov` will create
`lcov-c-out/index.html` for coverage of C code of the interpreter.
`make exam COVERAGE=true && make lcov` will create
`lcov-rb-out/index.html` for coverage of Ruby stdlib code.
Using both `--enable-gcov` and `COVERAGE=true` will create
`lcov-out/index.html` for total coverage.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59794 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-09 13:09:21 +00:00