418 Commits
Author SHA1 Message Date
Nobuyoshi Nakada 5a18956430 ruby-style.el: Minimize backslash columns [ci skip]
Basically we don't align line continuation backslashes.
2024-10-17 19:34:31 +09:00
Matt Valentine-House 8e7df4b7c6 Rename size_pool -> heap
Now that we've inlined the eden_heap into the size_pool, we should
rename the size_pool to heap. So that Ruby contains multiple heaps, with
different sized objects.

The term heap as a collection of memory pages is more in memory
management nomenclature, whereas size_pool was a name chosen out of
necessity during the development of the Variable Width Allocation
features of Ruby.

The concept of size pools was introduced in order to facilitate
different sized objects (other than the default 40 bytes). They wrapped
the eden heap and the tomb heap, and some related state, and provided a
reasonably simple way of duplicating all related concerns, to provide
multiple pools that all shared the same structure but held different
objects.

Since then various changes have happend in Ruby's memory layout:

* The concept of tomb heaps has been replaced by a global free pages list,
  with each page having it's slot size reconfigured at the point when it
  is resurrected
* the eden heap has been inlined into the size pool itself, so that now
  the size pool directly controls the free_pages list, the sweeping
  page, the compaction cursor and the other state that was previously
  being managed by the eden heap.

