| 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 732516feb6fff6aba7ff7fd4efa62dca6243c4aa..a90d9c615044574e69f8056ed783421d29a2bd5e 100644
|
| --- a/test/cctest/wasm/wasm-run-utils.h
|
| +++ b/test/cctest/wasm/wasm-run-utils.h
|
| @@ -46,6 +46,7 @@
|
| CHECK_EQ(0xdeadbeefdeadbeef, (bit_cast<uint64_t>(x)) & 0xFFFFFFFFFFFFFFFF)
|
| #define CHECK_TRAP(x) CHECK_TRAP32(x)
|
|
|
| +#define WASM_RUNNER_MAX_NUM_PARAMETERS 4
|
| #define WASM_WRAPPER_RETURN_VALUE 8754
|
|
|
| namespace {
|
| @@ -260,10 +261,12 @@ class WasmFunctionWrapper : public HandleAndZoneScope,
|
| : GraphAndBuilders(main_zone()),
|
| inner_code_node_(nullptr),
|
| signature_(nullptr) {
|
| - Signature<MachineType>::Builder sig_builder(zone(), 1, 5);
|
| + // One additional parameter for the pointer to the return value memory.
|
| + Signature<MachineType>::Builder sig_builder(
|
| + zone(), 1, WASM_RUNNER_MAX_NUM_PARAMETERS + 1);
|
|
|
| sig_builder.AddReturn(MachineType::Int32());
|
| - for (int i = 0; i < 5; i++) {
|
| + for (int i = 0; i < WASM_RUNNER_MAX_NUM_PARAMETERS + 1; i++) {
|
| sig_builder.AddParam(MachineType::Pointer());
|
| }
|
| signature_ = sig_builder.Build();
|
| @@ -278,7 +281,8 @@ class WasmFunctionWrapper : public HandleAndZoneScope,
|
| // the actual test function.
|
|
|
| // Function, effect, and control.
|
| - Node** parameters = zone()->template NewArray<Node*>(4 + 3);
|
| + Node** parameters =
|
| + zone()->template NewArray<Node*>(WASM_RUNNER_MAX_NUM_PARAMETERS + 3);
|
| graph()->SetStart(graph()->NewNode(common()->Start(6)));
|
| Node* effect = graph()->start();
|
| int parameter_count = 0;
|
| @@ -329,7 +333,8 @@ class WasmFunctionWrapper : public HandleAndZoneScope,
|
| machine()->Store(
|
| StoreRepresentation(MachineTypeForC<ReturnType>().representation(),
|
| WriteBarrierKind::kNoWriteBarrier)),
|
| - graph()->NewNode(common()->Parameter(4), graph()->start()),
|
| + graph()->NewNode(common()->Parameter(WASM_RUNNER_MAX_NUM_PARAMETERS),
|
| + graph()->start()),
|
| graph()->NewNode(common()->Int32Constant(0)), call, effect,
|
| graph()->start());
|
| Node* r = graph()->NewNode(
|
| @@ -351,6 +356,20 @@ class WasmFunctionWrapper : public HandleAndZoneScope,
|
| CallDescriptor* descriptor =
|
| Linkage::GetSimplifiedCDescriptor(zone(), signature_, true);
|
|
|
| + if (kPointerSize == 4) {
|
| + // One additional parameter for the pointer of the return value.
|
| + Signature<MachineRepresentation>::Builder rep_builder(
|
| + zone(), 1, WASM_RUNNER_MAX_NUM_PARAMETERS + 1);
|
| +
|
| + rep_builder.AddReturn(MachineRepresentation::kWord32);
|
| + for (int i = 0; i < WASM_RUNNER_MAX_NUM_PARAMETERS + 1; i++) {
|
| + rep_builder.AddParam(MachineRepresentation::kWord32);
|
| + }
|
| + Int64Lowering r(graph(), machine(), common(), zone(),
|
| + rep_builder.Build());
|
| + r.LowerGraph();
|
| + }
|
| +
|
| CompilationInfo info("testing", isolate, graph()->zone());
|
| code_ =
|
| Pipeline::GenerateCodeForTesting(&info, descriptor, graph(), nullptr);
|
| @@ -418,9 +437,13 @@ class WasmFunctionCompiler : public HandleAndZoneScope,
|
|
|
| Handle<Code> Compile(ModuleEnv* module) {
|
| InitializeDescriptor();
|
| + CallDescriptor* desc = descriptor_;
|
| + if (kPointerSize == 4) {
|
| + desc = module->GetI32WasmCallDescriptor(this->zone(), desc);
|
| + }
|
| CompilationInfo info("wasm compile", this->isolate(), this->zone());
|
| Handle<Code> result =
|
| - Pipeline::GenerateCodeForTesting(&info, descriptor_, this->graph());
|
| + Pipeline::GenerateCodeForTesting(&info, desc, this->graph());
|
| #ifdef ENABLE_DISASSEMBLER
|
| if (!result.is_null() && FLAG_print_opt_code) {
|
| OFStream os(stdout);
|
| @@ -529,7 +552,7 @@ class WasmRunner {
|
| }
|
|
|
| private:
|
| - LocalType storage_[5];
|
| + LocalType storage_[WASM_RUNNER_MAX_NUM_PARAMETERS];
|
| FunctionSig signature_;
|
| WasmFunctionCompiler compiler_;
|
| WasmFunctionWrapper<ReturnType> wrapper_;
|
|
|