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

74789 Коммитов

Автор SHA1 Сообщение Дата
Takashi Kokubun d1fb659547
YJIT: Count getivar side exits by receiver flag changes (#6735) 2022-11-15 14:50:12 -08:00
Takashi Kokubun 1125274c4e
YJIT: Invalidate redefined methods only through cme (#6734)
Co-authored-by: Alan Wu <alansi.xingwu@shopify.com>

Co-authored-by: Alan Wu <alansi.xingwu@shopify.com>
2022-11-15 12:57:43 -08:00
Stan Lo 9751b54971 [ruby/irb] Improve testing infra
(https://github.com/ruby/irb/pull/442)

* Add test_in_isolation task to run tests in isolation

This simulates how tests are run in Ruby CI and can detect some issues
before they're merged and break Ruby CI later.

* Run test_in_isolation task on CI

* Fix TestRaiseNoBacktraceException's setup

https://github.com/ruby/irb/commit/51f23c58b0
2022-11-15 17:26:51 +00:00
Nobuyoshi Nakada ac063fd4c4
Depending on revision.h with VPATH 2022-11-16 00:44:34 +09:00
Peter Zhu 5dcbe58833 Fix buffer overrun in ivars when rebuilding shapes
In rb_shape_rebuild_shape, we need to increase the capacity when
capacity == next_iv_index since the next ivar will be writing at index
next_iv_index.

This bug can be reproduced when assertions are turned on and you run the
following code:

    class Foo
      def initialize
        @a1 = 1
        @a2 = 1
        @a3 = 1
        @a4 = 1
        @a5 = 1
        @a6 = 1
        @a7 = 1
      end

      def add_ivars
        @a8 = 1
        @a9 = 1
      end
    end

    class Bar < Foo
    end

    foo = Foo.new
    foo.add_ivars
    bar = Bar.new
    GC.start
    bar.add_ivars
    bar.clone

You will get the following crash:

    Assertion Failed: object.c:301:rb_obj_copy_ivar:src_num_ivs <= shape_to_set_on_dest->capacity
2022-11-15 08:53:46 -05:00
Hiroshi SHIBATA 36dc99af5a
Added empty class for test methods in TestIRB cases 2022-11-15 20:19:43 +09:00
st0012 aecb7f6efc [ruby/irb] Deprecate USE_RELINE and USE_REIDLINE
Based on this commit: 93f87ec653

It appears that the maintainer @aycabta wanted to deprecate any `USE_*LINE` configs in favor of
`USE_MULTILINE`. So we should deprecate `USE_RELINE` as well.

https://github.com/ruby/irb/commit/478f19f3ae
2022-11-15 10:08:30 +00:00
st0012 34320d883f [ruby/irb] Deprecate reidline flags
https://github.com/ruby/irb/commit/9957e83f7d
2022-11-15 10:08:29 +00:00
st0012 4f348e482c [ruby/irb] Rename leftover Reidline references
https://github.com/ruby/irb/commit/0ed8b103ed
2022-11-15 10:08:28 +00:00
st0012 1eae15142f [ruby/irb] Remove duplicated TestInputMethod definitions
https://github.com/ruby/irb/commit/4b831d02e1
2022-11-15 10:07:32 +00:00
Takashi Kokubun 1a9e87fe3a
MJIT: Fix vm_cc_cme(cc).def.type to use bit field
access properly. Because the libclang node had two children, it wasn't
handled well by the pattern matching for the bit field case.

In addition to that, this bit field has a non-1 width. Because we're
returning true/false for a width-1 bit field, I added another behavior
that works like a char value for bit fields with width 2-8.
2022-11-15 00:34:00 -08:00
Takashi Kokubun f500ca9b8a
Handle more MJIT compilation failures
NotImplementedError is not part StandardError, for example. When that
kind of exception happens, current_cc_unit remains not NULL, and
mjit_finish ends up waiting for 5 seconds, which is inconvenient.
2022-11-15 00:18:13 -08:00
Johnny Willemsen 2652bc3578 [ruby/racc] Update racc.gemspec
Updated homepage to https://github.com/ruby/racc
2022-11-15 08:15:19 +00:00
Takashi Kokubun 69e47b7fa6
MJIT: Remove reference to ROBJECT_EMBED_LEN_MAX
maybe not used since some shape changes?
2022-11-14 23:39:38 -08:00
Takashi Kokubun d15d1c01c2
Rename --mjit-min-calls to --mjit-call-threshold (#6731)
for consistency with YJIT
2022-11-14 23:38:52 -08:00
Kenta Murata c75de1e330 [ruby/bigdecimal] Add fallback definition of MAYBE_UNUSED
https://github.com/ruby/bigdecimal/commit/b2123faa52
2022-11-15 06:59:11 +00:00
David Rodríguez c925a2ee91
Update RSpec gems 2022-11-15 14:45:51 +09:00
Kenta Murata 3c60e030b5 [ruby/bigdecimal] Replace sprintf by snprintf
https://github.com/ruby/bigdecimal/commit/d6f5bb40c7
2022-11-15 04:02:01 +00:00
Aaron Patterson e74d82f674 Implement LDURH on Aarch64
When RUBY_DEBUG is enabled, shape ids are 16 bits.  I would like to do
16 bit comparisons, so I need to load halfwords sometimes.  This commit
adds LDURH so that I can load halfwords.

  https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/LDURH--Load-Register-Halfword--unscaled--?lang=en

I verified the bytes using clang:

```
$ cat asmthing.s
.global _start
.align 2

_start:
  ldurh w10, [x1]
  ldurh w10, [x1, #123]
$ as asmthing.s -o asmthing.o && objdump --disassemble asmthing.o

asmthing.o:	file format mach-o arm64

Disassembly of section __TEXT,__text:

0000000000000000 <ltmp0>:
       0: 2a 00 40 78  	ldurh	w10, [x1]
       4: 2a b0 47 78  	ldurh	w10, [x1, #123]
```
2022-11-14 17:04:50 -08:00
Takashi Kokubun 9228ae97c5
Try to let dependabot maintain the version comment
It seems like dependabot supports updating the `# vX.Y.Z` comment.
The reason why I disabled this was that it failed to update this, but
maybe it was because it had `, checking sha`. Let me try it again with
that removed.
2022-11-14 16:53:14 -08:00
Kenta Murata 3147a3900f [ruby/bigdecimal] Mark some functions MAYBE_UNUSED
https://github.com/ruby/bigdecimal/commit/d70a4d53e5
2022-11-15 00:34:23 +00:00
Nobuyoshi Nakada 5c3dba83fa
Re-order checks for colons in UTC offset 2022-11-15 09:01:29 +09:00
Aaron Patterson b7d591643a Remove USE_RVARGC code
We don't need this constant to be exposed anymore, so remove it
2022-11-14 15:42:11 -08:00
Shohei YOSHIDA 6cd0553ab7 [rubygems/rubygems] Update comment by the review comment
https://github.com/rubygems/rubygems/commit/7c54dc56f6
2022-11-14 23:39:32 +00:00
Shohei YOSHIDA 436aa6e64d [rubygems/rubygems] Fix '--force' option documentation of 'bundle clean'
'--path' option is no longer used.

https://github.com/rubygems/rubygems/commit/43b3d5f7bc
2022-11-14 23:39:32 +00:00
Peter Zhu 710c1ada84 Use string's capacity to determine if reembeddable
During auto-compaction, using length to determine whether or not a
string can be re-embedded may be a problem for newly created strings.
This is because usually it requires a malloc before setting the length.
If the malloc triggers compaction, then the string may be re-embedded
and can cause crashes.
2022-11-14 16:59:43 -05:00
Peter Zhu 9a6c3355c5 Set array capacity/shared immediately after alloc
If auto-compaction is enabled, then we have to set the capacity/shared
immediately after allocating a heap array. If compaction runs before
capacity/shared is set then it could cause the array to be re-embedded,
which can cause crashes.
2022-11-14 15:40:47 -05:00
Peter Zhu 6dd1a5f532 Remove unused function rb_shape_transition_shape 2022-11-14 11:25:41 -05:00
Nobuyoshi Nakada 1221c77489
Clean YJIT libraries [ci skip] 2022-11-14 22:41:59 +09:00
Nobuyoshi Nakada 3fae53a343
[Bug #19127] Fix revision.h dependency when no baseruby
Disconnect the dependency of revision.h on the timestamp file if no
baseruby is available
2022-11-14 18:59:06 +09:00
Takashi Kokubun a8537aa6a5
Import shape constants with mjit-bindgen 2022-11-14 00:29:28 -08:00
Takashi Kokubun 80bab6c8ed
Import class constants with mjit-bindgen 2022-11-14 00:24:08 -08:00
git e4e2ff76a8 Update default gems list at d019c3a4bd [ci skip] 2022-11-14 06:38:18 +00:00
Yusuke Endoh d019c3a4bd [ruby/error_highlight] Bump version
https://github.com/ruby/error_highlight/commit/5275078dc6
2022-11-14 06:37:33 +00:00
Yusuke Endoh 81c494d810 [ruby/error_highlight] Enable tests for TypeError and ArgumentError
These tests were unintentionally disabled by `if false`

https://github.com/ruby/error_highlight/commit/fa6d00d80d
2022-11-14 06:22:35 +00:00
Yusuke Endoh 8bfd4dd4e1 [ruby/error_highlight] Enable ErrorHighlight for TypeError/ArgumentError only after Ruby 3.2
... because changing TypeError#message and ArgumentError#message is
highly incompatible.

https://github.com/ruby/error_highlight/commit/39aa897c7a
2022-11-14 06:06:12 +00:00
Takashi Kokubun 96d29dff66
Fix invokebuiltin in Ruby MJIT
45fe7f7575/tool/ruby_vm/views/_mjit_compile_invokebuiltin.erb (L21)
has not been ported correctly.
2022-11-13 21:14:47 -08:00
Takashi Kokubun 3dd4e381fe
Reduce the number of branches in jit_exec (#6722)
* Reduce the number of branches in jit_exec

* Address build failure in some configurations

* Refactor yjit.h
2022-11-13 20:35:35 -08:00
dependabot[bot] ea278ddd92 Bump actions/upload-artifact from 3.1.0 to 3.1.1
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](3cea537223...83fd05a356)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-14 11:54:32 +09:00
Takashi Kokubun dc5e2eaab6
Refactor update_global_event_hook
It seems more readable to put JIT invalidation code together.
2022-11-13 15:13:44 -08:00
Takashi Kokubun e377875cff
s/mjit_func_t/jit_func_t/ 2022-11-13 14:41:08 -08:00
Takashi Kokubun 68e0523484
Remove unused debug counters
The structure and readability of jit_exec is messed up right now. I'd
like to help the current situation by this for now. I'll resurrect
them when I need it again.
2022-11-13 14:00:30 -08:00
Takashi Kokubun 6246788bc4
YJIT: Instrument global allocations on stats build (#6712)
* YJIT: Instrument global allocations on stats build

* Just use GLOVAL_ALLOCATOR.stats()
2022-11-13 12:54:41 -05:00
Alan Wu bc8ba244b8
YJIT: Fix invalidation for c_call and c_return (#6719)
Follow-up for 2b8191bdad. Since that
commit, we stopped doing code invalidation the second time the call and
return events are enabled. We need to do it every time these events are
enabled because we might have generated code while these events are
disabled.

Also rename locals and edit comments to make it more clear that the iseq
rewrite code path only happens the first time a particular iseq trace
event is enabled.
2022-11-13 12:51:19 -05:00
Maxime Chevalier-Boisvert a1b460bd6e
Update yjit.md
Remove disclaimer
2022-11-13 12:42:47 -05:00
Takashi Kokubun d5e1b82f5c
YJIT: Remove unused src_ctx from Block (#6714) 2022-11-13 12:33:23 -05:00
Nobuyoshi Nakada 2f7d2662dd
Control non-parallel parts with `.WAIT` if available 2022-11-13 23:54:43 +09:00
Kenta Murata 8d82f4ba1c [ruby/bigdecimal] Add specific value allocators
* Add NewZero* and NewOne* function families
* Use them instead of VpAlloc for allocating 0 and 1

https://github.com/ruby/bigdecimal/commit/9276a94ac7
2022-11-13 12:33:29 +00:00
Nobuyoshi Nakada 70c9d5b504
Try to overwrite the file in VPATH if possible 2022-11-13 18:05:11 +09:00
Nobuyoshi Nakada 66529eef88
Force to update revision.h when commits differ 2022-11-13 17:38:44 +09:00