LibWasm: Jump to the default label in br_table with negative values

Also adds a forgotten Wasm::Printer implementation for printing table
branch arguments.
This commit is contained in:
Ali Mohammad Pur 2021-07-06 13:01:28 +04:30 committed by Ali Mohammad Pur
commit d2212a1f51
Notes: sideshowbarker 2024-07-18 10:18:29 +09:00
2 changed files with 11 additions and 5 deletions

View file

@ -617,10 +617,11 @@ void BytecodeInterpreter::interpret(Configuration& configuration, InstructionPoi
TRAP_IF_NOT(entry.has<Value>());
auto maybe_i = entry.get<Value>().to<i32>();
TRAP_IF_NOT(maybe_i.has_value());
TRAP_IF_NOT(maybe_i.value() >= 0);
size_t i = *maybe_i;
if (i < arguments.labels.size())
return branch_to_label(configuration, arguments.labels[i]);
if (0 <= *maybe_i) {
size_t i = *maybe_i;
if (i < arguments.labels.size())
return branch_to_label(configuration, arguments.labels[i]);
}
return branch_to_label(configuration, arguments.default_);
}
case Instructions::call.value(): {