Provide an experimental fallback "static int enum_class_Proxy = 0" for non-threaded code.
pmc2c from rurban/gh870-pmc_class exports the dynpmc types, which we use to check for NQPLexInfo in NQPLexPad, to discriminate for Proxy. Proxy info is read-only. This does not work yet
In parrot 4.4.0 enum_class_Proxy isnt defined but PARROT_HAS_THREADS is. So enum_class_Proxy would be added to the condition.
Tadzik came up with an abnormal testcase, which crashed in nqp on a threaded parrot. See [parrot #869]. Parrot_NQPLexPad_set_pointer needs to check for enum_class_Proxy also. Note this commit does not fix the problem, only the segfault. I do not know which lexinfo name_map to get with enum_class_Proxy.
This allows a language where such issues may arise to provide its own handler for them. If it doesn't, we just flag up the error as before.
If two pre-compiled modules both tried to replace an object or STable with their own updated view of it, the latest one would always just win. This creates the "disappearing symbol" issue. This patch detects that it's going on and complains, rather than leaving a weird failure later on (the actual fix will be to replace the exception thrown with a hook to allow the module loader to do some smarter merging). Breaks no NQP tests or Rakudo spectests; does correctly pick up the RT#112626 case.