Index: test/cctest/wasm/wasm-run-utils.h |
diff --git a/test/cctest/wasm/wasm-run-utils.h b/test/cctest/wasm/wasm-run-utils.h |
index 47e4bf7f0e8831cf2bd8a96885d5db0af70d1e64..4b24ca38e20ba65a380115878c40d2388ee7c566 100644 |
--- a/test/cctest/wasm/wasm-run-utils.h |
+++ b/test/cctest/wasm/wasm-run-utils.h |
@@ -266,6 +266,19 @@ class TestingModule : public ModuleEnv { |
} |
} |
+ uint32_t AddBytes(Vector<const byte> bytes) { |
+ Handle<SeqOneByteString> old_bytes = |
+ instance_object_->get_compiled_module()->module_bytes(); |
+ uint32_t old_size = static_cast<uint32_t>(old_bytes->length()); |
+ ScopedVector<byte> new_bytes(old_size + bytes.length()); |
+ memcpy(new_bytes.start(), old_bytes->GetChars(), old_size); |
+ memcpy(new_bytes.start() + old_size, bytes.start(), bytes.length()); |
+ Handle<SeqOneByteString> new_bytes_str = Handle<SeqOneByteString>::cast( |
+ isolate_->factory()->NewStringFromOneByte(new_bytes).ToHandleChecked()); |
+ instance_object_->get_compiled_module()->set_module_bytes(new_bytes_str); |
+ return old_size; |
+ } |
+ |
WasmFunction* GetFunctionAt(int index) { return &module_.functions[index]; } |
WasmInterpreter* interpreter() { return interpreter_; } |
@@ -294,19 +307,6 @@ class TestingModule : public ModuleEnv { |
return &module->globals.back(); |
} |
- uint32_t AddBytes(Vector<const byte> bytes) { |
- Handle<SeqOneByteString> old_bytes = |
- instance_object_->get_compiled_module()->module_bytes(); |
- uint32_t old_size = static_cast<uint32_t>(old_bytes->length()); |
- ScopedVector<byte> new_bytes(old_size + bytes.length()); |
- memcpy(new_bytes.start(), old_bytes->GetChars(), old_size); |
- memcpy(new_bytes.start() + old_size, bytes.start(), bytes.length()); |
- Handle<SeqOneByteString> new_bytes_str = Handle<SeqOneByteString>::cast( |
- isolate_->factory()->NewStringFromOneByte(new_bytes).ToHandleChecked()); |
- instance_object_->get_compiled_module()->set_module_bytes(new_bytes_str); |
- return old_size; |
- } |
- |
Handle<WasmInstanceObject> InitInstanceObject() { |
Handle<Managed<wasm::WasmModule>> module_wrapper = |
Managed<wasm::WasmModule>::New(isolate_, &module_, false); |
@@ -498,6 +498,13 @@ class WasmFunctionCompiler : private GraphAndBuilders { |
void Build(const byte* start, const byte* end) { |
local_decls.Prepend(zone(), &start, &end); |
+ |
+ CHECK_GE(kMaxInt, end - start); |
+ int len = static_cast<int>(end - start); |
+ function_->code_start_offset = |
+ testing_module_->AddBytes(Vector<const byte>(start, len)); |
+ function_->code_end_offset = function_->code_start_offset + len; |
+ |
if (interpreter_) { |
// Add the code to the interpreter. |
CHECK(interpreter_->SetFunctionCodeForTesting(function_, start, end)); |