А почему свой стек - медленно? Понятно что в x64 уже есть встроенные инструкции для стека но я не понимаю почему это будет прям сильно медленно. Любое обращение в память всегда считывает всю кеш-линию (область памяти в 64 байта). Считал хотя бы один байт - получай в подарок практически бесплатное обращение к 64 близлежащим байтам. Поскольку стек это идеальная с точки зреня локальности структура ( последовательная запись или считывание) то даже кастомный стек будет работать быстро за счет этих кеш-линий
Во-первых, на практике Ваши рассуждения не подтверждаются, и все реализации shadow stack (нативные в первую очередь, без WASM) работают медленно. Учитывайте, что писать-то надо в оба стека, иначе Вы даже функции вызывать не сможете. Уж точно не из сторонних библиотек.
Во-вторых, работу со встроенным стеком WASM runtime может оптимизировать, а про Ваш собственный, понятное дело, ничего не знает.