Index: src/inspector/wasm-translation.cc |
diff --git a/src/inspector/wasm-translation.cc b/src/inspector/wasm-translation.cc |
index 0775460ae715f9b3bcfabcf539a0f7e77fa3938e..61f4f34a36a699cfb4aa9421ed3ffe2cecc32746 100644 |
--- a/src/inspector/wasm-translation.cc |
+++ b/src/inspector/wasm-translation.cc |
@@ -72,7 +72,7 @@ class WasmTranslation::TranslatorImpl::RawTranslator |
class WasmTranslation::TranslatorImpl::DisassemblingTranslator |
: public WasmTranslation::TranslatorImpl { |
- using OffsetTable = std::vector<std::tuple<uint32_t, int, int>>; |
+ using OffsetTable = debug::WasmDisassembly::OffsetTable; |
public: |
DisassemblingTranslator(Isolate *isolate, Local<Object> script) |
@@ -88,7 +88,7 @@ class WasmTranslation::TranslatorImpl::DisassemblingTranslator |
unsigned right = static_cast<unsigned>(offset_table.size()); // exclusive |
while (right - left > 1) { |
unsigned mid = (left + right) / 2; |
- if (std::get<0>(offset_table[mid]) <= byte_offset) { |
+ if (offset_table[mid].byte_offset <= byte_offset) { |
left = mid; |
} else { |
right = mid; |
@@ -96,9 +96,9 @@ class WasmTranslation::TranslatorImpl::DisassemblingTranslator |
} |
loc->script_id = GetFakeScriptId(loc); |
- if (std::get<0>(offset_table[left]) == byte_offset) { |
- loc->line = std::get<1>(offset_table[left]); |
- loc->column = std::get<2>(offset_table[left]); |
+ if (offset_table[left].byte_offset == byte_offset) { |
+ loc->line = offset_table[left].line; |
+ loc->column = offset_table[left].column; |
} else { |
loc->line = 0; |
loc->column = 0; |
@@ -117,9 +117,8 @@ class WasmTranslation::TranslatorImpl::DisassemblingTranslator |
while (right - left > 1) { |
unsigned mid = (left + right) / 2; |
auto &entry = (*reverse_table)[mid]; |
- if (std::get<1>(entry) < loc->line || |
- (std::get<1>(entry) == loc->line && |
- std::get<2>(entry) <= loc->column)) { |
+ if (entry.line < loc->line || |
+ (entry.line == loc->line && entry.column <= loc->column)) { |
left = mid; |
} else { |
right = mid; |
@@ -129,12 +128,12 @@ class WasmTranslation::TranslatorImpl::DisassemblingTranslator |
int found_byte_offset = 0; |
// If we found an exact match, use it. Otherwise check whether the next |
// bigger entry is still in the same line. Report that one then. |
- if (std::get<1>((*reverse_table)[left]) == loc->line && |
- std::get<2>((*reverse_table)[left]) == loc->column) { |
- found_byte_offset = std::get<0>((*reverse_table)[left]); |
+ if ((*reverse_table)[left].line == loc->line && |
+ (*reverse_table)[left].column == loc->column) { |
+ found_byte_offset = (*reverse_table)[left].byte_offset; |
} else if (left + 1 < reverse_table->size() && |
- std::get<1>((*reverse_table)[left + 1]) == loc->line) { |
- found_byte_offset = std::get<0>((*reverse_table)[left + 1]); |
+ (*reverse_table)[left + 1].line == loc->line) { |
+ found_byte_offset = (*reverse_table)[left + 1].byte_offset; |
} |
v8::Isolate *isolate = loc->translation->isolate_; |
@@ -172,17 +171,19 @@ class WasmTranslation::TranslatorImpl::DisassemblingTranslator |
if (it != offset_tables_.end()) return it->second; |
v8::Isolate *isolate = loc->translation->isolate_; |
- std::pair<std::string, OffsetTable> disassembly = |
+ debug::WasmDisassembly disassembly_result = |
DebugInterface::DisassembleWasmFunction(isolate, script_.Get(isolate), |
func_index); |
it = offset_tables_ |
- .insert(std::make_pair(func_index, std::move(disassembly.second))) |
+ .insert(std::make_pair(func_index, |
+ std::move(disassembly_result.offset_table))) |
.first; |
String16 fake_script_id = GetFakeScriptId(loc); |
String16 fake_script_url = GetFakeScriptUrl(loc); |
- String16 source(disassembly.first.data(), disassembly.first.length()); |
+ String16 source(disassembly_result.disassembly.data(), |
+ disassembly_result.disassembly.length()); |
std::unique_ptr<V8DebuggerScript> fake_script(new V8DebuggerScript( |
fake_script_id, std::move(fake_script_url), source)); |
@@ -202,13 +203,10 @@ class WasmTranslation::TranslatorImpl::DisassemblingTranslator |
OffsetTable reverse_table = it->second; |
// Order by line, column, then byte offset. |
- auto cmp = [](std::tuple<uint32_t, int, int> el1, |
- std::tuple<uint32_t, int, int> el2) { |
- if (std::get<1>(el1) != std::get<1>(el2)) |
- return std::get<1>(el1) < std::get<1>(el2); |
- if (std::get<2>(el1) != std::get<2>(el2)) |
- return std::get<2>(el1) < std::get<2>(el2); |
- return std::get<0>(el1) < std::get<0>(el2); |
+ auto cmp = [](OffsetTable::value_type el1, OffsetTable::value_type el2) { |
+ if (el1.line != el2.line) return el1.line < el2.line; |
+ if (el1.column != el2.column) return el1.column < el2.column; |
+ return el1.byte_offset < el2.byte_offset; |
}; |
std::sort(reverse_table.begin(), reverse_table.end(), cmp); |