@@ -72,7 +72,7 @@ class WasmTranslation::TranslatorImpl::RawTranslator
7272
7373class WasmTranslation ::TranslatorImpl::DisassemblingTranslator
7474 : public WasmTranslation::TranslatorImpl {
75- using OffsetTable = std::vector<std::tuple< uint32_t , int , int >> ;
75+ using OffsetTable = debug::WasmDisassembly::OffsetTable ;
7676
7777 public:
7878 DisassemblingTranslator (Isolate *isolate, Local<Object> script)
@@ -88,17 +88,17 @@ class WasmTranslation::TranslatorImpl::DisassemblingTranslator
8888 unsigned right = static_cast <unsigned >(offset_table.size ()); // exclusive
8989 while (right - left > 1 ) {
9090 unsigned mid = (left + right) / 2 ;
91- if (std::get< 0 >( offset_table[mid]) <= byte_offset) {
91+ if (offset_table[mid]. byte_offset <= byte_offset) {
9292 left = mid;
9393 } else {
9494 right = mid;
9595 }
9696 }
9797
9898 loc->script_id = GetFakeScriptId (loc);
99- if (std::get< 0 >( offset_table[left]) == byte_offset) {
100- loc->line = std::get< 1 >( offset_table[left]) ;
101- loc->column = std::get< 2 >( offset_table[left]) ;
99+ if (offset_table[left]. byte_offset == byte_offset) {
100+ loc->line = offset_table[left]. line ;
101+ loc->column = offset_table[left]. column ;
102102 } else {
103103 loc->line = 0 ;
104104 loc->column = 0 ;
@@ -117,9 +117,8 @@ class WasmTranslation::TranslatorImpl::DisassemblingTranslator
117117 while (right - left > 1 ) {
118118 unsigned mid = (left + right) / 2 ;
119119 auto &entry = (*reverse_table)[mid];
120- if (std::get<1 >(entry) < loc->line ||
121- (std::get<1 >(entry) == loc->line &&
122- std::get<2 >(entry) <= loc->column )) {
120+ if (entry.line < loc->line ||
121+ (entry.line == loc->line && entry.column <= loc->column )) {
123122 left = mid;
124123 } else {
125124 right = mid;
@@ -129,12 +128,12 @@ class WasmTranslation::TranslatorImpl::DisassemblingTranslator
129128 int found_byte_offset = 0 ;
130129 // If we found an exact match, use it. Otherwise check whether the next
131130 // bigger entry is still in the same line. Report that one then.
132- if (std::get< 1 >(( *reverse_table)[left]) == loc->line &&
133- std::get< 2 >(( *reverse_table)[left]) == loc->column ) {
134- found_byte_offset = std::get< 0 >(( *reverse_table)[left]) ;
131+ if (( *reverse_table)[left]. line == loc->line &&
132+ ( *reverse_table)[left]. column == loc->column ) {
133+ found_byte_offset = ( *reverse_table)[left]. byte_offset ;
135134 } else if (left + 1 < reverse_table->size () &&
136- std::get< 1 >(( *reverse_table)[left + 1 ]) == loc->line ) {
137- found_byte_offset = std::get< 0 >(( *reverse_table)[left + 1 ]) ;
135+ ( *reverse_table)[left + 1 ]. line == loc->line ) {
136+ found_byte_offset = ( *reverse_table)[left + 1 ]. byte_offset ;
138137 }
139138
140139 v8::Isolate *isolate = loc->translation ->isolate_ ;
@@ -172,17 +171,19 @@ class WasmTranslation::TranslatorImpl::DisassemblingTranslator
172171 if (it != offset_tables_.end ()) return it->second ;
173172
174173 v8::Isolate *isolate = loc->translation ->isolate_ ;
175- std::pair<std::string, OffsetTable> disassembly =
174+ debug::WasmDisassembly disassembly_result =
176175 DebugInterface::DisassembleWasmFunction (isolate, script_.Get (isolate),
177176 func_index);
178177
179178 it = offset_tables_
180- .insert (std::make_pair (func_index, std::move (disassembly.second )))
179+ .insert (std::make_pair (func_index,
180+ std::move (disassembly_result.offset_table )))
181181 .first ;
182182
183183 String16 fake_script_id = GetFakeScriptId (loc);
184184 String16 fake_script_url = GetFakeScriptUrl (loc);
185- String16 source (disassembly.first .data (), disassembly.first .length ());
185+ String16 source (disassembly_result.disassembly .data (),
186+ disassembly_result.disassembly .length ());
186187 std::unique_ptr<V8DebuggerScript> fake_script (new V8DebuggerScript (
187188 fake_script_id, std::move (fake_script_url), source));
188189
@@ -202,13 +203,10 @@ class WasmTranslation::TranslatorImpl::DisassemblingTranslator
202203
203204 OffsetTable reverse_table = it->second ;
204205 // Order by line, column, then byte offset.
205- auto cmp = [](std::tuple<uint32_t , int , int > el1,
206- std::tuple<uint32_t , int , int > el2) {
207- if (std::get<1 >(el1) != std::get<1 >(el2))
208- return std::get<1 >(el1) < std::get<1 >(el2);
209- if (std::get<2 >(el1) != std::get<2 >(el2))
210- return std::get<2 >(el1) < std::get<2 >(el2);
211- return std::get<0 >(el1) < std::get<0 >(el2);
206+ auto cmp = [](OffsetTable::value_type el1, OffsetTable::value_type el2) {
207+ if (el1.line != el2.line ) return el1.line < el2.line ;
208+ if (el1.column != el2.column ) return el1.column < el2.column ;
209+ return el1.byte_offset < el2.byte_offset ;
212210 };
213211 std::sort (reverse_table.begin (), reverse_table.end (), cmp);
214212
0 commit comments