Details
-
Technical task
-
Resolution: Done
-
P0: Blocker
-
None
Description
The current use of qOffsetOf in various places of the assembler instruction selection ends up using host specific offsets on target architectures with different values, leading to crashes at run-time.
We need get rid of these uses and probably use hand-coded offsets and ensure their correctness using static asserts.
Suggested plan forward:
(1) Replace Runtime members with a void*[NRuntimeMembers] array and an enum
(2) Merge Runtime with ExecutionEngine into standard-layout base-class
(3) CallData is platform independent in size
(4) ExecutionContext needs tweaking
(5) Make sure all members are in void* sequence and consider use of offsetof() / host-pointer-size * target-pointer-size