This is a refinement on 96601ec28b7efe5abf3479a1aa91bcedb235bbbd. The intent of that change was to do the same work for the computation of the locations of the children of ValueObjectVariable as was done for the root ValueObjectVariable. This original patch did that by moving the computation from ValueObjectVariable to ValueObject. That fixed the problem but caused a handful of swift-lldb testsuite failures and a crash or two.
The problem is that synthetic value objects can sometimes represent objects in target memory, and other times they might be made up wholly in lldb memory, with pointers from one synthetic object to another, and so the ValueObjectVariable computation was not appropriate.
This patch delegates the computation to the root of the ValueObject in question. That solves the problem for ValueObjectVariable while not messing up the computation for ValueObjectConstResult or ValueObjectSynthetic.
This patch resolves all the swift-lldb failures and also still passes the non-swift testsuite.
The representation through ValueObjects of Swift Types is quite byzantine, and the ValueObject system is frustratingly self-healing, and I haven't yet been able to cons up a non-swift test case that will trigger the same failures we were seeing with swift data types. I'm still working on that, but I thought I'd get the code changes out for review while working on that, since we actually DO have tests for the change, just not in the non-swift tree...