Modified: trunk/Tools/ChangeLog (219636 => 219637)
--- trunk/Tools/ChangeLog 2017-07-18 22:40:59 UTC (rev 219636)
+++ trunk/Tools/ChangeLog 2017-07-18 22:54:00 UTC (rev 219637)
@@ -1,3 +1,30 @@
+2017-07-18 Daniel Bates <[email protected]>
+
+ lldb: Add type summary for StringView
+ https://bugs.webkit.org/show_bug.cgi?id=174637
+
+ Reviewed by Sam Weinig.
+
+ For debugging convenience, adds a pretty-print type summary for StringView. Evaluating a
+ StringView object will print output that has the form:
+
+ (WTF::StringView) $4 = { length = 2, contents = 'li' } {
+ m_characters = 0x000000011b57abb5 "eeeeeefjh0n"
+ m_length = 2
+ m_is8Bit = true
+ m_underlyingString = 0x0000614000000a90
+ }
+
+ * lldb/lldb_webkit.py:
+ (__lldb_init_module): Use WTFStringView_SummaryProvider to format StringView types.
+ (WTFStringView_SummaryProvider):
+ (WTFStringViewProvider):
+ (WTFStringViewProvider.__init__):
+ (WTFStringViewProvider.is_8bit): Access field StringView.m_is8Bit.
+ (WTFStringViewProvider.get_length): Access field StringView.m_length.
+ (WTFStringViewProvider.get_characters): Access field StringView.m_characters.
+ (WTFStringViewProvider.to_string): Returns the string represented by the StringView.
+
2017-07-18 Andy Estes <[email protected]>
[Xcode] Enable CLANG_WARN_NON_LITERAL_NULL_CONVERSION
Modified: trunk/Tools/lldb/lldb_webkit.py (219636 => 219637)
--- trunk/Tools/lldb/lldb_webkit.py 2017-07-18 22:40:59 UTC (rev 219636)
+++ trunk/Tools/lldb/lldb_webkit.py 2017-07-18 22:54:00 UTC (rev 219637)
@@ -37,6 +37,7 @@
debugger.HandleCommand('command script add -f lldb_webkit.btjs btjs')
debugger.HandleCommand('type summary add --expand -F lldb_webkit.WTFString_SummaryProvider WTF::String')
debugger.HandleCommand('type summary add --expand -F lldb_webkit.WTFStringImpl_SummaryProvider WTF::StringImpl')
+ debugger.HandleCommand('type summary add --expand -F lldb_webkit.WTFStringView_SummaryProvider WTF::StringView')
debugger.HandleCommand('type summary add --expand -F lldb_webkit.WTFAtomicString_SummaryProvider WTF::AtomicString')
debugger.HandleCommand('type summary add --expand -F lldb_webkit.WTFVector_SummaryProvider -x "WTF::Vector<.+>$"')
debugger.HandleCommand('type summary add --expand -F lldb_webkit.WTFHashTable_SummaryProvider -x "WTF::HashTable<.+>$"')
@@ -48,6 +49,7 @@
debugger.HandleCommand('type summary add -F lldb_webkit.WebCoreLayoutPoint_SummaryProvider WebCore::LayoutPoint')
debugger.HandleCommand('type summary add -F lldb_webkit.WebCoreURL_SummaryProvider WebCore::URL')
+
def WTFString_SummaryProvider(valobj, dict):
provider = WTFStringProvider(valobj, dict)
return "{ length = %d, contents = '%s' }" % (provider.get_length(), provider.to_string())
@@ -60,6 +62,11 @@
return "{ length = %d, is8bit = %d, contents = '%s' }" % (provider.get_length(), provider.is_8bit(), provider.to_string())
+def WTFStringView_SummaryProvider(valobj, dict):
+ provider = WTFStringViewProvider(valobj, dict)
+ return "{ length = %d, contents = '%s' }" % (provider.get_length(), provider.to_string())
+
+
def WTFAtomicString_SummaryProvider(valobj, dict):
return WTFString_SummaryProvider(valobj.GetChildMemberWithName('m_string'), dict)
@@ -254,6 +261,30 @@
return self.valobj.GetValueAsUnsigned() != 0
+class WTFStringViewProvider:
+ def __init__(self, valobj, dict):
+ self.valobj = valobj
+
+ def is_8bit(self):
+ return bool(self.valobj.GetChildMemberWithName('m_is8Bit').GetValueAsUnsigned(0))
+
+ def get_length(self):
+ return self.valobj.GetChildMemberWithName('m_length').GetValueAsUnsigned(0)
+
+ def get_characters(self):
+ return self.valobj.GetChildMemberWithName('m_characters')
+
+ def to_string(self):
+ error = lldb.SBError()
+
+ if not self.get_characters() or not self.get_length():
+ return u""
+
+ if self.is_8bit():
+ return lstring_to_string(self.get_characters(), error, self.get_length())
+ return ustring_to_string(self.get_characters(), error, self.get_length())
+
+
class WTFStringProvider:
def __init__(self, valobj, dict):
self.valobj = valobj