To support a product based on the Intel Quark, which only has an x87 FPU and no MMX/SSE/AVX, a colleague of mine resurrected the x87 port.
This was done successfully for node.js version 8 -- unfortunately, I don't know to which V8 version this corresponds to exactly, because the node.js code base copies the V8 files rather than incorporating the V8 repository as a submodule.
I've attempted to move the patch forward to node.js version 10. (One of the primary new features for V8 was the Liftoff compiler for WASM; the garbage collector has changed as well). Unfortunately, I am getting an assertion error during the "mksnapshot" build step:
# Fatal error in ../deps/v8/src/compiler/register-allocator.cc, line 2663
# Debug check failed: start_instr <= end_instr (80 vs. 0).
#
#
#
#FailureMessage Object: 0xffa80374
As can be expected, this is happening while AllocateFPRegistersPhase() is active (on the call stack).
The V8 x87 port basically uses only one of the (stack-addressed) x87 registers, so on the one hand it would not be surprising for the register allocator to have problems here. On the other hand, this part of the code has not changed much between the node.js v8 and v10, which indicates a problem that I introduced.
Any pointers or hints would be very much appreciated!
--
Konrad Schwarz