Index: deps/v8/src/wasm/stacks.cc
--- deps/v8/src/wasm/stacks.cc.orig
+++ deps/v8/src/wasm/stacks.cc
@@ -4,6 +4,10 @@
 
 #include "src/wasm/stacks.h"
 
+#if V8_OS_OPENBSD
+#include <sys/mman.h>
+#endif
+
 #include "src/base/platform/platform.h"
 #include "src/execution/simulator.h"
 #include "src/wasm/wasm-engine.h"
@@ -66,9 +70,18 @@ StackMemory::StackSegment::StackSegment(size_t pages) 
   DCHECK_GE(pages, 1);
   PageAllocator* allocator = GetPlatformPageAllocator();
   size_ = pages * allocator->AllocatePageSize();
+#if V8_OS_OPENBSD
+  limit_ = static_cast<uint8_t*>(mmap(nullptr, size_, PROT_READ | PROT_WRITE,
+                                      MAP_PRIVATE | MAP_ANON | MAP_STACK, -1,
+                                      0));
+  if (limit_ == MAP_FAILED) {
+    limit_ = nullptr;
+  }
+#else
   limit_ = static_cast<uint8_t*>(
       allocator->AllocatePages(nullptr, size_, allocator->AllocatePageSize(),
                                PageAllocator::kReadWrite));
+#endif
   if (limit_ == nullptr) {
     V8::FatalProcessOutOfMemory(nullptr,
                                 "StackMemory::StackSegment::StackSegment");
@@ -76,10 +89,16 @@ StackMemory::StackSegment::StackSegment(size_t pages) 
 }
 
 StackMemory::StackSegment::~StackSegment() {
+#if V8_OS_OPENBSD
+  if (munmap(limit_, size_) != 0) {
+    V8::FatalProcessOutOfMemory(nullptr, "Release stack memory");
+  }
+#else
   PageAllocator* allocator = GetPlatformPageAllocator();
   if (!allocator->DecommitPages(limit_, size_)) {
     V8::FatalProcessOutOfMemory(nullptr, "Decommit stack memory");
   }
+#endif
 }
 
 bool StackMemory::Grow(Address current_fp) {
