diff options
author | Peter Zhu <peter@peterzhu.ca> | 2021-07-19 15:40:00 -0400 |
---|---|---|
committer | Peter Zhu <peter@peterzhu.ca> | 2021-08-23 09:15:42 -0400 |
commit | b2e2cf2dedd104acad8610721db5e4d341f135ef (patch) | |
tree | 237a9acd38706f4490451d9827e784799221b9cd /misc | |
parent | 48ff7a9f3e47bffb3e4d067a12ba9b936261caa0 (diff) |
[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>
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/4680
Diffstat (limited to 'misc')
-rwxr-xr-x | misc/lldb_cruby.py | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/misc/lldb_cruby.py b/misc/lldb_cruby.py index 1dbdc03eee..8461eea8b3 100755 --- a/misc/lldb_cruby.py +++ b/misc/lldb_cruby.py @@ -533,14 +533,15 @@ class HeapPageIter: self.target = target self.start = page.GetChildMemberWithName('start').GetValueAsUnsigned(); self.num_slots = page.GetChildMemberWithName('total_slots').unsigned + self.slot_size = page.GetChildMemberWithName('size_pool').GetChildMemberWithName('slot_size').unsigned self.counter = 0 self.tRBasic = target.FindFirstType("struct RBasic") self.tRValue = target.FindFirstType("struct RVALUE") def is_valid(self): heap_page_header_size = self.target.FindFirstType("struct heap_page_header").GetByteSize() - rvalue_size = self.tRValue.GetByteSize() - heap_page_obj_limit = int((HEAP_PAGE_SIZE - heap_page_header_size) / rvalue_size) + rvalue_size = self.slot_size + heap_page_obj_limit = int((HEAP_PAGE_SIZE - heap_page_header_size) / self.slot_size) return (heap_page_obj_limit - 1) <= self.num_slots <= heap_page_obj_limit @@ -549,7 +550,7 @@ class HeapPageIter: def __next__(self): if self.counter < self.num_slots: - obj_addr_i = self.start + (self.counter * self.tRValue.GetByteSize()) + obj_addr_i = self.start + (self.counter * self.slot_size) obj_addr = lldb.SBAddress(obj_addr_i, self.target) slot_info = (self.counter, obj_addr_i, self.target.CreateValueFromAddress("object", obj_addr, self.tRBasic)) self.counter += 1 |