Now that there is no need for a heap wrapper, we should refer to the
collection of pages containing Ruby objects as a heap again rather than
a size pool
2024-10-03 21:20:09 +01:00
Nobuyoshi Nakada 7836626f92 Add c-style for prism [ci skip] 2024-09-20 22:50:27 +09:00
Nobuyoshi Nakada cedc7737b6 Make interchangeable NODE types aliases 2024-06-02 09:43:33 +09:00
Nobuyoshi Nakada 43798e0f6d lldb: Show coderange 2024-05-28 16:23:18 +09:00
Nobuyoshi Nakada d076101af9 Fix dump of NODE [ci skip] 2024-05-16 21:25:52 +09:00
yui-knk f057741c5d NODE_LIT is not used anymore 2024-04-04 13:17:26 +09:00
Nobuyoshi Nakada e720a6b485 Show the chilled status of a String [ci skip] 2024-03-25 14:33:20 +09:00
Takashi Kokubun b0be2961f7 YJIT: Let yjit_perf.py support perf with Python disabled (#10246)
* YJIT: Let yjit_perf.py support perf with Python disabled

* Update yjit.md about perf

* Recommend the extra interface by default
2024-03-14 10:08:23 -07:00
yui-knk e7ab5d891c Introduce NODE_REGX to manage regexp literal 2024-02-21 08:06:48 +09:00
yui-knk 89cfc15207 [Feature #20257] Rearchitect Ripper
Introduce another semantic value stack for Ripper so that
Ripper can manage both Node and Ruby Object separately.
This rearchitectutre of Ripper solves these issues.
Therefore adding test cases for them.

* [Bug 10436] https://bugs.ruby-lang.org/issues/10436
* [Bug 18988] https://bugs.ruby-lang.org/issues/18988
* [Bug 20055] https://bugs.ruby-lang.org/issues/20055

Checked the differences of `Ripper.sexp` for files under `/test/ruby`
are only on test_pattern_matching.rb.
The differences comes from the differences between
`new_hash_pattern_tail` functions between parser and Ripper.
Ripper `new_hash_pattern_tail` didn’t call `assignable` then
`kw_rest_arg` wasn’t marked as local variable.
This is also fixed by this commit.

```
--- a/./tmp/before/test_pattern_matching.rb
+++ b/./tmp/after/test_pattern_matching.rb
@@ -3607,7 +3607,7 @@
                  [:in,
                   [:hshptn, nil, [], [:var_field, [:@ident, “a”, [984, 13]]]],
                   [[:binary,
-                    [:vcall, [:@ident, “a”, [985, 10]]],
+                    [:var_ref, [:@ident, “a”, [985, 10]]],
                     :==,
                     [:hash, nil]]],
                   nil]]],
@@ -3662,7 +3662,7 @@
                  [:in,
                   [:hshptn, nil, [], [:var_field, [:@ident, “a”, [993, 13]]]],
                   [[:binary,
-                    [:vcall, [:@ident, “a”, [994, 10]]],
+                    [:var_ref, [:@ident, “a”, [994, 10]]],
                     :==,
                     [:hash,
                      [:assoclist_from_args,
@@ -3813,7 +3813,7 @@
                    [:command,
                     [:@ident, “raise”, [1022, 10]],
                     [:args_add_block,
-                     [[:vcall, [:@ident, “b”, [1022, 16]]]],
+                     [[:var_ref, [:@ident, “b”, [1022, 16]]]],
                      false]]],
                   [:else, [[:var_ref, [:@kw, “true”, [1024, 10]]]]]]]],
                nil,
@@ -3876,7 +3876,7 @@
                      [:@int, “0”, [1033, 15]]],
                     :“&&“,
                     [:binary,
-                     [:vcall, [:@ident, “b”, [1033, 20]]],
+                     [:var_ref, [:@ident, “b”, [1033, 20]]],
                      :==,
                      [:hash, nil]]]],
                   nil]]],
@@ -3946,7 +3946,7 @@
                      [:@int, “0”, [1042, 15]]],
                     :“&&“,
                     [:binary,
-                     [:vcall, [:@ident, “b”, [1042, 20]]],
+                     [:var_ref, [:@ident, “b”, [1042, 20]]],
                      :==,
                      [:hash,
                       [:assoclist_from_args,
@@ -5206,7 +5206,7 @@
                      [[:assoc_new,
                        [:@label, “c:“, [1352, 22]],
                        [:@int, “0”, [1352, 25]]]]]],
-                   [:vcall, [:@ident, “r”, [1352, 29]]]],
+                   [:var_ref, [:@ident, “r”, [1352, 29]]]],
                   false]]],
                [:binary,
                 [:call,
@@ -5299,7 +5299,7 @@
                       [:assoc_new,
                        [:@label, “c:“, [1367, 34]],
                        [:@int, “0”, [1367, 37]]]]]],
-                   [:vcall, [:@ident, “r”, [1367, 41]]]],
+                   [:var_ref, [:@ident, “r”, [1367, 41]]]],
                   false]]],
                [:binary,
                 [:call,
@@ -5931,7 +5931,7 @@
              [:in,
               [:hshptn, nil, [], [:var_field, [:@ident, “r”, [1533, 11]]]],
               [[:binary,
-                [:vcall, [:@ident, “r”, [1534, 8]]],
+                [:var_ref, [:@ident, “r”, [1534, 8]]],
                 :==,
                 [:hash,
                  [:assoclist_from_args,
```
2024-02-20 17:33:58 +09:00
Takashi Kokubun 7177731282 YJIT: Add --yjit-perf=codegen option (#9957) 2024-02-14 09:09:14 -08:00
Takashi Kokubun 0a30fc6211 Remove obsoleted lldb_yjit.py
which clearly seems to be written for Ruby 3.1 YJIT that was not
rewritten in Rust yet. Since it has been left there as is, I don't think
anybody is actively using this script. We could add a new one if we need
it again.
2024-01-08 15:51:15 -08:00
yui-knk 7a050638b1 Introduce NODE_FILE
`__FILE__` was managed by `NODE_STR` with `String` object.
This commit introduces `NODE_FILE` and `struct rb_parser_string` so that

1. `__FILE__` is detectable from AST Node
2. Reduce dependency ruby object
2024-01-02 14:19:42 +09:00
yui-knk 97986f406b LLDB: Print actual node structure of NODE_LINE 2024-01-02 10:36:09 +09:00
Maxime Chevalier-Boisvert 3f25c08fa5 YJIT: implement call fuzzer script (#9129)
* YJIT: implement call fuzzer script

Attempt to detect bugs in YJIT call implementation.

* Add basic checks for rest, kwrest. Impprove formatting.

* Refactor call fuzzer to make it more powerful and maintainable

Compute checksum of arguments

* Fix checksum computation. Add useless locals as sussged by Alan.

* Add some useless if statements

* Add arguments of different types

* Pass object arguments as well. Force different shapes.

* Compute fuzzing time/speed

* Make use of block param
2023-12-11 12:52:47 -05:00
Nobuyoshi Nakada 5f50593b45 Fix RCLASS_EXT dump [ci skip] 2023-12-06 15:16:21 +09:00
Nobuyoshi Nakada b06b69e6dc LLDB: Dump table structs in Hash [ci skip] 2023-10-31 22:40:34 +09:00
Nobuyoshi Nakada 526292d9fe LLDB: Use expression to save the result into the history [ci skip] 2023-10-25 16:50:00 +09:00
yui-knk 7de6908a28 LLDB: Print actual node structure [ci skip] 2023-10-10 07:53:42 +09:00
Nobuyoshi Nakada ce717be188 Fix RBignum print [ci skip] 2023-09-30 02:09:29 +09:00
Nobuyoshi Nakada 9fa7ec9332 Fix RArray print [ci skip] 2023-09-30 02:09:29 +09:00
Nobuyoshi Nakada e825160257 Delete empty lines at EOF [ci skip] 2023-09-30 02:09:29 +09:00
Peter Zhu 27024004fa Fix string2cstr in lldb_cruby.py [ci skip] 2023-08-29 19:31:53 -04:00
Takashi Kokubun 5766fb7266 Fix gdb.py for C frames [ci skip] 2023-08-23 10:59:23 -07:00
Takashi Kokubun b35a222348 gdb.py: Support dumping a dummy frame [ci skip] 2023-08-03 09:55:37 -07:00
git 29fd05036b * remove trailing spaces. [ci skip] 2023-08-02 23:43:29 +00:00
Takashi Kokubun 192ed8e70f gdb.py: Add -a option to dump all frames [ci skip] 2023-08-02 16:43:12 -07:00
Takashi Kokubun 5f5cc22b5f gdb.py: Print Env based on EP instead of BP
because EP could be escaped.
2023-08-02 16:23:55 -07:00
Takashi Kokubun 8d9a25a6d7 misc/gdb.py: Allow overriding stack_size [ci skip] 2023-07-20 15:04:51 -07:00
Takashi Kokubun a7127745f1 Get rid of obsoleted __bp__ references 2023-07-20 11:55:31 -07:00
Jemma Issroff dadf17818c Add ruby_globals to lldb for easier debugging (#8041) 2023-07-07 15:55:58 -04:00
Nobuyoshi Nakada dcdc2cbd8e RString::len was moved at 7577c101ed
[ci skip]
2023-06-11 17:31:49 +09:00
Takashi Kokubun 2e14a65309 Add an example for rust-analyzer.cargo.unsetTest [ci skip] 2023-06-05 14:01:37 -07:00
Nobuyoshi Nakada e1d2dc4cfc LLDB: Fix T_ARRAY inspect [ci skip] 2023-04-10 14:12:19 +09:00
Takashi Kokubun 3a238eff88 gdb: Fix a command example
It was actually harder to type `cfp + 1`. `cfp 1` also works and is more
useful.
2023-04-01 00:23:35 -07:00
Takashi Kokubun a3074c1256 gdb: Fix specval
Somehow my gdb stopped recognizing VM_BLOCK_HANDLER_NONE (macro) today.
Just changing it to a safer code.
2023-04-01 00:19:43 -07:00
Takashi Kokubun 1da77539da gdb: Don't dump params and locals for C frames 2023-04-01 00:19:27 -07:00
Takashi Kokubun a9b6b25de5 gdb: Visualize register positions on the left 2023-03-31 09:13:37 -07:00
Takashi Kokubun 185f39df79 gdb: Always show actual values in cfp 2023-03-31 03:20:40 -07:00
Takashi Kokubun 0f368bfb7b gdb: Show params and locals in cfp 2023-03-31 03:05:30 -07:00
Takashi Kokubun 98347c251a gdb: Dump env data in cfp command 2023-03-31 02:54:56 -07:00
Takashi Kokubun 9f426491ca Put misc/gdb.py [experimental]
This works like:

```
(gdb) cfp
CFP (count=3, addr=0x7ffff73fef50):
$1 = {pc = 0x555556bf7818, sp = 0x7ffff72ff078, iseq = 0x7ffff2603270, self = 140737344619296, ep = 0x7ffff72ff058, block_code = 0x0,
  __bp__ = 0x7ffff72ff060, jit_return = 0x555558c2b000}

Stack (size=3):
[0] FIXNUM: 1
[1] T_STRING: "" bytesize:0 (embed) encoding:1 coderange:7bit $2 = (struct RString *) 0x7ffff249ea80
[2] [PROMOTED] T_OBJECT: $3 = {flags = 21474844769, klass = 140737344040416}
$4 = {0x24, 0x24, 0x24}

(gdb) cfp + 1
CFP (count=3, addr=0x7ffff73fef90):
$5 = {pc = 0x5555567a78f8, sp = 0x7ffff72ff040, iseq = 0x7ffff26032d0, self = 140737344619296, ep = 0x7ffff72ff038, block_code = 0x0,
  __bp__ = 0x7ffff72ff040, jit_return = 0x555558c2b000}

Stack (size=0):
```
2023-03-31 00:20:40 -07:00
Matt Valentine-House dabeec8034 [ci skip] LLDB: Fix rp for arrays 2023-03-30 22:38:30 +01:00
Nobuyoshi Nakada 339295dd7c Fix missing receiver [ci sip] 2023-03-31 01:16:44 +09:00
Matt Valentine-House 6eac424e5e [ci skip] Move rb_id2str into new LLDB format 2023-03-21 09:10:46 +00:00
git 2d97f87407 * remove trailing spaces. [ci skip] 2023-03-17 20:04:58 +00:00
Matt Valentine-House c7862c68eb [ci skip] Move rp helper to new LLDB format
For now, the old function still exists as `old_rp`, in order to debug
issues with this command.
2023-03-17 20:04:43 +00:00
Matt Valentine-House 220cdbeea5 [lldb] Add a print_flags command (#7358) 2023-02-22 14:26:28 -05:00
Matt Valentine-House dc715af53b Tell VSCode to debug test.rb by default [ci-skip] 2023-02-10 11:53:04 -05:00