LibWasm: Use AllocatingMemoryStream around Wasm::Printer

This commit is contained in:
Tim Schumacher 2023-01-09 12:06:13 +01:00 committed by Linus Groh
parent 7d4a30af56
commit 52cb066cae
Notes: sideshowbarker 2024-07-17 01:28:15 +09:00
2 changed files with 12 additions and 6 deletions

View file

@ -4,6 +4,7 @@
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibCore/MemoryStream.h>
#include <LibWasm/AbstractMachine/Configuration.h>
#include <LibWasm/AbstractMachine/Interpreter.h>
#include <LibWasm/Printer/Printer.h>
@ -85,9 +86,11 @@ Result Configuration::execute(Interpreter& interpreter)
void Configuration::dump_stack()
{
auto print_value = []<typename... Ts>(CheckedFormatString<Ts...> format, Ts... vs) {
DuplexMemoryStream memory_stream;
Printer { memory_stream }.print(vs...);
ByteBuffer buffer = memory_stream.copy_into_contiguous_buffer();
Core::Stream::AllocatingMemoryStream memory_stream;
Core::Stream::WrapInAKOutputStream wrapped_memory_stream { memory_stream };
Printer { wrapped_memory_stream }.print(vs...);
auto buffer = ByteBuffer::create_uninitialized(memory_stream.used_buffer_size()).release_value_but_fixme_should_propagate_errors();
memory_stream.read_entire_buffer(buffer).release_value_but_fixme_should_propagate_errors();
dbgln(format.view(), StringView(buffer).trim_whitespace());
};
for (auto const& entry : stack().entries()) {

View file

@ -9,6 +9,7 @@
#include <LibCore/File.h>
#include <LibCore/FileStream.h>
#include <LibCore/MappedFile.h>
#include <LibCore/MemoryStream.h>
#include <LibLine/Editor.h>
#include <LibMain/Main.h>
#include <LibWasm/AbstractMachine/AbstractMachine.h>
@ -396,13 +397,15 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
StringBuilder argument_builder;
bool first = true;
for (auto& argument : arguments) {
DuplexMemoryStream stream;
Wasm::Printer { stream }.print(argument);
Core::Stream::AllocatingMemoryStream stream;
Core::Stream::WrapInAKOutputStream wrapped_stream { stream };
Wasm::Printer { wrapped_stream }.print(argument);
if (first)
first = false;
else
argument_builder.append(", "sv);
ByteBuffer buffer = stream.copy_into_contiguous_buffer();
auto buffer = ByteBuffer::create_uninitialized(stream.used_buffer_size()).release_value_but_fixme_should_propagate_errors();
stream.read_entire_buffer(buffer).release_value_but_fixme_should_propagate_errors();
argument_builder.append(StringView(buffer).trim_whitespace());
}
dbgln("[wasm runtime] Stub function {} was called with the following arguments: {}", name, argument_builder.to_deprecated_string());