using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
public class Test
{
public struct BigGuid32
{
public KeyValuePair<Guid, Guid> KV;
}
public struct BigGuid64
{
public KeyValuePair<BigGuid32, BigGuid32> KV;
}
public struct BigGuid128
{
public KeyValuePair<BigGuid64, BigGuid64> KV;
}
public struct BigGuid256
{
public KeyValuePair<BigGuid128, BigGuid128> KV;
}
public struct BigGuid512
{
public KeyValuePair<BigGuid256, BigGuid256> KV;
}
public struct BigGuid1k
{
public KeyValuePair<BigGuid512, BigGuid512> KV;
}
public struct BigGuid2k
{
public KeyValuePair<BigGuid1k, BigGuid1k> KV;
}
public struct BigGuid4k
{
public KeyValuePair<BigGuid2k, BigGuid2k> KV;
}
public struct BigGuid8k
{
public KeyValuePair<BigGuid4k, BigGuid4k> KV;
}
public struct BigGuid16k
{
public KeyValuePair<BigGuid8k, BigGuid8k> KV;
}
public struct BigGuid32k
{
public KeyValuePair<BigGuid16k, BigGuid16k> KV;
}
public struct BigGuid64k
{
public KeyValuePair<BigGuid32k, BigGuid32k> KV;
}
public struct BigGuid128k
{
public KeyValuePair<BigGuid64k, BigGuid64k> KV;
}
public class BigLOH
{
public BigGuid128k KV;
}
public static void Main()
{
// This is a value type. It won't be handled as a LOH
var big = new BigGuid128k();
Console.WriteLine(Marshal.SizeOf(big));
// But this is a reference type :-)
var bigLOH = new BigLOH();
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2VzOwoKcHVibGljIGNsYXNzIFRlc3QKewogICAgcHVibGljIHN0cnVjdCBCaWdHdWlkMzIKICAgIHsKICAgICAgICBwdWJsaWMgS2V5VmFsdWVQYWlyPEd1aWQsIEd1aWQ+IEtWOwogICAgfQoKICAgIHB1YmxpYyBzdHJ1Y3QgQmlnR3VpZDY0CiAgICB7CiAgICAgICAgcHVibGljIEtleVZhbHVlUGFpcjxCaWdHdWlkMzIsIEJpZ0d1aWQzMj4gS1Y7CiAgICB9CgogICAgcHVibGljIHN0cnVjdCBCaWdHdWlkMTI4CiAgICB7CiAgICAgICAgcHVibGljIEtleVZhbHVlUGFpcjxCaWdHdWlkNjQsIEJpZ0d1aWQ2ND4gS1Y7CiAgICB9CgogICAgcHVibGljIHN0cnVjdCBCaWdHdWlkMjU2CiAgICB7CiAgICAgICAgcHVibGljIEtleVZhbHVlUGFpcjxCaWdHdWlkMTI4LCBCaWdHdWlkMTI4PiBLVjsKICAgIH0KCiAgICBwdWJsaWMgc3RydWN0IEJpZ0d1aWQ1MTIKICAgIHsKICAgICAgICBwdWJsaWMgS2V5VmFsdWVQYWlyPEJpZ0d1aWQyNTYsIEJpZ0d1aWQyNTY+IEtWOwogICAgfQoKICAgIHB1YmxpYyBzdHJ1Y3QgQmlnR3VpZDFrCiAgICB7CiAgICAgICAgcHVibGljIEtleVZhbHVlUGFpcjxCaWdHdWlkNTEyLCBCaWdHdWlkNTEyPiBLVjsKICAgIH0KCiAgICBwdWJsaWMgc3RydWN0IEJpZ0d1aWQyawogICAgewogICAgICAgIHB1YmxpYyBLZXlWYWx1ZVBhaXI8QmlnR3VpZDFrLCBCaWdHdWlkMWs+IEtWOwogICAgfQoKICAgIHB1YmxpYyBzdHJ1Y3QgQmlnR3VpZDRrCiAgICB7CiAgICAgICAgcHVibGljIEtleVZhbHVlUGFpcjxCaWdHdWlkMmssIEJpZ0d1aWQyaz4gS1Y7CiAgICB9CgogICAgcHVibGljIHN0cnVjdCBCaWdHdWlkOGsKICAgIHsKICAgICAgICBwdWJsaWMgS2V5VmFsdWVQYWlyPEJpZ0d1aWQ0aywgQmlnR3VpZDRrPiBLVjsKICAgIH0KCiAgICBwdWJsaWMgc3RydWN0IEJpZ0d1aWQxNmsKICAgIHsKICAgICAgICBwdWJsaWMgS2V5VmFsdWVQYWlyPEJpZ0d1aWQ4aywgQmlnR3VpZDhrPiBLVjsKICAgIH0KCiAgICBwdWJsaWMgc3RydWN0IEJpZ0d1aWQzMmsKICAgIHsKICAgICAgICBwdWJsaWMgS2V5VmFsdWVQYWlyPEJpZ0d1aWQxNmssIEJpZ0d1aWQxNms+IEtWOwogICAgfQoKICAgIHB1YmxpYyBzdHJ1Y3QgQmlnR3VpZDY0awogICAgewogICAgICAgIHB1YmxpYyBLZXlWYWx1ZVBhaXI8QmlnR3VpZDMyaywgQmlnR3VpZDMyaz4gS1Y7CiAgICB9CgogICAgcHVibGljIHN0cnVjdCBCaWdHdWlkMTI4awogICAgewogICAgICAgIHB1YmxpYyBLZXlWYWx1ZVBhaXI8QmlnR3VpZDY0aywgQmlnR3VpZDY0az4gS1Y7CiAgICB9CiAgICAKICAgIHB1YmxpYyBjbGFzcyBCaWdMT0gKICAgIHsKICAgICAgICBwdWJsaWMgQmlnR3VpZDEyOGsgS1Y7IAogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKICAgIHsKICAgICAgICAvLyBUaGlzIGlzIGEgdmFsdWUgdHlwZS4gSXQgd29uJ3QgYmUgaGFuZGxlZCBhcyBhIExPSAogICAgICAgIHZhciBiaWcgPSBuZXcgQmlnR3VpZDEyOGsoKTsKICAgICAgICBDb25zb2xlLldyaXRlTGluZShNYXJzaGFsLlNpemVPZihiaWcpKTsKICAgICAgICAKICAgICAgICAvLyBCdXQgdGhpcyBpcyBhIHJlZmVyZW5jZSB0eXBlIDotKSAKICAgICAgICB2YXIgYmlnTE9IID0gbmV3IEJpZ0xPSCgpOwogICAgfQp9