diff --git a/deps/v8/include/v8.h b/deps/v8/include/v8.h
index b96771ed45b..abf2e864fdf 100644
--- a/deps/v8/include/v8.h
+++ b/deps/v8/include/v8.h
@@ -4161,10 +4161,12 @@ class V8_EXPORT WasmCompiledModule : public Object {
   // supports move semantics, and does not support copy semantics.
   class TransferrableModule final {
    public:
-    TransferrableModule(TransferrableModule&& src) = default;
+    TransferrableModule(TransferrableModule&& src)
+        : compiled_code(std::move(src.compiled_code)),
+          wire_bytes(std::move(src.wire_bytes)) {}
     TransferrableModule(const TransferrableModule& src) = delete;
 
-    TransferrableModule& operator=(TransferrableModule&& src) = default;
+    TransferrableModule& operator=(TransferrableModule&& src);
     TransferrableModule& operator=(const TransferrableModule& src) = delete;
 
    private:
@@ -4277,9 +4279,11 @@ class V8_EXPORT WasmModuleObjectBuilder final {
   // Disable copy semantics *in this implementation*. We can choose to
   // relax this, albeit it's not clear why.
   WasmModuleObjectBuilder(const WasmModuleObjectBuilder&) = delete;
-  WasmModuleObjectBuilder(WasmModuleObjectBuilder&&) = default;
+  WasmModuleObjectBuilder(WasmModuleObjectBuilder&& src)
+      : received_buffers_(std::move(src.received_buffers_)),
+        total_size_(src.total_size_) {}
   WasmModuleObjectBuilder& operator=(const WasmModuleObjectBuilder&) = delete;
-  WasmModuleObjectBuilder& operator=(WasmModuleObjectBuilder&&) = default;
+  WasmModuleObjectBuilder& operator=(WasmModuleObjectBuilder&&);
 
   std::vector<Buffer> received_buffers_;
   size_t total_size_ = 0;
diff --git a/deps/v8/src/api.cc b/deps/v8/src/api.cc
index 82c578649ca..c9eec22bf2e 100644
--- a/deps/v8/src/api.cc
+++ b/deps/v8/src/api.cc
@@ -7786,6 +7786,14 @@ Local<String> WasmCompiledModule::GetWasmWireBytes() {
   return Local<String>::Cast(Utils::ToLocal(wire_bytes));
 }
 
+WasmCompiledModule::TransferrableModule&
+WasmCompiledModule::TransferrableModule::operator=(
+    TransferrableModule&& src) {
+  compiled_code = std::move(src.compiled_code);
+  wire_bytes = std::move(src.wire_bytes);
+  return *this;
+}
+
 // Currently, wasm modules are bound, both to Isolate and to
 // the Context they were created in. The currently-supported means to
 // decontextualize and then re-contextualize a module is via
@@ -7957,6 +7965,13 @@ MaybeLocal<WasmCompiledModule> WasmModuleObjectBuilder::Finish() {
   return WasmCompiledModule::Compile(isolate_, wire_bytes.get(), total_size_);
 }
 
+WasmModuleObjectBuilder&
+WasmModuleObjectBuilder::operator=(WasmModuleObjectBuilder&& src) {
+  received_buffers_ = std::move(src.received_buffers_);
+  total_size_ = src.total_size_;
+  return *this;
+}
+
 // static
 v8::ArrayBuffer::Allocator* v8::ArrayBuffer::Allocator::NewDefaultAllocator() {
   return new ArrayBufferAllocator();