Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3bc282a

Browse files
committed
fixed missing ITypeOffset members np_inplace_*
1 parentd6541a3 commit3bc282a

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

‎src/runtime/native/ITypeOffsets.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ interface ITypeOffsets
1515
intmp_subscript{get;}
1616
intname{get;}
1717
intnb_add{get;}
18+
intnb_inplace_add{get;}
19+
intnb_inplace_subtract{get;}
1820
intob_size{get;}
1921
intob_type{get;}
2022
intqualname{get;}

‎src/runtime/native/TypeOffset.cs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ static partial class TypeOffset
2222
internalstaticintmp_subscript{get;privateset;}
2323
internalstaticintname{get;privateset;}
2424
internalstaticintnb_add{get;privateset;}
25+
internalstaticintnb_inplace_add{get;privateset;}
26+
internalstaticintnb_inplace_subtract{get;privateset;}
2527
internalstaticintob_size{get;privateset;}
2628
internalstaticintob_type{get;privateset;}
2729
internalstaticintqualname{get;privateset;}
@@ -73,6 +75,7 @@ internal static void Use(ITypeOffsets offsets)
7375
}
7476

7577
ValidateUnusedTypeOffsetProperties(offsetProperties);
78+
ValidateRequiredOffsetsPresent(offsetProperties);
7679
}
7780

7881
staticreadonlyBindingFlagsFieldFlags=BindingFlags.NonPublic|BindingFlags.Static;
@@ -102,5 +105,48 @@ static void ValidateUnusedTypeOffsetProperties(PropertyInfo[] offsetProperties)
102105
extras.Sort();
103106
Debug.Assert(extras.Count==0,message:string.Join(", ",extras));
104107
}
108+
109+
[Conditional("DEBUG")]
110+
staticvoidValidateRequiredOffsetsPresent(PropertyInfo[]offsetProperties)
111+
{
112+
varpresent=newHashSet<string>(offsetProperties.Select(p=>p.Name));
113+
varmissing=newHashSet<string>();
114+
115+
varthisAssembly=Assembly.GetExecutingAssembly();
116+
varmanagedTypes=thisAssembly.GetTypes()
117+
.Where(typeof(ManagedType).IsAssignableFrom)
118+
.ToList();
119+
foreach(varmanagedTypeinmanagedTypes)
120+
{
121+
varslots=managedType.GetMethods(BindingFlags.Public|BindingFlags.Static);
122+
foreach(varslotinslots)
123+
if(!present.Contains(slot.Name))
124+
missing.Add(slot.Name);
125+
}
126+
foreach(stringnotSlotinnew[]
127+
{
128+
"__instancecheck__",
129+
"__subclasscheck__",
130+
"_AtExit",
131+
"AddReference",
132+
"FinalizeObject",
133+
"FindAssembly",
134+
"get_SuppressDocs",
135+
"get_SuppressOverloads",
136+
"GetClrType",
137+
"getPreload",
138+
"Initialize",
139+
"ListAssemblies",
140+
"Release",
141+
"Reset",
142+
"set_SuppressDocs",
143+
"set_SuppressOverloads",
144+
"setPreload",
145+
})
146+
missing.Remove(notSlot);
147+
148+
Debug.Assert(missing.Count==0,
149+
"Missing slots: "+string.Join(", ",missing));
150+
}
105151
}
106152
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp