forked from qt-creator/qt-creator
Debugger: Partially fix QV4 dumper for Qt6
Just the 64 bit case, simple types. Task-number: QTCREATORBUG-24098 Change-Id: If13e342c1fb419a026cdaa35b21483566e8494b7 Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -2769,7 +2769,10 @@ def qdump__QJSValue(d, value):
|
||||
if d.ptrSize() == 4:
|
||||
qdump_32__QJSValue(d, value)
|
||||
else:
|
||||
qdump_64__QJSValue(d, value)
|
||||
if d.qtVersion() >= 0x60000:
|
||||
qdump_64__QJSValue_6(d, value)
|
||||
else:
|
||||
qdump_64__QJSValue_5(d, value)
|
||||
|
||||
|
||||
def qdump_32__QJSValue(d, value):
|
||||
@@ -2795,8 +2798,55 @@ def qdump_32__QJSValue(d, value):
|
||||
d.putType(' ')
|
||||
d.putFields(value)
|
||||
|
||||
def qdump_64__QJSValue_6(d, value):
|
||||
dd = value.split('Q')[0]
|
||||
typ = dd >> 47
|
||||
|
||||
def qdump_64__QJSValue(d, value):
|
||||
if dd == 0:
|
||||
d.putValue('(undefined)')
|
||||
d.putType(value.type.name + ' (undefined)')
|
||||
elif typ == 5:
|
||||
d.putValue('(null)')
|
||||
d.putType(value.type.name + ' (null)')
|
||||
elif typ == 6:
|
||||
d.putValue('true' if dd & 1 else 'false')
|
||||
d.putType(value.type.name + ' (bool)')
|
||||
elif typ == 7:
|
||||
d.putValue(dd & 0xfffffffff)
|
||||
d.putType(value.type.name + ' (int)')
|
||||
elif typ > 7:
|
||||
val = d.Value(d)
|
||||
val.ldata = struct.pack('q', dd ^ 0xfffc000000000000)
|
||||
val.type = d.createType('double')
|
||||
d.putItem(val)
|
||||
d.putType(value.type.name + ' (double)')
|
||||
elif typ <= 3: # Heap
|
||||
if dd & 1: # String
|
||||
val = d.Value(d)
|
||||
val.ldata = struct.pack('q', dd & ~1)
|
||||
val.type = d.createType('@QString*')
|
||||
d.putItem(val)
|
||||
d.putType(value.type.name + ' (QString)')
|
||||
else:
|
||||
# FIXME: Arrays, Objects missing.
|
||||
val = d.split('{@QV4::Managed*}', value)[0]
|
||||
d.putItem(val)
|
||||
d.putItemCount(1)
|
||||
else:
|
||||
d.putEmptyValue()
|
||||
d.putItemCount(1)
|
||||
d.putPlainChildren(value)
|
||||
return
|
||||
|
||||
if d.isExpanded():
|
||||
with Children(d):
|
||||
with SubItem(d, '[raw]'):
|
||||
d.putValue('[0x%x]' % dd)
|
||||
d.putType(' ')
|
||||
d.putFields(value)
|
||||
|
||||
|
||||
def qdump_64__QJSValue_5(d, value):
|
||||
ns = d.qtNamespace()
|
||||
dd = value.split('Q')[0]
|
||||
if dd == 0:
|
||||
|
@@ -7741,6 +7741,7 @@ void tst_Dumpers::dumper_data()
|
||||
"v18.setProperty(\"PropA\", 1);\n"
|
||||
"v18.setProperty(\"PropB\", 2.5);\n"
|
||||
"v18.setProperty(\"PropC\", v10);\n\n"
|
||||
"#if QT_VERSION < 0x60000\n"
|
||||
"QV4::Value s11, *p11 = QJSValuePrivate::valueForData(&v11, &s11);\n"
|
||||
"QV4::Value s12, *p12 = QJSValuePrivate::valueForData(&v12, &s12);\n"
|
||||
"QV4::Value s13, *p13 = QJSValuePrivate::valueForData(&v13, &s13);\n"
|
||||
@@ -7748,10 +7749,11 @@ void tst_Dumpers::dumper_data()
|
||||
"QV4::Value s15, *p15 = QJSValuePrivate::valueForData(&v15, &s15);\n"
|
||||
"QV4::Value s16, *p16 = QJSValuePrivate::valueForData(&v16, &s16);\n"
|
||||
"QV4::Value s17, *p17 = QJSValuePrivate::valueForData(&v17, &s17);\n"
|
||||
"QV4::Value s18, *p18 = QJSValuePrivate::valueForData(&v18, &s18);\n",
|
||||
"QV4::Value s18, *p18 = QJSValuePrivate::valueForData(&v18, &s18);\n"
|
||||
"unused(&p11, &p12, &p13, &p14, &p15, &p16, &p17, &p18);\n"
|
||||
"#endif\n",
|
||||
|
||||
"&v10, &v11, &v12, &v13, &v14, &v15, &v16, &v17, &v18, "
|
||||
"&p11, &p12, &p13, &p14, &p15, &p16, &p17, &p18")
|
||||
"&v10, &v11, &v12, &v13, &v14, &v15, &v16, &v17, &v18")
|
||||
|
||||
+ QmlPrivateProfile()
|
||||
+ QtVersion(0x50000)
|
||||
|
Reference in New Issue
Block a user