#rb Jamie.Dale
#jira none
#ROBOMERGE-SOURCE: CL 7558761 in //UE4/Release-4.23/...
#ROBOMERGE-BOT: RELEASE (Release-4.23 -> Main) (v372-7473910)
[CL 7558771 by johan duparc in Main branch]
The old logic for dealing with the parameters within the Unreal function thunk (UPythonGeneratedClass::CallPythonFunction and UPythonCallableForDelegate::CallPythonNative) assumed that Stack.Locals would be set-up correctly for input, and could be written to for output. This isn't true, as Stack.Locals is populated by a memcpy in UObject::ProcessEvent (so isn't safe to write to for non-POD data), and Blueprints just pass along their existing frame data since they skip the call to ProcessScriptFunction (as Python generated functions are marked FUNC_Native).
This change adds a common thunk processing function (PyGenUtil::InvokePythonCallableFromUnrealFunctionThunk) which is used when calling into Python from an Unreal function thunk. This function steps the data off the stack frame for each property, copying input data to Python, and building the output chain (FOutParmRec) from output data addresses. This matches what the UHT generated thunk does for native functions (via P_GET_PROPERTY and P_GET_PROPERTY_REF), as well as what ProcessScriptFunction does for functions with Blueprint bytecode.
#jira UE-75405
#jira UE-75449
[FYI] Rex.Hill
#rb Dan.OConnor
#ROBOMERGE-SOURCE: CL 7064650 in //UE4/Release-4.23/...
#ROBOMERGE-BOT: RELEASE (Release-4.23 -> Main) (v367-6836689)
[CL 7064651 by jamie dale in Main branch]
- This enables reporting of unresolved symbols within a single module. Full reporting (i.e. symbols missing from both library currently being linked and all other
libraries it is linking to) is not enabled, because it doesn't work with our circular (re)linking scheme. When full reporting is enabled, if module A links to module B
that links to module A again, then A's symbols referenced in B are reported as unresolved.
- Even with this, some modules cannot be solved at this moment, so this change introduces a setting to opt-out.
Initially there were 5 modules that needed this opt-out. I solved most of them (some by disabling, since they missed the necessary libs), and now there is only one left.
Even the last one is solvable (UE-70768), so it is tempting to remove this option. However, I anticipate that there will be moment when a new module addition
will be breaking CIS due to unresolved symbols, and there will be no immediate and easy way to disable that except for nixing the whole system. Also, licensees may have more.
#rb Ben.Marsh, Anthony.Bills, Brandon.Schaefer
#fyi Marcin.Undak, Michael.Sartain, Brandon.Schaefer
[CL 5237830 by Arciel Rekman in Dev-Editor branch]