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

415 Коммитов

Автор SHA1 Сообщение Дата
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
Takashi Kokubun dff03149a0
Put example VSCode configs in misc/.vscode [ci skip]
They are needed very often but it's hard to remember. I thought it'd be
useful to just copy that to /.vscode and edit that.

Usage:
cp -r misc/.vscode .vscode

Don't symlink it because you'd edit it but not want to commit it.
2023-02-03 11:01:08 -08:00
Aaron Patterson 70173a72a2
Ivar copy needs to happen _before_ setting the shape
When we copy instance variables, it is possible for the GC to be kicked
off.  The GC looks at the shape to determine what slots to mark inside
the object.  If the shape is set too soon, the GC could think that there
are more instance variables on the object than there actually are at
that moment.
2022-11-01 15:38:44 -07:00
Jemma Issroff ad63b668e2
Revert "Revert "This commit implements the Object Shapes technique in CRuby.""
This reverts commit 9a6803c90b.
2022-10-11 08:40:56 -07:00