mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[ci skip][lldb] Fix array length representation with USING_RVARGC
This commit makes `rp` report the correct array length in lldb. When USING_RVARGC is set we use 7 bits of the flags to store the array len rather than the usual 2, so they need to be part of the mask when calculating the length in lldb. When calculating whether rvargc is enabled I've used the same approach that's used by `GC.using_rvargc?` which is to detect whether there is more than one size pool in the current objspace.
This commit is contained in:
parent
c34a5469c8
commit
721e012d42
Notes:
git
2022-06-17 22:15:44 +09:00
1 changed files with 2 additions and 2 deletions
|
@ -77,7 +77,7 @@ class BackTrace:
|
|||
pathobj = pathobj.Cast(self.tRArray)
|
||||
|
||||
if flags & RUBY_FL_USER1:
|
||||
len = ((flags & (RUBY_FL_USER3|RUBY_FL_USER4)) >> (RUBY_FL_USHIFT+3))
|
||||
len = ((flags & (RUBY_FL_USER3|RUBY_FL_USER4|RUBY_FL_USER5|RUBY_FL_USER6|RUBY_FL_USER7|RUBY_FL_USER8|RUBY_FL_USER9)) >> (RUBY_FL_USHIFT+3))
|
||||
ptr = pathobj.GetValueForExpressionPath("->as.ary")
|
||||
else:
|
||||
len = pathobj.GetValueForExpressionPath("->as.heap.len").GetValueAsSigned()
|
||||
|
@ -321,7 +321,7 @@ def lldb_inspect(debugger, target, result, val):
|
|||
tRArray = target.FindFirstType("struct RArray").GetPointerType()
|
||||
val = val.Cast(tRArray)
|
||||
if flags & RUBY_FL_USER1:
|
||||
len = ((flags & (RUBY_FL_USER3|RUBY_FL_USER4)) >> (RUBY_FL_USHIFT+3))
|
||||
len = ((flags & (RUBY_FL_USER3|RUBY_FL_USER4|RUBY_FL_USER5|RUBY_FL_USER6|RUBY_FL_USER7|RUBY_FL_USER8|RUBY_FL_USER9)) >> (RUBY_FL_USHIFT+3))
|
||||
ptr = val.GetValueForExpressionPath("->as.ary")
|
||||
else:
|
||||
len = val.GetValueForExpressionPath("->as.heap.len").GetValueAsSigned()
|
||||
|
|
Loading…
Reference in a new issue