It'll be a copying GC, with builtin support to automatically free unused JavaScript references in the Haskell heap. It's also possible to plug in more fancy gc algorithms later (e.g. generational, or concurrent ones with read barriers).
There does exist a wasm anyref proposal which enables manipulating opaque references in wasm and a gc proposal for further allocating/using such garbage collected objects. However, basing our gc on those is currently less pragmatic than rolling our own :)
Old Frameworks have to do perverse things to break those cycles, and if they don't, the browsers leaked memory over time.
It would be sad if that came back to modern browsers, due to WASM and DOM using separate collectors. Or worse, multiple WASM components, (perhaps in different languages, perhaps not, but all different collectors), holding indirect, accidental references to each other because someone decided to use the components in the same DOM.
I guess parts of the c code could be transpiled but something low-level like the gc relies on details like register pinning.
Depending on how the runtime for "native Haskell" is implemented, the effort might be everything from just cross-compile it to building a completely separate runtime.
https://en.wikipedia.org/wiki/Lisp_machine
"Lisp Hardware Architecture: The Explorer II and beyond"
https://3e8.org/pub/scheme/doc/lisp-pointers/v1i6/p13-dussud...
"Garbage collection in a large LISP system"
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.125....
"KIM 20 : A SYMBOLIC RISC MICROPROCESSOR FOR EMBEDDED ADVANCED CONTROL "
https://www.computer.org/csdl/proceedings/easic/1990/2066/00...
The failed iAPX 432 processor from Intel also supported it.
https://en.wikipedia.org/wiki/Intel_iAPX_432#Garbage_collect...