Hi all

I've been maintaining a set of private patches for some quite old FPC revision 
for some years.
The idea behind those patches to ease interoperation between FPC and LuaJIT FFI 
by pointer tagging for dynamic arrays.
For that to happen I was forced to modify "tdynarray" record (increase its size 
to 32 bytes and always align dynamic arrays to 32 bytes) & change some compiler 
internals to emit proper offset to "high" and "reference count" fields.

Bootstrapping patched compiler is quite an adventure.
And that is something I'd like to straight-line and I feel that I need some 
piece of advice.

My first trouble is initialization of dynamic arrays with constant arrays. 
It looks like simply building one version of compiler just makes a build with 
old-style array constants and my already patched code.
That leads to code/constant data format mismatches and new compiler process 
just crashes.

Looks vanilla makefile builds a several versions of compiler progressing to a 
final version.
It seems that my troubles also can be solved by enabling parts of the patchset 
progressively.
More specifically, I plan to enable array serialization code patch first in 
cyclelevel 1. 
Then build next compiler level using compiler 1 with rest code enabled to get 
cyclelevel 2.
Cyclelevel2 build should already contain both all code changes and data 
constants in new format.
And finally build cyclelevel3 build with cyclelevel2 compiler to complete build.

Is it the right way to go?
And if I get it right - could anyone suggest me how to enable my constants code 
serialization patches (via conditional defines I guess) at cyclelevel 1 and all 
patches at cyclelevels 2 and 3?

-- Regards,
Denis Golovan
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to