Age | Commit message (Collapse) | Author | |
---|---|---|---|
2024-04-04 | NODE_LIT is not used anymore | yui-knk | |
2024-03-25 | Show the chilled status of a String [ci skip] | Nobuyoshi Nakada | |
2024-03-14 | YJIT: Let yjit_perf.py support perf with Python disabled (#10246) | Takashi Kokubun | |
* YJIT: Let yjit_perf.py support perf with Python disabled * Update yjit.md about perf * Recommend the extra interface by default | |||
2024-02-21 | Introduce NODE_REGX to manage regexp literal | yui-knk | |
2024-02-20 | [Feature #20257] Rearchitect Ripper | yui-knk | |
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-14 | YJIT: Add --yjit-perf=codegen option (#9957) | Takashi Kokubun | |
2024-01-08 | Remove obsoleted lldb_yjit.py | Takashi Kokubun | |
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-02 | Introduce NODE_FILE | yui-knk | |
`__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 | LLDB: Print actual node structure of NODE_LINE | yui-knk | |
2023-12-11 | YJIT: implement call fuzzer script (#9129) | Maxime Chevalier-Boisvert | |
* 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-06 | Fix RCLASS_EXT dump [ci skip] | Nobuyoshi Nakada | |
2023-10-31 | LLDB: Dump table structs in Hash [ci skip] | Nobuyoshi Nakada | |
2023-10-25 | LLDB: Use `expression` to save the result into the history [ci skip] | Nobuyoshi Nakada | |
2023-10-10 | LLDB: Print actual node structure [ci skip] | yui-knk | |
2023-09-30 | Fix RBignum print [ci skip] | Nobuyoshi Nakada | |
2023-09-30 | Fix RArray print [ci skip] | Nobuyoshi Nakada | |
2023-09-30 | Delete empty lines at EOF [ci skip] | Nobuyoshi Nakada | |
2023-08-29 | Fix string2cstr in lldb_cruby.py [ci skip] | Peter Zhu | |
2023-08-23 | Fix gdb.py for C frames [ci skip] | Takashi Kokubun | |
2023-08-03 | gdb.py: Support dumping a dummy frame [ci skip] | Takashi Kokubun | |
2023-08-02 | * remove trailing spaces. [ci skip] | git | |
2023-08-02 | gdb.py: Add -a option to dump all frames [ci skip] | Takashi Kokubun | |
2023-08-02 | gdb.py: Print Env based on EP instead of BP | Takashi Kokubun | |
because EP could be escaped. | |||
2023-07-20 | misc/gdb.py: Allow overriding stack_size [ci skip] | Takashi Kokubun | |
2023-07-20 | Get rid of obsoleted __bp__ references | Takashi Kokubun | |
2023-07-07 | Add ruby_globals to lldb for easier debugging (#8041) | Jemma Issroff | |
Notes: Merged-By: jemmaissroff | |||
2023-06-11 | `RString::len` was moved at 7577c101ed6452de3e72fadb43db595946acc701 | Nobuyoshi Nakada | |
[ci skip] | |||
2023-06-05 | Add an example for rust-analyzer.cargo.unsetTest [ci skip] | Takashi Kokubun | |
2023-04-10 | LLDB: Fix T_ARRAY inspect [ci skip] | Nobuyoshi Nakada | |
2023-04-01 | gdb: Fix a command example | Takashi Kokubun | |
It was actually harder to type `cfp + 1`. `cfp 1` also works and is more useful. | |||
2023-04-01 | gdb: Fix specval | Takashi Kokubun | |
Somehow my gdb stopped recognizing VM_BLOCK_HANDLER_NONE (macro) today. Just changing it to a safer code. | |||
2023-04-01 | gdb: Don't dump params and locals for C frames | Takashi Kokubun | |
2023-03-31 | gdb: Visualize register positions on the left | Takashi Kokubun | |
2023-03-31 | gdb: Always show actual values in cfp | Takashi Kokubun | |
2023-03-31 | gdb: Show params and locals in cfp | Takashi Kokubun | |
2023-03-31 | gdb: Dump env data in cfp command | Takashi Kokubun | |
2023-03-31 | Put misc/gdb.py [experimental] | Takashi Kokubun | |
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-30 | [ci skip] LLDB: Fix rp for arrays | Matt Valentine-House | |
Notes: Merged: https://github.com/ruby/ruby/pull/7632 | |||
2023-03-31 | Fix missing receiver [ci sip] | Nobuyoshi Nakada | |
2023-03-21 | [ci skip] Move rb_id2str into new LLDB format | Matt Valentine-House | |
Notes: Merged: https://github.com/ruby/ruby/pull/6448 | |||
2023-03-17 | * remove trailing spaces. [ci skip] | git | |
2023-03-17 | [ci skip] Move rp helper to new LLDB format | Matt Valentine-House | |
For now, the old function still exists as `old_rp`, in order to debug issues with this command. Notes: Merged: https://github.com/ruby/ruby/pull/7531 | |||
2023-02-22 | [lldb] Add a print_flags command (#7358) | Matt Valentine-House | |
Notes: Merged-By: peterzhu2118 <peter@peterzhu.ca> | |||
2023-02-10 | Tell VSCode to debug test.rb by default [ci-skip] | Matt Valentine-House | |
Notes: Merged: https://github.com/ruby/ruby/pull/7271 | |||
2023-02-03 | Put example VSCode configs in misc/.vscode [ci skip] | Takashi Kokubun | |
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. | |||
2022-11-01 | Ivar copy needs to happen _before_ setting the shape | Aaron Patterson | |
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-10-11 | Revert "Revert "This commit implements the Object Shapes technique in CRuby."" | Jemma Issroff | |
This reverts commit 9a6803c90b817f70389cae10d60b50ad752da48f. | |||
2022-09-30 | Revert "This commit implements the Object Shapes technique in CRuby." | Aaron Patterson | |
This reverts commit 68bc9e2e97d12f80df0d113e284864e225f771c2. | |||
2022-09-28 | This commit implements the Object Shapes technique in CRuby. | Jemma Issroff | |
Object Shapes is used for accessing instance variables and representing the "frozenness" of objects. Object instances have a "shape" and the shape represents some attributes of the object (currently which instance variables are set and the "frozenness"). Shapes form a tree data structure, and when a new instance variable is set on an object, that object "transitions" to a new shape in the shape tree. Each shape has an ID that is used for caching. The shape structure is independent of class, so objects of different types can have the same shape. For example: ```ruby class Foo def initialize # Starts with shape id 0 @a = 1 # transitions to shape id 1 @b = 1 # transitions to shape id 2 end end class Bar def initialize # Starts with shape id 0 @a = 1 # transitions to shape id 1 @b = 1 # transitions to shape id 2 end end foo = Foo.new # `foo` has shape id 2 bar = Bar.new # `bar` has shape id 2 ``` Both `foo` and `bar` instances have the same shape because they both set instance variables of the same name in the same order. This technique can help to improve inline cache hits as well as generate more efficient machine code in JIT compilers. This commit also adds some methods for debugging shapes on objects. See `RubyVM::Shape` for more details. For more context on Object Shapes, see [Feature: #18776] Co-Authored-By: Aaron Patterson <tenderlove@ruby-lang.org> Co-Authored-By: Eileen M. Uchitelle <eileencodes@gmail.com> Co-Authored-By: John Hawthorn <john@hawthorn.email> | |||
2022-09-26 | Revert this until we can figure out WB issues or remove shapes from GC | Aaron Patterson | |
Revert "* expand tabs. [ci skip]" This reverts commit 830b5b5c351c5c6efa5ad461ae4ec5085e5f0275. Revert "This commit implements the Object Shapes technique in CRuby." This reverts commit 9ddfd2ca004d1952be79cf1b84c52c79a55978f4. |