Commit cfe9172e authored by Clemens Backes's avatar Clemens Backes Committed by Commit Bot

[wasm] Disallow interpreter move

The MOVE_ONLY_NO_DEFAULT_CONSTRUCTOR macro defines a defaulted move
constructor and move-assignment operator. The {std::unique_ptr} on the
other hand needs the contained type to be complete when instantiating
the move assignment operator. Hence, this fails e.g. on MSVC, see
https://github.com/nodejs/node/pull/30020#issuecomment-544485991.

It turns out that we never actually move the interpreter, so we can
just replace the MOVE_ONLY_NO_DEFAULT_CONSTRUCTOR by
DISALLOW_COPY_AND_ASSIGN.

R=ahaas@chromium.org

Change-Id: Iba7d30243510ed9554be62b0c4c8e6f47f0c3307
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1871921Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64423}
parent 71e52b27
......@@ -97,7 +97,6 @@ MaybeHandle<String> GetLocalName(Isolate* isolate,
}
class InterpreterHandle {
MOVE_ONLY_NO_DEFAULT_CONSTRUCTOR(InterpreterHandle);
Isolate* isolate_;
const WasmModule* module_;
WasmInterpreter interpreter_;
......@@ -461,6 +460,9 @@ class InterpreterHandle {
}
return local_scope_object;
}
private:
DISALLOW_COPY_AND_ASSIGN(InterpreterHandle);
};
} // namespace
......
......@@ -171,8 +171,6 @@ class V8_EXPORT_PRIVATE WasmInterpreter {
uint32_t ActivationFrameBase(uint32_t activation_id);
};
MOVE_ONLY_NO_DEFAULT_CONSTRUCTOR(WasmInterpreter);
WasmInterpreter(Isolate* isolate, const WasmModule* module,
const ModuleWireBytes& wire_bytes,
Handle<WasmInstanceObject> instance);
......@@ -219,6 +217,8 @@ class V8_EXPORT_PRIVATE WasmInterpreter {
private:
Zone zone_;
std::unique_ptr<WasmInterpreterInternals> internals_;
DISALLOW_COPY_AND_ASSIGN(WasmInterpreter);
};
} // namespace wasm
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment