Meta-compiling means the compiler compiles itself.
I liken it to doing brain surgery on yourself.
Things get interesting when you poke the bit of your brain which controls the finger you poke it with.
I guess you have to use both hands.
It is more than surgery it is a complete rebuild.
During meta-compilation there are three or even more versions of the core words.
There is the original, there is a new version compiled into a different memory space and then later the new words is move into the memory space used by the original compiler.
To do this there are also three versions of the interpreter/compiler. The original forth has to pass control to the new version because the memory it is will be overwritten. This second version must in turn pass control to a relocated version of itself in the final memory space and the memory used by the temporary compiler is reused as the rest of the system in compiled.
It is very difficult and I don't recommend you make changes to the source unless they are trivial.
It is very easy to have calls to the wrong version of a word or have a invalid pointer.