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

57 Коммитов

Автор SHA1 Сообщение Дата
Nobuyoshi Nakada b74bf8dd88
Follow up the RString change [ci skip]
Since 46b66eb9e8, already `ary` has
been enclosed in `embed`.
2021-10-28 08:58:59 +09:00
Peter Zhu a5b6598192 [Feature #18239] Implement VWA for strings
This commit adds support for embedded strings with variable capacity and
uses Variable Width Allocation to allocate strings.
2021-10-25 13:26:23 -04:00
Nobuyoshi Nakada bbf98b572e
lldb: Get rid of error at unpreserved encodings [ci skip] 2021-09-29 22:31:24 +09:00
Nobuyoshi Nakada 545e01645f
lldb: Show encoding of String [ci skip] 2021-09-28 20:03:54 +09:00
Peter Zhu 62bc4a9420 [Feature #18045] Implement size classes for GC
This commits implements size classes in the GC for the Variable Width
Allocation feature. Unless `USE_RVARGC` compile flag is set, only a
single size class is created, maintaining current behaviour. See the
redmine ticket for more details.

Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org>
2021-08-25 09:28:21 -04:00
Peter Zhu c08d4067be [Feature #18045] Remove T_PAYLOAD
This commit removes T_PAYLOAD since the new VWA implementation no longer
requires T_PAYLOAD types.

Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org>
2021-08-25 09:28:21 -04:00
Peter Zhu eddd369e73 Revert "[Feature #18045] Implement size classes for GC"
This reverts commits 48ff7a9f3e
and b2e2cf2ded because it is causing
crashes in SPARC solaris and i386 debian.
2021-08-23 10:54:53 -04:00
Peter Zhu b2e2cf2ded [Feature #18045] Implement size classes for GC
This commits implements size classes in the GC for the Variable Width
Allocation feature. Unless `USE_RVARGC` compile flag is set, only a
single size class is created, maintaining current behaviour. See the
redmine ticket for more details.

Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org>
2021-08-23 09:15:42 -04:00
Peter Zhu 48ff7a9f3e [Feature #18045] Remove T_PAYLOAD
This commit removes T_PAYLOAD since the new VWA implementation no longer
requires T_PAYLOAD types.

Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org>
2021-08-23 09:15:42 -04:00
Nobuyoshi Nakada 91c542ad05
lldb_cruby.py: push non-flonum float to history [ci skip] 2021-06-04 09:24:57 +09:00
Nobuyoshi Nakada 3c57c087ec
lldb_cruby.py: fix non-flonum float inspection [ci skip] 2021-06-04 09:12:34 +09:00
Aaron Patterson 45ddefb14a
add rb_id2str to lldb debugging scripts 2021-05-24 16:02:42 -07:00
Peter Zhu 578e6416e7 lldb: convert heap_page_obj_limit from a float to int 2021-05-06 12:54:43 -04:00
Matt Valentine-House b0b7751f3b lldb: teach rp about T_PAYLOAD 2021-05-06 09:18:17 -04:00
Matt Valentine-House 5a451c4b1f lldb: Warn when attempting to dump invalid pages 2021-04-29 15:13:34 -04:00
Matt Valentine-House 1c1c91535c lldb: highlight the slot when using dump_page_rvalue 2021-04-27 10:58:49 -04:00
Matt Valentine-House f64bb9fc84 lldb: dump_page_rvalue - dump a heap page containing an RVALUE
rather than having to do this in a two step process:

1. heap_page obj
2. dump_page $2 (or whatever lldb variable heap_page set)

we can now just

dump_page_rvalue obj
2021-04-27 10:58:49 -04:00
Matt Valentine-House c752a35816 lldb: Add Freelist Index to dump_page output 2021-04-27 10:58:49 -04:00
Matt Valentine-House a47697aa44 LLDB: Introduce dump_page helper
This dumps out object type information for every object on a page in the
form:

bits [LM R ] T_CLASS    [389]: Addr: 0x1007ebcf0 (flags: 0x100000062)
2021-03-16 08:19:37 -07:00
Matt Valentine-House 1dca333599 LLDB: Extract a dump_bits function from rp
that dumps the heap page bitmaps for a slot
2021-03-16 08:19:37 -07:00
Aaron Patterson 8a06af5f88
Mostly recover a Ruby stack trace from a core file
Update the lldb script so it can mostly recover a Ruby stack trace from
a core file.  It's still missing line numbers and dealing with CFUNCs,
but you use it like this:

```
(lldb) rbbt ec
rb_control_frame_t TYPE
0x7f6fd6555fa0     EVAL   ./bootstraptest/runner.rb error!!
0x7f6fd6555f68     METHOD ./bootstraptest/runner.rb main
0x7f6fd6555f30     METHOD ./bootstraptest/runner.rb in_temporary_working_directory
0x7f6fd6555ef8     METHOD /home/aaron/git/ruby/lib/tmpdir.rb mktmpdir
0x7f6fd6555ec0     BLOCK  ./bootstraptest/runner.rb block in in_temporary_working_directory
0x7f6fd6555e88     CFUNC
0x7f6fd6555e50     BLOCK  ./bootstraptest/runner.rb block (2 levels) in in_temporary_working_directory
0x7f6fd6555e18     BLOCK  ./bootstraptest/runner.rb block in main
0x7f6fd6555de0     METHOD ./bootstraptest/runner.rb exec_test
0x7f6fd6555da8     CFUNC
0x7f6fd6555d70     BLOCK  ./bootstraptest/runner.rb block in exec_test
0x7f6fd6555d38     CFUNC
0x7f6fd6555d00     TOP    /home/aaron/git/ruby/bootstraptest/test_insns.rb error!!
0x7f6fd6555cc8     CFUNC
0x7f6fd6555c90     BLOCK  /home/aaron/git/ruby/bootstraptest/test_insns.rb block in <top (required)>
0x7f6fd6555c58     METHOD ./bootstraptest/runner.rb assert_equal
0x7f6fd6555c20     METHOD ./bootstraptest/runner.rb assert_check
0x7f6fd6555be8     METHOD ./bootstraptest/runner.rb show_progress
0x7f6fd6555bb0     METHOD ./bootstraptest/runner.rb with_stderr
0x7f6fd6555b78     BLOCK  ./bootstraptest/runner.rb block in show_progress
0x7f6fd6555b40     BLOCK  ./bootstraptest/runner.rb block in assert_check
0x7f6fd6555b08     METHOD ./bootstraptest/runner.rb get_result_string
0x7f6fd6555ad0     METHOD ./bootstraptest/runner.rb make_srcfile
0x7f6fd6555a98     CFUNC
0x7f6fd6555a60     BLOCK  ./bootstraptest/runner.rb block in make_srcfile
```

Getting the main execution context is difficult (it is stored in a
thread local) so for now you must supply an ec and this will make a
backtrace
2020-10-14 16:43:53 -07:00
Aaron Patterson 0a3099ae40
bit table information when printing an object 2020-09-28 16:45:19 -07:00
Aaron Patterson 3fb255625b
add lldb functions for getting the heap page / heap page body 2020-09-02 16:45:54 -07:00
Aaron Patterson 933035d303
support T_MATCH in lldb 2020-09-02 16:45:13 -07:00
Aaron Patterson 5483bf8fa4
add T_ZOMBIE support to lldb scripts 2020-08-27 09:00:19 -07:00
Nobuyoshi Nakada 6aa3aaac05
lldb_cruby.py: show the sign of Bignum [ci skip] 2020-06-23 15:56:59 +09:00
Aaron Patterson 7574b836a9
Add T_IMEMO support to lldb
I'm trying to find why a reference to an IMEMO object isn't being
updated
2020-05-07 15:54:00 -07:00
Aaron Patterson 56c6d520a0
Add T_MOVED support to lldb 2020-05-07 14:19:45 -07:00
Nobuyoshi Nakada b5174beae6
lldb_cruby.py: fixed empty string dump [ci skip] 2020-04-26 12:53:11 +09:00
Nobuyoshi Nakada 86461fc28c
lldb_cruby.py: improved dump of Symbol
[ci skip]
2019-11-25 16:53:27 +09:00
Nobuyoshi Nakada 9af52c0d09
lldb_cruby.py: fixed dump of embedded RArray
[ci skip]
2019-11-25 09:21:27 +09:00
Nobuyoshi Nakada 8439caab0a
Refined `rp` output [ci skip]
So that the result structure can be accessed as `$number`
variables, not a mere `VALUE`.
2019-10-24 23:38:27 +09:00
Nobuyoshi Nakada e078352a78
lldb_cruby.py: fixed inspecting string [ci skip]
Show the size of String.

To see the whole contents even after NUL char:

```
(lldb) rp str
(const char [5]) $1 = "x"
(lldb) memory read -s1 --format x --count `sizeof($1)` -- &$1                                                                                          0x1010457a8: 0x78 0x00 0x61 0x61 0x61
```
2019-10-09 09:08:21 +09:00
Nobuyoshi Nakada 98131f148f
lldb_cruby.py: fixed embedded string ptr [ci skip]
Use GetLocation to get the address of embedded array.
2019-10-09 09:08:09 +09:00
Romain Tartière 1c999952e7 Resolve unused local variable reported by LGTM
LGTM reports that the value assigned to local variable 'shared' is never
used:
f319a5d064/files/misc/lldb_cruby.py (x6512c0281581a470):1

This problem was introduced in by the refactoring that took place in
7c496b6624.
2019-10-03 13:44:52 +09:00
Nobuyoshi Nakada 112c9f1430
lldb_inspect: removed unnecessary newline and `end` option 2019-09-25 16:58:24 +09:00
Nobuyoshi Nakada c5a97d995a
misc/lldb_cruby.py: update for python3 [ci skip]
lldb module bundled with Xcode is for Python 3 now.
2019-09-24 21:05:29 +09:00
Nobuyoshi Nakada 0526366033
misc/lldb_cruby.py: removed unused module `commands` [ci skip] 2019-09-24 20:59:47 +09:00
Aaron Patterson bdc36094e3
Add some NODE information for lldb
Just adds a conditional in the lldb scripts so we can more easily debug
NODE objects.
2019-08-29 14:51:34 -07:00
Aaron Patterson 5f05851ae3
add FROZEN to lldb debug output 2019-05-09 12:27:44 -07:00
tenderlove ad67845ba8 Fix typo in lldb script
Also fix tests

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67419 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-02 21:13:22 +00:00
tenderlove f0f6615a25 add regex support to lldb debug output
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67407 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-01 22:53:34 +00:00
nobu 3a9c427908 lldb_cruby.py: T_COMPLEX support [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65254 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-20 17:19:37 +00:00
nobu fa78eb2fcf lldb_cruby.py: T_RATIONAL support [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65244 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-20 12:48:07 +00:00
nobu 103a0b9869 lldb_rp: support Symbol [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64914 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-04 14:00:39 +00:00
nobu cdb312ab31 lldb_rp: support T_CLASS,T_MODULE,T_ICLASS [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64909 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-03 09:54:25 +00:00
nobu 8885389bd3 lldb_rp: use append_command_output [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64908 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-03 09:54:21 +00:00
nobu fb35457f77 lldb_rp: support more types [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64903 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-03 04:27:19 +00:00
nobu 7c496b6624 lldb_rp: fix the order of results [ci skip]
The outputs from HandleCommand are printed immediately before print
statements.  Fix the order in `result` by capturing the outputs.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64902 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-03 04:07:16 +00:00
nobu 3cfe3051c5 lldb_rp: reload debug info if not loaded yet [ci skip]
As debug infos in shared libraries are not accessible until loaded,
retry loading the infos when needed.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64901 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-02 19:14:24 +00:00