-
Notifications
You must be signed in to change notification settings - Fork 0
/
debug.natvis
129 lines (127 loc) · 6.12 KB
/
debug.natvis
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="nlohmann::basic_json<*>">
<DisplayString Condition="m_type == nlohmann::detail::value_t::null">null</DisplayString>
<DisplayString Condition="m_type == nlohmann::detail::value_t::object">{*(m_value.object)}</DisplayString>
<DisplayString Condition="m_type == nlohmann::detail::value_t::array">{*(m_value.array)}</DisplayString>
<DisplayString Condition="m_type == nlohmann::detail::value_t::string">{*(m_value.string)}</DisplayString>
<DisplayString Condition="m_type == nlohmann::detail::value_t::boolean">{m_value.boolean}</DisplayString>
<DisplayString Condition="m_type == nlohmann::detail::value_t::number_integer">{m_value.number_integer}</DisplayString>
<DisplayString Condition="m_type == nlohmann::detail::value_t::number_unsigned">{m_value.number_unsigned}</DisplayString>
<DisplayString Condition="m_type == nlohmann::detail::value_t::number_float">{m_value.number_float}</DisplayString>
<DisplayString Condition="m_type == nlohmann::detail::value_t::discarded">discarded</DisplayString>
<Expand>
<ExpandedItem Condition="m_type == nlohmann::detail::value_t::object">
*(m_value.object),view(simple)
</ExpandedItem>
<ExpandedItem Condition="m_type == nlohmann::detail::value_t::array">
*(m_value.array),view(simple)
</ExpandedItem>
</Expand>
</Type>
<Type Name="std::pair<*, nlohmann::basic_json<*>>" IncludeView="MapHelper">
<DisplayString>{second}</DisplayString>
<Expand>
<ExpandedItem>second</ExpandedItem>
</Expand>
</Type>
<Type Name="std::shared_ptr<*>">
<DisplayString Condition="_Ptr == 0">empty</DisplayString>
<DisplayString Condition="_Ptr != 0">{*_Ptr}</DisplayString>
<Expand>
<ExpandedItem>_Ptr</ExpandedItem>
</Expand>
</Type>
<Type Name="INodeListImpl<*,*,*>">
<Expand>
<CustomListItems MaxItemsPerView="5000" ExcludeView="Test">
<Variable Name="iter" InitialValue="sentinel.next" />
<Variable Name="end" InitialValue="&sentinel" />
<Loop>
<Break Condition="iter == end"/>
<Item>*(($T1 *)(iter))</Item>
<Exec>iter = iter->next</Exec>
</Loop>
</CustomListItems>
</Expand>
</Type>
<Type Name="NodeIter<*,*>">
<Expand>
<Item Name="[cursor]">cursor</Item>
<Item Name="[value]">($T2*)(cursor)</Item>
</Expand>
</Type>
<Type Name="Use">
<Expand>
<ExpandedItem>parent</ExpandedItem>
<!-- <Item Name="[user]">parent</Item>-->
<!-- <Item Name="[value]">value</Item>-->
<Item Name="[next]">next</Item>
</Expand>
</Type>
<Type Name="NodeParent<*,*,*>" Inheritable="false">
<Expand>
<ExpandedItem>list</ExpandedItem>
</Expand>
</Type>
<Type Name="Instruction">
<DisplayString>{nameForDebug} = {opcode}({numOperands}) </DisplayString>
<Expand>
<Item Name="[opcode]">opcode</Item>
<Item Name="[parent]">parent</Item>
<Item Name="[users]">users</Item>
<IndexListItems>
<Size>numOperands</Size>
<ValueNode>*(trailingOperands._Mypair._Myval2[$i].value)</ValueNode>
</IndexListItems>
</Expand>
</Type>
<Type Name="PhiInst">
<DisplayString>{nameForDebug} = {opcode}({numOperands}) </DisplayString>
<Expand>
<Item Name="[opcode]">opcode</Item>
<Item Name="[parent]">parent</Item>
<Item Name="[users]">users</Item>
<IndexListItems>
<Size>numOperands</Size>
<ValueNode>*(trailingOperands._Mypair._Myval2[$i].value)</ValueNode>
</IndexListItems>
<IndexListItems>
<Size>numOperands</Size>
<ValueNode>*(incomingBlocks._Mypair._Myval2[$i].value)</ValueNode>
</IndexListItems>
</Expand>
</Type>
<Type Name="PatternNode" Inheritable="true">
<DisplayString>{opcode}({numOperands}) </DisplayString>
<Expand>
<Item Name="[opcode]">(Pattern::Opcode) opcode</Item>
<Item Name="[numOperands]">numOperands</Item>
<ExpandedItem Condition="opcode == Pattern::Address">*(Address*)(this)</ExpandedItem>
<ExpandedItem Condition="opcode == Pattern::BlockAddress">*(BlockAddress*)(this)</ExpandedItem>
<ExpandedItem Condition="opcode == Pattern::Constant">*(ConstantNode*)(this)</ExpandedItem>
<ExpandedItem Condition="opcode == Pattern::PhyRegister">*(PhyRegNode*)(this)</ExpandedItem>
<ExpandedItem Condition="opcode == Pattern::VirRegister">*(VirRegNode*)(this)</ExpandedItem>
<ArrayItems>
<Size>numOperands</Size>
<ValuePointer>((PatternUse *)(this) - numOperands)</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="PatternUse">
<Expand>
<Item Name="[User]">parent</Item>
<ExpandedItem>*value</ExpandedItem>
<!-- <Item Name="[value]">value</Item>-->
</Expand>
</Type>
<Type Name="Register">
<DisplayString Condition="(regId == 0xffffffff)">{{ Invalid }}</DisplayString>
<DisplayString Condition="((regId & 0xffff0000) == 0x10000)">{{ VirReg: {regId & 0xffff} }}</DisplayString>
<DisplayString Condition="((regId & 0x10000) == 0)">{{ PhyReg:{regId & 0xffff} }}</DisplayString>
<Expand>
<Item Name="[RegNo]">regId & 0xffff</Item>
<Item Name="[IsVirReg]">((regId & 0x10000) == 0x10000)</Item>
</Expand>
</Type>
</AutoVisualizer>